Volume control for GNU/Linux desktops featuring per-app sliders
Per-application volume control and OSD for Linux desktops.
I couldn’t find a simple tray icon that allows to control multiple applications easily from the task bar. So I wrote my own.
Bug reports and patches welcome!
It’s not meant to be an replacement for a full-featured mixer application. If you’re looking for that check out the excellent pavucontrol.
sudo ./setup.py install
Note: You might need to copy data/apps.volctl.gschema.xml
to /usr/share/glib-2.0/schemas/
manually.sudo update-desktop-database
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
or sudo glib-compile-schemas /usr/local/share/glib-2.0/schemas/
Available in AUR: volctl
volctl strives to achieve a high level of support across different Desktop Environments. Unfortunately, on the Linux Desktop several tray icon implemenations with various levels of support and capabilities co-exist.
volctl supports
Gtk.StatusIcon
)Your Desktop Environment might support both, one or none of these standards. Personally I use XEmbed as it allows for all important user interactions (mouse wheel, double-click, etc.) on my current system. The default is to prefer SNI which can be changed under the Preferences ➝ Prefer XEmbed.
Please try for yourself which type of tray icon works best for you.
Note: If you need support for SNI you have to compile and install
statusnotifier. Use the configure flags
--enable-introspection
and --enable-dbusmenu
. If you’re on Arch Linux you
can use the AUR package
statusnotifier-introspection-dbus-menu.
Through SNI volctl now supports tray icons under Wayland. Unfortunately it’s not possible to display the volume slider window on Wayland at the mouse pointer position. The Wayland protocol does not allow this unless non-standard Wayland extensions are used. The only entity that is capable of doing so is the Wayland compositor (generally your Desktop Environment).
You can start volctl from the source tree.
$ python -m venv --system-site-packages venv
$ ./setup.py develop
$ venv/bin/volctl
Use pylint and flake8 for linting the sources.
$ make lint
Use black to auto-format the code.
$ make black
GNU General Public License v2.0