From 727a1bc68b2f4c50a6fbb80ac4ee0250bb85540c Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Tue, 24 Feb 2026 20:00:45 +0100 Subject: [PATCH] seat: add FallbackOutputMode --- src/config/handler.rs | 5 +++++ src/ifs/wl_seat.rs | 31 ++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/config/handler.rs b/src/config/handler.rs index 042af16b..112f8024 100644 --- a/src/config/handler.rs +++ b/src/config/handler.rs @@ -523,6 +523,9 @@ impl ConfigProxyHandler { seat: Seat, mode: FallbackOutputMode, ) -> Result<(), CphError> { + let Ok(mode) = mode.try_into() else { + return Err(CphError::UnknownFallbackOutputMode(mode)); + }; let seat = self.get_seat(seat)?; seat.set_fallback_output_mode(mode); Ok(()) @@ -3537,6 +3540,8 @@ enum CphError { UnknownBarPosition(BarPosition), #[error("Unknown gfx API {0:?}")] UnknownGfxApi(GfxApi), + #[error("Unknown fallback output mode {0:?}")] + UnknownFallbackOutputMode(FallbackOutputMode), } trait WithRequestName { diff --git a/src/ifs/wl_seat.rs b/src/ifs/wl_seat.rs index ec5d0431..0b8f2652 100644 --- a/src/ifs/wl_seat.rs +++ b/src/ifs/wl_seat.rs @@ -106,10 +106,11 @@ use { }, ahash::AHashMap, jay_config::{ - input::FallbackOutputMode, + input::FallbackOutputMode as ConfigFallbackOutputMode, keyboard::syms::{KeySym, SYM_Escape}, }, kbvm::Keycode, + linearize::Linearize, run_on_drop::on_drop, smallvec::SmallVec, std::{ @@ -258,6 +259,34 @@ enum MarkMode { Jump, } +#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq, Linearize)] +pub enum FallbackOutputMode { + Cursor, + Focus, +} + +impl TryFrom for FallbackOutputMode { + type Error = (); + + fn try_from(value: ConfigFallbackOutputMode) -> Result { + let v = match value { + ConfigFallbackOutputMode::Cursor => FallbackOutputMode::Cursor, + ConfigFallbackOutputMode::Focus => FallbackOutputMode::Focus, + _ => return Err(()), + }; + Ok(v) + } +} + +impl Into for FallbackOutputMode { + fn into(self) -> ConfigFallbackOutputMode { + match self { + FallbackOutputMode::Cursor => ConfigFallbackOutputMode::Cursor, + FallbackOutputMode::Focus => ConfigFallbackOutputMode::Focus, + } + } +} + const CHANGE_CURSOR_MOVED: u32 = 1 << 0; const CHANGE_TREE: u32 = 1 << 1;