From ea2726af0a409363e71398c3d516c5552e4eeeb8 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Tue, 7 Jul 2026 00:21:26 +0200 Subject: [PATCH] feat(client-linux): log the release/disconnect keyboard chords MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Ctrl+Alt+Shift+Q/D handlers had no tracing, so a report of "the disconnect shortcut doesn't work" was unverifiable from logs alone — live tracing (added temporarily, then trimmed to these two lines) showed the chord, `disconnect_quit()`, and the session teardown all firing correctly and instantly every time; the confusion traced back to the (now-fixed) FlowBox click crash having kept everyone from ever reaching a live session to test the shortcut with in the first place. Keep the two low-noise, deliberate-action log lines for the next time this comes up; drop the per-keystroke debug trace used to diagnose it, which would otherwise fire on every key during a stream. Co-Authored-By: Claude Sonnet 5 --- clients/linux/src/ui_stream.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clients/linux/src/ui_stream.rs b/clients/linux/src/ui_stream.rs index 07f86d94..fed3dc3a 100644 --- a/clients/linux/src/ui_stream.rs +++ b/clients/linux/src/ui_stream.rs @@ -806,6 +806,7 @@ fn attach_keyboard( | gdk::ModifierType::ALT_MASK | gdk::ModifierType::SHIFT_MASK; if state.contains(chord) && keyval.to_lower() == gdk::Key::q { + tracing::info!(captured = cap.captured.get(), "chord: Ctrl+Alt+Shift+Q (release/engage)"); if cap.captured.get() { cap.release(); } else { @@ -816,6 +817,7 @@ fn attach_keyboard( // Ctrl+Alt+Shift+D — leave the session. Now that Steam / QAM pass through to the host, // the capture toggle alone can't end a stream, so this is the keyboard's explicit exit. if state.contains(chord) && keyval.to_lower() == gdk::Key::d { + tracing::info!("chord: Ctrl+Alt+Shift+D (disconnect) — releasing capture + quitting"); cap.release(); // Deliberate user exit → close with QUIT_CLOSE_CODE so the host tears the session down // immediately instead of holding the keep-alive linger for a reconnect.