diff options
Diffstat (limited to 'crates/platform/src')
| -rw-r--r-- | crates/platform/src/ipc/dispatch.rs | 13 | ||||
| -rw-r--r-- | crates/platform/src/ipc/types.rs | 4 |
2 files changed, 17 insertions, 0 deletions
diff --git a/crates/platform/src/ipc/dispatch.rs b/crates/platform/src/ipc/dispatch.rs index 5668d14..d2232c8 100644 --- a/crates/platform/src/ipc/dispatch.rs +++ b/crates/platform/src/ipc/dispatch.rs @@ -39,6 +39,7 @@ pub(crate) fn handle_request(line: &[u8], wm: &std::rc::Rc<std::cell::RefCell<Wi master_count: wm.tiling.master_count, per_monitor: wm.per_monitor_workspaces, button_style: if wm.theme.traffic_light_buttons { "traffic_lights" } else { "traditional" }.to_string(), + button_mode: if wm.theme.dynamic_buttons { "dynamic" } else { "fixed" }.to_string(), button_side: if wm.theme.buttons_left { "left" } else { "right" }.to_string(), button_order: wm.theme.button_order.map(srdwm_core::format_button_order), title_centered: wm.theme.title_centered, @@ -523,6 +524,18 @@ fn handle_set(req: &serde_json::Value, wm: &std::rc::Rc<std::cell::RefCell<Windo wm.borrow_mut().theme.traffic_light_buttons = v == "traffic_lights"; (ok(), true) } + // `srd set button_mode <dynamic|fixed>` - live equivalent of + // `theme.decorations.title_bar.button_mode` + // (`ThemeConfig::dynamic_buttons`). Same scope note as + // `button_style` above. + "button_mode" => { + let Some(v) = value.and_then(|v| v.as_str()) else { return (err("button_mode needs \"dynamic\" or \"fixed\""), false) }; + if v != "dynamic" && v != "fixed" { + return (err("button_mode needs \"dynamic\" or \"fixed\""), false); + } + wm.borrow_mut().theme.dynamic_buttons = v == "dynamic"; + (ok(), true) + } // `srd set button_side <left|right>` - live equivalent of `theme. // decorations.title_bar.button_side`. Same scope note as // `button_style` above. diff --git a/crates/platform/src/ipc/types.rs b/crates/platform/src/ipc/types.rs index 095dc3d..f9af26c 100644 --- a/crates/platform/src/ipc/types.rs +++ b/crates/platform/src/ipc/types.rs @@ -206,6 +206,10 @@ pub(crate) struct SettingsResponse { /// `"traffic_lights"`/`"traditional"` string `srd set button_style` /// itself accepts. pub(crate) button_style: String, + /// `"dynamic"`/`"fixed"` string `srd set button_mode` accepts -- + /// `ThemeConfig::dynamic_buttons`'s readback, same shape and reason as + /// `button_style` directly above. + pub(crate) button_mode: String, /// `ThemeConfig::buttons_left`'s readback, as `"left"`/`"right"`. pub(crate) button_side: String, /// `ThemeConfig::button_order`'s readback - `null` when unset (the |