我有一台计算机,其中有两个(非同时)用户,他们都属于同一sudo
组。有没有办法使用 保留用户的 GTK 主题gksudo
,例如在运行更新管理器时?默认情况下使用 Raleigh 主题。
我使用 Lubuntu 14.04,带有一个简单的窗口管理器(Blackbox),没有显示管理器。
答案1
我不确定为什么通过启动的应用程序gksudo
不使用用户的主题。它在完整的 Lubuntu 系统上对我有用。(但使用的是 Openbox,而不是 Blackbox。)幸运的是:
- 对于像更新管理器这样的程序,最好的解决方案可能是安装 polkit(通常存在)并运行更新管理器没有
gksudo
。 (看方法 1以下。) - 对于必须以 root 身份启动的应用程序,或者如果你不想安装 polkit,一种解决方法是指定你想要的主题
GTK_THEME
(看方法 2和方法 3)。
方法 1:安装 polkit(又名 PolicyKit)。
适用于以下公用事业的最佳解决方案:
- 软件更新程序/更新管理器 (
update-manager
) - Ubuntu 软件中心 (
software-center
) - Lubuntu 软件中心 (
lubuntu-software-center
) - 软件和更新 (
software-properties-gtk
)
...以及 Ubuntu 中的许多其他系统管理实用程序,根本不要以 root 身份运行它们。
通常你不需要以 root 身份运行这些实用程序,因为它们与波尔基特并在必要时使用它(而不是sudo
)执行身份验证。由于显示用户界面的程序实际上是以您而不是 root 的身份运行的,因此它会根据您的用户帐户的配置进行显示。
通常,即使在 Lubuntu 系统上也无需执行任何特殊操作即可实现此目的。Ubuntu 的设计使得这些实用程序可以以非 root 用户身份运行,无需任何特殊配置。
但由于您的系统特别小,您可能没有安装 polkit。您可以通过安装policykit-1和policykit-1-gnome包。
sudo apt-get update
sudo apt-get install policykit-1 policykit1-1-gnome
安装 polkit 后,这些实用程序应该会自动使用它,而不需要以 root 身份启动。
但这可能并不合适:
- 如果你不想安装 polkit,或者
- 以 root 身份运行 GTK+ 程序没有已被编写以使用 polkit(例如 Leafpad 或 Gedit)。
方法 2:运行时设置所需的 GTK+ 主题gksudo
。
假设你想跑gedit
以 root 身份运行。请注意,此技术对于其他 GTK+ 程序(例如更新管理器)也同样适用。
除了运行,您还可以运行:gksudo gedit
gksudo env GTK_THEME=HighContrast gedit
代替HighContrast
使用所需主题的名称。
(我用env
因为虽然sudo
支持sudo VARIABLE=name command
语法,但gksu
/gksudo
却不支持。)
方法 3:制作一个设置所需主题的启动器。
这与方法 2 相同,只是通过启动器运行程序,而不是每次都输入命令。
创建快捷方式运行一个程序(例如gedit
)使用特定的 GTK+ 主题(例如HighContrast
)在 LXDE 中以 root 身份运行:
lxshortcut -o ~/Desktop/'gedit (as root)'
代替gedit (as root)
,输入您想要的任何内容作为启动器的显示名称。
在运行该命令时出现的“文件属性”窗口中,单击“桌面条目”选项卡。在标有命令的文本框中,输入:
gksudo env GTK_THEME=HighContrast gedit
您可以将其他所有内容保留为空白,然后单击“确定”。
如果您愿意,您可以使用正在运行的可执行文件的完整路径(/usr/bin/gksudo
和,在此示例中为/usr/bin/gedit
)。但这通常不是必要的。
为 制作启动器gksudo env GTK_THEME HighContrast gedit
。(命令的左侧部分不可见。)
答案2
我使用 i3wm 时实际上遇到了同样的问题。我想既然您使用的是 Lubuntu,那么您应该安装了 lxappearance。使用 gksudo 运行它,然后您应该会看到为 gksudo 选择了主题。更改并应用它,您应该会得到 gksudo 所需的主题。