繁体   English   中英

Gnome-Shell扩展,观察GSettings的变化吗?

[英]Gnome-Shell Extension, observe changes on GSettings?

因此,我正在编写一个扩展程序,它具有一些首选项。 我喜好存储在GSettings,使用convenience.js(如描述在这里 )。 相关代码如下:

const SETTINGS_APP_SORT_MODE = 'sort-mode';

this._settings = Convenience.getSettings("org.gnome.shell.extensions.workspace-alt-tab"); //get schema

this._settings.set_string(SETTINGS_APP_SORT_MODE,modeCapture); //set value
this._sortMode = this._settings.get_string(SETTINGS_APP_SORT_MODE); //get value

到目前为止,它运行良好,我也可以使用以下命令

gsettings监视器org.gnome.shell.extensions.workspace-alt-tab排序模式

为了确保我确实根据需要设置值。

但是,当我尝试捕获对这些设置所做的更改以将其反映在我的代码中时,这便成为我的问题。 从我在其他扩展中看到的内容,我猜它应该看起来像这样:

   _init: function(params) {
      this._settingsChanged=
         this._settings.connect('changed',
            Lang.bind(this,this._settingsChanged)); //get notified on every schema change
      this._sortModeChangedId =
         this._settings.connect('changed::' + SETTINGS_APP_SORT_MODE,
            Lang.bind(this,this._sortModeChanged)); //get notified for sort-mode changes
      this._sortModeChanged(); //force initialization
    },


    _settingsChanged: function() {
       this._sortMode = this._settings.get_string(SETTINGS_APP_SORT_MODE);
       log("[_settingsChanged] new sortMode: "+this._sortMode);
    },
    _sortModeChanged: function() {
       this._sortMode = this._settings.get_string(SETTINGS_APP_SORT_MODE);
       log("[_sortModeChanged] new sortMode: "+this._sortMode);
    }

但是问题是我只看到从init调用的日志行:

Gjs消息:JS日志:[_sortModeChanged]新的sortMode:最近使用

另外,我绝对不知道如何调试这种事情(即使在LookingGlass中也是如此)。 如果有人可以指出我的愚蠢错误,或提供一些有关如何调试此类事情的指示,将不胜感激!

从外观上看,您似乎已覆盖_settingsChanged变量。 请注意,在init()内部,您正在执行以下操作:

this._settingsChanged =
    this._settings.connect('changed',
        Lang.bind(this,this._settingsChanged)); //get notified on every schema change

在这里,实际上是使用connect()返回的值覆盖_settingsChanged()方法。 尝试将返回值保存在其他属性中,将代码更改为:

this._settingsChangedId =
    this._settings.connect('changed',
        Lang.bind(this,this._settingsChanged)); //get notified on every schema change

让我知道是否可以为您解决问题。
另外,从我在Gnome-Shell开发方面的宝贵经验(无文档),我发现最好使用IRC渠道提供支持:irc.gnome.org上的#gnome-shell

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM