definir cor de plano de fundo / texto do terminal gnome do script bash

22

Gostaria de configurar a cor de fundo ( #002b36) e primeiro plano do meu terminal gnome no ubuntu 13, usando o script bash.

Eu tentei, gconftoolmas não consegui.

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

NAME
       gconftool-2 - GNOME configuration tool

Minha gnome terminalversão é

$ gnome-terminal --version
GNOME Terminal 3.6.1

insira a descrição da imagem aqui

Atualmente, estou usando a interface do usuário de preferências do terminal ubuntu para conseguir isso.

insira a descrição da imagem aqui

prayagupd
fonte

Respostas:

20

Método # 1 - Usando o dconf

fundo

Você pode usar a dconfferramenta para fazer isso, no entanto, é um processo de várias etapas.

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.

Abordagem geral

  1. Primeiro, você precisará obter uma lista dos seus gnome-terminalperfis.

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    <profile id>
  2. Com isso, <profile id>você pode obter uma lista de configurações configuráveis

    $ 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. Você pode ler as cores atuais do primeiro plano ou do plano de fundo

    primeiro plano

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

    fundo

    $ dconf read /org/gnome/terminal/legacy/profiles:/<profile id>/background-color
    'rgb(0,0,0)'
  4. Você pode mudar as cores também

    primeiro plano

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

    fundo

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

Exemplo

  1. Obter meu ID de perfil

    $ dconf list /org/gnome/terminal/legacy/profiles:/
    :b1dcc9dd-5262-4d8d-a863-c897e6d979b9/
  2. Use o ID do perfil para obter uma lista de configurações

    $ 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. Mude seu fundo azul

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

              ss # 1

Uma nota sobre cores

Você pode usar a notação rgb(R,G,B)ao especificar suas cores ou a notação de hash #RRGGBB. Nas duas notações, os argumentos são vermelho, verde e azul. Os valores na primeira notação são números inteiros que variam de 0-255 para R, G ou B. Na segunda notação, os valores estão em hexidecimal que varia de 00 a FF para RR, GG ou BB.

Ao fornecer um desses itens, dconfvocê precisa agrupá-lo corretamente entre aspas duplas com aspas simples aninhadas dentro. Caso contrário, dconfirá reclamar.

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

Método # 2 - Usando o gconftool-2

No meu sistema Ubuntu 12.04, consegui alterar as cores através da linha de comando da seguinte maneira.

NOTA: As opções são finalmente armazenadas neste arquivo $HOME/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml,.

Abordagem geral

  1. Primeiro, você precisará obter a árvore gnome-terminaldo perfil.

    $ gconftool-2 --get /apps/gnome-terminal/global/profile_list
    [Default]
  2. Usando a árvore resultante, podemos descobrir quais atributos são configuráveis.

    $ 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. Obter / Ajustar o background_color& foreground_coloratributos

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

    $ 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

Referências

slm
fonte
3
Muito obrigado por esta ótima resposta. Mas meu terminal não deu perfis ondconf list /org/gnome/terminal/legacy/profiles:/
prayagupd
@PrayagUpd - Estou olhando para uma instalação do Ubuntu 12.04 e parece que o gnome-terminal não é o padrão. O emulador de terminal Debian X é o def. Você pode verificar este comando na guia Utilitários exo-preferred-applications,. Os detalhes estão aqui: askubuntu.com/questions/356842/… . Você pode confirmar isso? O acima foi feito em uma instalação do Fedora 19 GNOME 3.10.
Slm
Sim, Debian X terminal emulatorera o padrão 13.04, alterá-lo para gnome terminaltambém não funcionava.
prayagupd
@PrayagUpd - o método 2 funciona para você?
Slm
1
a partir de Ubuntu 18.04 agora você deve usar sudo dconf whateverquando emitir comandos
Scott Stensland
0

Eu criei algumas funções, baseadas no código do Github de outros threads. Você pode colocar essas funções no seu ~/.bashrcarquivo. Como você pode ver, se você ligar para create_random_profile:

  1. Ele irá verificar e excluir qualquer perfil aleatório anterior que você criou.
  2. Ele criará um perfil de nome aleatório nos terminais gnome.
  3. Ele definirá esse nome em uma variável de ambiente que você pode usar para alterar sua cor em funções predefinidas. Veja a última função setcolord,.

Isso deve ser útil para ter muitos terminais com cores diferentes. Além disso, com funções predefinidas, você pode alterar essas cores rapidamente.

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
fonte