Skip to content

Commit e2313ea

Browse files
committed
settings: Support button_placement key
See github.com/flatpak/xdg-desktop-portal/pull/1821 for reference
1 parent 2477a1b commit e2313ea

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

src/main.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,13 @@ const APPEARANCE_NAMESPACE: &str = "org.freedesktop.appearance";
191191
const COLOR_SCHEME_KEY: &str = "color-scheme";
192192
const ACCENT_COLOR_KEY: &str = "accent-color";
193193
const CONTRAST_KEY: &str = "contrast";
194+
const BUTTON_PLACEMENT_KEY: &str = "button-placement";
194195

195196
struct Settings {
196197
pub color_scheme: ColorScheme,
197198
pub contrast: Contrast,
198199
pub accent: Srgba<f64>,
200+
button_placement: (Vec<String>, Vec<String>),
199201
}
200202

201203
impl Settings {
@@ -214,8 +216,25 @@ impl Settings {
214216
ColorScheme::PreferLight
215217
},
216218
accent: cosmic.accent_color().into_format(),
219+
button_placement: {
220+
let mut leading = Vec::<String>::new();
221+
if cosmic::config::show_minimize() {
222+
leading.push("minimize".to_string());
223+
}
224+
if cosmic::config::show_maximize() {
225+
leading.push("maximize".to_string());
226+
}
227+
leading.push("close".to_string());
228+
(Vec::<String>::default(), leading)
229+
},
217230
}
218231
}
232+
233+
fn button_placement_key_to_value(&self) -> zvariant::OwnedValue {
234+
let temp: &zvariant::Value = &self.button_placement.clone().into();
235+
let value = temp.try_into().unwrap();
236+
return value;
237+
}
219238
}
220239

221240
#[zbus::interface(name = "org.freedesktop.impl.portal.Settings")]
@@ -256,6 +275,7 @@ impl Settings {
256275
}) {
257276
inner.insert(ACCENT_COLOR_KEY.to_string(), value);
258277
}
278+
inner.insert(BUTTON_PLACEMENT_KEY.to_string(), self.button_placement_key_to_value());
259279
map.insert(APPEARANCE_NAMESPACE.to_string(), inner);
260280
}
261281
map
@@ -274,6 +294,7 @@ impl Settings {
274294
blue: self.accent.blue,
275295
})
276296
.map_err(|e| zbus::fdo::Error::Failed(e.to_string())),
297+
(APPEARANCE_NAMESPACE, BUTTON_PLACEMENT_KEY) => Ok(self.button_placement_key_to_value()),
277298
_ => Err(zbus::fdo::Error::Failed(
278299
"Unknown namespace or key".to_string(),
279300
)),

0 commit comments

Comments
 (0)