项目作者: buzz

项目描述 :
Per-application volume control and OSD for Linux desktops.
高级语言: Python
项目地址: git://github.com/buzz/volctl.git
创建时间: 2014-10-09T19:20:48Z
项目社区:https://github.com/buzz/volctl

开源协议:GNU General Public License v2.0

下载


volctl

Per-application volume control and OSD for Linux desktops.

Screenshot

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.

Features

  • Runs on virtually every desktop environment (Needs to support the freedesktop system tray specs)
  • Control main volumes as well as individual applications
  • Mute individual applications
  • Shows application icons and names
  • Per-application VU meter
  • Double-click opens pavucontrol (or custom mixer application)
  • Mouse-wheel support
  • On-screen volume display (OSD)

Installation

Manual installation

  1. Clone this repository somewhere and cd into it.
  2. To install: sudo ./setup.py install
    Note: You might need to copy data/apps.volctl.gschema.xml to /usr/share/glib-2.0/schemas/ manually.
  3. For the application icon to show up in the menu: sudo update-desktop-database
  4. Compile GSettings schemas: sudo glib-compile-schemas /usr/share/glib-2.0/schemas/ or sudo glib-compile-schemas /usr/local/share/glib-2.0/schemas/

Arch Linux

Available in AUR: volctl

Status/tray icon implementation

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

  • SNI
    Supported on modern Desktop Environments, like Gnome, KDE, works also on Wayland
  • XEmbed
    (through Gtk.StatusIcon)
    Not supported on Gnome, KDE (only through extensions/plugins). No Wayland
    support.

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.

No Wayland support (#39)

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).

Development

Deploy dev version in Virtualenv

You can start volctl from the source tree.

  1. $ python -m venv --system-site-packages venv
  2. $ source venv/bin/activate
  3. $ pip install --editable .
  4. $ venv/bin/volctl

Linting

Use pylint and flake8 for linting the sources.

  1. $ make lint

Use black to auto-format the code.

  1. $ make black

License

GNU General Public License v2.0