feat: add MPRIS media controls integration
Backend (Rust): - Add souvlaki crate for MPRIS support on Linux - Create media_controls module with MediaControlsManager - Track metadata (title, artist, album, duration, cover) - Playback state (playing/paused/stopped) - Wire pause/resume/stop commands to update MPRIS - Add set_media_metadata Tauri command Frontend (Svelte): - Call set_media_metadata when track starts playing - Send track info to MPRIS for system integration Now shows track info in system media controls and supports media key events (logged for now).
This commit is contained in:
1 parent
d1a13110ea
commit
62e59f599a
5 files changed
+213
No files matched your search
@@ -236,6 +236,15 @@
|
||||
console.log('play_track invoke succeeded');
|
||||
isPlaying = true;
|
||||
showToast(`Playing: ${track.title}`, 'success');
|
||||
|
||||
// Update MPRIS metadata for system media controls
|
||||
await invoke('set_media_metadata', {
|
||||
title: track.title,
|
||||
artist: track.performer?.name || 'Unknown Artist',
|
||||
album: track.album?.title || '',
|
||||
durationSecs: track.duration,
|
||||
coverUrl: artwork || null
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('Failed to play track:', err);
|
||||
showToast(`Playback error: ${err}`, 'error');
|
||||
@@ -274,6 +283,15 @@
|
||||
console.log('play_track invoke succeeded');
|
||||
isPlaying = true;
|
||||
showToast(`Playing: ${track.title}`, 'success');
|
||||
|
||||
// Update MPRIS metadata for system media controls
|
||||
await invoke('set_media_metadata', {
|
||||
title: track.title,
|
||||
artist: track.artist || selectedAlbum?.artist || 'Unknown Artist',
|
||||
album: selectedAlbum?.title || '',
|
||||
durationSecs: track.durationSeconds,
|
||||
coverUrl: artwork || null
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('Failed to play track:', err);
|
||||
showToast(`Playback error: ${err}`, 'error');
|
||||
|
||||
Reference in new issue
Block a user