Round 304: Polkit ext, DBus ext, Udev ext, Tmpfiles ext, Sysfs ext (20 commands)

ober

0a020ade251144a754920ef82ec330c63b41c659

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 3f99c38..7fd6f61 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 304 — Polkit ext, DBus ext, Udev ext, Tmpfiles ext, Sysfs ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| polkit-list | :orange_circle: | List polkit actions |
+| polkit-action | :orange_circle: | Show polkit action |
+| polkit-authority | :orange_circle: | Show authority |
+| polkit-check | :orange_circle: | Check authorization |
+| dbus-list | :orange_circle: | List DBus services |
+| dbus-monitor | :orange_circle: | Monitor DBus |
+| dbus-call | :orange_circle: | Call DBus method |
+| dbus-introspect | :orange_circle: | Introspect service |
+| udev-monitor | :orange_circle: | Monitor udev events |
+| udev-info | :orange_circle: | Show device info |
+| udev-trigger | :orange_circle: | Trigger udev events |
+| udev-settle | :orange_circle: | Wait for udev settle |
+| udev-rule-add | :orange_circle: | Add udev rule |
+| udev-rule-remove | :orange_circle: | Remove udev rule |
+| tmpfiles-create | :orange_circle: | Create tmpfiles |
+| tmpfiles-clean | :orange_circle: | Clean tmpfiles |
+| tmpfiles-remove | :orange_circle: | Remove tmpfiles |
+| tmpfiles-list | :orange_circle: | List tmpfiles config |
+| sysfs-read | :orange_circle: | Read /sys entry |
+| sysfs-write | :orange_circle: | Write /sys entry |
+
 ### Round 303 — XDG ext, Dconf ext, GSettings ext, GConf ext, Alternatives ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index cbdd249..0306977 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -23145,4 +23145,54 @@
   (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
+        (echo-message! echo (str "Alternatives: configuring " name))))))
+
+;;; Round 304 — Udev ext, Tmpfiles ext, Sysfs ext (batch 2)
+
+(def (cmd-udev-trigger app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Udev: triggering events")))
+
+(def (cmd-udev-settle app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Udev: waiting for settle")))
+
+(def (cmd-udev-rule-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Rule file: "
+      (lambda (file)
+        (echo-message! echo (str "Udev: adding rule " file))))))
+
+(def (cmd-udev-rule-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Rule file: "
+      (lambda (file)
+        (echo-message! echo (str "Udev: removing rule " file))))))
+
+(def (cmd-tmpfiles-create app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Tmpfiles: creating entries")))
+
+(def (cmd-tmpfiles-clean app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Tmpfiles: cleaning old files")))
+
+(def (cmd-tmpfiles-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Tmpfiles: removing entries")))
+
+(def (cmd-tmpfiles-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Tmpfiles: listing configuration")))
+
+(def (cmd-sysfs-read app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "/sys path: "
+      (lambda (path)
+        (echo-message! echo (str "Sysfs: reading " path))))))
+
+(def (cmd-sysfs-write app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "/sys path: "
+      (lambda (path)
+        (echo-message! echo (str "Sysfs: writing to " path))))))
\ 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 540db79..0bab254 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -23866,3 +23866,55 @@
       (lambda (key)
         (echo-message! echo (str "Dconf: resetting " key))))))
 
+;;; Round 304 — Polkit ext, DBus ext, Udev ext (batch 1)
+
+(def (cmd-polkit-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Polkit: listing actions")))
+
+(def (cmd-polkit-action app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Action ID: "
+      (lambda (id)
+        (echo-message! echo (str "Polkit: action " id))))))
+
+(def (cmd-polkit-authority app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Polkit: showing authority")))
+
+(def (cmd-polkit-check app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Action ID: "
+      (lambda (id)
+        (echo-message! echo (str "Polkit: checking " id))))))
+
+(def (cmd-dbus-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "DBus: listing services")))
+
+(def (cmd-dbus-monitor app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "DBus: monitoring messages")))
+
+(def (cmd-dbus-call app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Method: "
+      (lambda (method)
+        (echo-message! echo (str "DBus: calling " method))))))
+
+(def (cmd-dbus-introspect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Service: "
+      (lambda (svc)
+        (echo-message! echo (str "DBus: introspecting " svc))))))
+
+(def (cmd-udev-monitor app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Udev: monitoring events")))
+
+(def (cmd-udev-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device path: "
+      (lambda (dev)
+        (echo-message! echo (str "Udev: info for " dev))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index c9ce3b7..b2ce535 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7801,4 +7801,25 @@
   (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)
+  ;; Round 304
+  (register-command! 'polkit-list cmd-polkit-list)
+  (register-command! 'polkit-action cmd-polkit-action)
+  (register-command! 'polkit-authority cmd-polkit-authority)
+  (register-command! 'polkit-check cmd-polkit-check)
+  (register-command! 'dbus-list cmd-dbus-list)
+  (register-command! 'dbus-monitor cmd-dbus-monitor)
+  (register-command! 'dbus-call cmd-dbus-call)
+  (register-command! 'dbus-introspect cmd-dbus-introspect)
+  (register-command! 'udev-monitor cmd-udev-monitor)
+  (register-command! 'udev-info cmd-udev-info)
+  (register-command! 'udev-trigger cmd-udev-trigger)
+  (register-command! 'udev-settle cmd-udev-settle)
+  (register-command! 'udev-rule-add cmd-udev-rule-add)
+  (register-command! 'udev-rule-remove cmd-udev-rule-remove)
+  (register-command! 'tmpfiles-create cmd-tmpfiles-create)
+  (register-command! 'tmpfiles-clean cmd-tmpfiles-clean)
+  (register-command! 'tmpfiles-remove cmd-tmpfiles-remove)
+  (register-command! 'tmpfiles-list cmd-tmpfiles-list)
+  (register-command! 'sysfs-read cmd-sysfs-read)
+  (register-command! 'sysfs-write cmd-sysfs-write)
 )