Audio and media control applet for the COSMIC desktop.
- Toggle mute/unmute on the default audio output
- List all available output devices and switch the default sink with a single click
- Active device is highlighted in the list
- Shows the active MPRIS media player name alongside the section header (e.g. Media ⬩ Chrome)
- Displays the current track title and artist when available
- Play/Pause, Previous, and Next track controls — Previous/Next are only active when the player reports it supports them (e.g. radio streams disable navigation)
You will need just and the standard Rust toolchain (rustup), plus a few system libraries. On a Debian/Ubuntu-based system:
sudo apt install just libxkbcommon-devClone the repo and install:
git clone https://github.com/akuzko/skadi-applet
cd skadi-applet
just build-release
just installTo install without root (e.g. into ~/.local):
just install rootdir=$HOME/.local prefix=''This installs the binary to ~/.local/bin/skadi-applet and the .desktop entry to ~/.local/share/applications/.
Once installed, the applet should appear in COSMIC Settings when editing applets on the panel or dock. It can also be launched directly from a terminal for testing:
skadi-appletLogs can be viewed with:
journalctl SYSLOG_IDENTIFIER=skadi-applet# Debug build
just build
# Release build
just build-release
# Run directly (without installing)
just runTo package for a Linux distribution, vendor dependencies first, then build from the vendored sources:
just vendor
just build-vendored
just rootdir=debian/skadi-applet prefix=/usr installDevelopers should install rustup and configure their editor to use rust-analyzer.
A justfile is included for the casey/just command runner:
just— release build (default)just run— build and runjust check— run clippyjust install— install into the systemjust vendor— create a vendored dependency tarballjust build-vendored— compile using vendored dependencies
Fluent is used for localization. Translation files are in the i18n directory. To add a new translation, copy the English (en) directory, rename it to the desired ISO 639-1 language code, and provide translations for each message identifier. Messages that don't need translation can be omitted.
