@@ -209,6 +209,19 @@ func (m *model) updateVolume() {
209209 speaker .Unlock ()
210210}
211211
212+ func (m * model ) updateTitle () tea.Cmd {
213+ if m .video == nil {
214+ return tea .SetWindowTitle ("YAP - Loading..." )
215+ }
216+ status := "PLAYING"
217+ if m .loading {
218+ status = "BUFFERING"
219+ } else if m .paused {
220+ status = "PAUSED"
221+ }
222+ return tea .SetWindowTitle (fmt .Sprintf ("YAP - %s [%s]" , status , m .video .Title ))
223+ }
224+
212225func (m * model ) Update (msg tea.Msg ) (tea.Model , tea.Cmd ) {
213226 switch msg := msg .(type ) {
214227 case videoLoadedMsg :
@@ -223,12 +236,13 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
223236 return m , tea .Batch (
224237 m .startPlayback (0 ),
225238 m .fetchLyricsCmd (msg .video , msg .url ),
239+ m .updateTitle (),
226240 )
227241
228242 case playbackStartedMsg :
229243 m .currTime = msg .startTime
230244 m .loading = false
231- return m , nil
245+ return m , m . updateTitle ()
232246
233247 case lyricsMsg :
234248 if msg .url != m .queue [m .currentIndex ].URL {
@@ -258,7 +272,7 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
258272 speaker .Lock ()
259273 m .ctrl .Paused = m .paused
260274 speaker .Unlock ()
261- return m , nil
275+ return m , m . updateTitle ()
262276 case "n" :
263277 return m , m .nextVideo ()
264278 case "p" :
@@ -285,7 +299,7 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
285299 rand .Shuffle (len (m .queue ), func (i , j int ) {
286300 m .queue [i ], m .queue [j ] = m .queue [j ], m .queue [i ]
287301 })
288- return m , m .gotoTrack (0 )
302+ return m , tea . Batch ( m .gotoTrack (0 ), m . updateTitle () )
289303 case "v" :
290304 m .showPlaylist = ! m .showPlaylist
291305 if m .showPlaylist {
@@ -310,7 +324,7 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
310324 }
311325 case "enter" :
312326 if m .showPlaylist {
313- return m , m .gotoTrack (m .playlistCursor )
327+ return m , tea . Batch ( m .gotoTrack (m .playlistCursor ), m . updateTitle () )
314328 }
315329 case "m" :
316330 if m .volLevel > 0 {
@@ -558,4 +572,4 @@ func formatDuration(d time.Duration) string {
558572 return fmt .Sprintf ("%02d:%02d:%02d" , h , m , s )
559573 }
560574 return fmt .Sprintf ("%02d:%02d" , m , s )
561- }
575+ }
0 commit comments