Итак, я пишу расширение, у которого есть некоторые предпочтения. Я сохраняю настройки в GSettings, используя файл comfort.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-Message: ЖУРНАЛ JS: [_sortModeChanged] новый sortMode: последний использованный
Кроме того, я совершенно не представляю, как отлаживать подобные вещи (даже в LookingGlass...). Если кто-то может указать мне на мою глупую ошибку или дать несколько советов о том, как отлаживать такие вещи, я был бы очень признателен!