srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/crates/config/src/engine/support.rs
diff options
context:
space:
mode:
authorsrdusr <[email protected]>2025-08-31 14:04:00 +0200
committersrdusr <[email protected]>2025-08-31 14:04:00 +0200
commit4a55182ce17fd4474f8be1e8819a41b7ccd11045 (patch)
tree68541860b6aa2c88c9da2296a747a1037499e1c0 /crates/config/src/engine/support.rs
parentbe5c4efa6866b5d23e1e81ecfc3b8d276540860f (diff)
downloadsrdwm-4a55182ce17fd4474f8be1e8819a41b7ccd11045.tar.gz
srdwm-4a55182ce17fd4474f8be1e8819a41b7ccd11045.zip
Wire aspect_ratio, phone_mode and pin_input through config/IPC/CLI
The Lua and IPC/CLI surface for the three new core primitives (crates/core: aspect_ratio rule action, general.phone_mode, virtual- pointer window pinning): - srd.rule(..., { aspect_ratio = "9:16" }): parses a "W:H" string into a validated (u32, u32), rejecting a malformed value as a real Lua error at config-load time rather than silently ignoring it. - general.phone_mode config default, plus srd set phone_mode <bool> for the live equivalent (same shape as animations/shadows/rounded_corners). - pin_input IPC dispatch ({"cmd":"pin_input","pid":<pid>,"id":<window id>}, id omitted to unpin) and its CLI surface, srd dispatch pin input <pid> <window-id> / unpin input <pid>. Keyed by the owning client's process id, not an opaque per-object id nothing outside the Wayland backend could ever learn - a controlling tool already knows its own pid for free. See docs/TODO.md for the full design reasoning behind each of these.
Diffstat (limited to 'crates/config/src/engine/support.rs')
-rw-r--r--crates/config/src/engine/support.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/crates/config/src/engine/support.rs b/crates/config/src/engine/support.rs
index 7537fce..97c499f 100644
--- a/crates/config/src/engine/support.rs
+++ b/crates/config/src/engine/support.rs
@@ -154,11 +154,25 @@ pub(super) fn default_config() -> HashMap<String, ConfigValue> {
// every other ordinary flag rather than left absent for a backend to
// decide.
set("general.gpu", Bool(false));
+ // `false`: opt-in single-app-at-a-time placement, off by default so
+ // an ordinary desktop session's floating/tiling behavior is
+ // completely unaffected - see `WindowManager::phone_mode`'s own doc
+ // comment.
+ set("general.phone_mode", Bool(false));
// Real desktop icons (Home/Computer/Trash plus `~/Desktop`'s own
// contents) on by default - see `WindowManager::desktop_icons_
// enabled`'s own doc comment for why this, unlike `general.gpu` just
// above, doesn't need an opt-in safety net.
set("general.desktop_icons", Bool(true));
+ // On by default - see `WindowManager::desktop_icons_all_monitors`'s
+ // own doc comment.
+ set("general.desktop_icons_all_monitors", Bool(true));
+ // `0` (no static reservation) by default - see `WindowManager::
+ // reserve_top`'s own doc comment for what this is and why.
+ set("general.reserve_top", Number(0.0));
+ set("general.reserve_bottom", Number(0.0));
+ set("general.reserve_left", Number(0.0));
+ set("general.reserve_right", Number(0.0));
// Empty by default - see `WindowManager::file_manager`'s own doc
// comment: empty means "dispatch via `xdg-open`", not "no file manager
// configured, do nothing".