imposta lo sfondo del terminale gnome / il colore del testo dallo script bash


22

Vorrei impostare lo sfondo ( #002b36) e il colore di primo piano del mio terminale GNOME in Ubuntu 13, usando lo script bash.

Ci ho provato gconftoolma non ci sono riuscito.

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

NAME
       gconftool-2 - GNOME configuration tool

La mia gnome terminalversione è

$ gnome-terminal --version
GNOME Terminal 3.6.1

inserisci qui la descrizione dell'immagine

Attualmente sto usando l'interfaccia utente delle preferenze del terminale Ubuntu per raggiungere questo obiettivo.

inserisci qui la descrizione dell'immagine

Risposte:


20

Metodo n. 1: utilizzo di dconf

sfondo

È possibile utilizzare lo dconfstrumento per eseguire ciò, tuttavia è un processo in più passaggi.

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.

uso

$ 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.

Approccio generale

  1. Per prima cosa dovrai ottenere un elenco dei tuoi gnome-terminalprofili.

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    <profile id>
  2. Usando questo <profile id> è quindi possibile ottenere un elenco di impostazioni configurabili

    $ 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. È quindi possibile leggere i colori correnti del primo piano o dello sfondo

    primo piano

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

    sfondo

    $ dconf read /org/gnome/terminal/legacy/profiles:/<profile id>/background-color
    'rgb(0,0,0)'
  4. Puoi anche cambiare i colori

    primo piano

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

    sfondo

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

Esempio

  1. Ottieni il mio ID profilo

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    :b1dcc9dd-5262-4d8d-a863-c897e6d979b9/
  2. Utilizzare l'ID profilo per ottenere un elenco di impostazioni

    $ 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. Cambia il tuo sfondo blu

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

              ss # 1

Una nota sui colori

È possibile utilizzare la notazione rgb(R,G,B)quando si specificano i colori o la notazione hash#RRGGBB . In entrambe le notazioni gli argomenti sono rosso, verde e blu. I valori nella prima notazione sono numeri interi che vanno da 0 a 255 per R, G o B. Nella seconda notazione i valori sono in esadecimali che vanno da 00 a FF per RR, GG o BB.

Quando si fornisce uno di questi, dconfè necessario racchiuderlo correttamente tra virgolette doppie con virgolette singole nidificate all'interno. Altrimenti dconfsi lamenterà.

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

Metodo n. 2: utilizzo di gconftool-2

Sul mio sistema Ubuntu 12.04 sono stato in grado di cambiare i colori tramite la riga di comando come segue.

NOTA: Le opzioni sono in ultima analisi, memorizzati in questo file, $HOME/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml.

Approccio generale

  1. Per prima cosa devi ottenere l'albero per gnome-terminalil profilo di.

    $ gconftool-2 --get /apps/gnome-terminal/global/profile_list
    [Default]
  2. Usando l'albero risultante possiamo scoprire quali attributi sono configurabili.

    $ 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. Ottieni / imposta gli attributi 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. Confermare

    $ 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

Riferimenti


3
Un sacco di grazie per questa grande risposta. Ma il mio terminale non ha dato nessun profilo sudconf list /org/gnome/terminal/legacy/profiles:/
prayagupd,

@PrayagUpd - Sto guardando un'installazione di Ubuntu 12.04 e sembra che gnome-terminal non sia quello predefinito. L'emulatore di terminale Debian X è il def. È possibile controllare w / questo comando nella scheda Utilità, exo-preferred-applications. I dettagli sono qui: askubuntu.com/questions/356842/… . Puoi confermare questo? Quanto sopra è stato fatto su un'installazione Fedora 19 GNOME 3.10.
slm

Sì, Debian X terminal emulatorera l'impostazione predefinita in 13.04, modificandola in gnome terminalnon ha funzionato neanche.
prayagupd,

@PrayagUpd: il metodo n. 2 funziona per te?
slm

1
a partire da Ubuntu 18.04 ora è necessario utilizzare sudo dconf whateverquando si emettono comandi
Scott Stensland il

0

Ho creato alcune funzioni, basate sul codice Github da altri thread. Puoi inserire queste funzioni nel tuo ~/.bashrcfile. Come puoi vedere, se chiami create_random_profile:

  1. Controllerà ed eliminerà qualsiasi profilo casuale precedente creato.
  2. Creerà un profilo casuale nei terminali di gnome.
  3. Imposterà quel nome in una variabile d'ambiente che puoi usare per cambiare il tuo colore in funzioni predefinite. Vedi l'ultima funzione setcolord,.

Questo dovrebbe essere utile per avere molti terminali con colori diversi. Inoltre, con funzioni predefinite puoi cambiare questi colori al volo.

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
}
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.