diff --git a/src/app/browser/window/header/bar.rs b/src/app/browser/window/header/bar.rs index dc0c8d65..a066d741 100644 --- a/src/app/browser/window/header/bar.rs +++ b/src/app/browser/window/header/bar.rs @@ -27,10 +27,20 @@ impl Bar for Box { .orientation(Orientation::Horizontal) .spacing(8) .build(); - - g_box.append(&TabBar::tab(window_action, view)); - g_box.append(&MenuButton::menu((browser_action, window_action))); - g_box.append(&Control::new().window_controls); + // left controls placement + if gtk::Settings::default().is_some_and(|s| { + s.gtk_decoration_layout() + .is_some_and(|l| l.starts_with("close")) + }) { + g_box.append(&Control::left().window_controls); + g_box.append(&MenuButton::menu((browser_action, window_action))); + g_box.append(&TabBar::tab(window_action, view)) + // default layout + } else { + g_box.append(&TabBar::tab(window_action, view)); + g_box.append(&MenuButton::menu((browser_action, window_action))); + g_box.append(&Control::right().window_controls) + } g_box } } diff --git a/src/app/browser/window/header/bar/control.rs b/src/app/browser/window/header/bar/control.rs index 05848ac8..41917aec 100644 --- a/src/app/browser/window/header/bar/control.rs +++ b/src/app/browser/window/header/bar/control.rs @@ -8,13 +8,12 @@ pub struct Control { impl Default for Control { fn default() -> Self { - Self::new() + Self::right() } } impl Control { - // Construct - pub fn new() -> Self { + pub fn right() -> Self { Self { window_controls: WindowControls::builder() .margin_end(MARGIN) @@ -22,4 +21,12 @@ impl Control { .build(), } } + pub fn left() -> Self { + Self { + window_controls: WindowControls::builder() + .margin_end(MARGIN) + .side(PackType::Start) + .build(), + } + } }