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

22

Je voudrais configurer la #002b36couleur d'arrière -plan et de premier plan de mon terminal gnome dans ubuntu 13, en utilisant le script bash.

J'ai essayé gconftoolmais je n'ai pas réussi.

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

NAME
       gconftool-2 - GNOME configuration tool

Ma gnome terminalversion est

$ gnome-terminal --version
GNOME Terminal 3.6.1

entrez la description de l'image ici

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

entrez la description de l'image ici

Prayagupd
la source

Réponses:

20

Méthode n ° 1 - Utilisation de dconf

Contexte

Vous pouvez utiliser l' dconfoutil pour y parvenir, mais c'est 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 gnome-terminalprofils.

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    <profile id>
  2. En utilisant cela, <profile id>vous pouvez ensuite 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)'

    Contexte

    $ 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)'"

    Contexte

    $ 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, dconfvous devez l'envelopper correctement entre guillemets doubles avec des guillemets simples imbriqués à l'intérieur. Sinon dconfse 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 gnome-terminalprofil de.

    $ 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. Obtenir / définir 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

Les références

slm
la source
3
Un grand merci pour cette excellente réponse. Mais mon terminal n'a donné aucun profildconf list /org/gnome/terminal/legacy/profiles:/
Prayagupd
@PrayagUpd - Je regarde une installation d'Ubuntu 12.04 et il semble que gnome-terminal n'est pas la valeur par défaut. L'émulateur de terminal Debian X est le def. Vous pouvez vérifier w / cette commande sous l' onglet Utilitaires, exo-preferred-applications. Les détails sont ici: askubuntu.com/questions/356842/… . Pouvez-vous le confirmer? Ce qui précède a été fait sur une installation de Fedora 19 GNOME 3.10.
slm
Oui, Debian X terminal emulatorc'était la valeur par défaut 13.04, le changer pour gnome terminalne fonctionnait pas non plus.
priagupd
@PrayagUpd - la méthode # 2 fonctionne-t-elle pour vous?
slm
1
à partir d'Ubuntu 18.04, vous devez maintenant utiliser sudo dconf whateverlors de l'émission des commandes
Scott Stensland
0

J'ai créé quelques fonctions, basées sur le code Github d'autres threads. Vous pouvez mettre ces fonctions dans votre ~/.bashrcfichier. 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
}
joniale
la source