Como script as configurações feitas pelo gnome-tweak-tool?

14

Eu gosto de poder configurar as coisas na linha de comando, para que, quando reinstalar o sistema operacional, possa executar um script e recuperar minha configuração preferida.

Desde a "atualização" para o Ubuntu 17.10, descobri que precisava usar a ferramenta gnome-tweak-tool para obter algumas configurações da maneira que eu as queria.

Depois de encontrar uma configuração na GUI da ferramenta gnome-tweak, como posso descobrir sua tradução programável?

Por exemplo, as seguintes linhas de configurações correspondem às entradas relevantes na captura de tela da ferramenta gnome-tweak abaixo ...

gsettings set org.gnome.desktop.wm.preferences titlebar-font "Tahoma Bold 8"
gsettings set org.gnome.desktop.interface font-name "Tahoma 8"
gsettings set org.gnome.desktop.interface document-font-name "Tahoma 8"
gsettings set org.gnome.desktop.interface monospace-font-name "FixedSC 10"

captura de tela de gnome-tweak-tool ... mas como alguém poderia adivinhar isso? E como, por exemplo, descobriria onde obter as configurações correspondentes para sugestões e antialiasing?

st01
fonte
1
TBH eu sempre recorreu a grepping o keyspace por exemplo gsettings list-recursively | grep -e alias -e hint- gostaria de saber se existe uma maneira melhor
steeldriver
Além de navegar pelo código-fonte ou pelo dconf-editor (ou pelo gsettings diretamente, como @steeldriver), quase ninguém pode fazer.
Muru

Respostas:

22

Descubra facilmente o que está sendo definido

Em vez de pesquisar em um diretório inteiro de opções:

  1. Abra uma janela do terminal
  2. Execute o comando:

    dconf watch /
  3. Faça as alterações e veja o que o terminal mostra:

    insira a descrição da imagem aqui

    ... e aí está você.

Dconf & gsettings

No exemplo, você vê a saída de dconf. Gsettings é o cliente principal do dconf. Muitas vezes, você pode usar um dconfcomando ou um gsettingscomando. Nesse caso:

dconf write /org/gnome/desktop/background/show-desktop-icons false

ou:

gsettings set org.gnome.desktop.background show-desktop-icons false

Se a chave gsettings existir, no entanto, a última é considerada uma prática recomendada para proteger a integridade do seu dconfbanco de dados.

Veja também aqui e aqui .

Jacob Vlijm
fonte
Isso é brilhante, obrigado. Pequenas perguntas: (1) como sei "se a chave gsettings existe"? (2) Qual é o objetivo de duas interfaces de linha de comando que são, para todos os efeitos, idênticas ao usuário? (3) qual é a diferença entre o primeiro e o terceiro do seu "aqui"? Eles parecem a mesma página para mim.
St01 /
@ st01 Para (1) você pode executar o comando gsettings de forma sincronizada, ver se ele faz o trabalho ou verificar o editor do dconf (não instalado por padrão, mas uma ótima ferramenta) se a chave gsettings (também) existir. (2) gsettings é o frontend cli para editar o banco de dados dconf. O Gsettings também verifica a integridade do banco de dados e, portanto, é preferível editar diretamente o banco de dados dconf. Como o gsettings é de nível superior, é mais lento. (3), Ah, isso é bobagem :), você está certo. Vai editar
Jacob Vlijm 3/17/17
@JacobVlijm thanks very! Você salvou minha vida!!
Marslo 29/05
8

Para a maioria das configurações, você pode usar esta abordagem:

  • Exporte a lista gsettingspara um arquivo temporário:

    gsettings list-recursively > /tmp/gsettings.before
  • Faça suas alterações com gnome-tweak-tool(ou unity-control-center);

  • Exporte a lista gsettingspara outro arquivo temporário:

    gsettings list-recursively > /tmp/gsettings.after
  • Compare os dois arquivos ( .Antes e .depois ) e obter as diferenças:

    diff /tmp/gsettings.before /tmp/gsettings.after | grep '[>|<]'

    Ou compare e obtenha apenas os novos valores ( fonte ):

    diff /tmp/gsettings.before /tmp/gsettings.after | grep -Po '> \K.*'

    Ou compare e obtenha apenas os novos valores, mas substitua o início das linhas por gsettings setpara preparar uma lista de comandos, para que o frio seja armazenado diretamente no seu arquivo de script ( fonte ):

    diff /tmp/gsettings.before /tmp/gsettings.after | sed 's/>/gsettings set/;tx;d;:x'

Você pode executar todos esses comandos em uma linha (ou criar um script para automatizar o processo):

gsettings list-recursively > /tmp/gsettings.before; gnome-tweak-tool; gsettings list-recursively > /tmp/gsettings.after; diff /tmp/gsettings.before /tmp/gsettings.after | grep '[>|<]'

A próxima demonstração é criada no Ubuntu 16.04. Eu acho que a abordagem funcionará também em 17.10:

insira a descrição da imagem aqui


Atualização: Acabei de encontrar uma maneira fácil no Ubuntu 17.10:

insira a descrição da imagem aqui

pa4080
fonte
1
Muito útil, obrigado, eu não sabia que você poderia despejar todas as configurações como esta.
St01
1
Isso é excelente, muito obrigado! Agora eu posso restaurar minha configuração antiga quando mexo em gsettings.
Nicholas Stommel