Giter VIP home page Giter VIP logo

volctl's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

volctl's Issues

Installation error ...

Distro : Deepin Linux(Debian based)
Pavucontrol installed

Installation error ...

$ sudo ./setup.py install
[sudo] password for muz: 
Verification successful
Traceback (most recent call last):
  File "./setup.py", line 5, in <module>
    from setuptools import find_packages, setup
ImportError: No module named setuptools

Slider window position

Hi.
Any chance the slider popup will open in the direction with the most place available?
Currently it is placed under the icon which is kinda hindering when panels are placed on the bottom of the screen.

Volume window fails to open

Volume window fails to open with this error when left-clicking on the tray icon:

Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/volctl-0.9.0-py3.9.egg/volctl/status_icon.py", line 279, in _cb_gtksi_button_press
  File "/usr/lib/python3.9/site-packages/volctl-0.9.0-py3.9.egg/volctl/status_icon.py", line 185, in _cb_activate
  File "/usr/lib/python3.9/site-packages/volctl-0.9.0-py3.9.egg/volctl/app.py", line 214, in show_slider
  File "/usr/lib/python3.9/site-packages/volctl-0.9.0-py3.9.egg/volctl/slider_win.py", line 38, in __init__
  File "/usr/lib/python3.9/site-packages/volctl-0.9.0-py3.9.egg/volctl/slider_win.py", line 115, in create_widgets
  File "/usr/lib/python3.9/site-packages/volctl-0.9.0-py3.9.egg/volctl/slider_win.py", line 143, in recreate_sliders
KeyError: 'alsa.card_name'

I am using up-to-date Manjaro MATE with pipewire.

Configuration option to prevent pop-up on volume change

I have an IRC client (HexChat) that only appears as playing audio for about 1s, while the notification sound plays. This makes volctl update twice, stealing focus. It would be useful to be able to disable the popup-on-volume-change behavior, or prevent it from popping up when applications are added/removed.

No volume sliders appear if there is a non-ALSA sinks

Using git commit ffceaa7 (ie. latest when reported), the volume sliders do not appear with my system. The following error is reported on the console:

File "/usr/local/lib/python3.8/dist-packages/volctl-0.9.0-py3.8.egg/volctl/slider_win.py", line 115, in create_widgets
File "/usr/local/lib/python3.8/dist-packages/volctl-0.9.0-py3.8.egg/volctl/slider_win.py", line 143, in recreate_sliders
KeyError: 'alsa.card_name'

pacmd list-sinks reports that there are 2 sinks. One of them is a filter, not an ALSA sound device, so there is no propery 'alsa.card_name'; it has only 3 properies

properties:
	device.class = "filter"
	device.description = "Simultaneous output to Built-in Audio Analog Stereo"
	device.icon_name = "audio-card"

I made a work-around by catching the KeyError exception where it happens, and replacing the name with a dummy. But I think it would be better to filter the list of sinks (slider_win.py, line 133) to show only real output devices, perhaps using sink.proplist['device.class'] == 'sound' or some other criterion.

Note that when you use volctl to adjust the level of this faulty sink 'Simultaneous output...', the corresponding slider in pavucontrol does NOT change, and vice versa. With the real ALSA device, the pavucontrol and volctl sliders stay in sync.

There seems to be something special about this sink: either this specific sink, or perhaps the entire 'filter' class of sinks.

Showing only ALSA cards is a quick fix.

Settings schema 'apps.volctl' is not installed

Hi, @buzz

I just updated volctl on the Arch via AUR. And I have a problem when running volctl after updated, which displays the following message:

GLib-GIO-ERROR **: Settings schema 'apps.volctl' is not installed

What can I do to volctl can run normally as before the update?
Please help, thanks.

Feature request: keyboard volume control

It would be very helpful to have the possibility of assigning keyboard keys to volume control, liking increasing and decreasing the volume, and muting the sound.

[Feature request] Set default sink

If I had several sinks, for example, speakers and headphones, I can't set default sink, so I need to use other application for this. Maybe need to add some checkbox for this.

High CPU load

Since the new AUR version update to 0.9.0-2, I see a considerable increase in CPU load. 22-23% in htop, while idling. In previous versions I would not see anything, CPU load close to 0% for volctl.

If there is any further information that would help tracking down the source of that, please just tell me and I will try to provide that.

grafik

OSD not disappearing with non-compositing WM

System Information

Screenshot_20200807_222438

volctl Version

Installed from AUR package via yay.

aur/volctl 0.7.1-1 (+10 0.06) (Installed)
    Per-application volume control for GNU/Linux desktops

volctl Preferences

Screenshot_20200807_222221

Issue Description

I have enabled OSD as seen in the preferences, however the OSD will not completely disappear after the timeout. The volume indicator fades out, but it leaves behind the black background (see screenshots).

Changing Volume, OSD shows up as expected
Screenshot_20200807_222617

After timeout, volume indicator fades out, but leaves behind background
Screenshot_20200807_222625

Please let me know if I can provide any other information to help debug and resolve.

Unfunctional scale bar

There are two HD-Audio Generic scales with the left one doing nothing (no volume status level, no effect on changing the volume). Any idea how to fix this. Besides this really good job, it really locks nice and I would love to replace the stock MATE status icon with this one :)

volctl

Support multiple screens

@ScuttleSE #7 (comment)
I'm on a three monitor setup, and the slider-popups opens up almost in the middle of my middle monitor instead of on top of the tray icon, which is also on the middle screen.

My guess is that the program gets the resolution of my left or right monitor and uses that for the positioning instead of the middle one.

volctl errors when running

I installed volctl and statusnotifier but it still seems to error.

volctl
Traceback (most recent call last):
File "/usr/local/bin/volctl", line 33, in
sys.exit(load_entry_point('volctl==0.8.2', 'gui_scripts', 'volctl')())
File "/usr/local/bin/volctl", line 25, in importlib_load_entry_point
return next(matches).load()
File "/usr/lib/python3.9/importlib/metadata.py", line 77, in load
module = import_module(match.group('module'))
File "/usr/lib/python3.9/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1030, in _gcd_import
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 664, in _load_unlocked
File "", line 627, in _load_backward_compatible
File "", line 259, in load_module
File "/usr/local/lib/python3.9/dist-packages/volctl-0.8.2-py3.9.egg/volctl/main.py", line 12, in
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 664, in _load_unlocked
File "", line 627, in _load_backward_compatible
File "", line 259, in load_module
File "/usr/local/lib/python3.9/dist-packages/volctl-0.8.2-py3.9.egg/volctl/app.py", line 15, in
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 664, in _load_unlocked
File "", line 627, in _load_backward_compatible
File "", line 259, in load_module
File "/usr/local/lib/python3.9/dist-packages/volctl-0.8.2-py3.9.egg/volctl/status_icon.py", line 6, in
File "/usr/lib/python3/dist-packages/gi/init.py", line 126, in require_version
raise ValueError('Namespace %s not available' % namespace)
ValueError: Namespace StatusNotifier not available

statusnotifier version 1.0.0

Build information:
source code location : .
prefix : /usr/local
compiler warning flags : -Wall

build html documentation : no
example : no
dbusmenu : no
introspection : auto

Install paths:
binaries : /usr/local/bin
libraries : /usr/local/lib
documentation : /usr/local/share/doc/statusnotifier
man pages : /usr/local/share/man

Pipewire support

I've switched to PipeWire as my audio server, and it's been working perfectly except for that volctl doesn't show applications, only devices. PipeWire is meant to be a drop-in pulseaudio replacement, and should work with no modification, so this is strange.
I've had a look at the python code but the issue seems to be in the C wrapper which I don't even know where to start with.
This could be a PipeWire issue and if you don't want to support it I would completely understand, but if someone with knowledge about the C wrapper could take a look it would be appreciated.

Thanks for this application, there's nothing else that's even close.

Better support for multiple output devices

First, I just came across volctl, thank you for this programme.

The Mute options give slightly unexpected results in that if I use the Mute button on the pop up menu, volctl mutes the default stream and turn the systray icon to "muted". A left button click on the icon will show the volume controls for all the streams, with the default stream muted while any other streams could be either open or muted.

This means that I am now listening to the radio over the internet, with the volume icon showing as muted!

I can mute or unmute each stream from the volume controls, so I wonder if the Mute button is actually necessary.

My suggestion would be:

  • make the Mute button mute/unmute ALL the streams.
  • change the system tray icon to muted only when ALL the streams are muted.

Of course the volume controls still allow indivual streams to be muted or unmuted.

Sliders growing out of the screen

I mentioned in #7, so just for documentary purposes.

Picture although not really that informative. Stuff outside of screen is.. well.. not captured :D

1462289622

Right side is were it vanishes offscreen.
Dunno currently how to avoid it at best

Install issues

I'm really excited to get this working as it's just the tool I'm looking for, without having to write my own.

I ran into some issues during install, specifically with dependencies I didn't know I needed, such as:
python-dev
libcairo2-dev
I also had to specify a version of pycairo in the setup.py file, because the latest pycairo doesn't support Python2 anymore.
I used version 1.18.1 of pycairo.

Now on install, I get these errors:

running install
running bdist_egg
running egg_info
writing requirements to volctl.egg-info/requires.txt
writing volctl.egg-info/PKG-INFO
writing top-level names to volctl.egg-info/top_level.txt
writing dependency_links to volctl.egg-info/dependency_links.txt
writing entry points to volctl.egg-info/entry_points.txt
reading manifest file 'volctl.egg-info/SOURCES.txt'
writing manifest file 'volctl.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/status_icon.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/__init__.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/slider_win.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/xwrappers.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/app.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/__main__.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/osd.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/pulsemgr.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/prefs.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/meta.py -> build/bdist.linux-x86_64/egg/volctl
byte-compiling build/bdist.linux-x86_64/egg/volctl/status_icon.py to status_icon.pyc
  File "build/bdist.linux-x86_64/egg/volctl/status_icon.py", line 76
    getattr(self, f"_create_{self._current_impl}")()
                                                ^
SyntaxError: invalid syntax

byte-compiling build/bdist.linux-x86_64/egg/volctl/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/slider_win.py to slider_win.pyc
  File "build/bdist.linux-x86_64/egg/volctl/slider_win.py", line 218
    name = f"<b>{proplist['application.name']}</b>: {proplist['media.name']}"
                                                                            ^
SyntaxError: invalid syntax

byte-compiling build/bdist.linux-x86_64/egg/volctl/xwrappers.py to xwrappers.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/app.py to app.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/__main__.py to __main__.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/osd.py to osd.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/pulsemgr.py to pulsemgr.pyc
  File "build/bdist.linux-x86_64/egg/volctl/pulsemgr.py", line 176
    obj_list = getattr(pulse, f"{fac}_list")()
                                          ^
SyntaxError: invalid syntax

byte-compiling build/bdist.linux-x86_64/egg/volctl/prefs.py to prefs.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/meta.py to meta.pyc
installing package data to build/bdist.linux-x86_64/egg
running install_data
creating build/bdist.linux-x86_64/egg/share
creating build/bdist.linux-x86_64/egg/share/applications
copying data/volctl.desktop -> build/bdist.linux-x86_64/egg/share/applications
creating build/bdist.linux-x86_64/egg/share/glib-2.0
creating build/bdist.linux-x86_64/egg/share/glib-2.0/schemas
copying data/apps.volctl.gschema.xml -> build/bdist.linux-x86_64/egg/share/glib-2.0/schemas
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying volctl.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying volctl.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying volctl.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying volctl.egg-info/entry_points.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying volctl.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying volctl.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist/volctl-0.8.2-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing volctl-0.8.2-py2.7.egg
Removing /usr/local/lib/python2.7/dist-packages/volctl-0.8.2-py2.7.egg
Copying volctl-0.8.2-py2.7.egg to /usr/local/lib/python2.7/dist-packages
volctl 0.8.2 is already the active version in easy-install.pth
Installing volctl script to /usr/local/bin

Installed /usr/local/lib/python2.7/dist-packages/volctl-0.8.2-py2.7.egg
Processing dependencies for volctl==0.8.2
Searching for pycairo==1.18.1
Best match: pycairo 1.18.1
Processing pycairo-1.18.1-py2.7-linux-x86_64.egg
pycairo 1.18.1 is already the active version in easy-install.pth

Using /usr/local/lib/python2.7/dist-packages/pycairo-1.18.1-py2.7-linux-x86_64.egg
Searching for pulsectl==21.3.4
Best match: pulsectl 21.3.4
Processing pulsectl-21.3.4-py2.7.egg
pulsectl 21.3.4 is already the active version in easy-install.pth

Using /usr/local/lib/python2.7/dist-packages/pulsectl-21.3.4-py2.7.egg
Searching for click==7.1.1
Best match: click 7.1.1
Processing click-7.1.1-py2.7.egg
click 7.1.1 is already the active version in easy-install.pth

Using /usr/local/lib/python2.7/dist-packages/click-7.1.1-py2.7.egg
Searching for PyYAML==5.4.1
Best match: PyYAML 5.4.1
Processing PyYAML-5.4.1-py2.7-linux-x86_64.egg
PyYAML 5.4.1 is already the active version in easy-install.pth

Using /usr/local/lib/python2.7/dist-packages/PyYAML-5.4.1-py2.7-linux-x86_64.egg
Searching for PyGObject==3.36.0
Best match: PyGObject 3.36.0
Adding PyGObject 3.36.0 to easy-install.pth file

Using /usr/lib/python2.7/dist-packages
Searching for setuptools==44.0.0
Best match: setuptools 44.0.0
Adding setuptools 44.0.0 to easy-install.pth file
Installing easy_install script to /usr/local/bin

Using /usr/lib/python2.7/dist-packages
Finished processing dependencies for volctl==0.8.2

I didn't actually notice the errors the first time I tried installing after getting dependencies set up correctly, so then when I try to run volctl, I get this error, similar to the syntax errors on install:

Traceback (most recent call last):
  File "/usr/local/bin/volctl", line 11, in <module>
    load_entry_point('volctl==0.8.2', 'gui_scripts', 'volctl')()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2852, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2443, in load
    return self.resolve()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2449, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "build/bdist.linux-x86_64/egg/volctl/__main__.py", line 12, in <module>
  File "build/bdist.linux-x86_64/egg/volctl/app.py", line 15, in <module>
  File "/usr/local/lib/python2.7/dist-packages/volctl-0.8.2-py2.7.egg/volctl/status_icon.py", line 76
    getattr(self, f"_create_{self._current_impl}")()
                                                ^
SyntaxError: invalid syntax

Would love any help!
Running ubuntu 20.04
Thanks! :)

Launch option for detached/oneshot usages.

Thanks for this application.

Is it possible to add an option to volctl to launch it as a detached & temporary instance without tray icon?

I'm using Polybar with the "Pulseaudio" module. There is a tray area, but I would like to have as few icons as possible there.

I would like volctl to run from the command line at the cursor position and close when clicked outside. For example, with an option --oneshot or --detached.

Then we could incorporate it in Polybar as a module or as an action of the Pulseaudio module.

For reference, that is how I use Gsimplecal with the Polybar "Date" module as an action.

volctl doesn't start if notification area is not ready

volctl often does not start with my window manager at startup and I need to launch it, either through CLI or rofi. The error that I get at startup is

PulseAudio connected
Warning: Could not embed Gtk.StatusIcon.
Fatal error: Could not create a status icon. Are you sure you have a working notification area?

I'm launching volctl in my .xprofile which is then executed by my window manager with volctl &.

I ended up "fixing" the issue by increasing MAX_EMBED_ATTEMPTS to 100. Before making this change I tried to reinstall the package through AUR multiple times with no difference.

SystemInfo:

  • ArchLinux w/ kernel 5.13.10
  • x86
  • awesomeWM v4.3
  • Python 3.9

Could you provide any guidance on how I should debug this further?

List dependencies

I would appreciate a complete list of the necessary dependencies to get your pythonscript running.
Looks like https://github.com/Valodim/python-pulseaudio and python2-gobject is required.
Seems like the server providing the libpulseaudio package in the venv script is down.

volctl looks like a promising project!

Add support for inputs

Allow controlling the volume of inputs like a microphone using pulse.source_list() and pulse.source_output_list()
I've been looking forever for a tray icon like this, so thank you! I think the only thing it's missing for me is the ability to control the volume of my microphone, both as a master volume and per app.

Fails to launch, error involving gdk and freeze count

Not really sure how to describe this or where to look for more information.

Environment: Arch Linux
Window Manager: bspwm
System tray: polybar

Installed via AUR

can see in the video that on launch, the tray area does update, however no icon is displayed and no interface appears to be present.

Arch.Running.-.Oracle.VM.VirtualBox.2021-12-03.15-36-58.mp4

There's some error output from the command, but I've not seen much online and I don't think anything relating to volctl directly.

Any ideas on where to begin looking or what the message even means?

Crash? No tray icon

Hi there, trying to use this on Arch with xfce. When starting volctl I get the following which just keeps repeating. There is no icon/applet in my system tray. Not sure if this is an error?

~ 
 02:15:55 AM   >> $ volctl
PulseAudio: Connection ready
Traceback (most recent call last):
  File "_ctypes/callbacks.c", line 232, in 'calling callback function'
  File "/usr/lib/python3.7/site-packages/volctl/pulseaudio.py", line 203, in _pa_sink_info_cb
    self._dict_from_proplist(struct.contents.proplist))
  File "/usr/lib/python3.7/site-packages/volctl/pulseaudio.py", line 312, in _on_new_pa_sink
    self._pa_sinks[index].update(struct)
  File "/usr/lib/python3.7/site-packages/volctl/pulseaudio.py", line 362, in update
    if self == self.pa_mgr.get_first_sink():
  File "/usr/lib/python3.7/site-packages/volctl/pulseaudio.py", line 269, in get_first_sink
    return self._pa_sinks[0]
KeyError: 0

Hitting ctrl+c also gives:

^CTraceback (most recent call last):
  File "/usr/bin/volctl", line 11, in <module>
    load_entry_point('volctl==0.6.1', 'gui_scripts', 'volctl')()
  File "/usr/lib/python3.7/site-packages/volctl/__main__.py", line 11, in main
    Gtk.main()
  File "/usr/lib/python3.7/site-packages/gi/overrides/Gtk.py", line 1641, in main
    return _Gtk_main(*args, **kwargs)
  File "/usr/lib/python3.7/contextlib.py", line 119, in __exit__
    next(self.gen)
  File "/usr/lib/python3.7/site-packages/gi/_ossighelper.py", line 251, in register_sigint_fallback
    signal.default_int_handler(signal.SIGINT, None)
KeyboardInterrupt

I initially installed via pakku but using makepkg results in the same.
Probably prudent to link to the AUR package.
https://aur.archlinux.org/packages/volctl/
https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=volctl

I also tried manually doing
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
since it was missing from the PKGBUILD but that results in the same.

specific icons of applications won't appear

volctli won't show application-specific icons, instead uses only two icons. is it the expected behavior? here is the screenshot:
Screenshot_2019-06-25_00-03-59
one of the sliders is for vlc, one for bluetooth sink, for example. it uses the same icon for all the sinks and pulseaudio icon for all the applications.

how can i install it on elementary os?

i am trying to install this app in elementary os. when i run
glib-compile-schemas /usr/share/glib-2.0/schemas/
it gives an error

sudo glib-compile-schemas /usr/share/glib-2.0/schemas No such key 'button-layout' in schema 'org.gnome.mutter:Pantheon' as specified in override file '/usr/share/glib-2.0/schemas/20_elementary.pantheon.wm.gschema.override'; ignoring override for this key. No such key 'enable-animations' in schema 'org.gnome.mutter:Pantheon' as specified in override file '/usr/share/glib-2.0/schemas/20_elementary.pantheon.wm.gschema.override'; ignoring override for this key.

Auto-Close sliders on focus lost

Small feature request.
Currently it is needed to explicitly click again onto the panel icon to close the sliders.
Coming from volumeicon, where the slider is closed after a short while after the mouse is moved away from it, I would like to see it such a behaviour included with volctl if feasible.

Add automatic systemd install

I just installed this from the aur & I'm a bit disappointed that it doesn't have a prepackaged .service file. This program is exactly what I searched for, but this is a bit of a turndown.

Installation doesn't work on ZorinOS

I installed it like it is described, but I don't see a tray icon even after restarting.
But I didn't got an error or something, so is there a way to fix this maybe?

feature request: wayland support

I just switched from xorg (qtile) to wayland (sway) and volctl doesn't work. That's kinda sad because I loved it in my previous configuration.

Anyway, currently the icon just doesn't show up. When the volume is changed, then a new floating window pops up with 0% volume (in the exact center of the screen) and volctl prints this to console:

(volctl:260504): Gtk-CRITICAL **: 10:07:48.702: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed
Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/volctl/app.py", line 141, in update_values
    self._create_osd()
  File "/usr/lib/python3.9/site-packages/volctl/app.py", line 94, in _create_osd
    self._osd = VolumeOverlay(self)
  File "/usr/lib/python3.9/site-packages/volctl/osd.py", line 63, in __init__
    self._make_window_clicktrough()
  File "/usr/lib/python3.9/site-packages/volctl/osd.py", line 177, in _make_window_clicktrough
    win = X.XID(self.get_window().get_xid())
AttributeError: 'GdkWaylandWindow' object has no attribute 'get_xid'

The windows stack on top of each other, have window borders and don't close automatically.

I hope it's possible to implement basic wayland support.

gschema and desktop files not copied during setup

Specifically, the files apps.volctl.gschema.xml and volctl.desktop in the data_files in setup.py are not copied to their correct locations during setup. This results in (volctl:10047): GLib-GIO-ERROR **: 21:25:05.356: Settings schema 'apps.volctl' is not installed. I fixed the issue by copying the files manually.

Since the setuptools docs say that data_files are relative to either site.USER_BASE or sys.prefix, I checked these values in a python interpreter. They are /home/[username]/.local and /usr respectively. I checked the directories relative to both of these locations and the files were not copied. I also checked the standard GSettings schema directories listed in the XDG_DATA_DIRS environment variable and did not find the schema file in them.

Environment: Debian Buster 10.2.0, XFCE 4.12, Python 2.7.16, setuptools 40.8.0 (installed from the python-setuptools 40.8.0-1 debian package).

Installation log:

$ sudo ./setup.py install
running install
running bdist_egg
running egg_info
writing volctl.egg-info/PKG-INFO
writing top-level names to volctl.egg-info/top_level.txt
writing dependency_links to volctl.egg-info/dependency_links.txt
writing entry points to volctl.egg-info/entry_points.txt
reading manifest file 'volctl.egg-info/SOURCES.txt'
writing manifest file 'volctl.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/volctl
copying volctl/pulseaudio.py -> build/lib.linux-x86_64-2.7/volctl
copying volctl/prefs.py -> build/lib.linux-x86_64-2.7/volctl
copying volctl/app.py -> build/lib.linux-x86_64-2.7/volctl
copying volctl/meta.py -> build/lib.linux-x86_64-2.7/volctl
copying volctl/tray.py -> build/lib.linux-x86_64-2.7/volctl
copying volctl/__main__.py -> build/lib.linux-x86_64-2.7/volctl
copying volctl/lib_pulseaudio.py -> build/lib.linux-x86_64-2.7/volctl
copying volctl/slider_win.py -> build/lib.linux-x86_64-2.7/volctl
copying volctl/__init__.py -> build/lib.linux-x86_64-2.7/volctl
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/pulseaudio.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/prefs.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/app.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/meta.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/tray.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/__main__.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/lib_pulseaudio.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/slider_win.py -> build/bdist.linux-x86_64/egg/volctl
copying build/lib.linux-x86_64-2.7/volctl/__init__.py -> build/bdist.linux-x86_64/egg/volctl
byte-compiling build/bdist.linux-x86_64/egg/volctl/pulseaudio.py to pulseaudio.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/prefs.py to prefs.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/app.py to app.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/meta.py to meta.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/tray.py to tray.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/__main__.py to __main__.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/lib_pulseaudio.py to lib_pulseaudio.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/slider_win.py to slider_win.pyc
byte-compiling build/bdist.linux-x86_64/egg/volctl/__init__.py to __init__.pyc
installing package data to build/bdist.linux-x86_64/egg
running install_data
creating build/bdist.linux-x86_64/egg/share
creating build/bdist.linux-x86_64/egg/share/applications
copying data/volctl.desktop -> build/bdist.linux-x86_64/egg/share/applications
creating build/bdist.linux-x86_64/egg/share/glib-2.0
creating build/bdist.linux-x86_64/egg/share/glib-2.0/schemas
copying data/apps.volctl.gschema.xml -> build/bdist.linux-x86_64/egg/share/glib-2.0/schemas
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying volctl.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying volctl.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying volctl.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying volctl.egg-info/entry_points.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying volctl.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist/volctl-0.6.2-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing volctl-0.6.2-py2.7.egg
Copying volctl-0.6.2-py2.7.egg to /usr/local/lib/python2.7/dist-packages
Adding volctl 0.6.2 to easy-install.pth file
Installing volctl script to /usr/local/bin

Installed /usr/local/lib/python2.7/dist-packages/volctl-0.6.2-py2.7.egg
Processing dependencies for volctl==0.6.2
Finished processing dependencies for volctl==0.6.2
$ sudo update-desktop-database
$ sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
$ volctl

(volctl:10047): GLib-GIO-ERROR **: 21:25:05.356: Settings schema 'apps.volctl' is not installed
Trace/breakpoint trap

This setuptools issue might be related since I noticed that it created a .egg file in /usr/local/lib/python2.7/dist-packages. I'm new to Linux so I might be missing something obvious.

Configuration dialog

A minimal configuration dialog with these options:

  • Custom mixer command (at the moment /usr/bin/pavucontrol is hard-coded)
  • Volume slider granularity
  • close sliders after focus lost #11
  • (solo/mute buttons)
  • (show/hide volume levels)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.