Configurer les extensions gnome-shell à partir de la ligne de commande

9

J'aime exécuter quelques scripts pour installer automatiquement des packages et faire des configurations sur de nouvelles installations d'OS. J'utilise gnome shell avec quelques extensions et pensais améliorer mes scripts pour les configurer.

Je configure généralement les extensions en utilisant gnome-shell-extension-prefs ou dconf-editor et je sais comment modifier d'autres schémas à partir de la ligne de commande. Exemple:

gsettings set org.gnome.desktop.background picture-options stretched

Mais, bien que je puisse trouver et modifier les extensions installées sous org.gnome.shell.extensions en utilisant dconf-editor, je ne peux pas y accéder en utilisant gsettings car elles ne semblent pas avoir de schéma assigné:

No such schema 'org.gnome.shell.extensions.extname'

Les seules extensions accessibles avec gsettings semblent être celles qui étaient pré-installées.

Donc, la question est, comment puis-je configurer les extensions installées à partir de la ligne de commande? Existe-t-il un moyen d'assigner aux gsettings les schémas compilés ~/.local/share/gnome-shell/extensions/? Peut-être que je regarde dans la mauvaise direction.

Environnement: Ubuntu Gnome 14.04 (Gnome Shell 3.10.4)

Merci d'avance.

albhilazo
la source

Réponses:

11

J'ai trouvé la réponse par moi-même à la fin.

sudo cp ~/.local/share/gnome-shell/extensions/extname/schemas/org.gnome.shell.extensions.extname.gschema.xml \
    /usr/share/glib-2.0/schemas/ &&
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

Copiez et compilez les schémas dans ~/.local/share/gnome-shell/extensionset gsettings pourra travailler avec eux.

albhilazo
la source
belle fouille!
Pancho
Je viens de rencontrer le même bug. Il doit y avoir une meilleure solution que de copier des schémas d'extensions installées localement dans le répertoire global. Des mises à jour sur ce problème?
ingénieur
4

Dans CentOS 7 - et je pense aussi dans Ubuntu - j'ai identifié ce que je pense être une légère amélioration de la réponse acceptée en introduisant le commutateur --schemadir comme suit:

# gsettings --schemadir ${schemaDir} set ${schema} ${key} "${value}"

Dans la commande ci-dessus, gsettings définit directement ${key}sur ${value}in ${schema}${schema}ne réside pas dans le /usr/share/glib-2.0/schemasrépertoire par défaut . (et il n'est pas nécessaire de déplacer le schéma vers le répertoire par défaut)

Quelques exemples:

gsettings --schemadir ~/.local/share/gnome-shell/extensions/[email protected]/schemas/ list-recursively org.gnome.shell.extensions.org-lab21-putwindow
gsettings --schemadir ~/.local/share/gnome-shell/extensions/[email protected]/schemas/  list-recursively org.gnome.shell.extensions.app-keys
gsettings --schemadir ~/.local/share/gnome-shell/extensions/[email protected]/schemas/  list-recursively org.gnome.shell.extensions.emoji-selector
Pancho
la source
1
onfirmed travaillant sur Ubuntu 18.04, GS 3.28. Par exemple:gsettings --schemadir ~/.local/share/gnome-shell/extensions/[email protected]/schemas/ list-recursively org.gnome.shell.extensions.org-lab21-putwindow
eddygeek