Я отредактировал вопрос, чтобы лучше отразить то, что вы ищете. Просим прощения, но короткий ответ от моего исследования нет , вы не можете без необходимости тратить некоторое усилие создать новый «гибрид» тему , как описано @Kush :( Это не так просто , как GTK2 больше.
иш
Ответы:
32
Вы можете использовать переменную среды GTK GTK_THEME=elementaryдля запуска приложения с элементарной темой. Например, при запуске GTK_THEME=elementary pantheon-filesбудет запущено элементарное приложение Files с использованием элементарной темы GTK.
Чтобы применить его каждый раз, когда вы запускаете определенное приложение, ваш лучший вариант - создать собственный файл .desktop (модуль запуска).
Создайте собственный файл .desktop
Откройте браузер файлов
Перейдите к /usr/share/applications/
Скопируйте панель запуска (выделите и Ctrl + C) для приложения, которое вы хотите запустить с элементарной темой
Щелкните правой кнопкой мыши и откройте панель запуска с помощью текстового редактора
Измените строку, начиная с Exec=включения, Exec=env GTK_THEME=elementaryа затем предыдущего существующего содержимого строки. (Так Exec=pantheon-filesбы и стало Exec=env GTK_THEME=elementary pantheon-files)
Сохраните и закройте файл
В следующий раз, когда вы запустите приложение из Unity (или по вашему выбору), оно будет использовать элементарную тему.
Бонус: заставить работать при использовании командной строки
Вы также можете захотеть, чтобы приложение запускалось с элементарной темой при запуске из командной строки. Для этого:
Откройте приложение терминала
Тип alias pantheon-files="GTK_THEME=elementary pantheon-files"(замена pantheon-filesнужным приложением)
нажмите Ввод
Предостережения:
Это не изменит тему вашего оконного менеджера на элементарную тему.
Это (преднамеренно) будет применяться только к вашей учетной записи, а не к root или кому-либо еще на машине.
Имена тем являются cAsE-sEnsItiVe и должны соответствовать имени папки темы.
Хороший ответ, но я не могу заставить это работать для любой темы. Можете ли вы привести пример с использованием терминала find /usr/share/themes -type d -name 'gtk-3.0' | awk -F'/' '{print $5}'и geditв демонстрационных целях? Например, GTK_THEME="HighContrast" geditили env GTK_THEME="HighContrast" geditили GTK_THEME=Adwaita:dark gedit... ничего.
Редсандро
Я просто изменил это, /usr/share/applications/<appname>.desktopи это сработало для меня.
Дрю Чапин
Есть ли способ сделать это из кода внутри приложения?
Anony-Mousse
1
Стоит отметить, что названия тем чувствительны к регистру.
Седрик Райхенбах
Это работает для некоторых приложений, но не для всех.
10
Вопрос все еще актуален и я нашел способ:
создать любую папку 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.)
Чтобы иметь это внутри лаунчера, замените соответственно:
Теперь это на самом деле работает даже с Eclipse, в отличие от других ответов, которые я пробовал.
Руслан
2
какой файл / папка мы точно указываем GTK_DATA_PREFIX?
запустить DOSrun
1
Это было довольно странно, но я понял это и отредактировал ответ.
Другой способ - поместить переименованную тему для конкретного приложения ~/.themes(должен быть текущий активный /usr/share/themes), а затем использовать какой-либо путь GTK_DATA_PREFIX=path/to/nowhere для запуска этого приложения, что приведет к сбросу темы приложения на текущую, только она будет сначала отображаться ~/.themesи принимать тот с тем же именем там.
1
@runDOSrun - путь после GTK_DATA_PREFIX=должен быть тем ( и только этим ) к папке, которая содержит/share/themes/RENAMED_THEME . Вот почему это не такFOLDER/share/themes/RENAMED_THEME , а просто FOLDER.
8
Это, конечно, возможно, у меня нет особого опыта в создании тем, но когда вы перейдете к /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 +.
Я не хочу создавать новую тему, я хочу назначить существующую.
neonboy
@neonboy: Как я уже говорил, с GTK3 все не так просто, тема распределяется по нескольким файлам, и если зависимости не удовлетворяются, ломаная тема - это все, что вы получите. Вот почему я опубликовал ответ, который показывает возможное решение с GTK3, а не с GTK2 (в котором сделать это довольно просто).
Кушал
6
Да, простой способ - указать приложению требуемый путь к файлу rc в команде, которая запускает ваше приложение:
Вы не указали это в своем первоначальном вопросе. Пожалуйста, не противодействуйте спрашивающим.
Мартин Оуэнс -доктормо-
5
Первоначально было «Могу ли я использовать разные темы GTK3 для отдельных приложений?» У которого все еще была тема Gtk3 в вопросе, затем я могу попросить меня прокомментировать неправильные ответы и отредактировать вопрос, если это необходимо, я никого не противодействую.
neonboy
1
Да, вы можете, на самом деле я погуглил и получил несколько ответов:
Ищите точный исполняемый файл для программы, которую вы хотите изменить тему. Например, если вы хотите это для офиса, то введите which oofficeв терминале.
Найдите папку bin, в которую все приложения помещают свои двоичные исполняемые файлы. Введите echo $PATHв терминале, и вы получите путь. Я рекомендую вам создать папку bin в вашем домашнем каталоге, набравmkdir ~/bin
Это конечно возможно для приложений GTK2, использующих env GTK2_RC_FILES. переменная. Кроме того, какие темы вы говорите о компиляции? Вопрос касается общесистемных тем GTK, доступных в Ubuntu.
иш
1
Я полагаю, что метод, который вы упомянули, нацелен на Gtk2.0, в то время как Ubuntu 12.04 использует Gtk3.0 для тем, так что если он может не работать.
Ответы:
Вы можете использовать переменную среды GTK
GTK_THEME=elementary
для запуска приложения с элементарной темой. Например, при запускеGTK_THEME=elementary pantheon-files
будет запущено элементарное приложение Files с использованием элементарной темы GTK.Чтобы применить его каждый раз, когда вы запускаете определенное приложение, ваш лучший вариант - создать собственный файл .desktop (модуль запуска).
Создайте собственный файл .desktop
/usr/share/applications/
~/.local/share/applications/
и вставьте панель запуска (Ctrl + V)Exec=
включения,Exec=env GTK_THEME=elementary
а затем предыдущего существующего содержимого строки. (ТакExec=pantheon-files
бы и сталоExec=env GTK_THEME=elementary pantheon-files
)В следующий раз, когда вы запустите приложение из Unity (или по вашему выбору), оно будет использовать элементарную тему.
Бонус: заставить работать при использовании командной строки
Вы также можете захотеть, чтобы приложение запускалось с элементарной темой при запуске из командной строки. Для этого:
alias pantheon-files="GTK_THEME=elementary pantheon-files"
(заменаpantheon-files
нужным приложением)Предостережения:
Источники:
источник
find /usr/share/themes -type d -name 'gtk-3.0' | awk -F'/' '{print $5}'
иgedit
в демонстрационных целях? Например,GTK_THEME="HighContrast" gedit
илиenv GTK_THEME="HighContrast" gedit
илиGTK_THEME=Adwaita:dark gedit
... ничего./usr/share/applications/<appname>.desktop
и это сработало для меня.Вопрос все еще актуален и я нашел способ:
path/to/MY_FOLDER
/share/themes/
папку внутри него (то естьpath/to/MY_FOLDER/share/themes
).переименуйте тему в название ТЕКУЩЕЙ АКТИВНОЙ ТЕМЫ.
Наконец, эта команда заставит приложение использовать переименованную тему вместо текущей:
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
.)Чтобы иметь это внутри лаунчера, замените соответственно:
источник
GTK_DATA_PREFIX
?~/.themes
(должен быть текущий активный/usr/share/themes
), а затем использовать какой-либо путьGTK_DATA_PREFIX=path/to/nowhere
для запуска этого приложения, что приведет к сбросу темы приложения на текущую, только она будет сначала отображаться~/.themes
и принимать тот с тем же именем там.GTK_DATA_PREFIX=
должен быть тем ( и только этим ) к папке, которая содержит/share/themes/RENAMED_THEME
. Вот почему это не такFOLDER/share/themes/RENAMED_THEME
, а простоFOLDER
.Это, конечно, возможно, у меня нет особого опыта в создании тем, но когда вы перейдете к
/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 +.
источник
Да, простой способ - указать приложению требуемый путь к файлу rc в команде, которая запускает ваше приложение:
Это 12.04 для Inkscape (который все еще Gnome2, кстати) производит это:
Более подробную информацию о теме Gtk2 можно найти здесь .
источник
Да, вы можете, на самом деле я погуглил и получил несколько ответов:
which ooffice
в терминале.echo $PATH
в терминале, и вы получите путь. Я рекомендую вам создать папку bin в вашем домашнем каталоге, набравmkdir ~/bin
gedit ~/.bashrc
чтобы открыть файл bash rc.export PATH=~/bin:${PATH}
Теперь мы создадим скрипт, который выполнит вашу программу с пользовательской темой:
gedit ~/bin/ooffice
Введите эти строки в открытом файле:
Изменение режима файла , исполняемая команда:
chmod +x ~/bin/ooffice
.Надеюсь, это поможет, вам нужно запомнить только одну вещь, формат скрипта, как показано ниже:
источник