Skip to content

Commit b6b1ed4

Browse files
committed
Make percentage labels a fixed width: Fixes #163
1 parent 5324a95 commit b6b1ed4

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

src/server/osd_window.rs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)