@@ -191,11 +191,13 @@ const APPEARANCE_NAMESPACE: &str = "org.freedesktop.appearance";
191191const COLOR_SCHEME_KEY : & str = "color-scheme" ;
192192const ACCENT_COLOR_KEY : & str = "accent-color" ;
193193const CONTRAST_KEY : & str = "contrast" ;
194+ const BUTTON_PLACEMENT_KEY : & str = "button-placement" ;
194195
195196struct Settings {
196197 pub color_scheme : ColorScheme ,
197198 pub contrast : Contrast ,
198199 pub accent : Srgba < f64 > ,
200+ button_placement : ( Vec < String > , Vec < String > ) ,
199201}
200202
201203impl 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