我可以将主主题中的不同 GTK3 主题应用到单个应用程序吗?

Ros*_*ssi 50 gnome themes unity gtk3

例如,我可以将 Ambiance 作为主要主题,但将基本主题分配给基本的应用程序吗?

小智 39

您可以使用 GTK 环境变量GTK_THEME=elementary来启动具有基本主题的应用程序。例如,运行GTK_THEME=elementary pantheon-files将使用基本 GTK 主题启动基本文件应用程序。

要在每次启动特定应用程序时都应用此功能,最好的选择可能是创建自定义 .desktop 文件(启动程序)。

创建自定义 .desktop 文件

  1. 打开文件浏览器
  2. 导航 /usr/share/applications/
  3. 复制要使用基本主题启动的应用程序的启动器(突出显示和 Ctrl+C)
  4. 导航~/.local/share/applications/并粘贴启动器 (Ctrl+V)
  5. 右键单击并使用文本编辑器打开启动器
  6. 修改Exec=以包含开头的行Exec=env GTK_THEME=elementary,然后是该行先前存在的内容。(所以Exec=pantheon-files会变成Exec=env GTK_THEME=elementary pantheon-files
  7. 保存并关闭文件

下次您从 Unity(或您选择的应用程序启动器)启动应用程序时,它将使用基本主题。

奖励:在使用命令行时使其工作

您可能还希望应用程序在从命令行启动时以基本主题启动。这样做:

  1. 打开您的终端应用程序
  2. 类型alias pantheon-files="GTK_THEME=elementary pantheon-files"(替换pantheon-files为所需的应用程序)
  3. 按 Enter

注意事项:

  1. 这不会将您的窗口管理器的主题更改为基本主题。
  2. 这(按设计)仅适用于您的帐户,而不适用于 root 或机器上的任何其他人。
  3. 主题名称为 cAsE-sEnsItiVe,应与主题文件夹名称匹配。

资料来源:

  1. 我是初级贡献者 ;)
  2. GTK+ 3 参考手册:运行 GTK+ 应用程序
  3. 在 .desktop 文件中设置变量


小智 11

这个问题仍然有效,我找到了一种方法:

  • 创建任何文件夹 path/to/MY_FOLDER

  • 在其中创建一个/share/themes/文件夹(即path/to/MY_FOLDER/share/themes)。

  • 将任何 GTK3 主题放在后者中

  • 主题重命名为当前活动主题的名称。

    最后,此命令将使应用程序使用重命名的主题而不是当前活动的主题:

GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATON

(后面的路径GTK_DATA_PREFIX=必须是(并且只有那个)到包含 的文件夹/share/themes/RENAMED_THEME。这就是为什么它不是 path/to/MY_FOLDER/share/themes/RENAMED_THEME,而只是path/to/MY_FOLDER。)

要将其放在启动器中,请相应地替换:

Exec=sh -c 'GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATION'
Run Code Online (Sandbox Code Playgroud)

  • 哪个文件/文件夹*确切*我们指向使用`GTK_DATA_PREFIX`? (2认同)

Mar*_*mo- 8

是的,简单的方法是在运行应用程序的命令中将应用程序指向 rc 文件所在的所需路径:

GTK2_RC_FILES=/usr/share/themes/Redmond/gtk-2.0/gtkrc inkscape
Run Code Online (Sandbox Code Playgroud)

这在 12.04 forinkscape(它仍然是 Gnome2 btw)产生这个:

带有 Windows 主题的inkscape 窗口

在此处查看有关运行的 Gtk2 主题的更多信息。

  • 最初是“我可以为单个应用程序使用不同的 GTK3 主题吗?” 问题中仍然有 Gtk3 主题,然后自由自由要求我对无效的答案发表评论并在必要时编辑问题,我不反对任何人。 (5认同)

Kus*_*hal 8

这当然可能,我没有太多的主题经验,但是当您导航到/usr/share/themes/*Theme Name*/gtk-3.0/apps/目录时,您会找到.css以它们针对主题的应用命名的文件,所以是的,您可以创建特定于应用的主题。

请注意,您提到的主题,你的应用程序可能需要一些工作的方式来完成(如同时兼具的氛围和基础工作,因为每个主题都有其特定应用程式的造型做了顶部的基本文件(文件gtkrc的Gtk 2.0而,gtk.cssGtk3.0情况下的文件)。

并且这个基本主题文件包含专门针对给定主题的样式规则,因此您无法在不进行一些重大更改的情况下从 Ambiance 的基本主题文件创建类似 Elementary 的外观,即使您这样做,您也会失去 Ambiance 外观本身。

此外,在 GNOME 中,一次只能应用一个主题,例如,如果您在 Ubuntu 12.04 中使用过外观窗口,您知道可以从下拉列表中选择任何一个主题,如果您使用过gnome-tweak-tool,则您可以为 Gtk、窗口框架和图标设置不同的主题,但仍然不允许将特定应用程序定位到主题,所以正如我之前所说,如果您巧妙地使用,您可以为不同的应用程序设置完全不同的主题基本主题文件,截至目前,没有第三方应用程序可以自行完成。

您可以自己完成的一种方法是,让基本主题文件 ( gtk.css) 仅具有与任何主题无关的基本规则,无论是深色还是浅色。并且将实际的主题设计写在驻留在上述目录中的特定于应用程序的文件中,即为了样式化 Nautilus,您可以在nautilus.css文件中编写所有必需的属性。与您希望定位的每个应用程序相同。显然,这样做需要一些不错的 Gtk 主题体验。

你可以参考这个使用模板创建你自己的主题,还有一个关于 Gtk+主题的不错的文档

  • 我不想创建一个新主题,我想分配一个现有的主题。 (7认同)