在 Ubuntu 18.04 上编写 .desktop 文件以启动具有特定主题的应用程序的正确方法是什么?

在 Ubuntu 18.04 上编写 .desktop 文件以启动具有特定主题的应用程序的正确方法是什么?

我的系统是 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

相关内容