Round 334: Lscpu ext, Lspci ext, Lsusb ext, Lshw ext, Dmidecode ext (20 commands)

ober

2ddcb8f8c934f50e504ea74a7aad8793f9d83e64

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index f0d616e..12b4bfc 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 334 — Lscpu ext, Lspci ext, Lsusb ext, Lshw ext, Dmidecode ext
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `lscpu-show` | :orange_circle: | Show CPU architecture |
+| `lscpu-json` | :orange_circle: | CPU info as JSON |
+| `lscpu-extended` | :orange_circle: | Extended CPU info |
+| `lscpu-caches` | :orange_circle: | CPU cache info |
+| `lspci-show` | :orange_circle: | List PCI devices |
+| `lspci-verbose` | :orange_circle: | Verbose PCI listing |
+| `lspci-kernel` | :orange_circle: | Show kernel drivers |
+| `lspci-tree` | :orange_circle: | PCI device tree |
+| `lsusb-show` | :orange_circle: | List USB devices |
+| `lsusb-verbose` | :orange_circle: | Verbose USB listing |
+| `lsusb-tree` | :orange_circle: | USB device tree |
+| `lsusb-device` | :orange_circle: | Show specific device |
+| `lshw-show` | :orange_circle: | Show hardware info |
+| `lshw-short` | :orange_circle: | Short hardware listing |
+| `lshw-class` | :orange_circle: | Filter by class |
+| `lshw-json` | :orange_circle: | Hardware as JSON |
+| `dmidecode-show` | :orange_circle: | Show DMI table |
+| `dmidecode-type` | :orange_circle: | Show by DMI type |
+| `dmidecode-string` | :orange_circle: | Show string keyword |
+| `dmidecode-keyword` | :orange_circle: | List keywords |
+
 ### Round 333 — Lsof-ext ext, Fuser ext, Lsns ext, Lsipc ext, Lsmem ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 0aae1ca..8eccb04 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -24735,4 +24735,54 @@
 
 (def (cmd-lsmem-ranges app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Lsmem: showing all memory ranges")))
\ No newline at end of file
+    (echo-message! echo "Lsmem: showing all memory ranges")))
+
+;;; Round 334 — Lsusb ext, Lshw ext, Dmidecode ext (batch 2)
+
+(def (cmd-lsusb-tree app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsusb: showing USB tree")))
+
+(def (cmd-lsusb-device app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Bus:Device: "
+      (lambda (spec)
+        (echo-message! echo (str "Lsusb: showing device " spec))))))
+
+(def (cmd-lshw-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lshw: showing hardware info")))
+
+(def (cmd-lshw-short app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lshw: short hardware listing")))
+
+(def (cmd-lshw-class app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Class: "
+      (lambda (cls)
+        (echo-message! echo (str "Lshw: showing " cls " devices"))))))
+
+(def (cmd-lshw-json app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lshw: showing hardware as JSON")))
+
+(def (cmd-dmidecode-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dmidecode: showing DMI table")))
+
+(def (cmd-dmidecode-type app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "DMI type: "
+      (lambda (t)
+        (echo-message! echo (str "Dmidecode: showing type " t))))))
+
+(def (cmd-dmidecode-string app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "String keyword: "
+      (lambda (kw)
+        (echo-message! echo (str "Dmidecode: " kw))))))
+
+(def (cmd-dmidecode-keyword app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dmidecode: listing keywords")))
\ 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 d45764e..c1f967d 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -25450,3 +25450,45 @@
       (lambda (t)
         (echo-message! echo (str "Lsns: listing " t " namespaces"))))))
 
+;;; Round 334 — Lscpu ext, Lspci ext, Lsusb ext, Lshw ext, Dmidecode ext (batch 1)
+
+(def (cmd-lscpu-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lscpu: showing CPU architecture info")))
+
+(def (cmd-lscpu-json app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lscpu: showing CPU info as JSON")))
+
+(def (cmd-lscpu-extended app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lscpu: showing extended CPU info")))
+
+(def (cmd-lscpu-caches app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lscpu: showing CPU cache info")))
+
+(def (cmd-lspci-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lspci: listing PCI devices")))
+
+(def (cmd-lspci-verbose app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lspci: verbose PCI listing")))
+
+(def (cmd-lspci-kernel app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lspci: showing kernel drivers")))
+
+(def (cmd-lspci-tree app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lspci: showing PCI tree")))
+
+(def (cmd-lsusb-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsusb: listing USB devices")))
+
+(def (cmd-lsusb-verbose app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsusb: verbose USB listing")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 59d8179..022d9f3 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8431,4 +8431,25 @@
   (register-command! 'lsmem-json cmd-lsmem-json)
   (register-command! 'lsmem-summary cmd-lsmem-summary)
   (register-command! 'lsmem-ranges cmd-lsmem-ranges)
+  ;; Round 334
+  (register-command! 'lscpu-show cmd-lscpu-show)
+  (register-command! 'lscpu-json cmd-lscpu-json)
+  (register-command! 'lscpu-extended cmd-lscpu-extended)
+  (register-command! 'lscpu-caches cmd-lscpu-caches)
+  (register-command! 'lspci-show cmd-lspci-show)
+  (register-command! 'lspci-verbose cmd-lspci-verbose)
+  (register-command! 'lspci-kernel cmd-lspci-kernel)
+  (register-command! 'lspci-tree cmd-lspci-tree)
+  (register-command! 'lsusb-show cmd-lsusb-show)
+  (register-command! 'lsusb-verbose cmd-lsusb-verbose)
+  (register-command! 'lsusb-tree cmd-lsusb-tree)
+  (register-command! 'lsusb-device cmd-lsusb-device)
+  (register-command! 'lshw-show cmd-lshw-show)
+  (register-command! 'lshw-short cmd-lshw-short)
+  (register-command! 'lshw-class cmd-lshw-class)
+  (register-command! 'lshw-json cmd-lshw-json)
+  (register-command! 'dmidecode-show cmd-dmidecode-show)
+  (register-command! 'dmidecode-type cmd-dmidecode-type)
+  (register-command! 'dmidecode-string cmd-dmidecode-string)
+  (register-command! 'dmidecode-keyword cmd-dmidecode-keyword)
 )