Automatycznie otrzymuj różne kolory terminala za każdym razem, gdy otwieram terminal


15

Często zdarza mi się, że otwieram trzy terminale i naprawdę podoba mi się to, że mam wyraźne palety kolorów na każdym.

Mam zapisanych kilka palet kolorów i chciałbym, aby domyślnie przechodził przez moje zapisane profile za każdym razem, gdy otwieram terminal, tak że jeśli otworzę 3, każdy z nich ma różne kolory bez mojej ręcznej zmiany profilu na 2.

jakieś pomysły?

Dzięki!


Właśnie edytowałem moją odpowiedź za pomocą skryptu, który robi to, co chcesz. Należy go dodać do pliku ./bashrc . Mam nadzieję, że odpowiada Twoim potrzebom!
IanC,

Odpowiedzi:


10

Wersja funkcjonalna

Instrukcje:

Skrypt uważa, że ​​używasz gnome-terminal , który jest domyślnym terminalem Ubuntu.

Przed uruchomieniem skryptu otwórz terminal gnome i utwórz niektóre profile (Edycja> Preferencje> Profile) z różnymi ustawieniami według własnego uznania (kolor tła, kolor tekstu, ...). Możesz nazwać je Profile1, Profile2, Profile3 i tak dalej. Utwórz wystarczającą liczbę profili, aby pokryć liczbę terminali, które zostaną otwarte, ale jeśli zostanie otwarta większa liczba terminali, zostanie użyty profil domyślny.

Skrypt tworzy plik ~ / .Bash_Color_Changer , od którego zależy, ponieważ poinformuje skrypt, czy terminal był otwierany regularnie, czy po wywołaniu .bashrc .

Dodaj skrypt na końcu pliku ~ / .bashrc .

Scenariusz:

Dodaj do .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

Testowane, ale nie do końca. Cieszyć się!


Ideą na jutro jest dodanie warunku exitopartego na niektórych plikach takich jak ~/bashcolor.txt. Może mieć wiersz z informacją, czy otwierany bash jest „oryginałem” czy „kopią”. Jeśli więc cat ~/bashcolor.txtzwróci „ORYGINAŁ”, exitpolecenie zostanie uruchomione i echo COPY > ~/bashcolor.txt. W przeciwnym razie wyjście nie działa, ale plik wraca do oryginalnej ( echo ORIGINAL > ~/bashcolor.txt). Rozwiązałoby to problem z migającym terminalem.
IanC,

Zabawny skrypt do wykonania, może nawet sam go użyję :) Wszelkie sugestie dotyczące ulepszeń są mile widziane!
IanC,

Działa to w zaufanym +1
boomt14

2
Wprowadziłem 1 zmianę w mojej wersji ... W ten sposób kontynuuje jazdę rowerem, gdy otworzysz więcej terminali niż masz profile. Number_of_bashs=$(($(($(pstree -c | grep "bash" | wc -l)-1))%${#Color_counter[@]}))
kpie

Ładny! Nie przyszło mi do głowy, aby użyć modułu, aby cyklicznie powtarzać iterację: p
IanC

9

Można użyć jednej opcji xfce4-terminal. Jest bardzo podobny do domyślnego terminala Ubuntu (który jest gnome-terminal), a wiele jego pakietów zależności używa komponentu gtk, co czyni go odpowiednią alternatywą.

Najpierw zainstaluj za pomocą

sudo apt-get install xfce4-terminal

Następnie otwórz go, przejdź do Edycja -> Preferencje , wybierz kartę Kolory i zaznacz opcję: Zmień kolor tła dla każdej karty i Wyjdź.

Utwórz domyślny terminal xfce4-terminallub zmień skrót, Ctrl-Alt-Taby go otworzyć.

Teraz, za każdym razem, gdy otworzysz, pojawi się inna paleta kolorów. inny kolorowy terminal

Przydatne linki:


5

Haha, bardzo interesujące. Mogę też spróbować to zrobić. Przeważnie korzystam tylko z wielu terminali i przeglądarki.

Rozejrzałem się i znalazłem to - https://github.com/sos4nt/dynamic-colours . Bardzo schludny mały projekt, który pomaga osiągnąć część tego, co chcesz.

Teraz w katalogu colorschemes/tego projektu zobaczysz, że obecnie ma 4 schematy kolorów. Możesz dodać tyle, ile potrzebujesz / chcesz.

Tak, aby każdy zacisk, aby wybrać inną kolorystyką, chciałbym dodać funkcję do mojego .bash_profilelub .bashrcczy gdziekolwiek, tak że funkcja robi dwie rzeczy:

  1. Dowiaduje się, ile terminali jest obecnie uruchomionych
  2. Wydaj dynamic-colors switch colorscheme-namepolecenie na podstawie (1).

Mam nadzieję że to pomoże!

PS Napisałbym dla ciebie scenariusz, ale nienawidzę karmienia łyżką i jestem leniwy. :)


dobry ... utworzenie otoki / aliasu dla komendy terminalu byłoby możliwe.
Wisznu Kumar,

@ VishnuKumar, tak, to właśnie przyszło mi do głowy, choć może nie być to najlepsze rozwiązanie. cieszę się że to lubisz.
theabhinavdas

+1 za dobrą odpowiedź, naprawdę nie chcę walczyć z „dziełami”, ale ta odpowiedź wymaga użycia zastrzeżonych definicji stylów użytych w moim projekcie dynamicznych kolorów, dodatkowo (i to jest to, co mnie naprawdę wciągnęło) nie obsługuje krycia: ( gnome-terminal --load-config=FILE
Wydaje

@kpie, haha. Nie fair, nieprzejrzystość nie została wspomniana w pytaniu. Ponadto trudno jest ustawić krycie z wiersza poleceń i zależy wiele od wielu rzeczy. Ponadto na to pytanie można odpowiedzieć na różne sposoby, ale myślałem, że moja odpowiedź była całkiem wygodna (jeśli tylko dla mnie, haha) :)
theabhinavdas

Mam nadzieję, że mogę nadrobić wybieranie dzianiny, dostarczając wymagane skrypty ... github.com/Krewn/stylingTerminalOnOpen I powinienem określić, że nie obsługuje zmiennego krycia, schematy kolorów utrzymają krycie twojego domyślnego profilu.
kpie

1

Konsola faktycznie obsługuje tę funkcję natywnie. Konsole jest naprawdę potężne i wysoce konfigurowalne.

Jeśli nie masz Konsoli, po prostu sudo apt install konsole

  1. Przejdź do ustawień
  2. Ustawienia konsoli
  3. Wybierz kartę Wygląd
  4. Wybierz schemat kolorów
  5. Wybierz „Edytuj” po prawej stronie
  6. Jest pole do ustawienia „Zmieniaj kolor tła dla każdej karty”

Ponadto, jeśli pracujesz na trzech serwerach jednocześnie, możesz dołączyć kilka pokazanych tutaj fajnych aliasów


+1 za dobrą odpowiedź, ale nie mam konsoli. @ Odpowiedź <MemoryAddress> obsługuje więcej interfejsów terminali (takich, które obsługują sekwencje specjalne OSC). Ale twój jest łatwiejszy w użyciu. Daję nagrodę każdemu, kto zdobędzie najwięcej głosów w ciągu kilku dni. Dziękuję za odpowiedź!
kpie

Byłbyś zaskoczony, ile osób faktycznie skomentuje tutaj, mówiąc mi, że muszę ci powiedzieć, jak to zainstalować -_-
Matt O.

Czy czytałeś komentarze na temat innych ans?
kpie

Zrobiłem. Może czegoś mi brakuje, ale szukasz zmiennej nieprzezroczystości i czegoś, co nie wymaga aliasów. Konsole osiąga oba te cele, ale nie jestem pewien co do sekwencji ucieczki.
Matt O.,

1
haha rozumiem Nie obwiniaj mnie, po tym, jak mam tu wystarczająco dużo szalonych ludzi, sugeruj zmiany, po prostu robię to automatycznie. Nie próbuję obrażać twojej inteligencji.
Matt O.,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.