@@ -91,7 +91,7 @@ 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 ( frame, state, ui, metadata_rect, track, playback, player . mute_state ) ;
9595 }
9696
9797 let progress = std:: cmp:: min (
@@ -133,6 +133,7 @@ fn render_playback_text(
133133 rect : Rect ,
134134 track : & rspotify_model:: FullTrack ,
135135 playback : & SimplifiedPlayback ,
136+ mute_state : Option < u32 > ,
136137) {
137138 // Construct a "styled" text (`playback_text`) from playback's data
138139 // based on a user-configurable format string (app_config.playback_format)
@@ -144,6 +145,12 @@ fn render_playback_text(
144145 // this regex is to handle a format argument or a newline
145146 let re = regex:: Regex :: new ( r"\{.*?\}|\n" ) . unwrap ( ) ;
146147
148+ // build the volume string (vol% when unmuted, old_vol% (muted) if currently muted)
149+ let mut volume = format ! ( "{}%" , playback. volume. unwrap_or_default( ) ) ;
150+ if mute_state. is_some ( ) {
151+ volume = format ! ( "{}% (muted)" , mute_state. unwrap_or_default( ) ) ;
152+ }
153+
147154 let mut ptr = 0 ;
148155 for m in re. find_iter ( format_str) {
149156 let s = m. start ( ) ;
@@ -180,10 +187,10 @@ fn render_playback_text(
180187 "{album}" => ( track. album . name . to_owned ( ) , ui. theme . playback_album ( ) ) ,
181188 "{metadata}" => (
182189 format ! (
183- "repeat: {} | shuffle: {} | volume: {}% | device: {}" ,
190+ "repeat: {} | shuffle: {} | volume: {} | device: {}" ,
184191 <& ' static str >:: from( playback. repeat_state) ,
185192 playback. shuffle_state,
186- playback . volume. unwrap_or_default ( ) ,
193+ volume,
187194 playback. device_name,
188195 ) ,
189196 ui. theme . playback_metadata ( ) ,
0 commit comments