web-dev-qa-db-fra.com

définir la couleur d'arrière-plan / texte du terminal gnome à partir du script bash

Je souhaite configurer l'arrière-plan de mon terminal gnome (#002b36) et la couleur de premier plan dans ubuntu 13, en utilisant le script bash.

J'ai essayé gconftool mais je n'ai pas réussi.

GCONFTOOL-2(1)                  User Commands                                                    GCONFTOOL-2(1)

NAME
       gconftool-2 - GNOME configuration tool

Ma gnome terminal la version est

$ gnome-terminal --version
GNOME Terminal 3.6.1

enter image description here

Actuellement, j'utilise l'interface utilisateur des préférences du terminal ubuntu pour y parvenir.

enter image description here

22
prayagupd

Méthode n ° 1 - Utilisation de dconf

Contexte

Vous pouvez utiliser l'outil dconf pour y parvenir, mais il s'agit d'un processus en plusieurs étapes.

DESCRIPTION
       The dconf program can perform various operations on a dconf database, 
       such as reading or writing individual values or entire directories.
       This tool operates directly on the dconf database and does not read 
       gsettings schema information.Therefore, it cannot perform type and 
       consistency checks on values. The gsettings(1) utility is an 
       alternative if such checks are needed.

Usage

$ dconf
error: no command specified

Usage:
  dconf COMMAND [ARGS...]

Commands:
  help              Show this information
  read              Read the value of a key
  list              List the contents of a dir
  write             Change the value of a key
  reset             Reset the value of a key or dir
  update            Update the system databases
  watch             Watch a path for changes
  dump              Dump an entire subpath to stdout
  load              Populate a subpath from stdin

Use 'dconf help COMMAND' to get detailed help.

Approche générale

  1. Vous devez d'abord obtenir une liste de vos profils gnome-terminal.

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    <profile id>
    
  2. En utilisant ce <profile id>, Vous pouvez alors obtenir une liste de paramètres configurables

    $ dconf list /org/gnome/terminal/legacy/profiles:/<profile id>
    background-color
    default-size-columns
    use-theme-colors
    use-custom-default-size
    foreground-color
    use-system-font
    font
    
  3. Vous pouvez ensuite lire les couleurs actuelles du premier plan ou de l'arrière-plan

    premier plan

    $ dconf read /org/gnome/terminal/legacy/profiles:/<profile id>/foreground-color
    'rgb(255,255,255)'
    

    arrière-plan

    $ dconf read /org/gnome/terminal/legacy/profiles:/<profile id>/background-color
    'rgb(0,0,0)'
    
  4. Vous pouvez également changer les couleurs

    premier plan

    $ dconf write /org/gnome/terminal/legacy/profiles:/<profile id>/foreground-color "'rgb(255,255,255)'"
    

    arrière-plan

    $ dconf write /org/gnome/terminal/legacy/profiles:/<profile id>/background-color "'rgb(0,0,0)'"
    

Exemple

  1. Obtenir mon identifiant de profil

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    :b1dcc9dd-5262-4d8d-a863-c897e6d979b9/
    
  2. Utilisez l'ID de profil pour obtenir une liste des paramètres

    $ dconf list /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/
    background-color
    default-size-columns
    use-theme-colors
    use-custom-default-size
    foreground-color
    use-system-font
    font
    
  3. Changez votre fond bleu

    $ dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/background-color "'rgb(0,0,255)'"
    

ss #1

Une note sur les couleurs

Vous pouvez utiliser la notation rgb(R,G,B) lors de la spécification de vos couleurs ou la notation de hachage #RRGGBB. Dans les deux notations, les arguments sont rouge, vert et bleu. Les valeurs de la première notation sont des entiers allant de 0 à 255 pour R, G ou B. Dans la deuxième notation, les valeurs sont en hexidécimal allant de 00 à FF pour RR, GG ou BB.

Lorsque vous fournissez l'un de ces éléments à dconf, vous devez l'encapsuler correctement entre guillemets doubles avec guillemets simples imbriqués à l'intérieur. Sinon, dconf se plaindra.

  • "'rgb(0,0,0)'"
  • "'#FFFFFF'"
  • etc.

Méthode n ° 2 - Utilisation de gconftool-2

Sur mon système Ubuntu 12.04, j'ai pu changer les couleurs via la ligne de commande comme suit.

REMARQUE: Les options sont finalement stockées dans ce fichier, $HOME/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml.

Approche générale

  1. Vous devez d'abord obtenir l'arborescence du profil de gnome-terminal.

    $ gconftool-2 --get /apps/gnome-terminal/global/profile_list
    [Default]
    
  2. En utilisant l'arborescence résultante, nous pouvons découvrir quels attributs sont configurables.

    $ gconftool-2 -a "/apps/gnome-terminal/profiles/Default" | grep color
     bold_color_same_as_fg = true
     bold_color = #000000000000
     background_color = #FFFFFFFFFFFF
     foreground_color = #000000000000
     use_theme_colors = false
    
  3. Obtenez/définissez les attributs background_color & foreground_color

    $ gconftool-2 --get "/apps/gnome-terminal/profiles/Default/foreground_color"
    #000000000000
    
    $ gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "#000000FFFFFF"    
    
  4. Confirmer

    $ gconftool-2 -R /apps/gnome-terminal/profiles/Default | grep color
     bold_color_same_as_fg = true
     bold_color = #000000000000
     background_color = #000000FFFFFF
     foreground_color = #000000000000
     use_theme_colors = true
    

Références

20
slm

J'ai créé quelques fonctions, basées sur le code Github d'autres threads. Vous pouvez mettre ces fonctions dans votre ~/.bashrc fichier. Comme vous pouvez le voir, si vous appelez create_random_profile:

  1. Il vérifiera et supprimera tout profil aléatoire précédent que vous avez créé.
  2. Il créera un profil de nom aléatoire dans les terminaux gnome.
  3. Il définira ce nom dans une variable d'environnement que vous pouvez utiliser pour changer votre couleur dans des fonctions prédéfinies. Voir la dernière fonction, setcolord.

Cela devrait être utile pour avoir de nombreux terminaux de couleurs différentes. De plus, avec des fonctions prédéfinies, vous pouvez modifier ces couleurs à la volée.

function create_random_profile() {
    #delete previous profiles in case there were something
    #delete_one_random_profile
    prof="`mktemp -u HACK_PROFILE_XXXXXXXXXX`"
    gconftool-2 --set "/apps/gnome-terminal/profiles/$prof/use_theme_colors" --type bool false
    gconftool-2 --type list --list-type string --set $prof_list "`gconftool-2 --get $prof_list | sed "s/]/,$prof]/"`"
    file="`mktemp`"
    gconftool-2 --dump "/apps/gnome-terminal/profiles/Default" | sed "s,profiles/$2,profiles/$prof,g" > "$file"
    gconftool-2 --load "$file"
    gconftool-2 --type string --set "/apps/gnome-terminal/profiles/$prof/visible_name" "$prof"
    rm -f -- "$file"
    export __TERM_PROF=$prof
}

function delete_one_random_profile() {
    regular="HACK_PROFILE_"
    prof=$(gconftool-2 --get /apps/gnome-terminal/global/profile_list | sed -n "s/.*\(HACK_PROFILE_..........\).*/\1/p")
    if [ ! -z "$prof"]; then
        echo "size ${#prof}"
        echo "size of regular ${#regular}"
        echo "DO DELETE of $prof"
        #if not empty
        gconftool-2 --type list --list-type string --set $prof_list "`gconftool-2 --get $prof_list | sed "s/$prof//;s/\[,/[/;s/,,/,/;s/,]/]/"`"
        gconftool-2 --unset "/apps/gnome-terminal/profiles/$prof"
    else
        echo "NOTHING TO DELETE"
    fi
}

function setcolord() {
    echo "Dont forget to change to Profile0 in the menu of your terminal->Change Profile->Profile_0"
    gconftool-2 --set "/apps/gnome-terminal/profiles/$__TERM_PROF/background_color" --type string white
    gconftool-2 --set "/apps/gnome-terminal/profiles/$__TERM_PROF/foreground_color" --type string black
}

function setcolor_cyan() {
    echo "Dont forget to change to $__TERM_PROF in the menu of your terminal->Change Profile->Profile_0"
    gconftool-2 --set "/apps/gnome-terminal/profiles/$__TERM_PROF/background_color" --type string "#8DCBCC"
    gconftool-2 --set "/apps/gnome-terminal/profiles/$__TERM_PROF/foreground_color" --type string black
}
0
joniale