问题标签 [freedesktop.org]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Qt中的图标路径查找
Qt通过返回一个 QIcon 来支持图标主题查找。但对于我的 QML 视图,我需要图标路径而不是 QIcon。有没有办法从查找的图标中获取路径或进行查找以返回图标路径?即我想根据图标命名规范将图标名称放入返回图像文件路径的函数中。
如果 Qt 无法做到这一点,那么下一个最佳选择是什么?Freedesktop Icon Theme Sspecification中是否有用于图标查找的库?
linux - Linux 桌面应用程序:如何检查包图标?
显然,可以仅通过名称来引用程序的图标,如下所示:
尝试替换baobab
,gnome-terminal
图标会改变,你甚至可以去掉引号。显然,这里有某种抽象(我喜欢那些)与数据库一起工作。(我知道 .desktop 文件和 xdg 工具] 1。但是是否有 CLI 以这种方式显示(更糟糕的是:如果没有找到就不要显示它,抛出错误))这些图标,比如eog baobab
? (不起作用。)我想这样做,显示我正在显示的程序的图标,有时说程序来自更大的包,所以我无法知道它是否已安装。
- 我怎么知道图标没有找到(重要)?
- 如何获取所有“已安装”图标的列表?
- 我该如何测试
chk_icon "baobab" ; $?=0
OK一样测试 - 我怎样才能像
chk_icon "installed stuff" ; $?=0
OK一样测试
谢谢!
d - 检查重新设置的窗口关闭事件
我正在尝试为 X11 制作一个 xlib 托盘栏,它使用 XEMBED 嵌入托盘图标,如托盘规格中所述。但是,当我使用托盘图标关闭应用程序时,它只是将其从容器窗口中删除,但黑色容器窗口矩形和我的代码中的条目仍然存在。
在XEMBED 文档中它说
嵌入器有责任跟踪所有转发的加速器并在客户端窗口终止时将其删除。
但是,当嵌入式窗口死机时,我的应用程序不会收到任何事件或指示。
我基本上只收到一个停靠请求事件,之后什么都没有。当一个停靠请求事件出现时,我为我的面板创建一个子窗口,其中包含托盘窗口并像这样重新设置它:
将它添加到面板没有任何问题,但我不知道如何检查何时再次删除它。
如何让我的应用程序接收这些托盘图标的关闭事件,或者如何检查重新设置的窗口是否仍然存在?
specifications - 程序应该创建 XDG 文件夹吗?
假设我正在编写一个程序,并且我希望它遵循 XDG 基本目录规范来放置其文件(应用程序foo
用作$XDG_CONFIG_HOME/foo
配置文件的目录,如果XDG_CONFIG_HOME
设置为非空白,或~/.config/foo
,或失败并出现错误如果主目录甚至无法解析)。
XDG_CONFIG_HOME
对于例如设置且非空白但该目录不存在的情况是否存在正确/指定的行为?或者如果没有这样的变量,并且~/.config
不存在?是否期望我的程序尝试创建它?或者该目录的不存在是否被认为是环境/系统部分的错误,我的程序应该避免对此做任何事情(只是保释错误)?
注意:我不是在问我是否应该创建~/.config/foo
- 显然这是肯定的;我在问我是否应该创建~/.config
自己,如果它不存在。
(更迂腐:显然一些程序应该创建它们 - 问题是这样做是否仅仅是系统/桌面/用户的工作,或者是否有任何程序应该尝试创建相关目录,如果它们不存在?)
我试过阅读XDG Base Directory Specification,它说在尝试写入文件时,程序可能会创建必要的目录,但不清楚这是否仅指应用程序的特定/“个人”子目录XDG 基本目录,或者如果这意味着 XDG 基本目录本身。
PS 通常我很清楚要使用什么标签,但在这里我真的不确定:请编辑这篇文章或提出改进建议,给它适当的标签。
desktop - Desktop Entry 文件中的 X-MultipleArgs 是什么意思?
所有示例桌面文件都有 X-MultipleArgs=False --- 但这是什么意思?X- 表示它是一个扩展,所以它没有在 FreeDesktop 规范中定义。但我似乎找不到定义它的地方。谷歌搜索无济于事,因为它会出现大量桌面文件。
linux - Where can I get the xdg menu hierarchy
I've consulted the following articles and many more, but still don't understand one question --
What menu hierarchy do freedesktop (or Ubuntu or any modern distro) use? Where can I get a list of such menu hierarchy? E.g., the "Accessories", "Internet", "Editor", "System" etc that type of things, and what corresponding Categories it is accepting from the .desktop file.
x11 - C、Xlib 中的 freedesktop XEmbed 系统托盘客户端代码
我一直在尝试使用直接 C 和 Xlib 来实现一个系统托盘图标,以及 freedesktop 规范 [0]。我似乎无法让我的 Window 嵌入我的桌面管理器的系统托盘 [1],而其他应用程序似乎能够做到这一点。我不确定如何继续调试它,但我在下面提供了最少的示例代码。
我找不到任何使用直接 Xlib 和 C 的示例代码,我看到的所有建议都是关于 Gtk/Qt/Mono/whatever 等框架的,但我想了解应该做什么按照规范在这里发生,我做错了什么。
任何帮助将不胜感激。我认为这个问题与语言无关,更多的是因为我对协议的误解,所以任何语言的答案都是可以接受的,只要它们能帮助我解决这个 XEvent 问题。
[0] https://specifications.freedesktop.org/systemtray-spec/systemtray-spec-0.2.html
[1] 我正在使用 dwm 和系统托盘补丁http://dwm.suckless.org/patches/systray
gtk - GTK 允许使用新的 vala 应用程序打开文件
我正在用 Vala 开发一个媒体播放器,我希望能够用这个应用程序打开音频文件(一旦安装)。
在 .descktop 文件中,我添加了以下 MIME 类型来指示哪些文件可以打开(它们与 Banshee 中的 MIME 类型相同):
通过 donig,当我单击文件时,应用程序会显示在“打开方式”对话框中。
然后,在我的 Gtk.Application 类中,我在构造函数中添加了:
最后,我添加了“打开”方法,该方法应该在使用应用程序打开文件时调用:
但是,当我尝试使用我的应用程序打开 .mp3 文件时,会出现一个对话框,其中显示:
"No es poden obrir els fitxers o uris amb aquesta aplicació"
用英语讲:
“无法使用此应用程序打开文件或 uri”
所以我的问题是:我错过了什么吗?
我已经在 descktop 文件中添加了 MIME 类型,我已经激活了标志“HANDLES_OPEN”并且我已经实现了“open”方法。
PD:我正在使用elementaryOS,并使用CMake 构建系统安装我的应用程序。
c - 低级 DBus C API 主循环
当尝试使用回调函数进行 DBus 回复时,我陷入了创建良好/运行良好的主循环的困境。
我想做的很简单,进行 DBus 调用并指定一个在回复到来时应该调用的函数。这是因为在计算并到达回复之前,我不想一直阻塞我的线程。
我首先使用 dbus_connection_send_with_reply(..) 获取 DBusPendingCall,然后使用 dbus_pending_call_set_notify(..) 指定回调函数。在此之前,当连接到总线时,我已经启动了另一个线程,它应该等待响应并调用回调函数。我根本没有找到任何例子,也没有很好的文档来说明我应该如何设计这样的 dbus 主循环。我努力了:
我的问题是两件事:
我尝试通过将 dbus->status 标志设置为 MY_DBUS_STATUS_STOPPING 并等待线程加入来停止应用程序。如果线程在 dbus_connection_read_write_dispatch(..) 函数中被阻塞,这将不起作用。如果我希望应用程序快速停止,那么我需要指定一个非常短的超时时间。我不能以其他方式唤醒阻塞的线程吗?
更严重的是,使用这段代码,我不会从我调用的方法中得到任何回调。如果我添加一些 fprintf(..) 来写入标准输出,我可能会突然收到我的回调。这似乎很随机,所以也许是某种僵局?我尝试在发送消息和使用 _set_notify(..) 函数添加回调之间使用 dbus_connection_flush(..) 。没有任何区别......但是在同一个地方打印一些字母到标准输出可以解决问题。在 dbus-main-loop 中打印到标准输出,插入一个空的“;” 有时似乎可以解决问题...
那么任何有使用低级dbus api和异步方法的例子的人,即不使用_block(..)?