@@ -131,7 +131,7 @@ impl SwayosdWindow {
131131
132132 let icon = self . build_icon_widget ( icon_name) ;
133133 let progress = self . build_progress_widget ( volume / max_volume) ;
134- let label = self . build_text_widget ( Some ( & format ! ( "{}%" , volume) ) ) ;
134+ let label = self . build_text_widget ( Some ( & format ! ( "{}%" , volume) ) , Some ( 4 ) ) ;
135135
136136 progress. set_sensitive ( !device. mute ) ;
137137
@@ -153,7 +153,10 @@ impl SwayosdWindow {
153153 let brightness = brightness_backend. get_current ( ) as f64 ;
154154 let max = brightness_backend. get_max ( ) as f64 ;
155155 let progress = self . build_progress_widget ( brightness / max) ;
156- let label = self . build_text_widget ( Some ( & format ! ( "{}%" , ( brightness / max * 100. ) as i32 ) ) ) ;
156+ let label = self . build_text_widget (
157+ Some ( & format ! ( "{}%" , ( brightness / max * 100. ) as i32 ) ) ,
158+ Some ( 4 ) ,
159+ ) ;
157160
158161 self . container . append ( & icon) ;
159162 self . container . append ( & progress) ;
@@ -168,7 +171,7 @@ impl SwayosdWindow {
168171 self . clear_osd ( ) ;
169172
170173 let icon = self . build_icon_widget ( icon) ;
171- let label = self . build_text_widget ( label) ;
174+ let label = self . build_text_widget ( label, None ) ;
172175
173176 self . container . append ( & icon) ;
174177 self . container . append ( & label) ;
@@ -179,7 +182,7 @@ impl SwayosdWindow {
179182 pub fn changed_keylock ( & self , key : KeysLocks , state : bool ) {
180183 self . clear_osd ( ) ;
181184
182- let label = self . build_text_widget ( None ) ;
185+ let label = self . build_text_widget ( None , None ) ;
183186
184187 let on_off_text = match state {
185188 true => "On" ,
@@ -227,7 +230,7 @@ impl SwayosdWindow {
227230 self . container . append ( & progress) ;
228231
229232 if let Some ( text) = text {
230- let label = self . build_text_widget ( Some ( text. deref ( ) ) ) ;
233+ let label = self . build_text_widget ( Some ( text. deref ( ) ) , None ) ;
231234 self . container . append ( & label) ;
232235 }
233236
@@ -237,7 +240,7 @@ impl SwayosdWindow {
237240 pub fn custom_message ( & self , message : & str , icon_name : Option < & str > ) {
238241 self . clear_osd ( ) ;
239242
240- let label = self . build_text_widget ( Some ( message) ) ;
243+ let label = self . build_text_widget ( Some ( message) , None ) ;
241244
242245 if let Some ( icon_name) = icon_name {
243246 let icon = self . build_icon_widget ( icon_name) ;
@@ -294,9 +297,12 @@ impl SwayosdWindow {
294297 }
295298 }
296299
297- fn build_text_widget ( & self , text : Option < & str > ) -> gtk:: Label {
300+ fn build_text_widget ( & self , text : Option < & str > , min_chars : Option < u32 > ) -> gtk:: Label {
298301 cascade ! {
299302 gtk:: Label :: new( text) ;
303+ // width-chars is based off of the average font width, so we add 1
304+ // to make sure that it's wide enough.
305+ ..set_width_chars( min_chars. map_or( -1 , |v| ( v + 1 ) as i32 ) ) ;
300306 ..set_halign( gtk:: Align :: Center ) ;
301307 ..set_hexpand( true ) ;
302308 ..add_css_class( "title-4" ) ;
0 commit comments