-
dconf-editorusaschema pathpara mostrar a árvore de dados de configurações. Mesma estrutura usada para armazenar dados no banco de dados GVariant. -
gsettings(do glib-2.0) usaschema idpara exibir / obter dados de configurações. Da mesma forma que qualquer outro aplicativo deve fazer que usa a API GSetttings. -
Cabe ao desenvolvedor do aplicativo definir os dois como gostaria. (com alguma restrição para nomenclatura canônica). Portanto,
pathpode ser diferente deid, mas a maioria dos desenvolvedores de aplicativos prefere usar séries / combinações de palavras idênticas. Alguns não preservam a mesma capitalização. Exemplo de projeto Tracker do Gnome<schema id="org.freedesktop.Tracker.Miner" path="/org/freedesktop/tracker/miner/" />Além disso, alguns aplicativos alternativos compartilham as mesmas configurações que pertencem à área de trabalho do Gnome. Exemplo:
input-sources
-
Primeiro, o Apps não deve mexer com
dconfIntrodução da página do projeto dconf :
dconfé um sistema de configuração de baixo nível. Seu objetivo principal é fornecer um back-end para GSettings em plataformas que ainda não possuem sistemas de armazenamento de configuração. -
Onde estão armazenados os dados? (Ref: link )
Um perfil é uma lista de bancos de dados de configuração. O que parece que o Gnome & amp; Unity usa o mesmo perfil.
$ cat /etc/dconf/profile/gdm user-db:user system-db:gdm-
user-db:user: O primeiro banco de dados no perfil é de leitura / gravaçãorwe é criado no diretório pessoal do usuário.$ file ~/.config/dconf/user /home/sneetsher/.config/dconf/user: GVariant Database file, version 0 -
system-db:gdm: somente leitura$ file /etc/dconf/db/gdm /etc/dconf/db/gdm: GVariant Database file, version 0dconfpode ligar um armazenamento de estilo de texto além do Banco de dados GVariant da pastadb.d/*. Exemplo (Observe o caminho do arquivo, por isso é uma parte desystem-db:gdm):$ cat /etc/dconf/db/gdm.d/00-upstream-settings # This file is part of the GDM packaging and should not be changed. # # Instead create your own file next to it with a higher numbered prefix, # and run # # dconf update # [org/gnome/desktop/a11y/keyboard] enable=true [org/gnome/desktop/background] show-desktop-icons=false ...
-
-
Arquivos de esquema: relação entre
schema id& amp;schema path(*.gschema.xml)Qual é o arquivo XML do esquema na pasta data / glib-2.0 do meu aplicativo Quickly? trent mostra um bom exemplo do uso da API GSettings em um aplicativo do Quickly e sua conclusão com base em sua experiência.
Voltar ao Vino. Cada aplicativo que usa GSsettings deve definir seus esquemas e deve armazená-los / instalá-los em
/usr/share/glib-2.0/schemas/(é um diretório simplificado):$ dpkg -L vino | grep -i glib-2.0 /usr/share/glib-2.0 /usr/share/glib-2.0/schemas /usr/share/glib-2.0/schemas/org.gnome.Vino.enums.xml /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml $ more /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml <schemalist> <schema id='org.gnome.Vino' path='/org/gnome/desktop/remote-access/'> <key name='enabled' type='b'> <summary>Enable remote access to the desktop</summary> <description> If true, allows remote access to the desktop via the RFB protocol. Users on remote machines may then connect to the desktop using a VNC viewer. </description> <default>false</default> </key> <key name='prompt-enabled' type='b'> <summary>Prompt the user before completing a connection</summary> <description> If true, remote users accessing the desktop are not allowed access until the user on the host machine approves the connection. Recommended especially when access is not password protected. </description> <default>true</default> </key> ...Se você percebeu, o esquema é definido com
idepath. O nome do arquivo de esquema segue o valorid.<schema id='org.gnome.Vino' path='/org/gnome/desktop/remote-access/'> -
*.enums.xmlarquivos são para declaração de enumeração personalizada, para serem usados como novos tipos de dados em*.gschema.xmlcom o mesmoschema id.$ cat /usr/share/glib-2.0/schemas/org.gnome.Vino.enums.xml <!-- Generated data (by glib-mkenums) --> <schemalist> <enum id='org.gnome.Vino.VinoIconVisibility'> <value nick='never' value='0'/> <value nick='always' value='1'/> <value nick='client' value='2'/> </enum> </schemalist> <!-- Generated data ends here --> $ gsettings range org.gnome.Vino icon-visibility enum 'never' 'always' 'client' $ gsettings get org.gnome.Vino icon-visibility 'client' -
Compilando o esquema (Ref: Jogando com o dconf e o gnome-tweak-tool )
Como parte do processo de instalação (ele tem um gatilho dpkg), os esquemas são compilados com a ferramenta
glib-compile-schemas(do glib)sudo glib-compile-schemas /usr/share/glib-2.0/schemas*.gschema.xmlserá compilado em um arquivo binário/usr/share/glib-2.0/schemas/gschemas.compiled -
Arquivos de substituição de fornecedores (
*.gschema.override)Além dos arquivos de esquema,
glib-compile-schemaslê os arquivos de substituição do fornecedor , que são arquivos-chave que podem substituir os valores padrão das chaves nos esquemas (Ref:man glib-compile-schemas). Eles contêm as alterações feitas pela distribuição do Ubuntu para substituir os padrões do esquema upstream.$ ls /usr/share/glib-2.0/schemas/*.gschema.override /usr/share/glib-2.0/schemas/10_compiz-gnome.gschema.override /usr/share/glib-2.0/schemas/10_desktop-base.gschema.override /usr/share/glib-2.0/schemas/10_evolution-common.gschema.override /usr/share/glib-2.0/schemas/10_gnome-settings-daemon.gschema.override /usr/share/glib-2.0/schemas/10_gnome-shell.gschema.override /usr/share/glib-2.0/schemas/10_gnome-system-log.gschema.override /usr/share/glib-2.0/schemas/10_gsettings-desktop-schemas.gschema.override /usr/share/glib-2.0/schemas/10_libgtk-3-common.gschema.override /usr/share/glib-2.0/schemas/10_ubuntu-settings.gschema.override /usr/share/glib-2.0/schemas/20_ubuntu-gnome-default-settings.gschema.override $ cat /usr/share/glib-2.0/schemas/10_gnome-settings-daemon.gschema.override [org.gnome.desktop.wm.keybindings] switch-input-source=['<Super>space'] switch-input-source-backward=['<Shift><Super>space']Exemplo de arquivos de substituição de utilizar, consulte Como personalizar a Live CD do Ubuntu? (5. Personalização 2: Planos de fundo e temas).
-
Bloquear arquivos
Atualmente, o dconf suporta somente bloqueio por tecla, sem bloqueio de sub-caminho. Os valores definidos pelo usuário ainda serão armazenados em
user-db, mas não afetarão os aplicativos. O dconf / gsettings retorna os valores padrão em vez das chaves bloqueadas. Arquivos de bloqueio são armazenados emdb.d/locks/. Exemplo:$ cat /etc/dconf/db/gdm.d/locks/00-upstream-settings-locks /org/gnome/desktop/a11y/keyboard/enable /org/gnome/desktop/background/show-desktop-icons /org/gnome/desktop/lockdown/disable-application-handlers /org/gnome/desktop/lockdown/disable-command-line /org/gnome/desktop/lockdown/disable-lock-screen /org/gnome/desktop/lockdown/disable-log-out /org/gnome/desktop/lockdown/disable-printing /org/gnome/desktop/lockdown/disable-print-setup /org/gnome/desktop/lockdown/disable-save-to-disk /org/gnome/desktop/lockdown/disable-user-switching ...Após a modificação dos bloqueios, para ser uma execução eficaz:
sudo dconf updateUm bom mostruário: Configurações do dconf: padrões e bloqueios
-
Alterar as configurações globais
O padrão para
gsettings/dconf-editoré editar ouser-db. Para alterarsystem-db, escreva um novo arquivo de substituição e recompile os esquemas.Eu não consegui fazer isso funcionar:
sudo su gdm -c 'gsettings ...'nem as outras respostas aqui Defina preferências padrão / globais do Gnome (Gnome 3) , pode ser que fosse para uma versão antiga.