Вопрос или проблема
Я создал два пользовательских профиля gnome-terminal с собственными цветами для светлой и темной темы (мне нравится PaperColor). В настройках gnome-terminal у меня установлено “Вариант темы” – “Следовать системному стилю”. Но даже когда gnome-terminal переключается между темной и светлой темами в зависимости от системного стиля, мне приходится вручную переключаться между моими двумя пользовательскими профилями. Я мог бы просто использовать один профиль с отмеченной опцией “Использовать цвета из системной темы”, но тогда у меня будут некрасивые цвета системной темы вместо моих предпочтительных цветов.
Есть ли способ установить gnome-terminal для использования разных пользовательских профилей для темной и светлой тем?
Или:
Есть ли способ настроить системные цвета, чтобы они соответствовали цветам моего пользовательского профиля gnome-terminal? И для темной, и для светлой тем?
К сожалению — как также отметил grawity — это пока невозможно в GNOME Terminal.
Ближайший обходной путь, если вы предпочитаете продолжать использовать GNOME Terminal и хотите изменить внешний вид всех своих терминалов одновременно, таков:
Создайте единственный профиль, который вы будете использовать для всех своих окон и вкладок терминала. Создайте два сценария оболочки, которые изменяют свойства этого профиля. Затем выполните любой из этих двух сценариев, к которому хотите переключиться.
Такой сценарий может выглядеть следующим образом (жестко закодируйте идентификатор профиля, если хотите использовать не стандартный профиль, также очевидно измените цвета по своему вкусу):
#!/bin/sh
default=$(dconf read /org/gnome/terminal/legacy/profiles:/default | tr -d "'")
dconf write /org/gnome/terminal/legacy/profiles:/:$default/background-color '"#abcdef"'
dconf write /org/gnome/terminal/legacy/profiles:/:$default/foreground-color '"#123456"'
dconf write /org/gnome/terminal/legacy/profiles:/:$default/palette '[
"#000000",
"#111111",
"#222222",
"#333333",
"#444444",
"#555555",
"#666666",
"#777777",
"#888888",
"#999999",
"#AAAAAA",
"#BBBBBB",
"#CCCCCC",
"#DDDDDD",
"#EEEEEE",
"#FFFFFF"]'
Обратите внимание, что синтаксис rgb(...,...,...)
, как сообщается соответствующими командами dconf read ...
, также вполне допустим.
Нет, gnome-terminal не поддерживает это в своих текущих версиях.
Терминал GNOME Prompt
, также известный как Ptyxis
(который построен с использованием той же библиотеки libvte для эмуляции терминала), поддерживает цветовые схемы, имеющие светлые и темные варианты. У него нет интерфейса для выбора различных схем для каждого режима, но можно скачать файлы схем из его репозитория Git и вручную объединить их в пользовательскую схему (установите ее, перетащив файл в окно настроек).
Prompt/Ptyxis использует libvte с GTK4, которая все еще имеет несколько особенностей (таких как странная скорость прокрутки колесика мыши) по сравнению с вариантом libvte GTK3, который использует GNOME Terminal, но кроме этого работает хорошо.
Ответ или решение
К сожалению, в текущих версиях GNOME Terminal нет возможности автоматически переключать профили на основе режима темы (светлой или тёмной). Это ограничение может осложнять работу пользователей, которые предпочитают разные цветовые схемы для каждого из режимов.
Однако существует возможность рассмотреть вариант использования одного профиля и автоматизации смены его параметров с помощью скриптов. Давайте рассмотрим это более подробно.
Создание скриптов для автоматизации смены профиля GNOME Terminal
Для начала, создайте один профиль, который будет использоваться в обоих режимах. Затем напишите два скрипта: один для настройки профиля на светлую тему, другой — для тёмной. Каждый из скриптов будет изменять параметры цвета вашего профиля в зависимости от выбранной темы.
Пример скрипта для светлой темы
#!/bin/sh
default=$(dconf read /org/gnome/terminal/legacy/profiles:/default | tr -d "'")
dconf write /org/gnome/terminal/legacy/profiles:/:$default/background-color '"#ffffff"'
dconf write /org/gnome/terminal/legacy/profiles:/:$default/foreground-color '"#000000"'
dconf write /org/gnome/terminal/legacy/profiles:/:$default/palette '[
"#ffffff",
"#ff5555",
"#50fa7b",
"#f1fa8c",
"#bd93f9",
"#ff79c6",
"#8be9fd",
"#282a36",
"#44475a",
"#6272a4",
"#f8f8f2",
"#f8f8f2",
"#f8f8f2",
"#f8f8f2",
"#f8f8f2",
"#f8f8f2"]'
Пример скрипта для тёмной темы
#!/bin/sh
default=$(dconf read /org/gnome/terminal/legacy/profiles:/default | tr -d "'")
dconf write /org/gnome/terminal/legacy/profiles:/:$default/background-color '"#282a36"'
dconf write /org/gnome/terminal/legacy/profiles:/:$default/foreground-color '"#f8f8f2"'
dconf write /org/gnome/terminal/legacy/profiles:/:$default/palette '[
"#21222c",
"#ff5555",
"#50fa7b",
"#f1fa8c",
"#bd93f9",
"#ff79c6",
"#8be9fd",
"#f8f8f2",
"#6272a4",
"#ffb86c",
"#44475a",
"#6272a4",
"#f8f8f2",
"#f8f8f2",
"#f8f8f2",
"#f8f8f2"]'
Как реализовать
- Сохраните оба скрипта в отдельные файлы, например
set_light_theme.sh
иset_dark_theme.sh
. - Сделайте их исполняемыми:
chmod +x set_light_theme.sh set_dark_theme.sh
- Теперь вы можете запускать эти скрипты в зависимости от того, какой режим темы вам нужен в данный момент.
Альтернатива — Использование другого эмулятора терминала
Если вы хотите, вы также можете рассмотреть использование других эмуляторов терминала, таких как GNOME Prompt (Ptyxis). Он поддерживает цветовые схемы, которые имеют светлые и тёмные варианты, и может предоставить более быструю интеграцию настройки цветов в зависимости от темы.
Заключение
Хотя GNOME Terminal не предлагает нативный подход для автоматической смены профилей в зависимости от темы, использование скриптов является удобным решением для решения данной проблемы. Для пользователей, предпочитающих более гибкие настройки, хорошо рассмотреть альтернативные терминальные эмуляторы.