Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

can't change MATE panel layout by mate-tweak because of missed mate-volume-control-applet executable #94

Open
N0rbert opened this issue Aug 10, 2023 · 5 comments

Comments

@N0rbert
Copy link
Member

N0rbert commented Aug 10, 2023

Steps to reproduce the issue:

  1. Install task-mate-desktop with mate-tweak to get full MATE desktop
  2. Launch mate-tweak from terminal
  3. Go to Panel tab, then try to switch panel layouts using drop-down menu

Expected results:

  • user is able to select any available MATE Panel layouts - one from Fedora,
    GNOME, openSUSE

Actual results:

  • user is unable to select needed panel layout, gets the following error
    messages in the terminal:
$ mate-tweak
Window Manager is: marco-no-composite
System installed layouts:
['fedora', 'default', 'opensuse']
Current layout: opensuse
/usr/bin/mate-tweak:684: PyGTKDeprecationWarning: The "buttons" argument must
be a Gtk.ButtonsType enum value. Please use the "add_buttons" method for adding
buttons. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  dialog = Gtk.Dialog(title, None, Gtk.DialogFlags.MODAL |
Gtk.DialogFlags.DESTROY_WITH_PARENT,
/usr/bin/mate-tweak:684: PyGTKDeprecationWarning: The "flags" argument for
dialog construction is deprecated. Please use initializer keywords: modal=True
and/or destroy_with_parent=True. See:
https://wiki.gnome.org/PyGObject/InitializerDeprecations
  dialog = Gtk.Dialog(title, None, Gtk.DialogFlags.MODAL |
Gtk.DialogFlags.DESTROY_WITH_PARENT,
/usr/bin/mate-tweak:690: PyGTKDeprecationWarning: Using positional arguments
with the GObject constructor has been deprecated. Please specify keyword(s) for
"label" or use a class specific constructor. See:
https://wiki.gnome.org/PyGObject/InitializerDeprecations
  label = Gtk.Label(text)
Switching to: fedora
Traceback (most recent call last):
  File "/usr/bin/mate-tweak", line 1047, in combo_fallback
    self.additional_tweaks(schema, key, value[1])
  File "/usr/bin/mate-tweak", line 1031, in additional_tweaks
    self.replace_panel_layout(panel_layout)
  File "/usr/bin/mate-tweak", line 768, in replace_panel_layout
    self.enable_applets()
  File "/usr/bin/mate-tweak", line 571, in enable_applets
    pid = subprocess.Popen(['mate-volume-control-applet'], stdout=DEVNULL,
stderr=DEVNULL).pid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 1024, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.11/subprocess.py", line 1901, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'mate-volume-control-
applet'
/usr/bin/mate-tweak:684: PyGTKDeprecationWarning: The "buttons" argument must
be a Gtk.ButtonsType enum value. Please use the "add_buttons" method for adding
buttons. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  dialog = Gtk.Dialog(title, None, Gtk.DialogFlags.MODAL |
Gtk.DialogFlags.DESTROY_WITH_PARENT,
/usr/bin/mate-tweak:684: PyGTKDeprecationWarning: The "flags" argument for
dialog construction is deprecated. Please use initializer keywords: modal=True
and/or destroy_with_parent=True. See:
https://wiki.gnome.org/PyGObject/InitializerDeprecations
  dialog = Gtk.Dialog(title, None, Gtk.DialogFlags.MODAL |
Gtk.DialogFlags.DESTROY_WITH_PARENT,
/usr/bin/mate-tweak:690: PyGTKDeprecationWarning: Using positional arguments
with the GObject constructor has been deprecated. Please specify keyword(s) for
"label" or use a class specific constructor. See:
https://wiki.gnome.org/PyGObject/InitializerDeprecations
  label = Gtk.Label(text)
Switching to: default
Traceback (most recent call last):
  File "/usr/bin/mate-tweak", line 1047, in combo_fallback
    self.additional_tweaks(schema, key, value[1])
  File "/usr/bin/mate-tweak", line 1031, in additional_tweaks
    self.replace_panel_layout(panel_layout)
  File "/usr/bin/mate-tweak", line 768, in replace_panel_layout
    self.enable_applets()
  File "/usr/bin/mate-tweak", line 571, in enable_applets
    pid = subprocess.Popen(['mate-volume-control-applet'], stdout=DEVNULL,
stderr=DEVNULL).pid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 1024, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.11/subprocess.py", line 1901, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'mate-volume-control-
applet'
/usr/bin/mate-tweak:684: PyGTKDeprecationWarning: The "buttons" argument must
be a Gtk.ButtonsType enum value. Please use the "add_buttons" method for adding
buttons. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  dialog = Gtk.Dialog(title, None, Gtk.DialogFlags.MODAL |
Gtk.DialogFlags.DESTROY_WITH_PARENT,
/usr/bin/mate-tweak:684: PyGTKDeprecationWarning: The "flags" argument for
dialog construction is deprecated. Please use initializer keywords: modal=True
and/or destroy_with_parent=True. See:
https://wiki.gnome.org/PyGObject/InitializerDeprecations
  dialog = Gtk.Dialog(title, None, Gtk.DialogFlags.MODAL |
Gtk.DialogFlags.DESTROY_WITH_PARENT,
/usr/bin/mate-tweak:690: PyGTKDeprecationWarning: Using positional arguments
with the GObject constructor has been deprecated. Please specify keyword(s) for
"label" or use a class specific constructor. See:
https://wiki.gnome.org/PyGObject/InitializerDeprecations
  label = Gtk.Label(text)
Switching to: opensuse
Traceback (most recent call last):
  File "/usr/bin/mate-tweak", line 1047, in combo_fallback
    self.additional_tweaks(schema, key, value[1])
  File "/usr/bin/mate-tweak", line 1031, in additional_tweaks
    self.replace_panel_layout(panel_layout)
  File "/usr/bin/mate-tweak", line 768, in replace_panel_layout
    self.enable_applets()
  File "/usr/bin/mate-tweak", line 571, in enable_applets
    pid = subprocess.Popen(['mate-volume-control-applet'], stdout=DEVNULL,
stderr=DEVNULL).pid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 1024, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.11/subprocess.py", line 1901, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'mate-volume-control-
applet'

Please note that Ayatana indicators are not installed.
The same happens on Debian 11 (oldstable, bullseye).

Downstream bug-report: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1043291

@N0rbert
Copy link
Member Author

N0rbert commented Aug 10, 2023

Technical details about the bug (see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1043291#15 ):

The problem here is caused by mate-volume-control-applet file location.
It came from mate-media, you are right about this package
Problem persists even with the installed mate-media package.
In Debian 10 (buster) it was located in PATH -
/usr/bin/mate-volume-control-applet (see https://packages.debian.org/search?suite=buster&arch=any&mode=path&searchon=contents&keywords=mate-volume-control-applet ).
But in Debian 11 and newer it is located in non-PATH place -
/usr/libexec/mate-volume-control-applet (see https://packages.debian.org/search?suite=bullseye&arch=any&mode=path&searchon=contents&keywords=mate-volume-control-applet ).
So it can't be found by mate-tweak (see https://sources.debian.org/src/mate-tweak/22.10.0-2/mate-tweak/?hl=78#L571 ).

My local quick and dirty hack is the following:

sudo ln -sf /usr/libexec/mate-volume-control-applet /usr/local/bin/mate-volume-control-applet

But I would suggest fixing this problem in the mate-tweak script - for example you can call this applet by full path -
/usr/libexec/mate-volume-control-applet.
It is still applicable for default Debian installation without Ayatana indicators.

@N0rbert
Copy link
Member Author

N0rbert commented Aug 26, 2023

Actually the bug also exists in OpenSuSe Tumbleweed (tested today using openSUSE-Tumbleweed-NET-x86_64-Snapshot20230823-Media.iso).
Ugly hack for it is the following:

sudo ln -sf /usr/libexec/mate-media/mate-volume-control-applet /usr/local/bin/mate-volume-control-applet

OS details:

$ rpm -qa | grep -E "mate-(media|tweak)" | grep -v lang
mate-media-1.26.1-1.3.x86_64
mate-tweak-22.10.0-1.2.noarch

Other RPM-based distros are probably affected too.

@N0rbert
Copy link
Member Author

N0rbert commented Aug 27, 2023

Mageia 9 is affected too.
Ugly fix:

sudo ln -sf /usr/libexec/mate-volume-control-applet /usr/local/bin/mate-volume-control-applet

Info:

$ rpm -qa | grep -E "mate-(media|tweak)"
mate-media-1.26.1-1.mga9
mate-tweak-21.04.3-5.mga9

@N0rbert
Copy link
Member Author

N0rbert commented Jul 6, 2024

On Debian 12 (bookworm) this bug may be fixed by using specially created meta-package named Debian MATE Ayatana Settings - see its README.md for installation instuctions.
This debian-mate-ayatana-settings package contains configuration and default settings for Debian with MATE and Ayatana Indicators.

@cwendling
Copy link

It indeed should look in the libexec directory, see https://github.com/mate-desktop/mate-media/blob/master/mate-volume-control/Makefile.am#L116
However, note that this is only true if built out-of-process, if building in-process what is relevant is the presence of the applet's library.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants