Автоматично отримувати різні кольори терміналів кожного разу, коли я відкриваю термінал


15

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

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

Будь-які думки?

Спасибі!


Щойно відредагував мою відповідь зі сценарієм, який робить те, що ти хочеш. Його слід додати у файл ./bashrc . Сподіваюсь, це відповідає вашим потребам!
Янц

Відповіді:


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

Випробувано, але не широко. Насолоджуйтесь!


Ідея на завтра - додавання умовного на exitоснові деякого файлу, як-от ~/bashcolor.txt. У ньому може бути рядок сказати, якщо баш, який відкривається, є "оригіналом" або "копією". Отже, якщо cat ~/bashcolor.txtповертається "ORIGINAL", exitкоманда виконується і echo COPY > ~/bashcolor.txt. Інакше, вихід не запускається, але файл повертається до оригіналу ( echo ORIGINAL > ~/bashcolor.txt). Це дозволить вирішити проблему з миготливим терміналом.
Янц

Веселий сценарій для створення, можливо, навіть сам його використовувати :) Будь-які пропозиції щодо вдосконалення вітаються!
Янц

Це працює в надійному +1
boomt14

2
Я зробив 1 зміну у своїй версії ... Таким чином він продовжує їздити на велосипеді, коли ви відкриваєте більше терміналів, ніж у вас є профілі. Number_of_bashs=$(($(($(pstree -c | grep "bash" | wc -l)-1))%${#Color_counter[@]}))
кпі

Приємно! Мені не
спадало

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 Я б написав сценарій для вас, але я ненавиджу годування ложкою і я лінивий. :)


добре ... створити обгортку / псевдонім для команди терміналу було б досягти цього.
Вішну Кумар

@VishnuKumar, так, саме це перше прийшло в голову, хоча це може бути не найкращим рішенням. радий, що тобі подобається.
theabhinavdas

+1 за нормальну відповідь, я дійсно не хочу боротися з "роботами", але ця відповідь вимагає, щоб я використовував власні визначення стилю, використовував мій проект "динамічні кольори", крім того (і це те, що мене справді отримало), це не робить не підтримую непрозорість: (я вважаю, що відповідь повинна містити комбінаціюgnome-terminal --load-config=FILE
kpie

@kpie, ха-ха. Ніякого справедливого, непрозорість не згадувалася у питанні. Крім того, важко встановити непрозорість з командного рядка і багато залежить від багатьох речей. Також на це питання можна відповісти різними способами, але я вважав, що моя відповідь є досить зручною (якщо тільки для мене, ха-ха) :)
theabhinavdas

Я сподіваюся, що я зможу компенсувати вибір в'язання, надавши необхідні сценарії ... github.com/Krewn/stylingTerminalOnOpen І я повинен зазначити, що він не підтримує змінну непрозорість, кольорові схеми підтримуватимуть непрозорість вашого профілю за замовчуванням.
кпі

1

Konsole насправді підтримує цю функціональну функцію на власному рівні. Konsole є дійсно потужним і налаштованим.

Якщо у вас немає Konsole, то просто sudo apt install konsole

  1. Перейдіть у Налаштування
  2. Налаштування Консолі
  3. Виберіть вкладку Зовнішній вигляд
  4. Виберіть свою колірну гамму
  5. Виберіть "Правка" праворуч
  6. Там встановлено поле "Варіант кольору фону для кожної вкладки"

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


+1 для відповіді в порядку, але у мене немає консолі. Відповідь @ <MemoryAddress> підтримує більше термінальних інтерфейсів (будь-яких, що підтримують послідовності виходу OSC). Але ваше простіше у використанні. Я дам нагороду тому, хто отримає найбільше голосів за пару днів. Дякую за вашу відповідь!
кпі

Ви здивуєтеся, скільки людей насправді прокоментують тут, сказавши мені, що мені потрібно розповісти, як його встановити -_-
Matt O.

Чи читали ви коментарі до інших людей?
kpie

Я зробив. Можливо, мені чогось не вистачає, але ви шукаєте змінну непрозорість і те, що не потребує псевдонімів. Консоле досягає обох, але я не впевнений у послідовності втечі.
Метт О.

1
ха-ха, я розумію. Не звинувачуйте мене, після того, як тут вистачить достатньо горіхових людей, пропонуйте правок, я просто роблю це автоматично. Я не намагаюся образити ваш інтелект.
Метт О.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.