我的系统是 Ubuntu 18.04。
我想从.desktop
文件中以特定主题启动 corebird。因此我创建了一个.desktop
包含以下 exec 行的文件:
Exec=env GTK_THEME=mytheme corebird
但是 corebird 采用 gnome-shell 默认主题启动。
然后我创建了一个 bash 脚本:
#!/bin/bash
export GTK_THEME="mytheme"
exec /usr/bin/corebird "$@"
...并将执行行更改为:
Exec=/home/me/bin/corebird.sh
... 但结果相同,corebird 使用 GNOME 默认主题启动。
那么,如何从.desktop
文件启动具有特定主题的应用程序?
答案1
在您的桌面文件中,将 exec 行更改为
Exec=sh -c "GTK_THEME=mytheme corebird"
或者,如果您使用包装器脚本,请将其更改为:
#!/bin/bash
GTK_THEME="mytheme" /usr/bin/corebird "$@"
请注意,这种应用不同主题的方法仅适用于 GTK3 应用程序。
答案2
环境变量主题未启用的原因是由.destop文件中的此行引起的:
DBusActivatable=true
正如解释的那样freedesktop.org 规格:
一个布尔值,指定此应用程序是否支持 D-Bus 激活。如果缺少此键,则默认值为 false。如果值为 true,则实现应忽略 Exec 键并发送 D-Bus 消息以启动应用程序。有关其工作原理的更多信息,请参阅 D-Bus 激活。应用程序仍应在其桌面文件中包含 Exec= 行,以与不理解 DBusActivatable 键的实现兼容。
因此,将此值设置为 false 或删除此行可解决此问题:
DBusActivatable=false