diff options
| author | Adam Malczewski <[email protected]> | 2026-06-13 16:05:28 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-06-13 16:05:28 +0900 |
| commit | 9ee2d3ceee93ff0d0afdb47f594ea4fee95455fc (patch) | |
| tree | 4a1b73d8f140c88775d0487434ba23e807fc441f /packages/kernel/src/server.cpp | |
| parent | 11812b0374d5de395e2c17532c6bf89a903ee043 (diff) | |
| download | unbox-9ee2d3ceee93ff0d0afdb47f594ea4fee95455fc.tar.gz unbox-9ee2d3ceee93ff0d0afdb47f594ea4fee95455fc.zip | |
Kernel: Ctrl+Alt+F1..F12 VT switching (session escape hatch)
Intercept the XF86Switch_VT_1..12 keysyms before the keybinding filter and call
wlr_session_change_vt, so the user can always switch consoles while unbox runs.
Clean no-op without a session (headless/nested). Pure vt_for_keysym helper +
doctest; wlroots reached via the wlr.hpp wrapper.
Real-seat verified on the CF-AX3.
Diffstat (limited to 'packages/kernel/src/server.cpp')
| -rw-r--r-- | packages/kernel/src/server.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/packages/kernel/src/server.cpp b/packages/kernel/src/server.cpp index a0627f4..a5f8365 100644 --- a/packages/kernel/src/server.cpp +++ b/packages/kernel/src/server.cpp @@ -145,7 +145,10 @@ void Server::Impl::init() { wlr_log_init(WLR_INFO, nullptr); display = require(wl_display_create(), "wl_display"); - backend = require(wlr_backend_autocreate(wl_display_get_event_loop(display), nullptr), + // Capture the session out-param: on the real DRM seat it is the libseat + // session the VT-switch escape hatch (input.cpp) drives; NULL under + // headless/nested (no real seat), where VT switching no-ops cleanly. + backend = require(wlr_backend_autocreate(wl_display_get_event_loop(display), &session), "wlr_backend"); renderer = require(wlr_renderer_autocreate(backend), "wlr_renderer"); wlr_renderer_init_wl_display(renderer, display); |
