Могу ли я применить другую тему GTK3 из основной для отдельного приложения?

Например, могу ли я оставить Ambiance в качестве основной темы, но назначить элементарную тему приложению элементарного?

5 ответов

Вы можете использовать переменную среды GTK GTK_THEME=elementary запустить приложение с простейшей темой. Например, бег GTK_THEME=elementary pantheon-files запустит элементарное приложение 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. нажмите Ввод

Предостережения:

  1. Это не изменит тему вашего оконного менеджера на элементарную тему.
  2. Это (преднамеренно) будет применяться только к вашей учетной записи, а не к root или кому-либо еще на машине.
  3. Имена тем являются cAsE-sEnsItiVe и должны соответствовать имени папки темы.

Источники:

  1. Я элементарный вкладчик;)
  2. GTK+ 3 Справочное руководство: Запуск приложений GTK+
  3. Установить переменную в файле.desktop

Вопрос все еще актуален и я нашел способ:

  • создать любую папку 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'

Да, простой способ - указать приложению требуемый путь к файлу rc в команде, которая запускает ваше приложение:

GTK2_RC_FILES=/usr/share/themes/Redmond/gtk-2.0/gtkrc inkscape

Это 12.04 для Inkscape (который все еще Gnome2, кстати) производит это:

окно Inkscape с темой Windows

Более подробную информацию о теме Gtk2 можно найти здесь.

Конечно, возможно, у меня нет особого опыта в теме, но когда вы переходите к /usr/share/themes/*Theme Name*/gtk-3.0/apps/ каталог, вы найдете .css файлы, названные с помощью приложений, они нацелены на тему, так что да, вы можете создавать темы для конкретных приложений.

Обратите внимание, что способ, которым вы упомянули тему своих приложений, может потребовать некоторой работы (например, одновременной работы Ambiance и Elementary, так как у каждой темы есть базовый файл, поверх которого выполняется стиль, специфичный для приложения (файл gtkrc в Gtk 2.0 пока, файл gtk.css в случае Gtk3.0).

И этот базовый файл темы содержит правила стиля, специально предназначенные для данной темы, поэтому вы не можете создать элементарный стиль и внешний вид из файла базовой темы Ambiance без внесения каких-либо серьезных изменений, и даже если вы это сделаете, вы потеряете внешний вид Ambiance.

Кроме того, в GNOME можно применять только одну тему за раз. Например, если вы использовали окно "Внешний вид" в Ubuntu 12.04, вы знаете, что можете выбрать любую тему из выпадающего списка, если вы использовали gnome-tweak-tool, чем вы можете установить разные темы для Gtk, оконных рам и значков, но тем не менее, он не позволяет нацеливать конкретные приложения на темы, поэтому, как я говорил ранее, вы можете установить совершенно разные темы для разных приложений, если вы ловко работать с базовым файлом темы, на данный момент никакие сторонние приложения не могут сделать это самостоятельно.

Один из способов сделать это самостоятельно, это позволить файлу базовой темы (gtk.css) иметь только основные правила, которые нейтральны для любой темы, будь то темный или светлый. И фактический дизайн темы написан в специфичных для приложения файлах, которые находятся в вышеупомянутом каталоге, то есть для стилизации Nautilus, вы можете написать все необходимые свойства в nautilus.css файл. То же самое с каждым приложением, которое вы хотите настроить. Очевидно, что для того, чтобы сделать это, требуется приличный опыт создания Gtk.

Вы можете сослаться на это для создания собственной темы с помощью шаблона. Также есть хорошая документация по тематике Gtk+.

Да, вы можете, на самом деле я погуглил и получил несколько ответов:

  1. Ищите точный исполняемый файл для программы, которую вы хотите изменить тему. Например, если вы хотите его для офиса, введите which ooffice в терминале.
  2. Найдите папку bin, в которую все приложения помещают свои двоичные исполняемые файлы. Тип echo $PATH в терминале, и вы получите путь. Я рекомендую вам создать папку bin в вашем домашнем каталоге, набрав mkdir ~/bin
  3. Тип gedit ~/.bashrc открыть ваш bash rc файл.
  4. Перейти в конец этого файла и добавить эту строку export PATH=~/bin:${PATH}

Теперь мы создадим скрипт, который выполнит вашу программу с пользовательской темой:

  1. Создайте файл сценария приложения, набрав: gedit ~/bin/ooffice
  2. Введите эти строки в открытом файле:

    #!/bin/bash
    env GTK2_RC_FILES=/usr/share/themes/SlicknessX/gtk-2.0/gtkrc /usr/bin/ooffice "$@"
    
  3. Измените режим файла на исполняемый, набрав: chmod +x ~/bin/ooffice,

Надеюсь, это поможет, вам нужно запомнить только одну вещь, формат скрипта, как показано ниже:

#!/bin/bash
env GTK2_RC_FILES=PATH_TO_GTKRC PATH_TO_EXECUTABLE "$@"
Другие вопросы по тегам