establecer el color de fondo / texto del terminal gnome del script bash

22

Me gustaría configurar el fondo ( #002b36) y el color de primer plano de mi terminal gnome en ubuntu 13, usando el script bash.

Lo intenté gconftoolpero no pude tener éxito.

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

NAME
       gconftool-2 - GNOME configuration tool

Mi gnome terminalversion es

$ gnome-terminal --version
GNOME Terminal 3.6.1

ingrese la descripción de la imagen aquí

Actualmente estoy usando la interfaz de usuario de preferencias de terminal de ubuntu para lograr esto.

ingrese la descripción de la imagen aquí

prayagupd
fuente

Respuestas:

20

Método # 1 - Usando dconf

Fondo

Puede usar la dconfherramienta para lograr esto, sin embargo, es un proceso de varios pasos.

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.

Enfoque general

  1. Primero deberá obtener una lista de sus gnome-terminalperfiles.

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    <profile id>
  2. Con esto <profile id>, puede obtener una lista de configuraciones 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. A continuación, puede leer los colores actuales del primer plano o del fondo.

    primer plano

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

    fondo

    $ dconf read /org/gnome/terminal/legacy/profiles:/<profile id>/background-color
    'rgb(0,0,0)'
  4. Puedes cambiar los colores también

    primer plano

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

    fondo

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

Ejemplo

  1. Obtener mi ID de perfil

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    :b1dcc9dd-5262-4d8d-a863-c897e6d979b9/
  2. Use la ID de perfil para obtener una lista de configuraciones

    $ 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 tu fondo azul

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

              ss # 1

Una nota sobre colores

Puede usar la notación rgb(R,G,B)al especificar sus colores o la notación hash #RRGGBB. En ambas notaciones, los argumentos son rojo, verde y azul. Los valores en la primera notación son enteros que van de 0 a 255 para R, G o B. En la segunda notación, los valores están en hexadecimal que van de 00 a FF para RR, GG o BB.

Al proporcionar cualquiera de estos dconf, debe envolverlo correctamente entre comillas dobles con comillas simples anidadas en su interior. De dconflo contrario se quejará.

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

Método # 2 - Usando gconftool-2

En mi sistema Ubuntu 12.04 pude cambiar los colores a través de la línea de comando de la siguiente manera.

NOTA: Las opciones se almacenan en última instancia en este archivo, $HOME/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml.

Enfoque general

  1. Primero deberá obtener el árbol para gnome-terminalel perfil de.

    $ gconftool-2 --get /apps/gnome-terminal/global/profile_list
    [Default]
  2. Usando el árbol resultante podemos averiguar qué atributos son 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. Obtener / establecer los atributos 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. Confirmar

    $ 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

Referencias

slm
fuente
3
Muchas gracias por esta gran respuesta. Pero mi terminal no dio perfiles endconf list /org/gnome/terminal/legacy/profiles:/
prayagupd 01 de
@PrayagUpd: estoy viendo una instalación de Ubuntu 12.04 y parece que gnome-terminal no es el predeterminado. El emulador de terminal Debian X es el def. Puede comprobar w / este comando en la ficha Utilidades, exo-preferred-applications. Los detalles están aquí: askubuntu.com/questions/356842/… . ¿Puedes confirmar esto? Lo anterior se realizó en una instalación de Fedora 19 GNOME 3.10.
slm
Sí, Debian X terminal emulatorera el valor predeterminado 13.04, cambiarlo a gnome terminaltampoco funcionó.
prayagupd
@PrayagUpd: ¿el método # 2 funciona para usted?
slm
1
a partir de Ubuntu 18.04 que ahora debe usar sudo dconf whateveral emitir comandos
Scott Stensland
0

He creado algunas funciones, basadas en el código de Github de otros hilos. Puede poner estas funciones en su ~/.bashrcarchivo. Como puede ver, si llama create_random_profile:

  1. Verificará y eliminará cualquier perfil aleatorio anterior que haya creado.
  2. Creará un perfil de nombre aleatorio en terminales gnome.
  3. Establecerá ese nombre en una variable de entorno que puede usar para cambiar su color en funciones predefinidas. Ver la última función setcolord,.

Esto debería ser útil, para tener muchos terminales con diferentes colores. Además, con funciones predefinidas puede cambiar estos colores sobre la marcha.

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
fuente