Round 303: XDG ext, Dconf ext, GSettings ext, GConf ext, Alternatives ext (20 commands)

ober

ae965d5408aea73e8515e821835c5213d0657fc6

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 43bb38b..3f99c38 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 303 — XDG ext, Dconf ext, GSettings ext, GConf ext, Alternatives ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| xdg-open | :orange_circle: | Open with default app |
+| xdg-mime | :orange_circle: | Query MIME type |
+| xdg-settings | :orange_circle: | Show XDG settings |
+| xdg-desktop | :orange_circle: | Show desktop dirs |
+| xdg-icon | :orange_circle: | Find icon |
+| xdg-menu | :orange_circle: | Show menu entries |
+| dconf-list | :orange_circle: | List dconf keys |
+| dconf-read | :orange_circle: | Read dconf value |
+| dconf-write | :orange_circle: | Write dconf value |
+| dconf-reset | :orange_circle: | Reset dconf key |
+| gsettings-list | :orange_circle: | List gsettings |
+| gsettings-get | :orange_circle: | Get gsettings value |
+| gsettings-set | :orange_circle: | Set gsettings value |
+| gsettings-reset | :orange_circle: | Reset gsettings |
+| gconf-list | :orange_circle: | List gconf keys |
+| gconf-get | :orange_circle: | Get gconf value |
+| gconf-set | :orange_circle: | Set gconf value |
+| gconf-unset | :orange_circle: | Unset gconf key |
+| update-alternatives-list | :orange_circle: | List alternatives |
+| update-alternatives-set | :orange_circle: | Set alternative |
+
 ### Round 302 — COPR ext, DNF ext, Zypper ext, Emerge ext, Portage ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 90ba48d..cbdd249 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -23085,4 +23085,64 @@
 
 (def (cmd-portage-info app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Portage: showing system info")))
\ No newline at end of file
+    (echo-message! echo "Portage: showing system info")))
+
+;;; Round 303 — GSettings ext, GConf ext, Alternatives ext (batch 2)
+
+(def (cmd-gsettings-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Schema: "
+      (lambda (schema)
+        (echo-message! echo (str "GSettings: listing " schema))))))
+
+(def (cmd-gsettings-get app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Schema key: "
+      (lambda (key)
+        (echo-message! echo (str "GSettings: getting " key))))))
+
+(def (cmd-gsettings-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Schema key: "
+      (lambda (key)
+        (echo-message! echo (str "GSettings: setting " key))))))
+
+(def (cmd-gsettings-reset app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Schema key: "
+      (lambda (key)
+        (echo-message! echo (str "GSettings: resetting " key))))))
+
+(def (cmd-gconf-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Path: "
+      (lambda (path)
+        (echo-message! echo (str "GConf: listing " path))))))
+
+(def (cmd-gconf-get app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key: "
+      (lambda (key)
+        (echo-message! echo (str "GConf: getting " key))))))
+
+(def (cmd-gconf-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key: "
+      (lambda (key)
+        (echo-message! echo (str "GConf: setting " key))))))
+
+(def (cmd-gconf-unset app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key: "
+      (lambda (key)
+        (echo-message! echo (str "GConf: unsetting " key))))))
+
+(def (cmd-update-alternatives-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Alternatives: listing all")))
+
+(def (cmd-update-alternatives-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Name: "
+      (lambda (name)
+        (echo-message! echo (str "Alternatives: configuring " name))))))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index e917da8..540db79 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -23810,3 +23810,59 @@
       (lambda (pkg)
         (echo-message! echo (str "Zypper: removing " pkg))))))
 
+;;; Round 303 — XDG ext, Dconf ext, GSettings ext (batch 1)
+
+(def (cmd-xdg-open app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "URL/file: "
+      (lambda (uri)
+        (echo-message! echo (str "XDG: opening " uri))))))
+
+(def (cmd-xdg-mime app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "XDG: MIME type of " file))))))
+
+(def (cmd-xdg-settings app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "XDG: showing settings")))
+
+(def (cmd-xdg-desktop app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "XDG: showing desktop dirs")))
+
+(def (cmd-xdg-icon app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Icon name: "
+      (lambda (icon)
+        (echo-message! echo (str "XDG: finding icon " icon))))))
+
+(def (cmd-xdg-menu app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "XDG: showing menu entries")))
+
+(def (cmd-dconf-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Path: "
+      (lambda (path)
+        (echo-message! echo (str "Dconf: listing " path))))))
+
+(def (cmd-dconf-read app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key: "
+      (lambda (key)
+        (echo-message! echo (str "Dconf: reading " key))))))
+
+(def (cmd-dconf-write app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key: "
+      (lambda (key)
+        (echo-message! echo (str "Dconf: writing " key))))))
+
+(def (cmd-dconf-reset app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key: "
+      (lambda (key)
+        (echo-message! echo (str "Dconf: resetting " key))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index e4cef60..c9ce3b7 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7780,4 +7780,25 @@
   (register-command! 'portage-world cmd-portage-world)
   (register-command! 'portage-depclean cmd-portage-depclean)
   (register-command! 'portage-info cmd-portage-info)
+  ;; Round 303
+  (register-command! 'xdg-open cmd-xdg-open)
+  (register-command! 'xdg-mime cmd-xdg-mime)
+  (register-command! 'xdg-settings cmd-xdg-settings)
+  (register-command! 'xdg-desktop cmd-xdg-desktop)
+  (register-command! 'xdg-icon cmd-xdg-icon)
+  (register-command! 'xdg-menu cmd-xdg-menu)
+  (register-command! 'dconf-list cmd-dconf-list)
+  (register-command! 'dconf-read cmd-dconf-read)
+  (register-command! 'dconf-write cmd-dconf-write)
+  (register-command! 'dconf-reset cmd-dconf-reset)
+  (register-command! 'gsettings-list cmd-gsettings-list)
+  (register-command! 'gsettings-get cmd-gsettings-get)
+  (register-command! 'gsettings-set cmd-gsettings-set)
+  (register-command! 'gsettings-reset cmd-gsettings-reset)
+  (register-command! 'gconf-list cmd-gconf-list)
+  (register-command! 'gconf-get cmd-gconf-get)
+  (register-command! 'gconf-set cmd-gconf-set)
+  (register-command! 'gconf-unset cmd-gconf-unset)
+  (register-command! 'update-alternatives-list cmd-update-alternatives-list)
+  (register-command! 'update-alternatives-set cmd-update-alternatives-set)
 )