使用gsettings创建Gnome Clocks闹钟后界面不显示的问题求助
用gsettings创建GNOME Clocks闹钟后界面不显示的解决方法
问题重现步骤
- 通过GNOME Clocks界面创建测试闹钟
- 用
gsettings读取当前闹钟配置:
gsettings get org.gnome.clocks alarms [{'name': <'test for so'>, 'id': <'01da159f5b290d7b8c2e885c65088901'>, 'active': <true>, 'hour': <13>, 'minute': <41>, 'days': <@ai []>, 'snooze_minutes': <10>, 'ring_minutes': <5>}]
- 通过界面删除该闹钟,验证配置已清空:
gsettings get org.gnome.clocks alarms @aa{sv} []
- 用新ID通过
gsettings写入闹钟配置:
gsettings set org.gnome.clocks alarms "[{'name': <'test for so'>, 'id': <'4e52429bb11746d39dcbe566597c3c8a'>, 'active': <true>, 'hour': <13>, 'minute': <41>, 'days': <@ai []>, 'snooze_minutes': <10>, 'ring_minutes': <5>}]"
- 读取配置确认已保存,但GNOME Clocks界面完全不显示该闹钟。
原因分析
GNOME Clocks运行时会将闹钟配置加载到内存,直接通过gsettings修改配置后,应用不会自动刷新读取新配置;同时部分GNOME应用依赖D-Bus信号同步配置变更,直接修改gsettings数据库不会触发这类信号,导致界面与底层配置不同步。
解决方法
方法1:重启GNOME Clocks进程
关闭所有GNOME Clocks窗口,在终端执行:
killall gnome-clocks
重新打开GNOME Clocks后,新配置会被加载,闹钟即可显示。
方法2:通过D-Bus触发配置刷新
无需重启应用,直接通过D-Bus接口设置闹钟并触发刷新:
gdbus call --session --dest org.gnome.clocks --object-path /org/gnome/clocks --method org.freedesktop.DBus.Properties.Set org.gnome.clocks Alarms "<@aa{sv} [{'name': <'test for so'>, 'id': <'4e52429bb11746d39dcbe566597c3c8a'>, 'active': <true>, 'hour': <13>, 'minute': <41>, 'days': <@ai []>, 'snooze_minutes': <10>, 'ring_minutes': <5>}]"
执行后可直接在界面看到新闹钟。
方法3:确保ID为标准UUID格式
GNOME Clocks的闹钟ID要求为UUID格式,建议用系统工具生成标准ID:
uuidgen
将生成的UUID替换命令中的ID后,再执行配置写入操作。
内容的提问来源于stack exchange,提问作者Tyler Smith
相关产品推荐
相关产品推荐

