diff --git a/kittens/desktop_ui/main.go b/kittens/desktop_ui/main.go index 168e55ccb..89b60977c 100644 --- a/kittens/desktop_ui/main.go +++ b/kittens/desktop_ui/main.go @@ -30,7 +30,7 @@ func load_server_config(opts *ServerOptions) (ans *Config, err error) { func run_server(opts *ServerOptions) (err error) { config, err := load_server_config(opts) if err == nil { - portal, err := NewPortal(config) + portal, err := NewPortal(config, opts) if err == nil { err = portal.Start() if err == nil { diff --git a/kittens/desktop_ui/portal.go b/kittens/desktop_ui/portal.go index c0595c0e4..604bd30db 100644 --- a/kittens/desktop_ui/portal.go +++ b/kittens/desktop_ui/portal.go @@ -65,6 +65,7 @@ type Portal struct { settings SettingsMap lock sync.Mutex opts *Config + server_options *ServerOptions file_chooser_first_instance *exec.Cmd } @@ -75,8 +76,8 @@ func to_color(spec string) (v dbus.Variant, err error) { return } -func NewPortal(opts *Config) (p *Portal, err error) { - ans := Portal{opts: opts} +func NewPortal(opts *Config, server_options *ServerOptions) (p *Portal, err error) { + ans := Portal{opts: opts, server_options: server_options} ans.settings = SettingsMap{ SETTINGS_CANARY_NAMESPACE: map[string]dbus.Variant{ SETTINGS_CANARY_KEY: dbus.MakeVariant("running"), @@ -641,6 +642,14 @@ func (self *Portal) ReadAll(namespaces []string) (ReadAllType, *dbus.Error) { return values, nil } +func (self *Portal) reload_portal_settings() { + self.lock.Lock() + defer self.lock.Unlock() + if config, err := load_server_config(self.server_options); err == nil { + self.opts = config + } +} + type vmap map[string]dbus.Variant type Filter_expression struct { Ftype uint32 @@ -726,6 +735,7 @@ type ChooserResponse struct { } func (self *Portal) run_file_chooser(cfd ChooseFilesData) (response uint32, result_dict vmap) { + self.reload_portal_settings() response = RESPONSE_ENDED tdir, err := os.MkdirTemp("", "kitty-cfd") if err != nil {