私はgjsを使ってGNOME Shell拡張を開発しています。現在、panelMenu.Buttonアイコンは次のように設定されています。
class MenuButton extends PanelMenu.Button {
...
...
setIcon() {
const icon_class = ICON_CLASS[this._settings.get_enum("icon")];
this.icon = new St.Icon({
style_class: icon_class,
});
this.add_actor(this.icon);
}
...
}
設定された信号が変更をトリガする場合:
this._settingsC = this._settings.connect("changed", () => this.resetIcon());
ResetIcon() は次のようになります。
resetIcon() {
this.remove(this.icon)
const icon_class = ICON_CLASS[this._settings.get_enum("icon")];
this.icon = new St.Icon({
style_class: icon_class,
});
this.add_actor(this.icon);
}
ただし、実行時にアイコンを変更/再レンダリングしません。拡張機能を再ロードすると、変更のみが表示されます。
実行時にアイコンを変更する方法は?