DISCLAIMER: the project is still in an early state. All parts may be subject to change.
Souvlaki
A cross-platform library for handling OS media controls and metadata. One abstraction for Linux, MacOS and Windows.
Supported platforms
- Linux (via MPRIS)
- MacOS
- Windows
Windows
- Update metadata:
- Play and pause polling.
MacOS
Screenshots coming soon.
Linux
Coming soon.
Example
The main struct is MediaControls
. In order to create this struct you need a PlatformConfig
. This struct contains all of the platform-specific requirements for spawning media controls. Here are the differences between the platforms:
- MacOS: No config needed.
- Linux:
dbus_name
: The way your player will appear on D-Bus. It should follow the D-Bus specification.display_name
: This could be however you want. It's the name that will be shown to the users.
- Windows:
hwnd
: In this platform, a window needs to be opened to create media controls. The argument required is anHWND
, a value of type*mut c_void
. This value can be extracted when you open a window in your program, for example using theraw_window_handle
in winit.
A full cross-platform app would look like this:
use ;