From 80898d2c3b93243d29a305c9fa70e8c1e54c1b46fb7e0e306e76b2ba55db6595 Mon Sep 17 00:00:00 2001 From: Alexei Sorokin Date: Thu, 25 Feb 2021 13:01:03 +0000 Subject: [PATCH 1/8] Accepting request 875097 from home:alarrosa:branches:multimedia:apps - Require the pulseaudio-daemon capability instead of the pulseaudio package, so alternative implementations can be used (boo#1182730). OBS-URL: https://build.opensuse.org/request/show/875097 OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/pulseaudio-equalizer?expand=0&rev=17 --- pulseaudio-equalizer.changes | 7 +++++++ pulseaudio-equalizer.spec | 10 +++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/pulseaudio-equalizer.changes b/pulseaudio-equalizer.changes index 56e43cd..4c14145 100644 --- a/pulseaudio-equalizer.changes +++ b/pulseaudio-equalizer.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Feb 25 11:47:37 UTC 2021 - Antonio Larrosa + +- Require the pulseaudio-daemon capability instead of the + pulseaudio package, so alternative implementations can be used + (boo#1182730). + ------------------------------------------------------------------- Sun Feb 25 18:16:05 UTC 2018 - sor.alexei@meowr.ru diff --git a/pulseaudio-equalizer.spec b/pulseaudio-equalizer.spec index 7879ac9..10d1e2f 100644 --- a/pulseaudio-equalizer.spec +++ b/pulseaudio-equalizer.spec @@ -1,7 +1,7 @@ # # spec file for package pulseaudio-equalizer # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -22,7 +22,7 @@ Release: 0 Summary: PulseAudio's LADSPA plugin graphical user interface License: GPL-3.0-or-later Group: Productivity/Multimedia/Sound/Mixers -Url: https://ubuntuforums.org/showthread.php?t=1308838 +URL: https://ubuntuforums.org/showthread.php?t=1308838 Source: https://launchpad.net/~nilarimogard/+archive/ubuntu/webupd8/+files/%{name}_%{version}.orig.tar.gz # PATCH-FIX-UPSTREAM 0000-add-python3-compat.patch sor.alexei@meowr.ru -- Add Python3 compatibility. Patch0: 0000-add-python3-compat.patch @@ -47,8 +47,8 @@ Patch9: 0009-do-not-zero-volume.patch BuildRequires: gobject-introspection-devel BuildRequires: update-desktop-files Requires: ladspa-swh-plugins -Requires: pulseaudio >= 4.0 -Requires: pulseaudio-utils >= 4.0 +Requires: pulseaudio-daemon +Requires: pulseaudio-utils Requires: python3 Requires: python3-gobject BuildArch: noarch From 450a3d83253d9b5d2fcba60c9be067ef3225789f532db2aa711ce37c8250694f Mon Sep 17 00:00:00 2001 From: Alexei Sorokin Date: Thu, 25 Feb 2021 14:57:07 +0000 Subject: [PATCH 2/8] Accepting request 875142 from home:alarrosa:branches:multimedia:apps - Keep Requires: pulseaudio when building on SLE/Leap before 15.3. OBS-URL: https://build.opensuse.org/request/show/875142 OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/pulseaudio-equalizer?expand=0&rev=18 --- pulseaudio-equalizer.changes | 5 +++++ pulseaudio-equalizer.spec | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/pulseaudio-equalizer.changes b/pulseaudio-equalizer.changes index 4c14145..8418c58 100644 --- a/pulseaudio-equalizer.changes +++ b/pulseaudio-equalizer.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Thu Feb 25 14:44:57 UTC 2021 - Antonio Larrosa + +- Keep Requires: pulseaudio when building on SLE/Leap before 15.3. + ------------------------------------------------------------------- Thu Feb 25 11:47:37 UTC 2021 - Antonio Larrosa diff --git a/pulseaudio-equalizer.spec b/pulseaudio-equalizer.spec index 10d1e2f..1f8349c 100644 --- a/pulseaudio-equalizer.spec +++ b/pulseaudio-equalizer.spec @@ -47,7 +47,11 @@ Patch9: 0009-do-not-zero-volume.patch BuildRequires: gobject-introspection-devel BuildRequires: update-desktop-files Requires: ladspa-swh-plugins +%if 0%{?sle_version} && 0%{?sle_version} < 150300 +Requires: pulseaudio +%else Requires: pulseaudio-daemon +%endif Requires: pulseaudio-utils Requires: python3 Requires: python3-gobject From 40f66942074ee5941db01eb1d6e56923846d13bd794b263d2a507fa6b5a359f9 Mon Sep 17 00:00:00 2001 From: Alexei Sorokin Date: Thu, 4 Mar 2021 14:07:01 +0000 Subject: [PATCH 3/8] Accepting request 876597 from home:alarrosa:branches:multimedia:apps - Revert the last two changes. pulseaudio-equalizer executes pacmd which currently only works with the real pulseaudio so keep Requires: pulseaudio (boo#1182730). OBS-URL: https://build.opensuse.org/request/show/876597 OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/pulseaudio-equalizer?expand=0&rev=19 --- pulseaudio-equalizer.changes | 7 +++++++ pulseaudio-equalizer.spec | 4 ---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/pulseaudio-equalizer.changes b/pulseaudio-equalizer.changes index 8418c58..b7455e7 100644 --- a/pulseaudio-equalizer.changes +++ b/pulseaudio-equalizer.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Mar 3 17:53:27 UTC 2021 - Antonio Larrosa + +- Revert the last two changes. pulseaudio-equalizer executes pacmd + which currently only works with the real pulseaudio so keep + Requires: pulseaudio (boo#1182730). + ------------------------------------------------------------------- Thu Feb 25 14:44:57 UTC 2021 - Antonio Larrosa diff --git a/pulseaudio-equalizer.spec b/pulseaudio-equalizer.spec index 1f8349c..e56b0fb 100644 --- a/pulseaudio-equalizer.spec +++ b/pulseaudio-equalizer.spec @@ -47,11 +47,7 @@ Patch9: 0009-do-not-zero-volume.patch BuildRequires: gobject-introspection-devel BuildRequires: update-desktop-files Requires: ladspa-swh-plugins -%if 0%{?sle_version} && 0%{?sle_version} < 150300 Requires: pulseaudio -%else -Requires: pulseaudio-daemon -%endif Requires: pulseaudio-utils Requires: python3 Requires: python3-gobject From 3451194b7c6ecc3ba12635c1f25ffbc4c8dd8c3440ba1690f01a3277c315aa50 Mon Sep 17 00:00:00 2001 From: Alexei Sorokin Date: Thu, 4 Mar 2021 14:07:37 +0000 Subject: [PATCH 4/8] OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/pulseaudio-equalizer?expand=0&rev=20 --- pulseaudio-equalizer.changes | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/pulseaudio-equalizer.changes b/pulseaudio-equalizer.changes index b7455e7..56e43cd 100644 --- a/pulseaudio-equalizer.changes +++ b/pulseaudio-equalizer.changes @@ -1,22 +1,3 @@ -------------------------------------------------------------------- -Wed Mar 3 17:53:27 UTC 2021 - Antonio Larrosa - -- Revert the last two changes. pulseaudio-equalizer executes pacmd - which currently only works with the real pulseaudio so keep - Requires: pulseaudio (boo#1182730). - -------------------------------------------------------------------- -Thu Feb 25 14:44:57 UTC 2021 - Antonio Larrosa - -- Keep Requires: pulseaudio when building on SLE/Leap before 15.3. - -------------------------------------------------------------------- -Thu Feb 25 11:47:37 UTC 2021 - Antonio Larrosa - -- Require the pulseaudio-daemon capability instead of the - pulseaudio package, so alternative implementations can be used - (boo#1182730). - ------------------------------------------------------------------- Sun Feb 25 18:16:05 UTC 2018 - sor.alexei@meowr.ru From 47057f7d5b98c89ecae5fad8d7f479552f3640d106a6fe489ffa1042e47ab874 Mon Sep 17 00:00:00 2001 From: Alexei Sorokin Date: Sun, 7 Nov 2021 20:58:38 +0000 Subject: [PATCH 5/8] - Update to version 3.0.2. OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/pulseaudio-equalizer?expand=0&rev=21 --- 0000-add-python3-compat.patch | 912 ------------------ 0001-pulse-path.patch | 178 ---- 0002-remove-preamp.patch | 41 - 0003-force-default-persistence-value.patch | 11 - 0004-do-not-crash-on-missing-preset.patch | 17 - 0005-window-icon.patch | 20 - 0006-fix-desktop.patch | 12 - 0007-pygobject3-port.patch | 298 ------ 0009-do-not-zero-volume.patch | 19 - pulseaudio-equalizer-3.0.2.tar.gz | 3 + ...io-equalizer-fix-deprecated-argument.patch | 11 + ...lseaudio-equalizer-fix-locale-issues.patch | 62 +- pulseaudio-equalizer.changes | 17 + pulseaudio-equalizer.spec | 84 +- pulseaudio-equalizer_2.7.0.2.orig.tar.gz | 3 - 15 files changed, 88 insertions(+), 1600 deletions(-) delete mode 100644 0000-add-python3-compat.patch delete mode 100644 0001-pulse-path.patch delete mode 100644 0002-remove-preamp.patch delete mode 100644 0003-force-default-persistence-value.patch delete mode 100644 0004-do-not-crash-on-missing-preset.patch delete mode 100644 0005-window-icon.patch delete mode 100644 0006-fix-desktop.patch delete mode 100644 0007-pygobject3-port.patch delete mode 100644 0009-do-not-zero-volume.patch create mode 100644 pulseaudio-equalizer-3.0.2.tar.gz create mode 100644 pulseaudio-equalizer-fix-deprecated-argument.patch rename 0008-fix-locale-issues.patch => pulseaudio-equalizer-fix-locale-issues.patch (54%) delete mode 100644 pulseaudio-equalizer_2.7.0.2.orig.tar.gz diff --git a/0000-add-python3-compat.patch b/0000-add-python3-compat.patch deleted file mode 100644 index 174fc7a..0000000 --- a/0000-add-python3-compat.patch +++ /dev/null @@ -1,912 +0,0 @@ ---- a/usr/share/pulseaudio-equalizer/pulseaudio-equalizer.py -+++ b/usr/share/pulseaudio-equalizer/pulseaudio-equalizer.py -@@ -10,7 +10,7 @@ - - import pygtk - pygtk.require('2.0') --import gtk, gobject -+import gtk as Gtk - import os - - configdir = os.getenv('HOME') + "/.pulse" -@@ -21,288 +21,290 @@ presetdir1 = configdir + "/presets" - presetdir2 = "/usr/share/pulseaudio-equalizer/presets" - - def GetSettings(): -- global rawdata -- global rawpresets -- global ladspa_filename -- global ladspa_name -- global ladspa_label -- global preamp -- global num_ladspa_controls -- global ladspa_controls -- global ladspa_inputs -- global status -- global realstatus -- global persistence -- global preset -- global ranges -- global windowtitle -- global presetmatch -- global clearpreset -- -- print "Getting settings..." -- -- os.system('pulseaudio-equalizer interface.getsettings') -- -- f = open(eqconfig, "r") -- rawdata=f.read().split('\n') -- f.close() -- -- rawpresets = {} -- f = open(eqpresets, "r") -- rawpresets=f.read().split('\n') -- f.close() -- del rawpresets[len(rawpresets)-1] -- -- ladspa_filename = str(rawdata[0]) -- ladspa_name = str(rawdata[1]) -- ladspa_label = str(rawdata[2]) -- preamp = (rawdata[3]) -- preset = str(rawdata[4]) -- status = int(rawdata[5]) -- persistence = int(rawdata[6]) -- ranges = rawdata[7:9] -- num_ladspa_controls = int(rawdata[9]) -- ladspa_controls = rawdata[10:(10+num_ladspa_controls)] -- ladspa_inputs = rawdata[(10+num_ladspa_controls):(10+num_ladspa_controls)+(num_ladspa_controls)] -- -- if status == 1: -- realstatus = "Enabled" -- else: -- realstatus = "Disabled" -- -- windowtitle = "PulseAudio " + ladspa_label -- -- clearpreset = 1 -- presetmatch = '' -- for i in range(len(rawpresets)): -- if rawpresets[i] == preset: -- print "Match!" -- presetmatch = 1 -+ global rawdata -+ global rawpresets -+ global ladspa_filename -+ global ladspa_name -+ global ladspa_label -+ global preamp -+ global num_ladspa_controls -+ global ladspa_controls -+ global ladspa_inputs -+ global status -+ global realstatus -+ global persistence -+ global preset -+ global ranges -+ global windowtitle -+ global presetmatch -+ global clearpreset -+ -+ print("Getting settings...") -+ -+ os.system("pulseaudio-equalizer interface.getsettings") -+ -+ f = open(eqconfig, "r") -+ rawdata=f.read().split("\n") -+ f.close() -+ -+ rawpresets = {} -+ f = open(eqpresets, "r") -+ rawpresets=f.read().split("\n") -+ f.close() -+ del rawpresets[len(rawpresets)-1] -+ -+ ladspa_filename = str(rawdata[0]) -+ ladspa_name = str(rawdata[1]) -+ ladspa_label = str(rawdata[2]) -+ preamp = (rawdata[3]) -+ preset = str(rawdata[4]) -+ status = int(rawdata[5]) -+ persistence = int(rawdata[6]) -+ ranges = rawdata[7 : 9] -+ num_ladspa_controls = int(rawdata[9]) -+ ladspa_controls = rawdata[10 : (10 + num_ladspa_controls)] -+ ladspa_inputs = rawdata[(10 + num_ladspa_controls) : -+ (10 + num_ladspa_controls) + (num_ladspa_controls)] -+ -+ if status == 1: -+ realstatus = "Enabled" -+ else: -+ realstatus = "Disabled" -+ -+ windowtitle = "PulseAudio " + ladspa_label -+ -+ clearpreset = 1 -+ presetmatch = "" -+ for i in range(len(rawpresets)): -+ if rawpresets[i] == preset: -+ print("Match!") -+ presetmatch = 1 - - def ApplySettings(): -- print "Applying settings..." -- f = open(eqconfig, "w") -- del rawdata[:] -- rawdata.append(str(ladspa_filename)) -- rawdata.append(str(ladspa_name)) -- rawdata.append(str(ladspa_label)) -- rawdata.append(str(preamp)) -- rawdata.append(str(preset)) -- rawdata.append(str(status)) -- rawdata.append(str(persistence)) -- for i in range(2): -- rawdata.append(str(ranges[i])) -- rawdata.append(str(num_ladspa_controls)) -- for i in range(num_ladspa_controls): -- rawdata.append(str(ladspa_controls[i])) -- for i in range(num_ladspa_controls): -- rawdata.append(str(ladspa_inputs[i])) -- -- for i in rawdata: -- f.write(str(i)+'\n') -- f.close() -+ print("Applying settings...") -+ f = open(eqconfig, "w") -+ del rawdata[:] -+ rawdata.append(str(ladspa_filename)) -+ rawdata.append(str(ladspa_name)) -+ rawdata.append(str(ladspa_label)) -+ rawdata.append(str(preamp)) -+ rawdata.append(str(preset)) -+ rawdata.append(str(status)) -+ rawdata.append(str(persistence)) -+ for i in range(2): -+ rawdata.append(str(ranges[i])) -+ rawdata.append(str(num_ladspa_controls)) -+ for i in range(num_ladspa_controls): -+ rawdata.append(str(ladspa_controls[i])) -+ for i in range(num_ladspa_controls): -+ rawdata.append(str(ladspa_inputs[i])) -+ -+ for i in rawdata: -+ f.write(str(i) + "\n") -+ f.close() - -- os.system('pulseaudio-equalizer interface.applysettings') -+ os.system("pulseaudio-equalizer interface.applysettings") - - def FormatLabels(x): -- global c -- global suffix -- global whitespace1 -- global whitespace2 -- -- whitespace1 = "" -- whitespace2 = "" -- -- current_input = int(ladspa_inputs[x-1]) -- if current_input < 99: -- a = current_input -- suffix = "Hz" -- if current_input > 99 and current_input < 999: -- a = current_input -- suffix = "Hz" -- if current_input > 999 and current_input < 9999: -- a = float(current_input)/1000 -- suffix = "KHz" -- if current_input > 9999: -- a = float(current_input)/1000 -- suffix = "KHz" -- -- # Filter out unnecessary ".0" from ladspa_inputs -- b=str(a) -- if b[-2:] == ".0": -- c = b[:-2] -- else: -- c = b -- -- # Add whitespace formatting to ensure text is centered -- if len(c) == 3 and len(suffix) == 2: -- whitespace2 = " " -- if len(c) < 4 and len(suffix) == 3: -- whitespace1 = " " -- if len(c) < 2 and len(suffix) == 3: -- whitespace1 = " " -+ global c -+ global suffix -+ global whitespace1 -+ global whitespace2 -+ -+ whitespace1 = "" -+ whitespace2 = "" -+ -+ current_input = int(ladspa_inputs[x-1]) -+ if current_input < 99: -+ a = current_input -+ suffix = "Hz" -+ if current_input > 99 and current_input < 999: -+ a = current_input -+ suffix = "Hz" -+ if current_input > 999 and current_input < 9999: -+ a = float(current_input) / 1000 -+ suffix = "KHz" -+ if current_input > 9999: -+ a = float(current_input) / 1000 -+ suffix = "KHz" -+ -+ # Filter out unnecessary ".0" from ladspa_inputs -+ b=str(a) -+ if b[-2:] == ".0": -+ c = b[:-2] -+ else: -+ c = b -+ -+ # Add whitespace formatting to ensure text is centered -+ if len(c) == 3 and len(suffix) == 2: -+ whitespace2 = " " -+ if len(c) < 4 and len(suffix) == 3: -+ whitespace1 = " " -+ if len(c) < 2 and len(suffix) == 3: -+ whitespace1 = " " - - class Equalizer: - def on_scale(self, widget, y): -- global ladspa_controls -- global preset -- global clearpreset -- newvalue = float(round(widget.get_value(),1)) -- del ladspa_controls[y-1] -- ladspa_controls.insert(y-1, newvalue) -- if clearpreset == 1: -- preset = '' -- presetsbox.get_child().set_text(preset) -- for i in range(1,num_ladspa_controls+1): -- self.scalevalues[i].set_markup("" + str(float(ladspa_controls[i-1])) + "\ndB") -+ global ladspa_controls -+ global preset -+ global clearpreset -+ newvalue = float(round(widget.get_value(), 1)) -+ del ladspa_controls[y - 1] -+ ladspa_controls.insert(y - 1, newvalue) -+ if clearpreset == 1: -+ preset = "" -+ presetsbox.get_child().set_text(preset) -+ for i in range(1,num_ladspa_controls + 1): -+ self.scalevalues[i].set_markup("" + str(float(ladspa_controls[i-1])) + "\ndB") - - def on_presetsbox(self, widget, x): -- global preset -- global presetmatch -- global clearpreset -- global ladspa_filename -- global ladspa_name -- global ladspa_label -- global preamp -- global num_ladspa_controls -- global ladspa_controls -- global ladspa_inputs -- global windowtitle -- preset = presetsbox.get_child().get_text() -- -- presetmatch = '' -- for i in range(len(rawpresets)): -- if rawpresets[i] == preset: -- print "Match!" -- presetmatch = 1 -- -- if presetmatch == 1: -- if os.path.isfile(presetdir1 + "/" + preset + ".preset"): -- f = open(presetdir1 + "/" + preset + ".preset", "r") -- rawdata=f.read().split('\n') -- else: -- f = open(presetdir2 + "/" + preset + ".preset", "r") -- rawdata=f.read().split('\n') -- f.close -- -- ladspa_filename = str(rawdata[0]) -- ladspa_name = str(rawdata[1]) -- ladspa_label = str(rawdata[2]) -- #preamp = (rawdata[3]) -- preset = str(rawdata[4]) -- num_ladspa_controls = int(rawdata[5]) -- ladspa_controls = rawdata[6:(6+num_ladspa_controls)] -- ladspa_inputs = rawdata[(6+num_ladspa_controls):(6+num_ladspa_controls)+(num_ladspa_controls)] -- -- preampscale.set_value(float(preamp)) -- preampscalevalue.set_markup(str(preampscale.get_value()) + "x") -- windowtitle = "PulseAudio " + ladspa_label -- self.window.set_title(windowtitle + " [" + realstatus + "]") -- clearpreset = '' -- for i in range(1,num_ladspa_controls+1): -- self.scales[i].set_value(float(ladspa_controls[i-1])) -- FormatLabels(i) -- self.labels[i].set_markup("" + whitespace1 + c + "\n" + whitespace2 + suffix + "") -- self.scalevalues[i].set_markup("" + str(float(ladspa_controls[i-1])) + "\ndB") -- # Set preset again due to interference from scale modifications -- preset = str(rawdata[4]) -- clearpreset = 1 -- presetsbox.get_child().set_text(preset) -- ApplySettings() -+ global preset -+ global presetmatch -+ global clearpreset -+ global ladspa_filename -+ global ladspa_name -+ global ladspa_label -+ global preamp -+ global num_ladspa_controls -+ global ladspa_controls -+ global ladspa_inputs -+ global windowtitle -+ preset = presetsbox.get_child().get_text() -+ -+ presetmatch = "" -+ for i in range(len(rawpresets)): -+ if rawpresets[i] == preset: -+ print("Match!") -+ presetmatch = 1 -+ -+ if presetmatch == 1: -+ if os.path.isfile(presetdir1 + "/" + preset + ".preset"): -+ f = open(presetdir1 + "/" + preset + ".preset", "r") -+ rawdata=f.read().split("\n") -+ else: -+ f = open(presetdir2 + "/" + preset + ".preset", "r") -+ rawdata=f.read().split("\n") -+ f.close -+ -+ ladspa_filename = str(rawdata[0]) -+ ladspa_name = str(rawdata[1]) -+ ladspa_label = str(rawdata[2]) -+ #preamp = (rawdata[3]) -+ preset = str(rawdata[4]) -+ num_ladspa_controls = int(rawdata[5]) -+ ladspa_controls = rawdata[6 : (6 + num_ladspa_controls)] -+ ladspa_inputs = rawdata[(6 + num_ladspa_controls) : -+ (6 + num_ladspa_controls) + (num_ladspa_controls)] -+ -+ preampscale.set_value(float(preamp)) -+ preampscalevalue.set_markup(str(preampscale.get_value()) + "x") -+ windowtitle = "PulseAudio " + ladspa_label -+ self.window.set_title(windowtitle + " [" + realstatus + "]") -+ clearpreset = "" -+ for i in range(1,num_ladspa_controls + 1): -+ self.scales[i].set_value(float(ladspa_controls[i - 1])) -+ FormatLabels(i) -+ self.labels[i].set_markup("" + whitespace1 + c + "\n" + whitespace2 + suffix + "") -+ self.scalevalues[i].set_markup("" + str(float(ladspa_controls[i-1])) + "\ndB") -+ # Set preset again due to interference from scale modifications -+ preset = str(rawdata[4]) -+ clearpreset = 1 -+ presetsbox.get_child().set_text(preset) -+ ApplySettings() - - def on_applysettings(self, widget): -- ApplySettings() -+ ApplySettings() - - def on_resetsettings(self, widget): -- print "Resetting to defaults..." -- os.system('pulseaudio-equalizer interface.resetsettings') -- GetSettings() -- -- eqenabled.set_active(status) -- keepsettings.set_active(persistence) -- presetsbox.get_child().set_text(preset) -- preampscale.set_value(float(preamp)) -- for i in range(1,num_ladspa_controls+1): -- self.scales[i].set_value(float(ladspa_controls[i-1])) -- FormatLabels(i) -- self.labels[i].set_markup("" + whitespace1 + c + "\n" + whitespace2 + suffix + "") -- self.scalevalues[i].set_markup("" + str(float(ladspa_controls[i-1])) + "\ndB") -+ print("Resetting to defaults...") -+ os.system("pulseaudio-equalizer interface.resetsettings") -+ GetSettings() -+ -+ eqenabled.set_active(status) -+ keepsettings.set_active(persistence) -+ presetsbox.get_child().set_text(preset) -+ preampscale.set_value(float(preamp)) -+ for i in range(1, num_ladspa_controls+1): -+ self.scales[i].set_value(float(ladspa_controls[i-1])) -+ FormatLabels(i) -+ self.labels[i].set_markup("" + whitespace1 + c + "\n" + whitespace2 + suffix + "") -+ self.scalevalues[i].set_markup("" + str(float(ladspa_controls[i-1])) + "\ndB") - - def on_savepreset(self, widget): -- global preset -- global presetmatch -- preset = presetsbox.get_child().get_text() -- if preset == '' or presetmatch == 1: -- print 'Invalid preset name' -- else: -- f = open(presetdir1 + "/" + preset + ".preset", "w") -- -- del rawdata[:] -- rawdata.append(str(ladspa_filename)) -- rawdata.append(str(ladspa_name)) -- rawdata.append(str(ladspa_label)) -- rawdata.append(str(preamp)) -- rawdata.append(str(preset)) -- rawdata.append(str(num_ladspa_controls)) -- for i in range(num_ladspa_controls): -- rawdata.append(str(ladspa_controls[i])) -- for i in range(num_ladspa_controls): -- rawdata.append(str(ladspa_inputs[i])) -- -- for i in rawdata: -- f.write(str(i)+'\n') -- f.close() -- -- # Clear preset list from ComboBox -- for i in range(len(rawpresets)): -- presetsbox.remove_text(0) -- -- # Apply settings (which will save new preset as default) -- ApplySettings() -- -- # Refresh (and therefore, sort) preset list -- GetSettings() -- -- # Repopulate preset list into ComboBox -- for i in range(len(rawpresets)): -- presetsbox.append_text(rawpresets[i]) -+ global preset -+ global presetmatch -+ preset = presetsbox.get_child().get_text() -+ if preset == "" or presetmatch == 1: -+ print("Invalid preset name") -+ else: -+ f = open(presetdir1 + "/" + preset + ".preset", "w") -+ -+ del rawdata[:] -+ rawdata.append(str(ladspa_filename)) -+ rawdata.append(str(ladspa_name)) -+ rawdata.append(str(ladspa_label)) -+ rawdata.append(str(preamp)) -+ rawdata.append(str(preset)) -+ rawdata.append(str(num_ladspa_controls)) -+ for i in range(num_ladspa_controls): -+ rawdata.append(str(ladspa_controls[i])) -+ for i in range(num_ladspa_controls): -+ rawdata.append(str(ladspa_inputs[i])) -+ -+ for i in rawdata: -+ f.write(str(i) + "\n") -+ f.close() -+ -+ # Clear preset list from ComboBox -+ for i in range(len(rawpresets)): -+ presetsbox.remove_text(0) -+ -+ # Apply settings (which will save new preset as default) -+ ApplySettings() -+ -+ # Refresh (and therefore, sort) preset list -+ GetSettings() -+ -+ # Repopulate preset list into ComboBox -+ for i in range(len(rawpresets)): -+ presetsbox.append_text(rawpresets[i]) - - def on_preampscale(self, widget): -- global preamp -- preamp = float(round(widget.get_value(),1)) -- preampscalevalue.set_markup(str(preamp) + "x") -- #preset = '' -- #presetsbox.get_child().set_text(preset) -+ global preamp -+ preamp = float(round(widget.get_value(), 1)) -+ preampscalevalue.set_markup(str(preamp) + "x") -+ #preset = "" -+ #presetsbox.get_child().set_text(preset) - - def on_eqenabled(self, widget): -- global status -+ global status - if widget.get_active(): -- self.window.set_title(windowtitle + " [Enabled]") -- status = 1 -+ self.window.set_title(windowtitle + " [Enabled]") -+ status = 1 - else: -- self.window.set_title(windowtitle + " [Disabled]") -- status = 0 -- ApplySettings() -+ self.window.set_title(windowtitle + " [Disabled]") -+ status = 0 -+ ApplySettings() - - def on_keepsettings(self, widget): -- global persistence -+ global persistence - if widget.get_active(): -- persistence = 1 -+ persistence = 1 - else: -- persistence = 0 -- ApplySettings() -+ persistence = 0 -+ ApplySettings() - - def on_removepreset(self,widget): -- global preset -+ global preset - global presets -- dialog = gtk.FileChooserDialog("Choose preset to remove...", -+ dialog = Gtk.FileChooserDialog("Choose preset to remove...", - None, -- gtk.FILE_CHOOSER_ACTION_OPEN, -- (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, -- gtk.STOCK_OK, gtk.RESPONSE_OK)) -- dialog.set_default_response(gtk.RESPONSE_OK) -+ Gtk.FILE_CHOOSER_ACTION_OPEN, -+ (Gtk.STOCK_CANCEL, Gtk.RESPONSE_CANCEL, -+ Gtk.STOCK_OK, Gtk.RESPONSE_OK)) -+ dialog.set_default_response(Gtk.RESPONSE_OK) - -- filter = gtk.FileFilter() -+ filter = Gtk.FileFilter() - filter.set_name("Preset files") - filter.add_pattern("*.preset") - dialog.add_filter(filter) -@@ -310,209 +312,209 @@ class Equalizer: - dialog.show() - - response = dialog.run() -- if response == gtk.RESPONSE_OK: -- filename = dialog.get_filename() -- path_and_name = os.path.split(filename) -- name = path_and_name[1] -- os.remove(filename) -- -- # Make a note of the current preset, then clear it temporarily -- preset = presetsbox.get_child().get_text() -- realpreset = preset -- preset = '' -- presetsbox.get_child().set_text('') -- -- # Clear preset list from ComboBox -- for i in range(len(rawpresets)): -- presetsbox.remove_text(0) -- -- # Refresh (and therefore, sort) preset list -- GetSettings() -- -- # Clear preset (if it is the same as removed preset), or restore preset -- if (presetdir1 + "/" + preset + ".preset") == filename: -- preset = '' -- else: -- preset = realpreset -- -- # Restore preset -- presetsbox.get_child().set_text(preset) -- -- # Repopulate preset list into ComboBox -- for i in range(len(rawpresets)): -- presetsbox.append_text(rawpresets[i]) -+ if response == Gtk.RESPONSE_OK: -+ filename = dialog.get_filename() -+ path_and_name = os.path.split(filename) -+ name = path_and_name[1] -+ os.remove(filename) -+ -+ # Make a note of the current preset, then clear it temporarily -+ preset = presetsbox.get_child().get_text() -+ realpreset = preset -+ preset = "" -+ presetsbox.get_child().set_text("") -+ -+ # Clear preset list from ComboBox -+ for i in range(len(rawpresets)): -+ presetsbox.remove_text(0) -+ -+ # Refresh (and therefore, sort) preset list -+ GetSettings() -+ -+ # Clear preset (if it is the same as removed preset), or restore preset -+ if (presetdir1 + "/" + preset + ".preset") == filename: -+ preset = "" -+ else: -+ preset = realpreset -+ -+ # Restore preset -+ presetsbox.get_child().set_text(preset) -+ -+ # Repopulate preset list into ComboBox -+ for i in range(len(rawpresets)): -+ presetsbox.append_text(rawpresets[i]) - -- # Apply settings -- ApplySettings() -+ # Apply settings -+ ApplySettings() - - dialog.destroy() - - def destroy_equalizer(self, widget, data=None): -- gtk.main_quit() -+ Gtk.main_quit() - - def __init__(self): -- GetSettings() -+ GetSettings() - -- self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) -+ self.window = Gtk.Window(Gtk.WINDOW_TOPLEVEL) - self.window.set_resizable(True) - - self.window.connect("destroy", self.destroy_equalizer) - self.window.set_title(windowtitle + " [" + realstatus + "]") - self.window.set_border_width(0) -- icon = self.window.set_icon_from_file("/usr/share/icons/hicolor/scalable/apps/multimedia-volume-control.svg") -+ icon = self.window.set_icon_from_file("/usr/share/icons/hicolor/scalable/apps/multimedia-volume-control.svg") - -- menu = gtk.Menu() -+ menu = Gtk.Menu() - -- menu_item = gtk.MenuItem('Reset to defaults') -+ menu_item = Gtk.MenuItem("Reset to defaults") - menu_item.connect("activate", self.on_resetsettings) -- menu.append(menu_item) -- menu_item.show() -- menu_item = gtk.MenuItem('Remove user preset...') -- menu_item.connect("activate", self.on_removepreset) - menu.append(menu_item) -- menu_item.show() -- root_menu = gtk.MenuItem("Advanced") -+ menu_item.show() -+ menu_item = Gtk.MenuItem("Remove user preset...") -+ menu_item.connect("activate", self.on_removepreset) -+ menu.append(menu_item) -+ menu_item.show() -+ root_menu = Gtk.MenuItem("Advanced") - root_menu.show() - root_menu.set_submenu(menu) - -- vbox1 = gtk.VBox(False, 0) -+ vbox1 = Gtk.VBox(False, 0) - self.window.add(vbox1) - vbox1.show() -- menu_bar = gtk.MenuBar() -+ menu_bar = Gtk.MenuBar() - vbox1.pack_start(menu_bar, False, False, 2) - menu_bar.show() - menu_bar.append (root_menu) - -- hbox1 = gtk.HBox(False, 1) -+ hbox1 = Gtk.HBox(False, 1) - #hbox1.set_border_width(10) - vbox1.add(hbox1) - hbox1.show() - -- table = gtk.Table(3, 17, False) -+ table = Gtk.Table(3, 17, False) - table.set_border_width(5) - hbox1.add(table) - -- # Preamp widget -- global preampscale -- global preampscalevalue -- preampscale = gtk.VScale() -- preampscale.set_draw_value(0) -- preampscale.set_inverted(1) -- preampscale.set_value_pos(gtk.POS_BOTTOM) -- preampscale.set_range(0.0,2.0) -- preampscale.set_increments(1, 0.1) -- preampscale.set_digits(1) -- preampscale.set_size_request(35,200) -- preampscale.set_value(float(preamp)) -- preampscale.connect("value-changed", self.on_preampscale) -- label = gtk.Label() -- label.set_markup("Preamp") -- preampscalevalue = gtk.Label() -- preampscalevalue.set_markup(str(preampscale.get_value()) + "x") -- table.attach(label, 1, 2, 0, 1) -- table.attach(preampscale, 1, 2, 1, 2) -- table.attach(preampscalevalue, 1, 2, 2, 3) -- label.show() -- preampscale.show() -- preampscalevalue.show() -- -- # Separator between preamp and bands -- separator = gtk.VSeparator() -- table.attach(separator, 2, 3, 1, 2) -- separator.show() -- -- # Equalizer bands -- global scale -- self.scales = {} -- self.labels = {} -- self.scalevalues = {} -- for x in range(1,num_ladspa_controls+1): -- scale = gtk.VScale() -- self.scales[x] = scale -- scale.set_draw_value(0) -- scale.set_inverted(1) -- scale.set_value_pos(gtk.POS_BOTTOM) -- scale.set_range(float(ranges[0]), float(ranges[1])) -- scale.set_increments(1, 0.1) -- scale.set_digits(1) -- scale.set_size_request(35,200) -- scale.set_value(float(ladspa_controls[x-1])) -- scale.connect("value-changed", self.on_scale, x) -- FormatLabels(x) -- label = gtk.Label() -- self.labels[x] = label -- label.set_markup("" + whitespace1 + c + "\n" + whitespace2 + suffix + "") -- scalevalue = gtk.Label() -- self.scalevalues[x] = scalevalue -- scalevalue.set_markup("" + str(scale.get_value()) + "\ndB") -- table.attach(label, x+2, x+3, 0, 1) -- table.attach(scale, x+2, x+3, 1, 2) -- table.attach(scalevalue, x+2, x+3, 2, 3) -- label.show() -- scale.show() -- scalevalue.show() -+ # Preamp widget -+ global preampscale -+ global preampscalevalue -+ preampscale = Gtk.VScale() -+ preampscale.set_draw_value(0) -+ preampscale.set_inverted(1) -+ preampscale.set_value_pos(Gtk.POS_BOTTOM) -+ preampscale.set_range(0.0, 2.0) -+ preampscale.set_increments(1, 0.1) -+ preampscale.set_digits(1) -+ preampscale.set_size_request(35, 200) -+ preampscale.set_value(float(preamp)) -+ preampscale.connect("value-changed", self.on_preampscale) -+ label = Gtk.Label() -+ label.set_markup("Preamp") -+ preampscalevalue = Gtk.Label() -+ preampscalevalue.set_markup(str(preampscale.get_value()) + "x") -+ table.attach(label, 1, 2, 0, 1) -+ table.attach(preampscale, 1, 2, 1, 2) -+ table.attach(preampscalevalue, 1, 2, 2, 3) -+ label.show() -+ preampscale.show() -+ preampscalevalue.show() -+ -+ # Separator between preamp and bands -+ separator = Gtk.VSeparator() -+ table.attach(separator, 2, 3, 1, 2) -+ separator.show() -+ -+ # Equalizer bands -+ global scale -+ self.scales = {} -+ self.labels = {} -+ self.scalevalues = {} -+ for x in range(1,num_ladspa_controls+1): -+ scale = Gtk.VScale() -+ self.scales[x] = scale -+ scale.set_draw_value(0) -+ scale.set_inverted(1) -+ scale.set_value_pos(Gtk.POS_BOTTOM) -+ scale.set_range(float(ranges[0]), float(ranges[1])) -+ scale.set_increments(1, 0.1) -+ scale.set_digits(1) -+ scale.set_size_request(35, 200) -+ scale.set_value(float(ladspa_controls[x - 1])) -+ scale.connect("value-changed", self.on_scale, x) -+ FormatLabels(x) -+ label = Gtk.Label() -+ self.labels[x] = label -+ label.set_markup("" + whitespace1 + c + "\n" + whitespace2 + suffix + "") -+ scalevalue = Gtk.Label() -+ self.scalevalues[x] = scalevalue -+ scalevalue.set_markup("" + str(scale.get_value()) + "\ndB") -+ table.attach(label, x + 2, x + 3, 0, 1) -+ table.attach(scale, x + 2, x + 3, 1, 2) -+ table.attach(scalevalue, x + 2, x + 3, 2, 3) -+ label.show() -+ scale.show() -+ scalevalue.show() - -- table.show() -+ table.show() - -- vbox2 = gtk.VBox(True, 1) -+ vbox2 = Gtk.VBox(True, 1) - vbox2.set_border_width(10) - hbox1.add(vbox2) - vbox2.show() - -- presetslabel = gtk.Label() -- presetslabel.set_markup("Preset:") -- vbox2.pack_start(presetslabel, False, False, 0) -- presetslabel.show() -- -- global presetsbox -- presetsbox = gtk.combo_box_entry_new_text() -- vbox2.pack_start(presetsbox, False, False, 0) -- presetsbox.get_child().set_text(preset) -- for i in range(len(rawpresets)): -- presetsbox.append_text(rawpresets[i]) -+ presetslabel = Gtk.Label() -+ presetslabel.set_markup("Preset:") -+ vbox2.pack_start(presetslabel, False, False, 0) -+ presetslabel.show() -+ -+ global presetsbox -+ presetsbox = Gtk.combo_box_entry_new_text() -+ vbox2.pack_start(presetsbox, False, False, 0) -+ presetsbox.get_child().set_text(preset) -+ for i in range(len(rawpresets)): -+ presetsbox.append_text(rawpresets[i]) - presetsbox.connect("changed", self.on_presetsbox, x) -- presetsbox.show() -+ presetsbox.show() - -- savepreset = gtk.Button('Save Preset') -- vbox2.pack_start(savepreset, False, False, 0) -+ savepreset = Gtk.Button("Save Preset") -+ vbox2.pack_start(savepreset, False, False, 0) - savepreset.connect("clicked", self.on_savepreset) -- savepreset.show() -+ savepreset.show() - -- global eqenabled -- eqenabled = gtk.CheckButton("EQ Enabled") -+ global eqenabled -+ eqenabled = Gtk.CheckButton("EQ Enabled") - eqenabled.set_active(status) -- eqenabled.unset_flags(gtk.CAN_FOCUS) -+ eqenabled.unset_flags(Gtk.CAN_FOCUS) - eqenabled.connect("clicked", self.on_eqenabled) -- vbox2.pack_start(eqenabled, False, False, 0) -- eqenabled.show() -+ vbox2.pack_start(eqenabled, False, False, 0) -+ eqenabled.show() - -- global keepsettings -- keepsettings = gtk.CheckButton('Keep Settings') -- keepsettings.set_active(persistence) -- keepsettings.unset_flags(gtk.CAN_FOCUS) -+ global keepsettings -+ keepsettings = Gtk.CheckButton("Keep Settings") -+ keepsettings.set_active(persistence) -+ keepsettings.unset_flags(Gtk.CAN_FOCUS) - keepsettings.connect("clicked", self.on_keepsettings) -- vbox2.pack_start(keepsettings, False, False, 0) -- keepsettings.show() -+ vbox2.pack_start(keepsettings, False, False, 0) -+ keepsettings.show() - -- applysettings = gtk.Button('Apply Settings') -- vbox2.pack_start(applysettings, False, False, 0) -+ applysettings = Gtk.Button("Apply Settings") -+ vbox2.pack_start(applysettings, False, False, 0) - applysettings.connect("clicked", self.on_applysettings) -- applysettings.show() -+ applysettings.show() - -- quitbutton = gtk.Button('Quit') -- vbox2.pack_start(quitbutton, False, False, 0) -- quitbutton.connect("clicked", lambda w: gtk.main_quit()) -- quitbutton.show() -- -- separator = gtk.HSeparator() -- vbox2.pack_start(separator, False, False, 0) -- separator.set_size_request(100, 10) -- #separator.show() -+ quitbutton = Gtk.Button("Quit") -+ vbox2.pack_start(quitbutton, False, False, 0) -+ quitbutton.connect("clicked", lambda w: Gtk.main_quit()) -+ quitbutton.show() -+ -+ separator = Gtk.HSeparator() -+ vbox2.pack_start(separator, False, False, 0) -+ separator.set_size_request(100, 10) -+ #separator.show() - - self.window.show() - - def main(): -- gtk.main() -+ Gtk.main() - return 0 - - if __name__ == "__main__": diff --git a/0001-pulse-path.patch b/0001-pulse-path.patch deleted file mode 100644 index 2cbcb4c..0000000 --- a/0001-pulse-path.patch +++ /dev/null @@ -1,178 +0,0 @@ ---- a/usr/bin/pulseaudio-equalizer -+++ b/usr/bin/pulseaudio-equalizer -@@ -18,12 +18,17 @@ PA_CONTROL_MAX="30" - PA_PREAMP="1.0" - PA_CURRENT_PRESET="" - --PRESET_DIR1=$HOME/.pulse/presets -+if [ -z "$XDG_CONFIG_HOME" ]; then -+ CONFIG_DIR="$HOME/.config/pulse" -+else -+ CONFIG_DIR="$XDG_CONFIG_HOME/pulse" -+fi -+PRESET_DIR1="$CONFIG_DIR/presets" - PRESET_DIR2=/usr/share/pulseaudio-equalizer/presets - SCRIPT_NAME=pulseaudio-equalizer - SCRIPT_VERSION="2.7 (05/02/2010)" --CONFIG_NAME=$HOME/.pulse/equalizerrc --LOG_NAME=$HOME/Desktop/pulseaudio-equalizer.log -+CONFIG_NAME="$CONFIG_DIR/equalizerrc" -+LOG_NAME="$HOME/pulseaudio-equalizer.log" - - # Don't execute the script with elevated privileges - if [[ ! $EUID -ne 0 ]]; then -@@ -125,12 +130,12 @@ else - fi - - # Check if equalizer is set as persistent --if [ -f $HOME/.pulse/default.pa ]; then -- if [ "$(cat $HOME/.pulse/default.pa | grep -m1 "### BEGIN: Equalized audio configuration")" = "### BEGIN: Equalized audio configuration" ]; then -- PA_EQUALIZER_PERSISTENCE=1 -- fi -+if [ -f "$CONFIG_DIR/default.pa" ]; then -+ if [ "$(cat "$CONFIG_DIR/default.pa" | grep -m1 "### BEGIN: Equalized audio configuration")" = "### BEGIN: Equalized audio configuration" ]; then -+ PA_EQUALIZER_PERSISTENCE=1 -+ fi - else -- PA_EQUALIZER_PERSISTENCE=0 -+ PA_EQUALIZER_PERSISTENCE=0 - fi - - # DEBUG -@@ -204,8 +209,8 @@ if [ "$1" = "log" ]; then - echo PA_PREAMP=$PA_PREAMP - echo PA_REAL_PREAMP=$PA_REAL_PREAMP - -- if [ -f $HOME/.pulse/default.pa ]; then -- tail -n7 $HOME/.pulse/default.pa -+ if [ -f "$CONFIG_DIR/default.pa" ]; then -+ tail -n7 "$CONFIG_DIR/default.pa" - fi - - echo "---" -@@ -253,24 +258,24 @@ if [ "$1" = "enable-config" ]; then - echo "-------------------------------------" - - # If equalizer configuration is already set, delete file -- if [ -f $HOME/.pulse/default.pa ]; then -- if [ "$(cat $HOME/.pulse/default.pa | grep -m1 "### BEGIN: Equalized audio configuration")" = "### BEGIN: Equalized audio configuration" ]; then -- echo "Equalizer definition detected in file '$HOME/.pulse/default.pa', deleting..." -- rm $HOME/.pulse/default.pa -+ if [ -f "$CONFIG_DIR/default.pa" ]; then -+ if [ "$(cat "$CONFIG_DIR/default.pa" | grep -m1 "### BEGIN: Equalized audio configuration")" = "### BEGIN: Equalized audio configuration" ]; then -+ echo "Equalizer definition detected in file '$CONFIG_DIR/default.pa', deleting..." -+ rm "$CONFIG_DIR/default.pa" - fi - fi - - # Make a backup of configuration if necessary -- if [ -f $HOME/.pulse/default.pa ]; then -- echo "Found '$HOME/.pulse/default.pa', making a copy..." -- cp $HOME/.pulse/default.pa $HOME/.pulse/default.pa.noeq -- CFG_SOURCE_FILE="$HOME/.pulse/default.pa.noeq" -+ if [ -f "$CONFIG_DIR/default.pa" ]; then -+ echo "Found '$CONFIG_DIR/default.pa', making a copy..." -+ cp "$CONFIG_DIR/default.pa" "$CONFIG_DIR/default.pa.noeq" -+ CFG_SOURCE_FILE="$CONFIG_DIR/default.pa.noeq" - fi - - # Decide which file to use as the configuration source -- if [ -f $HOME/.pulse/default.pa.noeq ]; then -- echo "Found '$HOME/.pulse/default.pa.noeq'..." -- CFG_SOURCE_FILE="$HOME/.pulse/default.pa.noeq" -+ if [ -f "$CONFIG_DIR/default.pa.noeq" ]; then -+ echo "Found '$CONFIG_DIR/default.pa.noeq'..." -+ CFG_SOURCE_FILE="$CONFIG_DIR/default.pa.noeq" - else - CFG_SOURCE_FILE="/etc/pulse/default.pa" - fi -@@ -278,19 +283,19 @@ if [ "$1" = "enable-config" ]; then - echo "Using configuration file '$CFG_SOURCE_FILE' as source..." - - # Modify module-stream-restore line to disable cached sinks -- cat $CFG_SOURCE_FILE | sed 's/load-module module-stream-restore/load-module module-stream-restore restore_device=false/g' >$HOME/.pulse/default.pa -+ cat "$CFG_SOURCE_FILE" | sed 's/load-module module-stream-restore/load-module module-stream-restore restore_device=false/g' >"$CONFIG_DIR/default.pa" - - # Add module-ladspa-sink definition -- echo "" >>$HOME/.pulse/default.pa -- echo "### BEGIN: Equalized audio configuration" >>$HOME/.pulse/default.pa -- echo "### Generated from: $SCRIPT_NAME" >>$HOME/.pulse/default.pa -- echo "load-module module-ladspa-sink sink_name=$PA_LADSPA_SINK master=$PA_MASTER_SINK plugin=$PA_LADSPA_PLUGIN label=$PA_LADSPA_LABEL control=$PA_LADSPA_CONTROLS" >>$HOME/.pulse/default.pa -+ echo "" >>"$CONFIG_DIR/default.pa" -+ echo "### BEGIN: Equalized audio configuration" >>"$CONFIG_DIR/default.pa" -+ echo "### Generated from: $SCRIPT_NAME" >>"$CONFIG_DIR/default.pa" -+ echo "load-module module-ladspa-sink sink_name=$PA_LADSPA_SINK master=$PA_MASTER_SINK plugin=$PA_LADSPA_PLUGIN label=$PA_LADSPA_LABEL control=$PA_LADSPA_CONTROLS" >>"$CONFIG_DIR/default.pa" - - # Set LADSPA sink as default sink & set appropriate master sink (preamp) volume -- echo "set-default-sink $PA_LADSPA_SINK" >>$HOME/.pulse/default.pa -- echo "set-sink-volume $PA_MASTER_SINK $PA_REAL_PREAMP" >>$HOME/.pulse/default.pa -- echo "set-sink-mute $PA_MASTER_SINK 0" >>$HOME/.pulse/default.pa -- echo "### END: Equalized audio configuration" >>$HOME/.pulse/default.pa -+ echo "set-default-sink $PA_LADSPA_SINK" >>"$CONFIG_DIR/default.pa" -+ echo "set-sink-volume $PA_MASTER_SINK $PA_REAL_PREAMP" >>"$CONFIG_DIR/default.pa" -+ echo "set-sink-mute $PA_MASTER_SINK 0" >>"$CONFIG_DIR/default.pa" -+ echo "### END: Equalized audio configuration" >>"$CONFIG_DIR/default.pa" - - echo "Equalizer setting saved (enable-config)." - echo "-------------------------------------" -@@ -306,16 +311,16 @@ if [ "$1" = "disable-config" ]; then - echo "-------------------------------------" - - # Move .noeq configuration file if it exists -- if [ -f $HOME/.pulse/default.pa.noeq ]; then -- echo "Found '$HOME/.pulse/default.pa.noeq', moving..." -- mv $HOME/.pulse/default.pa.noeq $HOME/.pulse/default.pa -+ if [ -f "$CONFIG_DIR/default.pa.noeq" ]; then -+ echo "Found '$CONFIG_DIR/default.pa.noeq', moving..." -+ mv "$CONFIG_DIR/default.pa.noeq" "$CONFIG_DIR/default.pa" - fi - - # If equalizer configuration is present, delete file -- if [ -f $HOME/.pulse/default.pa ]; then -- if [ "$(cat $HOME/.pulse/default.pa | grep -m1 "### BEGIN: Equalized audio configuration")" = "### BEGIN: Equalized audio configuration" ]; then -- echo "Equalizer definition detected, deleting '$HOME/.pulse/default.pa'..." -- rm $HOME/.pulse/default.pa -+ if [ -f "$CONFIG_DIR/default.pa" ]; then -+ if [ "$(cat "$CONFIG_DIR/default.pa" | grep -m1 "### BEGIN: Equalized audio configuration")" = "### BEGIN: Equalized audio configuration" ]; then -+ echo "Equalizer definition detected, deleting '$CONFIG_DIR/default.pa'..." -+ rm "$CONFIG_DIR/default.pa" - fi - fi - -@@ -426,8 +431,8 @@ if [ "$PA_CURRENT_SINK" = "$PA_LADSPA_SI - echo "-------------------------------------" - echo "Equalizer status: [enabled]" - -- if [ -f $HOME/.pulse/default.pa ]; then -- if [ "$(cat $HOME/.pulse/default.pa | grep -m1 "### BEGIN: Equalized audio configuration")" = "### BEGIN: Equalized audio configuration" ]; then -+ if [ -f "$CONFIG_DIR/default.pa" ]; then -+ if [ "$(cat "$CONFIG_DIR/default.pa" | grep -m1 "### BEGIN: Equalized audio configuration")" = "### BEGIN: Equalized audio configuration" ]; then - echo "Equalizer configuration status: [enabled]" - else - echo "Equalizer configuration status: [disabled]" -@@ -448,8 +453,8 @@ else - echo "-------------------------------------" - echo "Equalizer status: [disabled]" - -- if [ -f $HOME/.pulse/default.pa ]; then -- if [ "$(cat $HOME/.pulse/default.pa | grep -m1 "### BEGIN: Equalized audio configuration")" = "### BEGIN: Equalized audio configuration" ]; then -+ if [ -f "$CONFIG_DIR/default.pa" ]; then -+ if [ "$(cat "$CONFIG_DIR/default.pa" | grep -m1 "### BEGIN: Equalized audio configuration")" = "### BEGIN: Equalized audio configuration" ]; then - echo "Equalizer configuration status: [enabled]" - echo "Equalizer plugin: [$PA_LADSPA_PLUGIN/$PA_LADSPA_LABEL]" - echo "Equalizer control: [$PA_LADSPA_CONTROLS]" ---- a/usr/share/pulseaudio-equalizer/pulseaudio-equalizer.py -+++ b/usr/share/pulseaudio-equalizer/pulseaudio-equalizer.py -@@ -10,10 +10,10 @@ - - import pygtk - pygtk.require('2.0') --import gtk as Gtk -+import glib as GLib, gtk as Gtk - import os - --configdir = os.getenv('HOME') + "/.pulse" -+configdir = GLib.get_user_config_dir() + "/pulse" - eqconfig = configdir + "/equalizerrc" - eqconfig2 = configdir + "/equalizerrc.test" - eqpresets = eqconfig + ".availablepresets" diff --git a/0002-remove-preamp.patch b/0002-remove-preamp.patch deleted file mode 100644 index 7adfe06..0000000 --- a/0002-remove-preamp.patch +++ /dev/null @@ -1,41 +0,0 @@ ---- a/usr/bin/pulseaudio-equalizer -+++ b/usr/bin/pulseaudio-equalizer -@@ -293,7 +293,7 @@ if [ "$1" = "enable-config" ]; then - - # Set LADSPA sink as default sink & set appropriate master sink (preamp) volume - echo "set-default-sink $PA_LADSPA_SINK" >>"$CONFIG_DIR/default.pa" -- echo "set-sink-volume $PA_MASTER_SINK $PA_REAL_PREAMP" >>"$CONFIG_DIR/default.pa" -+ #echo "set-sink-volume $PA_MASTER_SINK $PA_REAL_PREAMP" >>"$CONFIG_DIR/default.pa" - echo "set-sink-mute $PA_MASTER_SINK 0" >>"$CONFIG_DIR/default.pa" - echo "### END: Equalized audio configuration" >>"$CONFIG_DIR/default.pa" - -@@ -383,7 +383,7 @@ if [ "$1" = "enable" ]; then - - # Unmute & set preamp level on ALSA sink (as LADSPA sink will act as primary volume control) - echo "Setting ALSA sink ($PA_MASTER_SINK) preamp ("$PA_PREAMP"x)..." -- echo >>/tmp/eqcommands.sh "set-sink-volume $PA_MASTER_SINK $PA_REAL_PREAMP" -+ #echo >>/tmp/eqcommands.sh "set-sink-volume $PA_MASTER_SINK $PA_REAL_PREAMP" - echo >>/tmp/eqcommands.sh "set-sink-mute $PA_MASTER_SINK 0" - - # Set the LADSPA sink as the default ---- a/usr/share/pulseaudio-equalizer/pulseaudio-equalizer.py -+++ b/usr/share/pulseaudio-equalizer/pulseaudio-equalizer.py -@@ -414,14 +414,14 @@ class Equalizer: - table.attach(label, 1, 2, 0, 1) - table.attach(preampscale, 1, 2, 1, 2) - table.attach(preampscalevalue, 1, 2, 2, 3) -- label.show() -- preampscale.show() -- preampscalevalue.show() -+ #label.show() -+ #preampscale.show() -+ #preampscalevalue.show() - - # Separator between preamp and bands - separator = Gtk.VSeparator() - table.attach(separator, 2, 3, 1, 2) -- separator.show() -+ #separator.show() - - # Equalizer bands - global scale diff --git a/0003-force-default-persistence-value.patch b/0003-force-default-persistence-value.patch deleted file mode 100644 index b11fb9c..0000000 --- a/0003-force-default-persistence-value.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/usr/bin/pulseaudio-equalizer -+++ b/usr/bin/pulseaudio-equalizer -@@ -133,6 +133,8 @@ fi - if [ -f "$CONFIG_DIR/default.pa" ]; then - if [ "$(cat "$CONFIG_DIR/default.pa" | grep -m1 "### BEGIN: Equalized audio configuration")" = "### BEGIN: Equalized audio configuration" ]; then - PA_EQUALIZER_PERSISTENCE=1 -+ else -+ PA_EQUALIZER_PERSISTENCE=0 - fi - else - PA_EQUALIZER_PERSISTENCE=0 diff --git a/0004-do-not-crash-on-missing-preset.patch b/0004-do-not-crash-on-missing-preset.patch deleted file mode 100644 index 0e7c9c1..0000000 --- a/0004-do-not-crash-on-missing-preset.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- a/usr/share/pulseaudio-equalizer/pulseaudio-equalizer.py -+++ b/usr/share/pulseaudio-equalizer/pulseaudio-equalizer.py -@@ -181,10 +181,13 @@ class Equalizer: - if os.path.isfile(presetdir1 + "/" + preset + ".preset"): - f = open(presetdir1 + "/" + preset + ".preset", "r") - rawdata=f.read().split("\n") -- else: -+ f.close -+ elif os.path.isfile(presetdir2 + "/" + preset + ".preset"): - f = open(presetdir2 + "/" + preset + ".preset", "r") - rawdata=f.read().split("\n") - f.close -+ else: -+ print("Can't find %s preset" % preset) - - ladspa_filename = str(rawdata[0]) - ladspa_name = str(rawdata[1]) diff --git a/0005-window-icon.patch b/0005-window-icon.patch deleted file mode 100644 index b3357f4..0000000 --- a/0005-window-icon.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/usr/share/pulseaudio-equalizer/pulseaudio-equalizer.py -+++ b/usr/share/pulseaudio-equalizer/pulseaudio-equalizer.py -@@ -364,7 +364,16 @@ class Equalizer: - self.window.connect("destroy", self.destroy_equalizer) - self.window.set_title(windowtitle + " [" + realstatus + "]") - self.window.set_border_width(0) -- icon = self.window.set_icon_from_file("/usr/share/icons/hicolor/scalable/apps/multimedia-volume-control.svg") -+ -+ icon_theme = Gtk.icon_theme_get_default() -+ if icon_theme.has_icon("multimedia-volume-control"): -+ self.window.set_icon_name("multimedia-volume-control") -+ elif icon_theme.has_icon("gnome-volume-control"): -+ self.window.set_icon_name("gnome-volume-control") -+ elif icon_theme.has_icon("stock_volume"): -+ self.window.set_icon_name("stock_volume") -+ else: -+ print("No icon found, the window will be iconless") - - menu = Gtk.Menu() - diff --git a/0006-fix-desktop.patch b/0006-fix-desktop.patch deleted file mode 100644 index 02c1011..0000000 --- a/0006-fix-desktop.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- usr/share/applications/pulseaudio-equalizer.desktop 2011-08-18 14:07:30.000000000 -0500 -+++ usr/share/applications/pulseaudio-equalizer.desktop.orig 2011-08-18 20:33:49.000000000 -0500 -@@ -5,7 +5,7 @@ - GenericName=Equalizer - Comment=PulseAudio LADSPA interface using MBEQ Multiband EQ plugin - Exec=pulseaudio-equalizer-gtk --Icon=gnome-volume-control -+Icon=multimedia-volume-control - StartupNotify=true - Type=Application --Categories=AudioVideo;Audio;Mixer;GTK; -+Categories=AudioVideo;Mixer;GTK; diff --git a/0007-pygobject3-port.patch b/0007-pygobject3-port.patch deleted file mode 100644 index d8fcc72..0000000 --- a/0007-pygobject3-port.patch +++ /dev/null @@ -1,298 +0,0 @@ ---- a/usr/share/pulseaudio-equalizer/pulseaudio-equalizer.py -+++ b/usr/share/pulseaudio-equalizer/pulseaudio-equalizer.py -@@ -8,11 +8,13 @@ - # Version: (see '/usr/pulseaudio-equalizer' script) - # - --import pygtk --pygtk.require('2.0') --import glib as GLib, gtk as Gtk -+import gi -+gi.require_version("Gtk", "3.0") -+from gi.repository import GLib, Gtk - import os - -+GTK_VERSION = (Gtk.MAJOR_VERSION, Gtk.MINOR_VERSION, Gtk.MICRO_VERSION) -+ - configdir = GLib.get_user_config_dir() + "/pulse" - eqconfig = configdir + "/equalizerrc" - eqconfig2 = configdir + "/equalizerrc.test" -@@ -300,12 +302,16 @@ class Equalizer: - def on_removepreset(self,widget): - global preset - global presets -- dialog = Gtk.FileChooserDialog("Choose preset to remove...", -- None, -- Gtk.FILE_CHOOSER_ACTION_OPEN, -- (Gtk.STOCK_CANCEL, Gtk.RESPONSE_CANCEL, -- Gtk.STOCK_OK, Gtk.RESPONSE_OK)) -- dialog.set_default_response(Gtk.RESPONSE_OK) -+ dialog = Gtk.FileChooserDialog(title="Choose preset to remove...", -+ transient_for=widget.get_toplevel(), -+ action=Gtk.FileChooserAction.OPEN) -+ -+ button = dialog.add_button("_Cancel", Gtk.ResponseType.CANCEL) -+ button.set_image(Gtk.Image.new_from_icon_name("gtk-cancel", Gtk.IconSize.BUTTON)) -+ button = dialog.add_button("_Open", Gtk.ResponseType.OK) -+ button.set_image(Gtk.Image.new_from_icon_name("document-open", Gtk.IconSize.BUTTON)) -+ button.grab_default() -+ dialog.set_default_response(Gtk.ResponseType.OK) - - filter = Gtk.FileFilter() - filter.set_name("Preset files") -@@ -315,7 +321,7 @@ class Equalizer: - dialog.show() - - response = dialog.run() -- if response == Gtk.RESPONSE_OK: -+ if response == Gtk.ResponseType.OK: - filename = dialog.get_filename() - path_and_name = os.path.split(filename) - name = path_and_name[1] -@@ -358,14 +364,13 @@ class Equalizer: - def __init__(self): - GetSettings() - -- self.window = Gtk.Window(Gtk.WINDOW_TOPLEVEL) -+ self.window = Gtk.Window() - self.window.set_resizable(True) - - self.window.connect("destroy", self.destroy_equalizer) - self.window.set_title(windowtitle + " [" + realstatus + "]") -- self.window.set_border_width(0) - -- icon_theme = Gtk.icon_theme_get_default() -+ icon_theme = Gtk.IconTheme.get_default() - if icon_theme.has_icon("multimedia-volume-control"): - self.window.set_icon_name("multimedia-volume-control") - elif icon_theme.has_icon("gnome-volume-control"): -@@ -377,42 +382,61 @@ class Equalizer: - - menu = Gtk.Menu() - -- menu_item = Gtk.MenuItem("Reset to defaults") -+ menu_item = Gtk.MenuItem(label="Reset to defaults") - menu_item.connect("activate", self.on_resetsettings) - menu.append(menu_item) - menu_item.show() -- menu_item = Gtk.MenuItem("Remove user preset...") -+ menu_item = Gtk.MenuItem(label="Remove user preset...") - menu_item.connect("activate", self.on_removepreset) - menu.append(menu_item) - menu_item.show() -- root_menu = Gtk.MenuItem("Advanced") -+ root_menu = Gtk.MenuItem(label="Advanced") - root_menu.show() - root_menu.set_submenu(menu) - -- vbox1 = Gtk.VBox(False, 0) -+ if GTK_VERSION >= (3, 0, 0): -+ vbox1 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) -+ else: -+ vbox1 = Gtk.VBox() - self.window.add(vbox1) - vbox1.show() - menu_bar = Gtk.MenuBar() -- vbox1.pack_start(menu_bar, False, False, 2) -+ if GTK_VERSION >= (3, 0, 0): -+ menu_bar.set_margin_bottom(4) -+ vbox1.add(menu_bar) -+ else: -+ vbox1.pack_start(menu_bar, False, False, 2) - menu_bar.show() -- menu_bar.append (root_menu) -+ menu_bar.append(root_menu) - -- hbox1 = Gtk.HBox(False, 1) -- #hbox1.set_border_width(10) -+ if GTK_VERSION >= (3, 0, 0): -+ hbox1 = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=1) -+ else: -+ hbox1 = Gtk.HBox(spacing=1) -+ #hbox1.props.margin = 10 - vbox1.add(hbox1) - hbox1.show() - -- table = Gtk.Table(3, 17, False) -- table.set_border_width(5) -- hbox1.add(table) -+ if GTK_VERSION >= (3, 10, 0): -+ grid = Gtk.Grid() -+ grid.props.margin = 5 -+ else: -+ grid = Gtk.Table(n_rows=3, n_columns=17) -+ grid.set_border_width(5) -+ hbox1.add(grid) - - # Preamp widget - global preampscale - global preampscalevalue -- preampscale = Gtk.VScale() -+ if GTK_VERSION >= (3, 2, 0): -+ preampscale = Gtk.Scale(orientation=Gtk.Orientation.VERTICAL) -+ preampscale.set_hexpand(True) -+ preampscale.set_vexpand(True) -+ else: -+ preampscale = Gtk.VScale() - preampscale.set_draw_value(0) - preampscale.set_inverted(1) -- preampscale.set_value_pos(Gtk.POS_BOTTOM) -+ preampscale.set_value_pos(Gtk.PositionType.BOTTOM) - preampscale.set_range(0.0, 2.0) - preampscale.set_increments(1, 0.1) - preampscale.set_digits(1) -@@ -423,16 +447,25 @@ class Equalizer: - label.set_markup("Preamp") - preampscalevalue = Gtk.Label() - preampscalevalue.set_markup(str(preampscale.get_value()) + "x") -- table.attach(label, 1, 2, 0, 1) -- table.attach(preampscale, 1, 2, 1, 2) -- table.attach(preampscalevalue, 1, 2, 2, 3) -+ if GTK_VERSION >= (3, 10, 0): -+ grid.attach(label, 1, 0, 1, 1) -+ grid.attach(preampscale, 1, 1, 1, 1) -+ grid.attach(preampscalevalue, 1, 2, 1, 1) -+ else: -+ grid.attach(label, 1, 2, 0, 1, yoptions=Gtk.AttachOptions.SHRINK) -+ grid.attach(preampscale, 1, 2, 1, 2, yoptions=(Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL)) -+ grid.attach(preampscalevalue, 1, 2, 2, 3, yoptions=Gtk.AttachOptions.SHRINK) - #label.show() - #preampscale.show() - #preampscalevalue.show() - - # Separator between preamp and bands -- separator = Gtk.VSeparator() -- table.attach(separator, 2, 3, 1, 2) -+ if GTK_VERSION >= (3, 10, 0): -+ separator = Gtk.Separator(orientation=Gtk.Orientation.VERTICAL) -+ grid.attach(separator, 2, 1, 1, 1) -+ else: -+ separator = Gtk.VSeparator() -+ grid.attach(separator, 2, 3, 1, 2) - #separator.show() - - # Equalizer bands -@@ -441,11 +474,16 @@ class Equalizer: - self.labels = {} - self.scalevalues = {} - for x in range(1,num_ladspa_controls+1): -- scale = Gtk.VScale() -+ if GTK_VERSION >= (3, 2, 0): -+ scale = Gtk.Scale(orientation=Gtk.Orientation.VERTICAL) -+ scale.set_hexpand(True) -+ scale.set_vexpand(True) -+ else: -+ scale = Gtk.VScale() - self.scales[x] = scale - scale.set_draw_value(0) - scale.set_inverted(1) -- scale.set_value_pos(Gtk.POS_BOTTOM) -+ scale.set_value_pos(Gtk.PositionType.BOTTOM) - scale.set_range(float(ranges[0]), float(ranges[1])) - scale.set_increments(1, 0.1) - scale.set_digits(1) -@@ -459,67 +497,80 @@ class Equalizer: - scalevalue = Gtk.Label() - self.scalevalues[x] = scalevalue - scalevalue.set_markup("" + str(scale.get_value()) + "\ndB") -- table.attach(label, x + 2, x + 3, 0, 1) -- table.attach(scale, x + 2, x + 3, 1, 2) -- table.attach(scalevalue, x + 2, x + 3, 2, 3) -+ if GTK_VERSION >= (3, 10, 0): -+ grid.attach(label, x + 2, 0, 1, 1) -+ grid.attach(scale, x + 2, 1, 1, 1) -+ grid.attach(scalevalue, x + 2, 2, 1, 1) -+ else: -+ grid.attach(label, x + 2, x + 3, 0, 1, yoptions=Gtk.AttachOptions.SHRINK) -+ grid.attach(scale, x + 2, x + 3, 1, 2, yoptions=(Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL)) -+ grid.attach(scalevalue, x + 2, x + 3, 2, 3, yoptions=Gtk.AttachOptions.SHRINK) - label.show() - scale.show() - scalevalue.show() - -- table.show() -+ grid.show() - -- vbox2 = Gtk.VBox(True, 1) -- vbox2.set_border_width(10) -- hbox1.add(vbox2) -+ if GTK_VERSION >= (3, 0, 0): -+ vbox2 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, homogeneous=True, spacing=1) -+ vbox2.props.margin = 10 -+ hbox1.add(vbox2) -+ else: -+ vbox2 = Gtk.VBox(homogeneous=True, spacing=1) -+ vbox2.set_border_width(10) -+ hbox1.pack_start(vbox2, False, True, 0) - vbox2.show() - - presetslabel = Gtk.Label() - presetslabel.set_markup("Preset:") -- vbox2.pack_start(presetslabel, False, False, 0) -+ vbox2.add(presetslabel) - presetslabel.show() - - global presetsbox -- presetsbox = Gtk.combo_box_entry_new_text() -- vbox2.pack_start(presetsbox, False, False, 0) -+ presetsbox = Gtk.ComboBoxText.new_with_entry() -+ vbox2.add(presetsbox) - presetsbox.get_child().set_text(preset) - for i in range(len(rawpresets)): - presetsbox.append_text(rawpresets[i]) - presetsbox.connect("changed", self.on_presetsbox, x) - presetsbox.show() - -- savepreset = Gtk.Button("Save Preset") -- vbox2.pack_start(savepreset, False, False, 0) -+ savepreset = Gtk.Button(label="Save Preset") -+ vbox2.add(savepreset) - savepreset.connect("clicked", self.on_savepreset) - savepreset.show() - - global eqenabled -- eqenabled = Gtk.CheckButton("EQ Enabled") -+ eqenabled = Gtk.CheckButton(label="EQ Enabled") - eqenabled.set_active(status) -- eqenabled.unset_flags(Gtk.CAN_FOCUS) -+ eqenabled.set_can_focus(False) - eqenabled.connect("clicked", self.on_eqenabled) -- vbox2.pack_start(eqenabled, False, False, 0) -+ vbox2.add(eqenabled) - eqenabled.show() - - global keepsettings -- keepsettings = Gtk.CheckButton("Keep Settings") -+ keepsettings = Gtk.CheckButton(label="Keep Settings") - keepsettings.set_active(persistence) -- keepsettings.unset_flags(Gtk.CAN_FOCUS) -+ keepsettings.set_can_focus(False) - keepsettings.connect("clicked", self.on_keepsettings) -- vbox2.pack_start(keepsettings, False, False, 0) -+ vbox2.add(keepsettings) - keepsettings.show() - -- applysettings = Gtk.Button("Apply Settings") -- vbox2.pack_start(applysettings, False, False, 0) -+ applysettings = Gtk.Button(label="Apply Settings") -+ vbox2.add(applysettings) - applysettings.connect("clicked", self.on_applysettings) - applysettings.show() - -- quitbutton = Gtk.Button("Quit") -- vbox2.pack_start(quitbutton, False, False, 0) -+ quitbutton = Gtk.Button(label="Quit") -+ vbox2.add(quitbutton) - quitbutton.connect("clicked", lambda w: Gtk.main_quit()) - quitbutton.show() - -- separator = Gtk.HSeparator() -- vbox2.pack_start(separator, False, False, 0) -+ if GTK_VERSION >= (3, 2, 0): -+ separator = Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL) -+ else: -+ separator = Gtk.HSeparator() -+ vbox2.add(separator) - separator.set_size_request(100, 10) - #separator.show() - diff --git a/0009-do-not-zero-volume.patch b/0009-do-not-zero-volume.patch deleted file mode 100644 index a7a28d7..0000000 --- a/0009-do-not-zero-volume.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- a/usr/bin/pulseaudio-equalizer -+++ b/usr/bin/pulseaudio-equalizer -@@ -115,8 +115,14 @@ fi - # Get sink names and volumes - PA_LADSPA_SINK="ladspa_output.$PA_LADSPA_PLUGIN.$PA_LADSPA_LABEL" - PA_CURRENT_SINK=$(pacmd stat | sed -e '/Default sink name/!d;s/Default sink name: //g') --PA_CURRENT_VOLUME=$(pacmd list | iconv -c -t ascii | grep -A20 "<$PA_CURRENT_SINK>" | grep -m1 'volume: 0:' | awk '{print $NF}' | sed 's/%//g') --PA_REAL_VOLUME=$((PA_CURRENT_VOLUME*65536/100)) -+if [ "$( (echo '4.0'; pulseaudio --version | awk '{print $2}') | sort -V | sed -n '2p' )" != '4.0' ]; then -+ # The version of PulseAudio is higher than 4.0. -+ PA_CURRENT_VOLUME=$(pacmd list | iconv -c -t ascii | grep -A20 "<$PA_CURRENT_SINK>" | grep -m1 'volume: front-left:' | awk '{print $3}') -+ PA_REAL_VOLUME="$PA_CURRENT_VOLUME" -+else -+ PA_CURRENT_VOLUME=$(pacmd list | iconv -c -t ascii | grep -A20 "<$PA_CURRENT_SINK>" | grep -m1 'volume: 0:' | awk '{print $NF}' | sed 's/%//g') -+ PA_REAL_VOLUME=$((PA_CURRENT_VOLUME*65536/100)) -+fi - PA_REAL_PREAMP_FLOAT=$(echo "$PA_PREAMP*65536" | bc) - PA_REAL_PREAMP=${PA_REAL_PREAMP_FLOAT/\.*} - PA_CURRENT_MUTE=$(pacmd list-sinks | iconv -c -t ascii | grep -A20 "<$PA_CURRENT_SINK>" | grep -m1 'muted: ' | sed -e 's/[\t]muted: no/0/g;s/[\t]muted: yes/1/g') diff --git a/pulseaudio-equalizer-3.0.2.tar.gz b/pulseaudio-equalizer-3.0.2.tar.gz new file mode 100644 index 0000000..356334e --- /dev/null +++ b/pulseaudio-equalizer-3.0.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dd14d7bdbc806bfa239bae49dbeef8ccd8bbdb53a413bd83d0ca32390ceae6f +size 36168 diff --git a/pulseaudio-equalizer-fix-deprecated-argument.patch b/pulseaudio-equalizer-fix-deprecated-argument.patch new file mode 100644 index 0000000..b87e71d --- /dev/null +++ b/pulseaudio-equalizer-fix-deprecated-argument.patch @@ -0,0 +1,11 @@ +--- a/bin/pulseaudio-equalizer.in ++++ b/bin/pulseaudio-equalizer.in +@@ -403,7 +403,7 @@ if [ "$1" = 'enable' ]; then + + # Load LADSPA sink module + echo 'Loading module-ladspa-sink...' +- echo >>/tmp/eqcommands.sh "load-module module-ladspa-sink sink_name=$PA_LADSPA_SINK master=$PA_MASTER_SINK plugin=$PA_LADSPA_PLUGIN label=$PA_LADSPA_LABEL control=$PA_LADSPA_CONTROLS" ++ echo >>/tmp/eqcommands.sh "load-module module-ladspa-sink sink_name=$PA_LADSPA_SINK sink_master=$PA_MASTER_SINK plugin=$PA_LADSPA_PLUGIN label=$PA_LADSPA_LABEL control=$PA_LADSPA_CONTROLS" + + # Transfer current sink mute/volume to LADSPA sink + echo "Transferring current mute ($PA_CURRENT_MUTE) & volume ($PA_CURRENT_VOLUME%) to LADSPA sink ($PA_LADSPA_SINK)..." diff --git a/0008-fix-locale-issues.patch b/pulseaudio-equalizer-fix-locale-issues.patch similarity index 54% rename from 0008-fix-locale-issues.patch rename to pulseaudio-equalizer-fix-locale-issues.patch index 192db5e..dbd0fae 100644 --- a/0008-fix-locale-issues.patch +++ b/pulseaudio-equalizer-fix-locale-issues.patch @@ -1,49 +1,49 @@ ---- a/usr/bin/pulseaudio-equalizer -+++ b/usr/bin/pulseaudio-equalizer -@@ -18,6 +18,7 @@ PA_CONTROL_MAX="30" - PA_PREAMP="1.0" - PA_CURRENT_PRESET="" +--- a/bin/pulseaudio-equalizer.in ++++ b/bin/pulseaudio-equalizer.in +@@ -21,6 +21,7 @@ PA_CONTROL_MAX='30' + PA_PREAMP='1.0' + PA_CURRENT_PRESET='' +LC_MESSAGES=C if [ -z "$XDG_CONFIG_HOME" ]; then - CONFIG_DIR="$HOME/.config/pulse" + CONFIG_DIR="$HOME"/.config/pulse else -@@ -113,20 +114,20 @@ fi +@@ -110,20 +111,20 @@ fi # Get sink names and volumes PA_LADSPA_SINK="ladspa_output.$PA_LADSPA_PLUGIN.$PA_LADSPA_LABEL" --PA_CURRENT_SINK=$(pacmd stat | grep "Default sink name" | sed 's/Default sink name: //g') --PA_CURRENT_VOLUME=$(pacmd list | grep -A20 "<$PA_CURRENT_SINK>" | grep -m1 'volume: 0:' | awk '{print $NF}' | sed 's/%//g') -+PA_CURRENT_SINK=$(pacmd stat | sed -e '/Default sink name/!d;s/Default sink name: //g') -+PA_CURRENT_VOLUME=$(pacmd list | iconv -c -t ascii | grep -A20 "<$PA_CURRENT_SINK>" | grep -m1 'volume: 0:' | awk '{print $NF}' | sed 's/%//g') +-PA_CURRENT_SINK=$(pacmd stat | grep --color=never 'Default sink name' | sed 's/Default sink name: //g') +-PA_CURRENT_VOLUME=$(pacmd list | grep --color=never -A20 "<$PA_CURRENT_SINK>" | grep --color=never -m1 'volume: ' | grep --color=never -Po '(\d+)%' | awk 'NR==1{sub(/%/,"",$1); print $1}') ++PA_CURRENT_SINK="$(pacmd stat | sed -e '/Default sink name/!d;s/Default sink name: //g')" ++PA_CURRENT_VOLUME="$(pacmd list | iconv -c -t ascii | grep --color=never -A20 "<$PA_CURRENT_SINK>" | grep --color=never -m1 'volume: ' | grep --color=never -Po '(\d+)%' | awk 'NR==1{sub(/%/,"",$1); print $1}')" PA_REAL_VOLUME=$((PA_CURRENT_VOLUME*65536/100)) PA_REAL_PREAMP_FLOAT=$(echo "$PA_PREAMP*65536" | bc) PA_REAL_PREAMP=${PA_REAL_PREAMP_FLOAT/\.*} --PA_CURRENT_MUTE=$(pacmd list-sinks | grep -A20 "<$PA_CURRENT_SINK>" | grep -m1 'muted: ' | sed 's/[\t]muted: no/0/g' | sed 's/[\t]muted: yes/1/g') -+PA_CURRENT_MUTE=$(pacmd list-sinks | iconv -c -t ascii | grep -A20 "<$PA_CURRENT_SINK>" | grep -m1 'muted: ' | sed -e 's/[\t]muted: no/0/g;s/[\t]muted: yes/1/g') +-PA_CURRENT_MUTE=$(pacmd list-sinks | grep --color=never -A20 "<$PA_CURRENT_SINK>" | grep -m1 'muted: ' | sed 's/[\t]muted: no/0/g' | sed 's/[\t]muted: yes/1/g') ++PA_CURRENT_MUTE="$(pacmd list-sinks | iconv -c -t ascii | grep --color=never -A20 "<$PA_CURRENT_SINK>" | grep -m1 'muted: ' | sed -e 's/[\t]muted: no/0/g;s/[\t]muted: yes/1/g')" # Check if equalizer is running and get accurate master sink name if [ "$PA_CURRENT_SINK" = "$PA_LADSPA_SINK" ]; then PA_EQUALIZER_STATUS=1 -- PA_MASTER_SINK=$(pacmd info | grep -A30 "<$PA_CURRENT_SINK>" | grep -m1 'device.master_device = ' | sed 's/device.master_device = //g' | sed 's/"//g' | sed 's/^[ \t]*//') -+ PA_MASTER_SINK=$(pacmd info | iconv -c -t ascii | grep -A30 "<$PA_CURRENT_SINK>" | grep -m1 'device.master_device = ' | sed -e 's/device.master_device = //g;s/"//g;s/^[ \t]*//') +- PA_MASTER_SINK=$(pacmd info | grep --color=never -A30 "<$PA_CURRENT_SINK>" | grep --color=never -m1 'device.master_device = ' | sed 's/device.master_device = //g' | sed 's/"//g' | sed 's/^[ \t]*//') ++ PA_MASTER_SINK="$(pacmd info | iconv -c -t ascii | grep --color=never -A30 "<$PA_CURRENT_SINK>" | grep --color=never -m1 'device.master_device = ' | sed -e 's/device.master_device = //g;s/"//g;s/^[ \t]*//')" else PA_EQUALIZER_STATUS=0 -- PA_MASTER_SINK=$(pacmd stat | grep 'Default sink name' | sed 's/Default sink name: //g') -+ PA_MASTER_SINK=$(pacmd stat | sed -e '/Default sink name/!d;s/Default sink name: //g') - fi +- PA_MASTER_SINK=$(pacmd stat | grep --color=never 'Default sink name' | sed 's/Default sink name: //g') ++ PA_MASTER_SINK="$(pacmd stat | sed -e '/Default sink name/!d;s/Default sink name: //g')" + fi # Check if equalizer is set as persistent -@@ -342,16 +343,16 @@ if [ "$1" = "disable" -o "$1" = "enable" +@@ -368,16 +369,16 @@ if [ "$1" = 'disable' ] || [ "$1" = 'ena # Unload & reload stream-restore module - echo "Unloading & reloading stream-restore module..." + echo 'Unloading & reloading stream-restore module...' - echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | grep -B1 -m1 'name: ' | grep ' index: ' | sed 's/ index: //g')" + echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | iconv -c -t ascii | grep -B1 -m1 'name: ' | sed -e '/ index: /!d;s/ index: //g')" - echo >>/tmp/eqcommands.sh "load-module module-stream-restore" + echo >>/tmp/eqcommands.sh 'load-module module-stream-restore' # Unload LADSPA sink module (if it is already loaded) - echo "Unloading module-ladspa-sink..." + echo 'Unloading module-ladspa-sink...' - echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | grep -B1 -m1 'name: ' | grep ' index: ' | sed 's/ index: //g')" + echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | iconv -c -t ascii | grep -B1 -m1 'name: ' | sed -e '/ index: /!d;s/ index: //g')" @@ -54,16 +54,16 @@ # Transfer current mute/sink volume to ALSA sink echo "Transferring current mute ($PA_CURRENT_MUTE) & volume ($PA_CURRENT_VOLUME%) to ALSA sink ($PA_MASTER_SINK)..." -@@ -371,7 +372,7 @@ if [ "$1" = "enable" ]; then +@@ -397,7 +398,7 @@ if [ "$1" = 'enable' ]; then # Unload & reload stream-restore module with restore_device option disabled (to ensure that previously cached per-client sinks are not used) - echo "Unloading & reloading stream-restore module..." + echo 'Unloading & reloading stream-restore module...' - echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | grep -B1 -m1 'name: ' | grep ' index: ' | sed 's/ index: //g')" + echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | iconv -c -t ascii | grep -B1 -m1 'name: ' | sed -e '/ index: /!d;s/ index: //g')" - echo >>/tmp/eqcommands.sh "load-module module-stream-restore restore_device=false" + echo >>/tmp/eqcommands.sh 'load-module module-stream-restore restore_device=false' # Load LADSPA sink module -@@ -394,7 +395,7 @@ if [ "$1" = "enable" ]; then +@@ -420,7 +421,7 @@ if [ "$1" = 'enable' ]; then # Move currently active client sinks to LADSPA sink echo "Moving active PulseAudio clients to LADSPA sink ($PA_LADSPA_SINK)..." @@ -72,12 +72,12 @@ # Execute all queued commands (for potential speed benefit)... pacmd /dev/null -@@ -428,7 +429,7 @@ if [ "$1" = "status" ]; then +@@ -454,7 +455,7 @@ if [ "$1" = 'status' ]; then fi # Refresh current sink status and display equalizer information --PA_CURRENT_SINK=$(pacmd stat | grep "Default sink name" | sed 's/Default sink name: //g') -+PA_CURRENT_SINK=$(pacmd stat | sed -e '/Default sink name/!d;s/Default sink name: //g') +-PA_CURRENT_SINK="$(pacmd stat | grep "Default sink name" | sed 's/Default sink name: //g')" ++PA_CURRENT_SINK="$(pacmd stat | sed -e '/Default sink name/!d;s/Default sink name: //g')" if [ "$PA_CURRENT_SINK" = "$PA_LADSPA_SINK" ]; then - echo "-------------------------------------" - echo "Equalizer status: [enabled]" + echo '-------------------------------------' + echo 'Equalizer status: [enabled]' diff --git a/pulseaudio-equalizer.changes b/pulseaudio-equalizer.changes index 56e43cd..1074144 100644 --- a/pulseaudio-equalizer.changes +++ b/pulseaudio-equalizer.changes @@ -1,3 +1,20 @@ +------------------------------------------------------------------- +Sat Nov 6 19:51:16 UTC 2021 - Alexei Sorokin + +- Update to version 3.0.2: + * No changelog available. +- Drop 0000-add-python3-compat.patch, 0001-pulse-path.patch, + 0003-force-default-persistence-value.patch, + 0004-do-not-crash-on-missing-preset.patch, 0005-window-icon.patch, + 0007-pygobject3-port.patch, 0009-do-not-zero-volume.patch: fixed + upstream. +- Replace 0006-fix-desktop.patch with %suse_update_desktop_file, + the icon change has been done upstream. +- Rebase and rename 0008-fix-locale-issues.patch to + pulseaudio-equalizer-fix-locale-issues.patch +- Add pulseaudio-equalizer-fix-deprecated-argument.patch: + Fix use of a deprecated module argument. + ------------------------------------------------------------------- Sun Feb 25 18:16:05 UTC 2018 - sor.alexei@meowr.ru diff --git a/pulseaudio-equalizer.spec b/pulseaudio-equalizer.spec index e56b0fb..9999683 100644 --- a/pulseaudio-equalizer.spec +++ b/pulseaudio-equalizer.spec @@ -16,87 +16,55 @@ # +%define _name pulseaudio-equalizer-ladspa Name: pulseaudio-equalizer -Version: 2.7.0.2 +Version: 3.0.2 Release: 0 Summary: PulseAudio's LADSPA plugin graphical user interface License: GPL-3.0-or-later -Group: Productivity/Multimedia/Sound/Mixers -URL: https://ubuntuforums.org/showthread.php?t=1308838 -Source: https://launchpad.net/~nilarimogard/+archive/ubuntu/webupd8/+files/%{name}_%{version}.orig.tar.gz -# PATCH-FIX-UPSTREAM 0000-add-python3-compat.patch sor.alexei@meowr.ru -- Add Python3 compatibility. -Patch0: 0000-add-python3-compat.patch -# PATCH-FIX-UPSTREAM 0001-pulse-path.patch webupd8@gmail.com -- Update path to PulseAudio files to the new one. -Patch1: 0001-pulse-path.patch -# PATCH-FIX-UPSTREAM 0002-remove-preamp.patch -- Remove preamp. -Patch2: 0002-remove-preamp.patch -# PATCH-FIX-UPSTREAM 0003-force-default-persistence-value.patch webupd8@gmail.com -- Force default persistence value. -Patch3: 0003-force-default-persistence-value.patch -# PATCH-FIX-UPSTREAM 0004-do-not-crash-on-missing-preset.patch webupd8@gmail.com -- Do not crash on missing preset. -Patch4: 0004-do-not-crash-on-missing-preset.patch -# PATCH-FIX-UPSTREAM 0005-window-icon.patch webupd8@gmail.com -- Correct way of setting window icon. -Patch5: 0005-window-icon.patch -# PATCH-FIX-UPSTREAM 0006-fix-desktop.patch malcolmlewis@opensuse.org -- Fix .desktop file. -Patch6: 0006-fix-desktop.patch -# PATCH-FIX-UPSTREAM 0007-pygobject3-port.patch sor.alexei@meowr.ru -- Port to PyGObject3 and GTK+3. -Patch7: 0007-pygobject3-port.patch -# PATCH-FIX-UPSTREAM 0008-fix-locale-issues.patch sor.alexei@meowr.ru -- Fix issues on non-Latin systems. -Patch8: 0008-fix-locale-issues.patch -# PATCH-FIX-UPSTREAM 0009-do-not-zero-volume.patch sor.alexei@meowr.ru -- Fix volume zeroing on fresh PulseAudio. -Patch9: 0009-do-not-zero-volume.patch +URL: https://github.com/pulseaudio-equalizer-ladspa/equalizer +Source: https://github.com/pulseaudio-equalizer-ladspa/equalizer/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +# PATCH-FIX-OPENSUSE pulseaudio-equalizer-fix-locale-issues.patch sor.alexei@meowr.ru -- Fix issues on non-Latin systems. +Patch0: pulseaudio-equalizer-fix-locale-issues.patch +# PATCH-FIX-OPENSUSE pulseaudio-equalizer-fix-deprecated-argument.patch sor.alexei@meowr.ru -- Fix use of a deprecated module argument. +Patch1: pulseaudio-equalizer-fix-deprecated-argument.patch BuildRequires: gobject-introspection-devel +BuildRequires: meson +BuildRequires: python3 BuildRequires: update-desktop-files +Requires: bc Requires: ladspa-swh-plugins +# No support for pipewire-pulseaudio Requires: pulseaudio Requires: pulseaudio-utils -Requires: python3 Requires: python3-gobject -BuildArch: noarch -%if 0%{?suse_version} > 1320 || 0%{?sle_version} >= 120200 Requires: python3-gobject-Gdk -%endif +BuildArch: noarch %description GUI for PulseAudio's LADSPA interface using Steve Harris' Multiband EQ (mbeq_1197) plugin. %prep -%setup -q -n %{name} -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -sed -i '/^#!/s|env python$|python3|' .%{_datadir}/%{name}/%{name}.py +%autosetup -n equalizer-%{version} -p1 %build -# Nothing to build. +%meson +%meson_build %install -mkdir -p %{buildroot}%{_bindir}/ %{buildroot}%{_datadir}/%{name}/presets/ -install -Dpm 0755 .%{_bindir}/%{name}* %{buildroot}%{_bindir}/ -install -Dpm 0755 .%{_datadir}/%{name}/%{name}.py %{buildroot}%{_bindir}/%{name}-gtk -install -Dpm 0644 .%{_datadir}/%{name}/presets/* %{buildroot}%{_datadir}/%{name}/presets/ -install -Dpm 0644 .%{_datadir}/applications/%{name}.desktop %{buildroot}%{_datadir}/applications/%{name}.desktop +%meson_install +sed -i '/^#!/s|env python3$|python3|' %{buildroot}%{_bindir}/%{name}-gtk -%suse_update_desktop_file %{name} - -%if 0%{?suse_version} < 1500 -%post -%desktop_database_post - -%postun -%desktop_database_postun -%endif +%suse_update_desktop_file -r com.github.%{_name}.Equalizer AudioVideo Mixer GTK %files -%{_bindir}/%{name}* -%{_datadir}/%{name}/ -%{_datadir}/applications/%{name}.desktop +%license LICENSE +%doc README.md +%{_bindir}/%{name} +%{_bindir}/%{name}-gtk +%{_datadir}/%{_name}/ +%{_datadir}/applications/*%{_name}*.desktop +%{python3_sitelib}/pulseeq/ %changelog diff --git a/pulseaudio-equalizer_2.7.0.2.orig.tar.gz b/pulseaudio-equalizer_2.7.0.2.orig.tar.gz deleted file mode 100644 index 1b3f143..0000000 --- a/pulseaudio-equalizer_2.7.0.2.orig.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e69fa0f0d820dad4b9333287a0ef94825998c76464182b8bbcea31dc97db3095 -size 9135 From bb57b1088efd83bf75908091fa6fdf517acb7d2e4cb6f71f5ffdbbe26815bb68 Mon Sep 17 00:00:00 2001 From: Alexei Sorokin Date: Mon, 8 Nov 2021 00:09:40 +0000 Subject: [PATCH 6/8] OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/pulseaudio-equalizer?expand=0&rev=22 --- pulseaudio-equalizer.changes | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pulseaudio-equalizer.changes b/pulseaudio-equalizer.changes index 1074144..cc24fcd 100644 --- a/pulseaudio-equalizer.changes +++ b/pulseaudio-equalizer.changes @@ -4,8 +4,9 @@ Sat Nov 6 19:51:16 UTC 2021 - Alexei Sorokin - Update to version 3.0.2: * No changelog available. - Drop 0000-add-python3-compat.patch, 0001-pulse-path.patch, + 0002-remove-preamp.patch, 0005-window-icon.patch, 0003-force-default-persistence-value.patch, - 0004-do-not-crash-on-missing-preset.patch, 0005-window-icon.patch, + 0004-do-not-crash-on-missing-preset.patch, 0007-pygobject3-port.patch, 0009-do-not-zero-volume.patch: fixed upstream. - Replace 0006-fix-desktop.patch with %suse_update_desktop_file, From 7ffc2666002cb6b8be96693065d52a94f9af6ca77c1aebc1effa705277359fec Mon Sep 17 00:00:00 2001 From: Alexei Sorokin Date: Mon, 8 Nov 2021 15:53:15 +0000 Subject: [PATCH 7/8] - Port to pactl. OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/pulseaudio-equalizer?expand=0&rev=23 --- ...io-equalizer-fix-deprecated-argument.patch | 11 -- pulseaudio-equalizer-fix-locale-issues.patch | 75 +---------- pulseaudio-equalizer-use-pactl.patch | 127 ++++++++++++++++++ pulseaudio-equalizer.changes | 11 +- pulseaudio-equalizer.spec | 7 +- 5 files changed, 138 insertions(+), 93 deletions(-) delete mode 100644 pulseaudio-equalizer-fix-deprecated-argument.patch create mode 100644 pulseaudio-equalizer-use-pactl.patch diff --git a/pulseaudio-equalizer-fix-deprecated-argument.patch b/pulseaudio-equalizer-fix-deprecated-argument.patch deleted file mode 100644 index b87e71d..0000000 --- a/pulseaudio-equalizer-fix-deprecated-argument.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/bin/pulseaudio-equalizer.in -+++ b/bin/pulseaudio-equalizer.in -@@ -403,7 +403,7 @@ if [ "$1" = 'enable' ]; then - - # Load LADSPA sink module - echo 'Loading module-ladspa-sink...' -- echo >>/tmp/eqcommands.sh "load-module module-ladspa-sink sink_name=$PA_LADSPA_SINK master=$PA_MASTER_SINK plugin=$PA_LADSPA_PLUGIN label=$PA_LADSPA_LABEL control=$PA_LADSPA_CONTROLS" -+ echo >>/tmp/eqcommands.sh "load-module module-ladspa-sink sink_name=$PA_LADSPA_SINK sink_master=$PA_MASTER_SINK plugin=$PA_LADSPA_PLUGIN label=$PA_LADSPA_LABEL control=$PA_LADSPA_CONTROLS" - - # Transfer current sink mute/volume to LADSPA sink - echo "Transferring current mute ($PA_CURRENT_MUTE) & volume ($PA_CURRENT_VOLUME%) to LADSPA sink ($PA_LADSPA_SINK)..." diff --git a/pulseaudio-equalizer-fix-locale-issues.patch b/pulseaudio-equalizer-fix-locale-issues.patch index dbd0fae..558a12f 100644 --- a/pulseaudio-equalizer-fix-locale-issues.patch +++ b/pulseaudio-equalizer-fix-locale-issues.patch @@ -4,80 +4,7 @@ PA_PREAMP='1.0' PA_CURRENT_PRESET='' -+LC_MESSAGES=C ++export LC_MESSAGES=C if [ -z "$XDG_CONFIG_HOME" ]; then CONFIG_DIR="$HOME"/.config/pulse else -@@ -110,20 +111,20 @@ fi - - # Get sink names and volumes - PA_LADSPA_SINK="ladspa_output.$PA_LADSPA_PLUGIN.$PA_LADSPA_LABEL" --PA_CURRENT_SINK=$(pacmd stat | grep --color=never 'Default sink name' | sed 's/Default sink name: //g') --PA_CURRENT_VOLUME=$(pacmd list | grep --color=never -A20 "<$PA_CURRENT_SINK>" | grep --color=never -m1 'volume: ' | grep --color=never -Po '(\d+)%' | awk 'NR==1{sub(/%/,"",$1); print $1}') -+PA_CURRENT_SINK="$(pacmd stat | sed -e '/Default sink name/!d;s/Default sink name: //g')" -+PA_CURRENT_VOLUME="$(pacmd list | iconv -c -t ascii | grep --color=never -A20 "<$PA_CURRENT_SINK>" | grep --color=never -m1 'volume: ' | grep --color=never -Po '(\d+)%' | awk 'NR==1{sub(/%/,"",$1); print $1}')" - PA_REAL_VOLUME=$((PA_CURRENT_VOLUME*65536/100)) - PA_REAL_PREAMP_FLOAT=$(echo "$PA_PREAMP*65536" | bc) - PA_REAL_PREAMP=${PA_REAL_PREAMP_FLOAT/\.*} --PA_CURRENT_MUTE=$(pacmd list-sinks | grep --color=never -A20 "<$PA_CURRENT_SINK>" | grep -m1 'muted: ' | sed 's/[\t]muted: no/0/g' | sed 's/[\t]muted: yes/1/g') -+PA_CURRENT_MUTE="$(pacmd list-sinks | iconv -c -t ascii | grep --color=never -A20 "<$PA_CURRENT_SINK>" | grep -m1 'muted: ' | sed -e 's/[\t]muted: no/0/g;s/[\t]muted: yes/1/g')" - - # Check if equalizer is running and get accurate master sink name - if [ "$PA_CURRENT_SINK" = "$PA_LADSPA_SINK" ]; then - PA_EQUALIZER_STATUS=1 -- PA_MASTER_SINK=$(pacmd info | grep --color=never -A30 "<$PA_CURRENT_SINK>" | grep --color=never -m1 'device.master_device = ' | sed 's/device.master_device = //g' | sed 's/"//g' | sed 's/^[ \t]*//') -+ PA_MASTER_SINK="$(pacmd info | iconv -c -t ascii | grep --color=never -A30 "<$PA_CURRENT_SINK>" | grep --color=never -m1 'device.master_device = ' | sed -e 's/device.master_device = //g;s/"//g;s/^[ \t]*//')" - else - PA_EQUALIZER_STATUS=0 -- PA_MASTER_SINK=$(pacmd stat | grep --color=never 'Default sink name' | sed 's/Default sink name: //g') -+ PA_MASTER_SINK="$(pacmd stat | sed -e '/Default sink name/!d;s/Default sink name: //g')" - fi - - # Check if equalizer is set as persistent -@@ -368,16 +369,16 @@ if [ "$1" = 'disable' ] || [ "$1" = 'ena - - # Unload & reload stream-restore module - echo 'Unloading & reloading stream-restore module...' -- echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | grep -B1 -m1 'name: ' | grep ' index: ' | sed 's/ index: //g')" -+ echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | iconv -c -t ascii | grep -B1 -m1 'name: ' | sed -e '/ index: /!d;s/ index: //g')" - echo >>/tmp/eqcommands.sh 'load-module module-stream-restore' - - # Unload LADSPA sink module (if it is already loaded) - echo 'Unloading module-ladspa-sink...' -- echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | grep -B1 -m1 'name: ' | grep ' index: ' | sed 's/ index: //g')" -+ echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | iconv -c -t ascii | grep -B1 -m1 'name: ' | sed -e '/ index: /!d;s/ index: //g')" - - # Move active client sinks to ALSA sink - echo "Moving active PulseAudio clients to ALSA sink ($PA_MASTER_SINK)..." -- echo >>/tmp/eqcommands.sh "$(pacmd "list-sink-inputs" | grep 'index: ' | sed 's/ index: /move-sink-input /g' | sed "s/$/ $PA_MASTER_SINK/g")" -+ echo >>/tmp/eqcommands.sh "$(pacmd "list-sink-inputs" | iconv -c -t ascii | sed -e '/index: /!d;s/ index: /move-sink-input /g;s/$/ $PA_MASTER_SINK/g')" - - # Transfer current mute/sink volume to ALSA sink - echo "Transferring current mute ($PA_CURRENT_MUTE) & volume ($PA_CURRENT_VOLUME%) to ALSA sink ($PA_MASTER_SINK)..." -@@ -397,7 +398,7 @@ if [ "$1" = 'enable' ]; then - - # Unload & reload stream-restore module with restore_device option disabled (to ensure that previously cached per-client sinks are not used) - echo 'Unloading & reloading stream-restore module...' -- echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | grep -B1 -m1 'name: ' | grep ' index: ' | sed 's/ index: //g')" -+ echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | iconv -c -t ascii | grep -B1 -m1 'name: ' | sed -e '/ index: /!d;s/ index: //g')" - echo >>/tmp/eqcommands.sh 'load-module module-stream-restore restore_device=false' - - # Load LADSPA sink module -@@ -420,7 +421,7 @@ if [ "$1" = 'enable' ]; then - - # Move currently active client sinks to LADSPA sink - echo "Moving active PulseAudio clients to LADSPA sink ($PA_LADSPA_SINK)..." -- echo >>/tmp/eqcommands.sh "$(pacmd "list-sink-inputs" | grep 'index: ' | sed 's/ index: /move-sink-input /g' | sed "s/$/ $PA_LADSPA_SINK/g")" -+ echo >>/tmp/eqcommands.sh "$(pacmd "list-sink-inputs" | iconv -c -t ascii | sed -e '/index: /!d;s/ index: /move-sink-input /g' | sed 's/$/ $PA_LADSPA_SINK/g')" - - # Execute all queued commands (for potential speed benefit)... - pacmd /dev/null -@@ -454,7 +455,7 @@ if [ "$1" = 'status' ]; then - fi - - # Refresh current sink status and display equalizer information --PA_CURRENT_SINK="$(pacmd stat | grep "Default sink name" | sed 's/Default sink name: //g')" -+PA_CURRENT_SINK="$(pacmd stat | sed -e '/Default sink name/!d;s/Default sink name: //g')" - if [ "$PA_CURRENT_SINK" = "$PA_LADSPA_SINK" ]; then - echo '-------------------------------------' - echo 'Equalizer status: [enabled]' diff --git a/pulseaudio-equalizer-use-pactl.patch b/pulseaudio-equalizer-use-pactl.patch new file mode 100644 index 0000000..a8602ab --- /dev/null +++ b/pulseaudio-equalizer-use-pactl.patch @@ -0,0 +1,127 @@ +--- a/bin/pulseaudio-equalizer.in ++++ b/bin/pulseaudio-equalizer.in +@@ -111,20 +111,20 @@ fi + + # Get sink names and volumes + PA_LADSPA_SINK="ladspa_output.$PA_LADSPA_PLUGIN.$PA_LADSPA_LABEL" +-PA_CURRENT_SINK=$(pacmd stat | grep --color=never 'Default sink name' | sed 's/Default sink name: //g') +-PA_CURRENT_VOLUME=$(pacmd list | grep --color=never -A20 "<$PA_CURRENT_SINK>" | grep --color=never -m1 'volume: ' | grep --color=never -Po '(\d+)%' | awk 'NR==1{sub(/%/,"",$1); print $1}') ++PA_CURRENT_SINK="$(pactl get-default-sink)" ++PA_CURRENT_VOLUME="$(pactl get-sink-volume "$PA_CURRENT_SINK" | grep --color=never -Eo '([[:digit:]]+)%' | awk 'NR==1{sub(/%/,"",$1); print $1}')" + PA_REAL_VOLUME=$((PA_CURRENT_VOLUME*65536/100)) + PA_REAL_PREAMP_FLOAT=$(echo "$PA_PREAMP*65536" | bc) + PA_REAL_PREAMP=${PA_REAL_PREAMP_FLOAT/\.*} +-PA_CURRENT_MUTE=$(pacmd list-sinks | grep --color=never -A20 "<$PA_CURRENT_SINK>" | grep -m1 'muted: ' | sed 's/[\t]muted: no/0/g' | sed 's/[\t]muted: yes/1/g') ++PA_CURRENT_MUTE="$(pactl get-sink-mute "$PA_CURRENT_SINK" | sed -e 's/Mute: no/0/g;s/Mute: yes/1/g')" + + # Check if equalizer is running and get accurate master sink name + if [ "$PA_CURRENT_SINK" = "$PA_LADSPA_SINK" ]; then + PA_EQUALIZER_STATUS=1 +- PA_MASTER_SINK=$(pacmd info | grep --color=never -A30 "<$PA_CURRENT_SINK>" | grep --color=never -m1 'device.master_device = ' | sed 's/device.master_device = //g' | sed 's/"//g' | sed 's/^[ \t]*//') ++ PA_MASTER_SINK="$(pactl list short modules | grep --color=never "module-ladspa-sink.*sink_name=$PA_CURRENT_SINK" | tr ' ' '\n' | sed '/^sink_master/!d;s/^sink_master=//')" + else + PA_EQUALIZER_STATUS=0 +- PA_MASTER_SINK=$(pacmd stat | grep --color=never 'Default sink name' | sed 's/Default sink name: //g') ++ PA_MASTER_SINK="$(pactl get-default-sink)" + fi + + # Check if equalizer is set as persistent +@@ -365,66 +365,62 @@ if [ "$1" = 'disable' ] || [ "$1" = 'ena + echo '-------------------------------------' + echo 'Current operation: disabling equalizer' + echo '-------------------------------------' +- echo -n >/tmp/eqcommands.sh + + # Unload & reload stream-restore module + echo 'Unloading & reloading stream-restore module...' +- echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | grep -B1 -m1 'name: ' | grep ' index: ' | sed 's/ index: //g')" +- echo >>/tmp/eqcommands.sh 'load-module module-stream-restore' +- +- # Unload LADSPA sink module (if it is already loaded) +- echo 'Unloading module-ladspa-sink...' +- echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | grep -B1 -m1 'name: ' | grep ' index: ' | sed 's/ index: //g')" ++ pactl unload-module module-stream-restore ++ pactl load-module module-stream-restore >/dev/null + + # Move active client sinks to ALSA sink + echo "Moving active PulseAudio clients to ALSA sink ($PA_MASTER_SINK)..." +- echo >>/tmp/eqcommands.sh "$(pacmd "list-sink-inputs" | grep 'index: ' | sed 's/ index: /move-sink-input /g' | sed "s/$/ $PA_MASTER_SINK/g")" ++ pactl list short sink-inputs | awk '{print $1}' | while read -r INPUT; do ++ pactl move-sink-input "$INPUT" "$PA_MASTER_SINK" ++ done ++ ++ # Unload LADSPA sink module (if it is already loaded) ++ echo 'Unloading module-ladspa-sink...' ++ pactl unload-module module-ladspa-sink + + # Transfer current mute/sink volume to ALSA sink + echo "Transferring current mute ($PA_CURRENT_MUTE) & volume ($PA_CURRENT_VOLUME%) to ALSA sink ($PA_MASTER_SINK)..." +- echo >>/tmp/eqcommands.sh "set-default-sink $PA_MASTER_SINK" +- echo >>/tmp/eqcommands.sh "set-sink-volume $PA_MASTER_SINK $PA_REAL_VOLUME" +- echo >>/tmp/eqcommands.sh "set-sink-mute $PA_MASTER_SINK $PA_CURRENT_MUTE" +- +- # Execute all queued commands (for potential speed benefit)... +- pacmd /dev/null ++ pactl set-default-sink "$PA_MASTER_SINK" ++ pactl set-sink-volume "$PA_MASTER_SINK" "$PA_REAL_VOLUME" ++ pactl set-sink-mute "$PA_MASTER_SINK" "$PA_CURRENT_MUTE" + fi + + if [ "$1" = 'enable' ]; then + echo '-------------------------------------' + echo 'Current operation: enabling equalizer' + echo '-------------------------------------' +- echo -n >/tmp/eqcommands.sh + + # Unload & reload stream-restore module with restore_device option disabled (to ensure that previously cached per-client sinks are not used) + echo 'Unloading & reloading stream-restore module...' +- echo >>/tmp/eqcommands.sh "unload-module $(pacmd list | grep -B1 -m1 'name: ' | grep ' index: ' | sed 's/ index: //g')" +- echo >>/tmp/eqcommands.sh 'load-module module-stream-restore restore_device=false' ++ pactl unload-module module-stream-restore ++ pactl load-module module-stream-restore restore_device=false >/dev/null + + # Load LADSPA sink module + echo 'Loading module-ladspa-sink...' +- echo >>/tmp/eqcommands.sh "load-module module-ladspa-sink sink_name=$PA_LADSPA_SINK master=$PA_MASTER_SINK plugin=$PA_LADSPA_PLUGIN label=$PA_LADSPA_LABEL control=$PA_LADSPA_CONTROLS" ++ pactl load-module module-ladspa-sink "sink_name=$PA_LADSPA_SINK" "sink_master=$PA_MASTER_SINK" "plugin=$PA_LADSPA_PLUGIN" "label=$PA_LADSPA_LABEL" "control=$PA_LADSPA_CONTROLS" >/dev/null + + # Transfer current sink mute/volume to LADSPA sink + echo "Transferring current mute ($PA_CURRENT_MUTE) & volume ($PA_CURRENT_VOLUME%) to LADSPA sink ($PA_LADSPA_SINK)..." +- echo >>/tmp/eqcommands.sh "set-sink-volume $PA_LADSPA_SINK $PA_REAL_VOLUME" +- echo >>/tmp/eqcommands.sh "set-sink-mute $PA_LADSPA_SINK $PA_CURRENT_MUTE" ++ pactl set-sink-volume "$PA_LADSPA_SINK" "$PA_REAL_VOLUME" ++ pactl set-sink-mute "$PA_LADSPA_SINK" "$PA_CURRENT_MUTE" + + # Unmute & set preamp level on ALSA sink (as LADSPA sink will act as primary volume control) + echo "Setting ALSA sink ($PA_MASTER_SINK) preamp (${PA_PREAMP}x)..." +- #echo >>/tmp/eqcommands.sh "set-sink-volume $PA_MASTER_SINK $PA_REAL_PREAMP" +- echo >>/tmp/eqcommands.sh "set-sink-mute $PA_MASTER_SINK 0" ++ #pactl set-sink-volume "$PA_MASTER_SINK" "$PA_REAL_PREAMP" ++ pactl set-sink-mute "$PA_MASTER_SINK" 0 + + # Set the LADSPA sink as the default + echo "Setting LADSPA sink ($PA_LADSPA_SINK) as default sink..." +- echo >>/tmp/eqcommands.sh "set-default-sink $PA_LADSPA_SINK" ++ pactl set-default-sink "$PA_LADSPA_SINK" + + # Move currently active client sinks to LADSPA sink + echo "Moving active PulseAudio clients to LADSPA sink ($PA_LADSPA_SINK)..." +- echo >>/tmp/eqcommands.sh "$(pacmd "list-sink-inputs" | grep 'index: ' | sed 's/ index: /move-sink-input /g' | sed "s/$/ $PA_LADSPA_SINK/g")" +- +- # Execute all queued commands (for potential speed benefit)... +- pacmd /dev/null ++ pactl list short sink-inputs | awk '{print $1}' | while read -r INPUT; do ++ pactl move-sink-input "$INPUT" "$PA_LADSPA_SINK" ++ done + fi + + if [ -z "$1" ] || [ "$1" = '' ] || [ "$1" = '-h' ] || [ "$1" = '--help' ]; then +@@ -455,7 +451,7 @@ if [ "$1" = 'status' ]; then + fi + + # Refresh current sink status and display equalizer information +-PA_CURRENT_SINK="$(pacmd stat | grep "Default sink name" | sed 's/Default sink name: //g')" ++PA_CURRENT_SINK="$(pactl get-default-sink)" + if [ "$PA_CURRENT_SINK" = "$PA_LADSPA_SINK" ]; then + echo '-------------------------------------' + echo 'Equalizer status: [enabled]' diff --git a/pulseaudio-equalizer.changes b/pulseaudio-equalizer.changes index cc24fcd..55a97e5 100644 --- a/pulseaudio-equalizer.changes +++ b/pulseaudio-equalizer.changes @@ -11,10 +11,13 @@ Sat Nov 6 19:51:16 UTC 2021 - Alexei Sorokin upstream. - Replace 0006-fix-desktop.patch with %suse_update_desktop_file, the icon change has been done upstream. -- Rebase and rename 0008-fix-locale-issues.patch to - pulseaudio-equalizer-fix-locale-issues.patch -- Add pulseaudio-equalizer-fix-deprecated-argument.patch: - Fix use of a deprecated module argument. +- Simplify and rename 0008-fix-locale-issues.patch to + pulseaudio-equalizer-fix-locale-issues.patch: iconv does not + appear to be necessary. +- Add pulseaudio-equalizer-use-pactl.patch: Use pactl instead of + pacmd for compatibility with other PulseAudio daemon + implementations. +- Require pulseaudio-daemon instead of pulseaudio. ------------------------------------------------------------------- Sun Feb 25 18:16:05 UTC 2018 - sor.alexei@meowr.ru diff --git a/pulseaudio-equalizer.spec b/pulseaudio-equalizer.spec index 9999683..3fac7a4 100644 --- a/pulseaudio-equalizer.spec +++ b/pulseaudio-equalizer.spec @@ -26,16 +26,15 @@ URL: https://github.com/pulseaudio-equalizer-ladspa/equalizer Source: https://github.com/pulseaudio-equalizer-ladspa/equalizer/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz # PATCH-FIX-OPENSUSE pulseaudio-equalizer-fix-locale-issues.patch sor.alexei@meowr.ru -- Fix issues on non-Latin systems. Patch0: pulseaudio-equalizer-fix-locale-issues.patch -# PATCH-FIX-OPENSUSE pulseaudio-equalizer-fix-deprecated-argument.patch sor.alexei@meowr.ru -- Fix use of a deprecated module argument. -Patch1: pulseaudio-equalizer-fix-deprecated-argument.patch +# PATCH-FIX-OPENSUSE pulseaudio-equalizer-use-pactl.patch sor.alexei@meowr.ru -- Use pactl instead of pacmd. +Patch1: pulseaudio-equalizer-use-pactl.patch BuildRequires: gobject-introspection-devel BuildRequires: meson BuildRequires: python3 BuildRequires: update-desktop-files Requires: bc Requires: ladspa-swh-plugins -# No support for pipewire-pulseaudio -Requires: pulseaudio +Requires: pulseaudio-daemon Requires: pulseaudio-utils Requires: python3-gobject Requires: python3-gobject-Gdk From 833a6fb373b1687f9aa03d9bd28407b33cd03799cf8e69ce6e2e319d5868c0eb Mon Sep 17 00:00:00 2001 From: Alexei Sorokin Date: Mon, 8 Nov 2021 16:13:47 +0000 Subject: [PATCH 8/8] OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/pulseaudio-equalizer?expand=0&rev=24 --- pulseaudio-equalizer.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pulseaudio-equalizer.spec b/pulseaudio-equalizer.spec index 3fac7a4..f549c08 100644 --- a/pulseaudio-equalizer.spec +++ b/pulseaudio-equalizer.spec @@ -48,11 +48,12 @@ GUI for PulseAudio's LADSPA interface using Steve Harris' Multiband EQ %autosetup -n equalizer-%{version} -p1 %build -%meson +%meson -Dpurelib=%{python3_sitelib} %meson_build %install %meson_install +%py3_compile %{buildroot}%{python3_sitelib}/pulseeq/ sed -i '/^#!/s|env python3$|python3|' %{buildroot}%{_bindir}/%{name}-gtk %suse_update_desktop_file -r com.github.%{_name}.Equalizer AudioVideo Mixer GTK