Автоматически получать разные цвета терминала каждый раз, когда я открываю терминал

14

Я часто открываю три терминала, и мне действительно нравится, когда на каждом из них есть разные цветовые палитры.

У меня сохранено несколько цветовых палитр, и я хотел бы, чтобы настройки по умолчанию проходили через мои сохраненные профили каждый раз, когда я открываю терминал, так что, если я открою 3, они будут разных цветов, и мне не придется вручную менять профиль на 2.

Есть предположения?

Благодарность!

kpie
источник
Просто отредактировал мой ответ сценарием, который делает то, что вы хотите. Его следует добавить в файл ./bashrc . Надеюсь, что это соответствует вашим потребностям!
IanC

Ответы:

10

Функциональная версия

Инструкции:

Скрипт считает, что вы используете gnome-терминал , который является терминалом Ubuntu по умолчанию.

Перед запуском скрипта откройте gnome-терминал и создайте несколько профилей («Правка»> «Настройки»> «Профили») с различными настройками по вашему желанию (цвет фона, цвет текста, ...). Вы можете назвать их Profile1, Profile2, Profile3 и так далее. Создайте достаточно профилей, чтобы покрыть количество терминалов, которые будут открыты, но если будет открыто большее количество терминалов, будет использоваться профиль по умолчанию.

Скрипт создает файл ~ / .Bash_Color_Changer , от которого он зависит, поскольку он сообщит сценарию, открывался ли терминал регулярно или после вызова на .bashrc .

Добавьте скрипт в конец вашего файла ~ / .bashrc .

Автор сценария:

добавить в .bashrc :

#Change color according to the number of Bash shells opened
#Creates the .Bash_Color_Changer file if it's not present
if ! [ -f ~/.Bash_Color_Changer ]; then
    echo ORIGINAL > ~/.Bash_Color_Changer
fi

#Array holding the name of the profiles: Substitute it for the names you're using
Color_counter=(Profile1 Profile2 Profile3)
#Finds out the number of opened bashs counting the lines containing "bash"
#in the pstree function. (-c deactivates compact display to avoid it showing
#lines with "2*[bash]" instead of one for each bash)
Number_of_bashs=$(($(pstree -c | grep "bash" | wc -l)-1))

#Checks if the terminal being opened was opened by the user or by
#the script, and act according to it
if [ $(cat ~/.Bash_Color_Changer) = ORIGINAL ]; then 
    if ((Number_of_bashs < ${#Color_counter[*]})); then
        echo COPY > ~/.Bash_Color_Changer
        gnome-terminal --tab-with-profile-internal-id=${Color_counter[${Number_of_bashs}]} 
        exit
    fi
else 
    echo ORIGINAL > ~/.Bash_Color_Changer
fi

Проверено, но не экстенсивно. Наслаждайтесь!

IanC
источник
Идея для завтрашнего дня - это добавление условного выражения на exitоснове какого-либо файла, например ~/bashcolor.txt. Он может содержать строку, указывающую, является ли открываемый bash «оригиналом» или «копией». Так что, если cat ~/bashcolor.txtвозвращает «ORIGINAL», exitкоманда запускается и echo COPY > ~/bashcolor.txt. Иначе, выход не запускается, но файл возвращается к исходному ( echo ORIGINAL > ~/bashcolor.txt). Это решило бы проблему с мигающим терминалом.
IanC
Интересный скрипт для создания, возможно, даже сам его использую :) Любые предложения по улучшению приветствуются!
IanC
Это работает в
верном
2
Я сделал 1 изменение в моей версии ... Таким образом, он продолжает работать, когда вы открываете больше терминалов, чем у вас есть профили. Number_of_bashs=$(($(($(pstree -c | grep "bash" | wc -l)-1))%${#Color_counter[@]}))
kpie
Ницца! Мне не пришло в голову использовать модуль для поддержания цикличности итерации: p
IanC
9

Одним из вариантов может быть использование xfce4-terminal. Он очень похож на стандартный терминал Ubuntu (который есть gnome-terminal), и многие из его пакетов зависимостей используют компонент gtk, что делает его подходящей альтернативой.

Сначала установите его с

sudo apt-get install xfce4-terminal

Затем откройте его, перейдите в « Правка» -> « Настройки» , выберите вкладку « Цвета» и установите флажок « Изменить цвет фона для каждой вкладки» и «Выход»

Сделайте терминал по умолчанию xfce4-terminalили измените ярлык, Ctrl-Alt-Tчтобы открыть его.

Теперь каждый раз, когда вы открываете, вам будет представлена ​​другая цветовая палитра. разноцветный терминал

Полезные ссылки:

Анвар
источник
5

Хаха, очень интересно. Я мог бы попытаться сделать это также. У меня в основном только несколько терминалов и браузер.

Поэтому я осмотрелся и нашел это - https://github.com/sos4nt/dynamic-colors . Очень аккуратный маленький проект, который поможет вам достичь того, чего вы хотите.

Теперь в каталоге colorschemes/ этого проекта вы увидите, что в настоящее время он имеет 4 цветовые схемы. Вы можете добавить столько, сколько вам нужно / хотите.

Таким образом , чтобы каждый терминал , чтобы выбрать другую цветовую схему, я хотел бы добавить функцию на мой .bash_profileили .bashrcили там , где, например , что функция делает две вещи:

  1. Выясняет, сколько терминалов в настоящее время работает
  2. Введите dynamic-colors switch colorscheme-nameкоманду, основанную на (1).

Надеюсь это поможет!

PS Я бы написал для вас сценарий, но я ненавижу кормление с ложечки и мне лень аф. :)

theabhinavdas
источник
хорошо ... создание оболочки / псевдонима для терминальной команды позволит достичь этого.
Вишну Кумар
@VishnuKumar, да, это то, что сначала пришло в голову, хотя это может быть не лучшим решением. рад, что тебе понравилось.
theabhinavdas
+1 для правильного ответа, я действительно не хочу бороться с «работами», но этот ответ требует, чтобы я использовал собственные определения стиля, использованные в моем проекте динамических цветов, кроме того (и это то, что меня действительно привлекло), это не не поддерживает непрозрачность: (Я чувствую, что ответ должен включать некоторую комбинациюgnome-terminal --load-config=FILE
kpie
@ kpie, ха-ха. Нет справедливости, непрозрачность не была упомянута в вопросе. Кроме того, трудно установить непрозрачность из командной строки и во многом зависит от многих вещей. Кроме того, на этот вопрос можно ответить по-разному, но я подумал, что мой ответ был довольно удобным (хотя бы для меня, ха-ха) :)
theabhinavdas
Я надеюсь, что смогу восполнить выбор вязки, предоставив необходимые сценарии ... github.com/Krewn/stylingTerminalOnOpen И я должен указать, что он не поддерживает переменную непрозрачность, цветовые схемы будут поддерживать непрозрачность вашего профиля по умолчанию.
kpie
1

Konsole фактически поддерживает эту функцию изначально. Konsole действительно мощный и очень настраиваемый.

Если у вас нет Konsole, то просто sudo apt install konsole

  1. Перейдите в настройки
  2. Настройки Konsole
  3. Выберите вкладку «Внешний вид»
  4. Выберите вашу цветовую схему
  5. Выберите «Изменить» справа
  6. Там есть поле для установки "Изменить цвет фона для каждой вкладки"

Кроме того, если вы работаете на трех серверах одновременно, вы можете включить некоторые изящные псевдонимы, показанные здесь

Мэтт О.
источник
+1 за хороший ответ, но у меня нет консоли. Ответ @ <MemoryAddress> поддерживает больше терминальных интерфейсов (любой, который поддерживает escape-последовательности OSC). Но твой проще в использовании. Я дам награду тому, кто наберет больше голосов за пару дней. Спасибо за Ваш ответ!
kpie
Вы будете удивлены, сколько людей на самом деле прокомментируют здесь, говоря мне, что я должен рассказать вам, как его установить -_-
Мэтт О.
Вы читали комментарии к другим ответам?
kpie
Я сделал. Может быть, я что-то упускаю, но вы ищете переменную непрозрачность и то, что не требует псевдонимов. Konsole достигает обоих, но я не уверен насчет последовательности побега.
Мэтт О.
1
хаха, я понял Не вините меня, после того, как у меня будет достаточно сумасшедших, предложите внести изменения, я просто сделаю это автоматически. Я не пытаюсь оскорбить ваш разум.
Мэтт О.