Чи можу я застосувати іншу тему GTK3 від головної до окремої програми?


46

Наприклад, чи можу я зберегти Ambiance як основну тему, але призначити елементарну тему додатку елементарного?


8
Поточні відповіді ара про Gtk2, я запитую про Gtk3.
неонбой

Я відредагував питання, щоб краще відобразити те, що ви шукаєте. Вибачте, але коротка відповідь мого дослідження - ні , ви не зможете витратити трохи зусиль, створивши нову "гібридну" тему, як пояснив @Kush :( Це вже не так просто, як GTK2.
Іш

Відповіді:


32

Можна використовувати змінну середовища середовища 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. Відкрийте додаток Terminal
  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 файл

Приємна відповідь, але я не можу дозволити цьому працювати на будь-яку тему. Чи можете ви навести приклад, використовуючи термінал 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і він працював на мене.
Дрю Шапін

Будь-який спосіб зробити це з коду всередині додатка?
Аноні-Мус

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.)

Щоб мати всередині пускової установки, замініть відповідним чином:

Exec=sh -c 'GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATION'

1
Зараз це фактично працює навіть із Eclipse, на відміну від інших відповідей, які я спробував.
Руслан

2
який файл / папка точно робити ми вказуємо на використання GTK_DATA_PREFIX?
runDOSrun

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 while, файл gtk.cssу випадку Gtk3.0 ).

І цей файл базової теми містить правила стилізації, які спеціально орієнтовані на дану тему, отже, ви не можете створити елементарний, як вигляд і відчуття, з базового файлу теми Ambiance, не внісши серйозних змін, і навіть якщо ви це зробите, ви втратите сам Ambiance.

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

Один із способів зробити це самостійно - це те, що нехай у базовому файлі теми ( gtk.css) є лише основні правила, нейтральні до будь-якої теми, темні або світлі. А власний дизайн теми написаний у специфічних для додатків файлах, що знаходяться у вищезгаданому каталозі, тобто для стилізації Nautilus, ви можете записати всі необхідні властивості у nautilus.cssфайл. Те саме з усіма програмами, які ви хочете націлити. Очевидно, що для цього потрібно певний досвід темування Gtk.

Ви можете вказати це на створення власної теми за допомогою шаблону. Також є пристойна документація щодо тематики Gtk +.


7
Я не хочу створювати нову тему, я хочу призначити існуючу.
неонбой

@neonboy: Як я вже говорив, що з GTK3 це не так просто, тема розподіляється по декількох файлах, і якщо залежності не задоволено, зламана тема - все, що ви отримаєте. Ось чому я опублікував відповідь, яка показує можливе рішення з GTK3, а не GTK2 (в якому це зробити досить простіше).
Кушаль

5

Так, простий спосіб полягає в тому, щоб вказати програму на потрібний шлях, де живе ваш файл rc, у команді, яка запускає вашу програму:

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

Це 12.04 для Inkscape (який все ще Gnome2 btw) створює таке:

Inkscape вікно з темою Windows

Дивіться більше інформації про тему Gtk2, що працює тут .


7
Питання щодо Gtk3, а не Gtk2, дякую.
неонбой

Ви не вказали це в своєму первісному запитанні. Будь ласка, не противляйтесь запитувачам.
Мартін Оуенс -доктормо-

5
Спочатку це було "Чи можна використовувати різні теми GTK3 для окремих додатків?" який би все ще мав тему Gtk3 у запитанні, тоді свобода foss попросити мене прокоментувати неправдиві відповіді та відредагувати питання, якщо це було необхідно, я нікого не противляю.
неонбой

1

Так, ви можете, насправді я погуглив і отримав кілька відповідей:

  1. Шукайте точно виконаний для програми, яку ви хочете змінити тему. Наприклад, якщо ви хочете, щоб це було в офісі, тоді введіть which oofficeтермінал.
  2. Шукайте папку bin, куди всі програми розміщують свої бінарні виконавчі файли. Введіть echo $PATHтермінал, і ви прокладете шлях. Я рекомендую вам створити папку для сміття у вашому домашньому каталозі, ввівши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 "$@"

Це, безумовно, можливо для програм GTK2, що використовують GTK2_RC_FILES env. змінна. Також про які теми ви говорите про складання? Питання стосується загальносистемних тем GTK, доступних в Ubuntu.
Останній

1
Я вважаю, що метод, про який ви згадали, націлює Gtk2.0, тоді як Ubuntu 12.04 використовує Gtk3.0 для тем, тому якщо це може не працювати.
Кушаль

6
Вибачте, це рішення для Gtk2, питання про Gtk3.
неонбой
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.