GSettings(Gjs) Tips
# 最終更新日 2023.11.19
GSettings 基本
動かす毎に GNOME デスクトップ時計の曜日表示の ON/OFF を切り替えます
#!/usr/bin/gjs -m import Gio from 'gi://Gio'; let settings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' }); let b = settings.get_boolean('clock-show-weekday'); settings.set_boolean('clock-show-weekday', !b);
GSettings のバリアント値
動かす毎に Eye of GNOME のプラグインを弄ります
#!/usr/bin/gjs -m import GLib from 'gi://GLib'; import Gio from 'gi://Gio'; let settings = new Gio.Settings({ schema: 'org.gnome.eog.plugins' }); // 配列化、unpack では JavaScript 配列にならない let plugins = settings.get_value('active-plugins').deep_unpack(); print(plugins); if (plugins.includes('reload')) { print('EoG プラグインに reload が含まれています、取り除きます'); plugins.splice(plugins.indexOf('reload'), 1); // GVariant 作成、引数はオブジェクトではないので注意 let a = new GLib.Variant('as', plugins); settings.set_value('active-plugins', a); } else { print('EoG プラグインに reload が含まれていますせん、追加します'); plugins.push('reload'); let a = new GLib.Variant('as', plugins); settings.set_value('active-plugins', a); }
GSettings のバインド
理解り易くするため GUI にしています Gedit の行番号表示をこのアプリ、Gedit 自体の設定、 dconf-editor すべてで同期します
#!/usr/bin/gjs -m import 'gi://Gtk?version=4.0'; import GObject from 'gi://GObject'; import Gtk from 'gi://Gtk'; import Gio from 'gi://Gio'; var Win = GObject.registerClass({ GTypeName: 'Win' }, class Win extends Gtk.ApplicationWindow { _init(a) { super._init({ application: a, title: 'Gedit 行番号表示切り替え' }); this.settings = new Gio.Settings({ schema: 'org.gnome.gedit.preferences.editor' }); let button = new Gtk.CheckButton({ label: 'Gedit の行番号を表示する', }); this.settings.bind('display-line-numbers', button, 'active', 0); this.child = button; } }); const app = new Gtk.Application(); app.connect('activate', ()=> {new Win(app).present();}); app.run(null);
Copyright(C) sasakima-nao All rights reserved 2002 --- 2024.