Ottieni automaticamente colori di terminali diversi ogni volta che apro il terminale


14

Mi ritrovo spesso ad aprire tre terminali e mi piace molto l'aspetto e la sensazione di avere palette di colori distinti su ciascuno.

Ho alcune tavolozze di colori salvate e vorrei che l'impostazione predefinita progredisse attraverso i miei profili salvati ogni volta che apro un terminale, quindi se apro 3 sono colori diversi ciascuno senza che io debba cambiare manualmente il profilo su 2.

qualche idea?

Grazie!


Ho appena modificato la mia risposta con uno script che fa quello che vuoi. Dovrebbe essere aggiunto al file ./bashrc . Spero sia adatto alle tue esigenze!
IanC

Risposte:


10

Versione funzionale

Istruzioni:

Lo script considera che stai usando gnome-terminal , che è il terminale Ubuntu predefinito.

Prima di eseguire lo script, apri gnome-terminal e crea alcuni profili (Modifica> Preferenze> Profili) con diverse impostazioni come desideri (colore di sfondo, colore del testo, ..). Puoi nominarli Profile1, Profile2, Profile3 e così via. Creare abbastanza profili per coprire la quantità di terminali che verranno aperti, ma se viene aperto un numero maggiore di terminali, verrà utilizzato il profilo predefinito.

Lo script crea un file ~ / .Bash_Color_Changer , da cui dipende, poiché dirà allo script se il terminale è stato aperto regolarmente o dopo una chiamata su .bashrc .

Aggiungi lo script alla fine del tuo file ~ / .bashrc .

script:

Aggiungi a .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

Testato ma non ampiamente. Godere!


L'idea per domani sta aggiungendo un condizionale per exitbasato su alcuni file come ~/bashcolor.txt. Potrebbe avere una linea per dire se il bash che si sta aprendo è "originale" o "copia". Quindi, se cat ~/bashcolor.txtrestituisce "ORIGINAL", il exitcomando viene eseguito e echo COPY > ~/bashcolor.txt. Altrimenti, l'uscita non viene eseguita ma il file torna a original ( echo ORIGINAL > ~/bashcolor.txt). Risolve il problema del terminale lampeggiante.
IanC

Script divertente da realizzare, potrebbe persino usarlo da solo :) Eventuali suggerimenti di miglioramento sono benvenuti!
IanC,

Funziona con il fidato +1
boomt14

2
Ho apportato 1 modifica nella mia versione ... In questo modo continua a pedalare quando apri più terminali di quanti ne hai profili. Number_of_bashs=$(($(($(pstree -c | grep "bash" | wc -l)-1))%${#Color_counter[@]}))
kpie,

Bello! Non mi è venuto in mente di usare il modulo per mantenere ciclica l'iterazione: p
IanC

9

Un'opzione potrebbe essere in uso xfce4-terminal. È molto simile al terminale Ubuntu predefinito (che è gnome-terminal) e molti dei suoi pacchetti di dipendenza usano il componente gtk, il che lo rende un'alternativa adatta.

Prima installalo con

sudo apt-get install xfce4-terminal

Quindi aprilo, vai a Modifica -> Preferenze , seleziona la scheda Colori e controlla l'opzione che dice, Varia il colore di sfondo per ogni scheda e Ora esce.

Crea il terminale predefinito xfce4-terminalo modifica il collegamento di Ctrl-Alt-Tper aprirlo.

Ora, ogni volta che apri, ti verrà presentato con una tavolozza di colori diversa. terminale di colore diverso

Link utili:


5

Haha, molto interessante. Potrei provare a fare anche questo. Per lo più eseguo solo più terminali e un browser.

Quindi mi sono guardato intorno e ho trovato questo - https://github.com/sos4nt/dynamic-colors . Un piccolo progetto molto ordinato che ti aiuta a realizzare una parte di ciò che vuoi.

Ora, nella directory colorschemes/di quel progetto, vedrai che attualmente ha 4 combinazioni di colori. Puoi aggiungerne quanti ne desideri / desideri.

Quindi, per ottenere tutti i terminali di scegliere un colore-schema diverso, vorrei aggiungere una funzione al mio .bash_profileo .bashrco dovunque, in modo tale che la funzione fa due cose:

  1. Capisce quanti terminali sono attualmente in esecuzione
  2. Emettere un dynamic-colors switch colorscheme-namecomando basato su (1).

Spero che sia di aiuto!

PS Ti scriverei una sceneggiatura per te, ma odio nutrire con il cucchiaio e sono pigro. :)


bravo ... la creazione di un wrapper / alias per il comando terminal lo avrebbe raggiunto.
Vishnu Kumar l'

@VishnuKumar, sì, questo è ciò che mi è venuto in mente per la prima volta, anche se potrebbe non essere la soluzione migliore. contento che ti piaccia.
theabhinavdas,

+1 per una risposta ok, non voglio davvero combattere con "opere" ma questa risposta richiede che io usi le definizioni di stile proprietario utilizzate il mio progetto di colori dinamici, inoltre (e questo è ciò che mi ha veramente preso) Supporta l'opacità: (Sento che la risposta dovrebbe comportare una combinazione dignome-terminal --load-config=FILE
kpie,

@kpie, haha. Non è giusto, l'opacità non è stata menzionata nella domanda. Inoltre, è difficile impostare l'opacità dalla riga di comando e dipende molto da molte cose. Inoltre, è possibile rispondere a questa domanda in vari modi, ma ho pensato che la mia risposta fosse abbastanza conveniente (se non altro per me, ahah) :)
theabhinavdas

Spero di riuscire a compensare la raccolta a maglia fornendo gli script richiesti ... github.com/Krewn/stylingTerminalOnOpen E dovrei specificare che non supporta l'opacità variabile, le combinazioni di colori manterranno l'opacità del tuo profilo predefinito.
kpie,

1

Konsole in realtà supporta questa funzionalità in modo nativo. Konsole è davvero potente e altamente personalizzabile.

Se non hai Konsole, semplicemente sudo apt install konsole

  1. Vai alle impostazioni
  2. Impostazioni di Konsole
  3. Seleziona la scheda Aspetto
  4. Seleziona la tua combinazione di colori
  5. Seleziona "Modifica" sulla destra
  6. C'è una casella per impostare "Varia il colore di sfondo per ogni scheda"

Inoltre, se stai lavorando su tre server contemporaneamente, puoi includere alcuni alias intelligenti mostrati qui


+1 per una risposta ok ma non ho konsole. @ La risposta di <MemoryAddress> supporta più interfacce terminali (tutte supportano sequenze di escape OSC). Ma il tuo è più facile da usare. Darò la generosità a chiunque abbia il maggior numero di voti in un paio di giorni. Grazie per la tua risposta!
kpie,

Sareste sorpresi da quante persone in realtà commenterebbero qui dicendomi che devo dirvi come installarlo -_-
Matt O.

Hai letto i commenti su altri ans?
kpie,

L'ho fatto. Forse mi manca qualcosa ma stai cercando l'opacità variabile e qualcosa che non richiede alias. Konsole raggiunge entrambi, ma non sono sicuro delle sequenze di escape.
Matt O.

1
ahah ho capito. Non incolparmi, dopo aver avuto abbastanza gente matta qui a suggerire modifiche, lo faccio solo automaticamente. Non sto cercando di insultare la tua intelligenza.
Matt O.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.