Paepoi » PyGObject Tips » GSettings(PyGObject) Tips
GSettings(PyGObject) Tips
# 最終更新日 2026.01.03
詳しいことは以下の URL にて(英語)
GLib – 2.0: GVariant Text Format
GSettings 基本
#!/usr/bin/env python3
'''
GNOME の時計を変更するサンプルコード
'''
from gi.repository import Gio
settings = Gio.Settings(schema='org.gnome.desktop.interface')
# 曜日の表示 bool
b = settings.get_boolean('clock-show-weekday')
r = input(f'現在曜日の表示は {b} です、{not b} にしますか[Y/n]? :')
if r.lower() == 'y':
settings.set_boolean('clock-show-weekday', not b)
# 12h 24h 切り替え str
s = settings.get_string('clock-format')
t = '24h' if s == '12h' else '12h'
r = input(f'現在時刻の表示は {s} です、{t} にしますか[Y/n]? :')
if r.lower() == 'y':
settings.set_string('clock-format', t)
GSettings バリアント値
GVariant は GLib の項目ですがたぶんココでしか使わないので詳しいことは以下の URL にて(英語)
GLib – 2.0: GVariant Text Format
#!/usr/bin/env python3
'''
デスクトップランチャと Nautilus の初期サイズを変更します
問題ないものを選んだつもりですが動かした場合は各自で元に戻してください。
'''
from gi.repository import Gio, GLib
#
# 文字列の配列、dconf-editor で見ると ['abc', 'def'] みたいな表示
# a が配列の意味、s が文字列
#
settings = Gio.Settings(schema='org.gnome.shell')
favorite = settings.get_value('favorite-apps').unpack()
SM = 'org.gnome.SystemMonitor.desktop'
if SM in favorite:
print('お気に入りに SystemMonitor が含まれています、取り除きます')
favorite.remove(SM)
a = GLib.Variant('as', favorite)
settings.set_value('favorite-apps', a)
else:
print('お気に入りに SystemMonitor が含まれていますせん、追加します')
favorite.append(SM)
a = GLib.Variant('as', favorite)
settings.set_value('favorite-apps', a)
# お気に入りを確認
#
# タプル、dconf-editor で見ると (300, 240) みたいな表示
# タプルは Python のものがそのまま使える、i は整数
#
settings = Gio.Settings(schema='org.gnome.nautilus.window-state')
w, h = settings.get_value('initial-size').unpack()
print(f'width={w} height={h}')
if h == 400:
print('Nautilus のサイズを 890x550 (default) に変更します')
d = GLib.Variant('(ii)', (890, 550))
settings.set_value('initial-size', d)
else:
print('Nautilus のサイズを 400x400 に変更します')
d = GLib.Variant('(ii)', (400, 400))
settings.set_value('initial-size', d)
# Nautilus で Ctrl+N を押して確認
GSettings のバインド
#!/usr/bin/env python3
import sys, gi
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk, Gio
class Win(Gtk.ApplicationWindow):
'''
GSettings のバインド(同期)のサンプルコード
GnomeTextEditor の行番号表示切り替え、理解り易くするため GUI にしています
このアプリ、GnomeTextEditor 自体の設定、 dconf-editor すべてで同期します
'''
def __init__(self, a):
Gtk.ApplicationWindow.__init__(self, application=a, title='Py')
# GtkSettings
self.settings = Gio.Settings(schema='org.gnome.TextEditor')
# GnomeTextEditor の行番号
b = self.settings.get_boolean('show-line-numbers')
cb = Gtk.CheckButton(label='GnomeTextEditor の行番号を表示', active=b)
# バインド、最後の引数は Gio.SettingsBindFlags.DEFAULT だけどゼロでいい
self.settings.bind('show-line-numbers', cb, 'active', 0)
self.set_child(cb)
app = Gtk.Application()
app.connect('activate', lambda a: Win(a).present())
app.run(sys.argv)
Copyright(C) sasakima-nao All rights reserved 2002 --- 2026.