From 1b7b02496e73c645a4ccd5b09208e45a909d1571 Mon Sep 17 00:00:00 2001 From: lothesito <74989561+lothesito@users.noreply.github.com> Date: Sat, 26 Sep 2026 18:46:20 -0500 Subject: [PATCH] [ryoku] terminal: pass --class=NAME, which both kitty and Ghostty accept ryovm and the lockscreen built the terminal command as `--class NAME`, kitty's flag form. Ghostty wants `--class=NAME`; given the bare flag it reads `--class` as a value-less option and then parses the name as a stray config field, so it opened its "Configuration Errors" window on every connect. kitty accepts both forms, so one form covers the terminals Ryoku can be pointed at today. Note: Fixed: opening a remote in ryovm no longer raises the terminal's config error window --- ryoku/apps/CHANGELOG.md | 7 +++++++ ryoku/apps/ryovm/quickshell/SettingsPanel.qml | 2 +- ryoku/apps/ryovm/quickshell/Singletons/Remotes.qml | 4 ++-- ryoku/apps/ryovm/quickshell/Singletons/Vm.qml | 2 +- ryoku/hub/CHANGELOG.md | 5 +++++ ryoku/hub/quickshell/pages/LockscreenPage.qml | 2 +- 6 files changed, 17 insertions(+), 5 deletions(-) diff --git a/ryoku/apps/CHANGELOG.md b/ryoku/apps/CHANGELOG.md index ad5b83c9ef..9747675a8a 100644 --- a/ryoku/apps/CHANGELOG.md +++ b/ryoku/apps/CHANGELOG.md @@ -34,6 +34,13 @@ v0.56.0-beta.19") via `ryoku version --pretty` (`config.jsonc`). ### Fixed +- `ryovm/`: **terminal launches no longer raise the terminal's own config error + window.** The launches built the command as `--class `, which is kitty's + flag form. A terminal that wants `--class=` reads the bare `--class` as a + flag with no value and reports a configuration error, so Ghostty opened its + "Configuration Errors" window on every connect. The flag is now passed as + `--class=`, which kitty accepts as well (`Singletons/Remotes.qml`, + `Singletons/Vm.qml`, `SettingsPanel.qml`). - `fastfetch/`: **the greeting reports the real shell again.** The wrapper bounded fastfetch with `timeout 8`, but fastfetch's shell module walks the parent chain and skips known wrappers (`time`, `sudo`, ...) without knowing diff --git a/ryoku/apps/ryovm/quickshell/SettingsPanel.qml b/ryoku/apps/ryovm/quickshell/SettingsPanel.qml index d46dc87b86..0222c53679 100644 --- a/ryoku/apps/ryovm/quickshell/SettingsPanel.qml +++ b/ryoku/apps/ryovm/quickshell/SettingsPanel.qml @@ -184,6 +184,6 @@ Item { function installEngine() { Quickshell.execDetached(["sh", "-c", - "exec \"${TERMINAL:-kitty}\" --class ryovm -e sh -c \"ryovm setup; echo; read -n1 -rsp 'Press any key to close…'; echo\""]); + "exec \"${TERMINAL:-kitty}\" --class=ryovm -e sh -c \"ryovm setup; echo; read -n1 -rsp 'Press any key to close…'; echo\""]); } } diff --git a/ryoku/apps/ryovm/quickshell/Singletons/Remotes.qml b/ryoku/apps/ryovm/quickshell/Singletons/Remotes.qml index 78473333b9..708d3c8f64 100644 --- a/ryoku/apps/ryovm/quickshell/Singletons/Remotes.qml +++ b/ryoku/apps/ryovm/quickshell/Singletons/Remotes.qml @@ -170,14 +170,14 @@ Singleton { // stays readable instead of vanishing when the window closes. function copyId(a) { Quickshell.execDetached(["sh", "-c", - "exec \"${TERMINAL:-kitty}\" --class ryoport-ssh -e sh -c 'ryossh copyid \"$1\"; printf \"\\n── press enter to close ──\\n\"; read _' _ \"$1\"", "--", a]); + "exec \"${TERMINAL:-kitty}\" --class=ryoport-ssh -e sh -c 'ryossh copyid \"$1\"; printf \"\\n── press enter to close ──\\n\"; read _' _ \"$1\"", "--", a]); } // run one command on the host in a TTY, then hold on its output with a local // read so a fast command like df stays readable instead of being buried under // a fresh shell; the remote command stays unwrapped so non-POSIX shells can't mangle it. function runOn(alias, cmd) { Quickshell.execDetached(["sh", "-c", - "exec \"${TERMINAL:-kitty}\" --class ryoport-ssh -e sh -c 'ssh -t \"$1\" \"$2\"; printf \"\\n── press enter to close ──\\n\"; read _' _ \"$1\" \"$2\"", "--", alias, cmd]); + "exec \"${TERMINAL:-kitty}\" --class=ryoport-ssh -e sh -c 'ssh -t \"$1\" \"$2\"; printf \"\\n── press enter to close ──\\n\"; read _' _ \"$1\" \"$2\"", "--", alias, cmd]); logEvent("run", alias, I18n.tr("%1 on %2").arg(cmd.split(" ")[0]).arg(alias)); } // browse and transfer files over SFTP in the file manager. nautilus (the diff --git a/ryoku/apps/ryovm/quickshell/Singletons/Vm.qml b/ryoku/apps/ryovm/quickshell/Singletons/Vm.qml index 50f83ddb86..85398f4065 100644 --- a/ryoku/apps/ryovm/quickshell/Singletons/Vm.qml +++ b/ryoku/apps/ryovm/quickshell/Singletons/Vm.qml @@ -778,7 +778,7 @@ Singleton { "if [ $ec -ne 0 ]; then echo; echo \"ssh exited $ec, a password you never set means the guest has no '$user' account: ryovm config $vm ryovm_ssh_user \"; echo 'press Enter to close'; read _; fi" ].join("\n"); Quickshell.execDetached(["sh", "-c", - "exec \"${TERMINAL:-kitty}\" --class ryovm-ssh -e bash -c \"$1\" ryovm-ssh \"$2\" \"$3\" \"$4\" \"$5\" \"$6\"", + "exec \"${TERMINAL:-kitty}\" --class=ryovm-ssh -e bash -c \"$1\" ryovm-ssh \"$2\" \"$3\" \"$4\" \"$5\" \"$6\"", "--", script, c, pm ? pm[1] : "", sshProc.vmName, um ? um[1] : "", burn]); } } diff --git a/ryoku/hub/CHANGELOG.md b/ryoku/hub/CHANGELOG.md index 0d0da056b9..e1e503a8ce 100644 --- a/ryoku/hub/CHANGELOG.md +++ b/ryoku/hub/CHANGELOG.md @@ -47,6 +47,11 @@ `pages/WindowRulesPage.qml`, `SettingsSheet.qml`, `Singletons/Settings.qml`). ### Fixed +- **The security-key enrolment terminal no longer raises the terminal's own + config error window.** It launched with `--class ryoku-passkey`, kitty's flag + form; a terminal that wants `--class=` reports the bare `--class` as a + configuration error. The flag now uses the form both accept + (`pages/LockscreenPage.qml`). - **No Hyprland wording or dead compositor toggles on niri.** The search vocabulary derives from the active provider's rows and name, the import wizard names the desktop you run and stands down where it cannot read its diff --git a/ryoku/hub/quickshell/pages/LockscreenPage.qml b/ryoku/hub/quickshell/pages/LockscreenPage.qml index 8875ec9f80..ad0c9dd962 100644 --- a/ryoku/hub/quickshell/pages/LockscreenPage.qml +++ b/ryoku/hub/quickshell/pages/LockscreenPage.qml @@ -323,7 +323,7 @@ Item { return; pg.skError = I18n.tr("Finish security-key setup in the terminal window, then return here."); pg.skEnrollPolls = 0; - Quickshell.execDetached(["sh", "-c", "exec \"${TERMINAL:-kitty}\" --class ryoku-passkey -e sh -c 'ryoku security-key enroll; printf \"\\n── press enter to close ──\\n\"; read _'"]); + Quickshell.execDetached(["sh", "-c", "exec \"${TERMINAL:-kitty}\" --class=ryoku-passkey -e sh -c 'ryoku security-key enroll; printf \"\\n── press enter to close ──\\n\"; read _'"]); skEnrollRefresh.restart(); } function skremove(id) {