web-dev-qa-db-fra.com

Obtenez automatiquement des couleurs de terminal différentes à chaque fois que j'ouvre un terminal

Je me trouve souvent en train d'ouvrir trois terminaux et j'aime beaucoup l'apparence d'avoir des palettes de couleurs distinctes sur chacun.

J'ai quelques palettes de couleurs enregistrées et j'aimerais que les valeurs par défaut progressent dans mes profils enregistrés à chaque fois que j'ouvre un terminal. Ainsi, si j'ouvre 3, elles ont chacune une couleur différente sans que je doive modifier manuellement le profil sur 2.

Des pensées?

Merci!

13
kpie

Version fonctionnelle

Instructions:

Le script considère que vous utilisez gnome-terminal , qui est le terminal par défaut d'Ubuntu.

Avant d’exécuter le script, ouvrez le gnome-terminal et créez des profils (Édition> Préférences> Profils) avec différents paramètres (couleur d’arrière-plan, texte). Couleur, ..). Vous pouvez les nommer Profile1, Profile2, Profile3 et ainsi de suite. Créez suffisamment de profils pour couvrir le nombre de terminaux qui seront ouverts, mais si un nombre plus élevé de terminaux sont ouverts, le profil par défaut sera utilisé.

Le script crée un fichier ~/.Bash_Color_Changer , dont il dépend, car il dira au script si le terminal a été ouvert régulièrement ou après un appel sur . bashrc .

Ajoutez le script à la fin de votre fichier ~/.bashrc .

Script:

Ajouter à .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

Testé mais pas de manière approfondie. Prendre plaisir!

10
IanC

Une option pourrait être d'utiliser xfce4-terminal. C'est très similaire au terminal Ubuntu par défaut (qui s'appelle gnome-terminal) et beaucoup de ses paquets de dépendance utilisent le composant gtk, ce qui en fait une alternative appropriée.

Tout d'abord l'installer avec

Sudo apt-get install xfce4-terminal

Puis ouvrez-le, allez dans Éditez -> Préférences , sélectionnez Couleurs Onglet et cochez l'option qui dit, Variez la couleur de fond pour chaque onglet et maintenant sortir.

Créez le terminal par défaut xfce4-terminal ou modifiez le raccourci de Ctrl-Alt-T pour l'ouvrir.

Maintenant, chaque fois que vous ouvrez, une palette de couleurs différente vous sera présentée. different colored terminal

Liens utiles:

9
Anwar

Haha, très intéressant. Je pourrais essayer de faire cela aussi. La plupart du temps, je n’utilise que plusieurs terminaux et un navigateur.

J'ai donc regardé autour de moi et trouvé ceci - https://github.com/sos4nt/dynamic-colors . Un petit projet très soigné qui vous aide à réaliser une partie de ce que vous voulez.

Maintenant, dans le répertoire colorschemes/ de ce projet, vous verrez qu’il comporte actuellement 4 modèles de couleurs. Vous pouvez en ajouter autant que vous avez besoin/envie.

Donc, pour que chaque terminal choisisse un schéma de couleurs différent, j’ajouterais une fonction à mon .bash_profile ou .bashrc ou ailleurs, de telle sorte que la fonction fasse deux choses:

  1. Calculez le nombre de terminaux en cours d'exécution
  2. Émettez une commande dynamic-colors switch colorscheme-name basée sur (1).

J'espère que cela t'aides!

P.S. Je voudrais écrire un script pour vous, mais je déteste nourrir à la cuillère et je suis paresseux af. :)

5
theabhinavdas

Konsole prend en charge cette fonctionnalité de manière native. Konsole est vraiment puissant et hautement personnalisable.

Si vous n'avez pas Konsole, alors simplement Sudo apt install konsole

  1. Aller aux paramètres
  2. Paramètres Konsole
  3. Sélectionnez l'onglet Apparence
  4. Sélectionnez votre jeu de couleurs
  5. Sélectionnez "Modifier" à droite
  6. Il y a une boîte pour définir "Varier la couleur de fond pour chaque onglet"

De plus, si vous travaillez sur trois serveurs en même temps, vous pouvez inclure des pseudonymes géniaux montré ici

1
Matt O.