Jedes Mal, wenn ich das Terminal öffne, werden automatisch unterschiedliche Terminalfarben angezeigt

14

Ich öffne oft drei Terminals und ich mag das Aussehen und die Haptik der unterschiedlichen Farbpaletten.

Ich habe ein paar Farbpaletten gespeichert und möchte, dass die gespeicherten Profile standardmäßig bei jedem Öffnen eines Terminals durchlaufen werden. Wenn ich also 3 öffne, sind dies jeweils verschiedene Farben, ohne dass ich das Profil auf 2 manuell ändern muss.

Irgendwelche Gedanken?

Vielen Dank!

kpie
quelle
Habe gerade meine Antwort mit einem Skript bearbeitet, das macht, was Sie wollen. Es sollte der ./bashrc-Datei hinzugefügt werden. Hoffe es passt zu dir!
IanC

Antworten:

10

Funktionsversion

Anleitung:

Das Skript geht davon aus, dass Sie das Gnome-Terminal verwenden , das das Standard-Ubuntu-Terminal ist.

Öffnen Sie vor dem Ausführen des Skripts das Gnome-Terminal und erstellen Sie einige Profile (Bearbeiten> Voreinstellungen> Profile) mit verschiedenen Einstellungen (Hintergrundfarbe, Textfarbe, ..). Sie können sie Profile1, Profile2, Profile3 usw. nennen. Erstellen Sie genügend Profile, um die Anzahl der zu öffnenden Terminals abzudecken. Wenn jedoch eine größere Anzahl von Terminals geöffnet wird, wird das Standardprofil verwendet.

Das Skript erstellt eine Datei ~ / .Bash_Color_Changer , von der es abhängig ist, da es dem Skript mitteilt , ob das Terminal regelmäßig oder nach einem Aufruf von .bashrc geöffnet wurde .

Fügen Sie das Skript am Ende Ihrer ~ / .bashrc- Datei hinzu.

Skript:

Hinzufügen zu .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

Getestet aber nicht ausgiebig. Genießen!

IanC
quelle
Idea for tomorrow ist das Hinzufügen einer Bedingung für exiteine Datei wie ~/bashcolor.txt. Es kann eine Zeile enthalten, die angibt, ob es sich bei der geöffneten Bash um das "Original" oder die "Kopie" handelt. Wenn also cat ~/bashcolor.txt"ORIGINAL" zurückgegeben wird, wird der exitBefehl ausgeführt und echo COPY > ~/bashcolor.txt. Andernfalls wird der Exit nicht ausgeführt, aber die Datei wird auf original ( echo ORIGINAL > ~/bashcolor.txt) zurückgesetzt. Dies würde das Problem mit dem blinkenden Terminal lösen.
IanC
Fun-Skript zu machen, könnte sogar selbst verwenden :) Verbesserungsvorschläge sind willkommen!
IanC
Dies funktioniert in vertrauenswürdigen +1
boomt14
2
Ich habe 1 Änderung in meiner Version vorgenommen ... Auf diese Weise wird der Zyklus fortgesetzt, wenn Sie mehr Terminals öffnen, als Sie Profile haben. Number_of_bashs=$(($(($(pstree -c | grep "bash" | wc -l)-1))%${#Color_counter[@]}))
kpie
Nett! Ich kam nicht auf den Gedanken, das Modul zu verwenden, um die Iteration zyklisch zu halten: p
IanC
9

Eine Option könnte die Verwendung sein xfce4-terminal. Es ist dem standardmäßigen Ubuntu-Terminal (das ist es gnome-terminal) sehr ähnlich und viele seiner Abhängigkeitspakete verwenden die gtk-Komponente, was es zu einer geeigneten Alternative macht.

Zuerst installieren Sie es mit

sudo apt-get install xfce4-terminal

Öffnen Sie es dann, gehen Sie zu Bearbeiten -> Einstellungen , wählen Sie die Registerkarte Farben und aktivieren Sie die Option, die besagt, dass Sie die Hintergrundfarbe für jede Registerkarte variieren und jetzt beenden.

Machen Sie das Standardterminal xfce4-terminaloder ändern Sie die Verknüpfung von Ctrl-Alt-T, um es zu öffnen.

Jetzt wird Ihnen bei jedem Öffnen eine andere Farbpalette angezeigt. Terminal in verschiedenen Farben

Nützliche Links:

Anwar
quelle
5

Haha, sehr interessant. Ich könnte es auch versuchen. Ich betreibe meistens nur mehrere Terminals und einen Browser.

Also habe ich mich umgesehen und folgendes gefunden - https://github.com/sos4nt/dynamic-colors . Ein sehr hübsches kleines Projekt, mit dem Sie einen Teil dessen erreichen, was Sie wollen.

Im Verzeichnis colorschemes/dieses Projekts sehen Sie jetzt, dass es derzeit vier Farbschemata enthält. Sie können beliebig viele hinzufügen.

Um jedes Terminal zu veranlassen, ein anderes Farbschema zu wählen, würde ich meinem .bash_profileoder .bashrcoder wo auch immer eine Funktion hinzufügen , sodass die Funktion zwei Dinge ausführt:

  1. Zeigt an, wie viele Terminals derzeit ausgeführt werden
  2. Setzen Sie einen dynamic-colors switch colorscheme-nameBefehl ab, der auf (1) basiert.

Hoffe das hilft!

PS Ich würde ein Drehbuch für dich schreiben, aber ich hasse Löffelfütterung und bin faul af. :)

theeabhinavdas
quelle
Guter ... das Erstellen eines Wrappers / Alias ​​für den Terminalbefehl wäre es zu erreichen.
Vishnu Kumar
@VishnuKumar, yep, das ist, was zuerst in den Sinn kam, obwohl es möglicherweise nicht die beste Lösung ist. froh, dass Sie es mögen.
Theabhinavdas
+1 für eine gute Antwort, ich möchte wirklich nicht mit "Werken" kämpfen, aber diese Antwort setzt voraus, dass ich die proprietären Stildefinitionen verwende, die für das Dynamic-Colors-Projekt verwendet wurden gnome-terminal --load-config=FILE
Keine
@ kpie, haha. Keine faire, Undurchsichtigkeit wurde in der Frage nicht erwähnt. Außerdem ist es schwierig, die Deckkraft über die Befehlszeile festzulegen, und hängt sehr von vielen Faktoren ab. Auch diese Frage kann auf verschiedene Arten beantwortet werden, aber ich dachte, meine Antwort war ziemlich praktisch (wenn auch nur für mich, haha) :)
theabhinavdas
Ich hoffe , ich kann bis zum Stricken Kommissionierung machen , indem sie die erforderlichen Skripte bieten ... github.com/Krewn/stylingTerminalOnOpen Und ich sollte angeben es nicht variable Opazität nicht unterstützt, die Farbschemata wird die Opazität Ihrer Standardprofil aufrechtzuerhalten.
kpie
1

Konsole unterstützt diese Funktionalität von Haus aus. Konsole ist sehr leistungsfähig und sehr anpassbar.

Wenn Sie keine Konsole haben, dann einfach sudo apt install konsole

  1. Gehe zu den Einstellungen
  2. Konsoleneinstellungen
  3. Wählen Sie die Registerkarte Darstellung
  4. Wählen Sie Ihr Farbschema
  5. Wählen Sie rechts "Bearbeiten"
  6. In einem Feld können Sie festlegen, ob die Hintergrundfarbe für jede Registerkarte geändert werden soll.

Darüber hinaus können Sie, wenn Sie gleichzeitig auf drei Servern arbeiten, einige der hier gezeigten Aliase einfügen

Matt O.
quelle
+1 für eine ok Antwort, aber ich habe keine Konsole. Die Antwort von @ <MemoryAddress> unterstützt mehr Terminalschnittstellen (alle, die OSC-Escape-Sequenzen unterstützen). Aber deins ist einfacher zu benutzen. Ich werde das Kopfgeld in ein paar Tagen dem geben, der die meisten Stimmen hat. Danke für deine Antwort!
kpie
Sie wären überrascht, wie viele Leute hier tatsächlich kommentieren und mir sagen würden, dass ich Ihnen sagen muss, wie es zu installieren ist. -_-
Matt O.
Hast du die Kommentare zu den anderen Ans gelesen?
kpie
Ich tat. Vielleicht fehlt mir etwas, aber Sie suchen nach variabler Deckkraft und etwas, das keine Aliase erfordert. Konsole schafft beides, aber ich bin mir bei den Escape-Sequenzen nicht sicher.
Matt O.
1
haha ich verstehe Beschuldigen Sie mich nicht, nachdem genügend verrückte Leute hier Änderungen vorgeschlagen haben, mache ich das einfach automatisch. Ich versuche nicht, Ihre Intelligenz zu beleidigen.
Matt O.