@@ -91,7 +91,15 @@ pub fn render_playback_window(
9191 } ;
9292
9393 if let Some ( ref playback) = player. buffered_playback {
94- render_playback_text ( frame, state, ui, metadata_rect, track, playback) ;
94+ render_playback_text (
95+ frame,
96+ state,
97+ ui,
98+ metadata_rect,
99+ track,
100+ playback,
101+ player. mute_state ,
102+ ) ;
95103 }
96104
97105 let progress = std:: cmp:: min (
@@ -133,6 +141,7 @@ fn render_playback_text(
133141 rect : Rect ,
134142 track : & rspotify_model:: FullTrack ,
135143 playback : & SimplifiedPlayback ,
144+ mute_state : Option < u32 > ,
136145) {
137146 // Construct a "styled" text (`playback_text`) from playback's data
138147 // based on a user-configurable format string (app_config.playback_format)
@@ -144,6 +153,12 @@ fn render_playback_text(
144153 // this regex is to handle a format argument or a newline
145154 let re = regex:: Regex :: new ( r"\{.*?\}|\n" ) . unwrap ( ) ;
146155
156+ // build the volume string (vol% when unmuted, old_vol% (muted) if currently muted)
157+ let mut volume = format ! ( "{}%" , playback. volume. unwrap_or_default( ) ) ;
158+ if mute_state. is_some ( ) {
159+ volume = format ! ( "{}% (muted)" , mute_state. unwrap_or_default( ) ) ;
160+ }
161+
147162 let mut ptr = 0 ;
148163 for m in re. find_iter ( format_str) {
149164 let s = m. start ( ) ;
@@ -180,10 +195,10 @@ fn render_playback_text(
180195 "{album}" => ( track. album . name . to_owned ( ) , ui. theme . playback_album ( ) ) ,
181196 "{metadata}" => (
182197 format ! (
183- "repeat: {} | shuffle: {} | volume: {}% | device: {}" ,
198+ "repeat: {} | shuffle: {} | volume: {} | device: {}" ,
184199 <& ' static str >:: from( playback. repeat_state) ,
185200 playback. shuffle_state,
186- playback . volume. unwrap_or_default ( ) ,
201+ volume,
187202 playback. device_name,
188203 ) ,
189204 ui. theme . playback_metadata ( ) ,
0 commit comments