* [gentoo-commits] repo/proj/guru:master commit in: gui-apps/swaync/files/, gui-apps/swaync/
@ 2022-04-06 0:07 Ronny Gutbrod
0 siblings, 0 replies; 3+ messages in thread
From: Ronny Gutbrod @ 2022-04-06 0:07 UTC (permalink / raw
To: gentoo-commits
commit: e9c21faf4101883e9de250041359ffa6eff4911b
Author: Jonas Frei <freijon <AT> pm <DOT> me>
AuthorDate: Tue Apr 5 19:38:46 2022 +0000
Commit: Ronny Gutbrod <gentoo <AT> tastytea <DOT> de>
CommitDate: Tue Apr 5 19:44:43 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=e9c21faf
gui-apps/swaync: Added '+man' USE flag
Closes: https://bugs.gentoo.org/show_bug.cgi?id=836832
Signed-off-by: Jonas Frei <freijon <AT> pm.me>
.../swaync-0.5-dont-force-build-manpages.patch | 63 ++++++++++++++++++++++
gui-apps/swaync/metadata.xml | 1 +
.../{swaync-0.5.ebuild => swaync-0.5-r1.ebuild} | 11 +++-
3 files changed, 73 insertions(+), 2 deletions(-)
diff --git a/gui-apps/swaync/files/swaync-0.5-dont-force-build-manpages.patch b/gui-apps/swaync/files/swaync-0.5-dont-force-build-manpages.patch
new file mode 100644
index 000000000..80f659fdc
--- /dev/null
+++ b/gui-apps/swaync/files/swaync-0.5-dont-force-build-manpages.patch
@@ -0,0 +1,63 @@
+--- swaync/meson.build 2022-04-03 18:03:10.000000000 +0200
++++ swaync/meson.build 2022-04-05 21:21:03.543535988 +0200
+@@ -89,33 +89,34 @@
+ endif
+
+ # Man pages
+-man_pages = get_option('man-pages')
+-scdoc = dependency('scdoc', version: '>=1.9.2', native: true, required: man_pages)
+-if scdoc.found()
+- scdoc_prog = find_program(scdoc.get_pkgconfig_variable('scdoc'), native: true)
++if get_option('man-pages')
++ scdoc = dependency('scdoc', version: '>=1.9.2', native: true, required: true)
++ if scdoc.found()
++ scdoc_prog = find_program(scdoc.get_pkgconfig_variable('scdoc'), native: true)
+
+- mandir = get_option('mandir')
+- man_files = [
+- 'swaync.1.scd',
+- 'swaync.5.scd',
+- 'swaync-client.1.scd',
+- ]
++ mandir = get_option('mandir')
++ man_files = [
++ 'swaync.1.scd',
++ 'swaync.5.scd',
++ 'swaync-client.1.scd',
++ ]
+
+- foreach filename : man_files
+- topic = filename.split('.')[-3].split('/')[-1]
+- section = filename.split('.')[-2]
+- output = '@0@.@1@'.format(topic, section)
+- message(mandir, section, '@0@/man@1@'.format(mandir, section))
++ foreach filename : man_files
++ topic = filename.split('.')[-3].split('/')[-1]
++ section = filename.split('.')[-2]
++ output = '@0@.@1@'.format(topic, section)
++ message(mandir, section, '@0@/man@1@'.format(mandir, section))
+
+- custom_target(
+- output,
+- input: join_paths('man', filename),
+- output: output,
+- command: scdoc_prog,
+- install: true,
+- feed: true,
+- capture: true,
+- install_dir: '@0@/man@1@'.format(mandir, section)
+- )
+- endforeach
++ custom_target(
++ output,
++ input: join_paths('man', filename),
++ output: output,
++ command: scdoc_prog,
++ install: true,
++ feed: true,
++ capture: true,
++ install_dir: '@0@/man@1@'.format(mandir, section)
++ )
++ endforeach
++ endif
+ endif
diff --git a/gui-apps/swaync/metadata.xml b/gui-apps/swaync/metadata.xml
index e529667b6..71f15d7df 100644
--- a/gui-apps/swaync/metadata.xml
+++ b/gui-apps/swaync/metadata.xml
@@ -10,6 +10,7 @@
<bugs-to>https://github.com/ErikReider/SwayNotificationCenter/issues</bugs-to>
</upstream>
<use>
+ <flag name="man">Build and install man pages</flag>
<flag name="scripting">Enable notification scripting</flag>
</use>
</pkgmetadata>
diff --git a/gui-apps/swaync/swaync-0.5.ebuild b/gui-apps/swaync/swaync-0.5-r1.ebuild
similarity index 83%
rename from gui-apps/swaync/swaync-0.5.ebuild
rename to gui-apps/swaync/swaync-0.5-r1.ebuild
index 4878af1c0..5f84d19ed 100644
--- a/gui-apps/swaync/swaync-0.5.ebuild
+++ b/gui-apps/swaync/swaync-0.5-r1.ebuild
@@ -14,7 +14,10 @@ S="${WORKDIR}/${MY_PN}-${PV}"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"
-IUSE="scripting"
+IUSE="+man scripting"
+PATCHES=(
+ "${FILESDIR}/${P}-dont-force-build-manpages.patch"
+)
DEPEND="
dev-libs/glib:2
@@ -29,7 +32,10 @@ DEPEND="
x11-libs/gtk+:3
"
RDEPEND="${DEPEND}"
-BDEPEND="$(vala_depend)"
+BDEPEND="
+ $(vala_depend)
+ man? ( app-text/scdoc )
+"
src_prepare() {
default
@@ -38,6 +44,7 @@ src_prepare() {
src_configure() {
local emesonargs=(
+ $(meson_use man man-pages)
$(meson_use scripting)
)
meson_src_configure
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: gui-apps/swaync/files/, gui-apps/swaync/
@ 2022-05-16 12:33 Andrew Ammerlaan
0 siblings, 0 replies; 3+ messages in thread
From: Andrew Ammerlaan @ 2022-05-16 12:33 UTC (permalink / raw
To: gentoo-commits
commit: 1236167b5f1ceaf8f2beac8237edb25fbc02a44c
Author: Jonas Frei <freijon <AT> pm <DOT> me>
AuthorDate: Sat May 14 12:54:59 2022 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Sat May 14 12:54:59 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=1236167b
gui-apps/swaync: add 0.6, drop 0.5-r1
Signed-off-by: Jonas Frei <freijon <AT> pm.me>
gui-apps/swaync/Manifest | 2 +-
.../swaync-0.5-dont-force-build-manpages.patch | 63 ----------------------
.../{swaync-0.5-r1.ebuild => swaync-0.6.ebuild} | 3 --
3 files changed, 1 insertion(+), 67 deletions(-)
diff --git a/gui-apps/swaync/Manifest b/gui-apps/swaync/Manifest
index e493a3527..75cdbcfd2 100644
--- a/gui-apps/swaync/Manifest
+++ b/gui-apps/swaync/Manifest
@@ -1 +1 @@
-DIST swaync-0.5.tar.gz 3135287 BLAKE2B a9cd7eb2cc233b20c79bd03cb41876a8435f29b014196475992dfe2623fe12f16d45edeabfa3b31631cf5c1835a14869ddaaa4c0602c745fc73fc9d515b9357c SHA512 4952470c0745e44800b241ac67d39a1d417c8dda550227e9f93e4e81709960616dc5bcf406543ad14aba357c2191fd6a7bf02dffaa170351a3232f9a3612dc8a
+DIST swaync-0.6.tar.gz 3138783 BLAKE2B 878fc65947b3b33acbbd7486aa5bba4768696d48a3ea012550f23479732e345893c7be7f05369e0b4e5290d7c9d1c3c6e9dc086586ff38e25c3a1cbf5835c01d SHA512 8ec84ec2ec336e8302c5761c564f9e2a08ea8e6c94c436886c698a1254af36a77eb63fe51dc365edb9cdfec5491cc447b6c4731c7d7cb81dda211181b783ef27
diff --git a/gui-apps/swaync/files/swaync-0.5-dont-force-build-manpages.patch b/gui-apps/swaync/files/swaync-0.5-dont-force-build-manpages.patch
deleted file mode 100644
index 80f659fdc..000000000
--- a/gui-apps/swaync/files/swaync-0.5-dont-force-build-manpages.patch
+++ /dev/null
@@ -1,63 +0,0 @@
---- swaync/meson.build 2022-04-03 18:03:10.000000000 +0200
-+++ swaync/meson.build 2022-04-05 21:21:03.543535988 +0200
-@@ -89,33 +89,34 @@
- endif
-
- # Man pages
--man_pages = get_option('man-pages')
--scdoc = dependency('scdoc', version: '>=1.9.2', native: true, required: man_pages)
--if scdoc.found()
-- scdoc_prog = find_program(scdoc.get_pkgconfig_variable('scdoc'), native: true)
-+if get_option('man-pages')
-+ scdoc = dependency('scdoc', version: '>=1.9.2', native: true, required: true)
-+ if scdoc.found()
-+ scdoc_prog = find_program(scdoc.get_pkgconfig_variable('scdoc'), native: true)
-
-- mandir = get_option('mandir')
-- man_files = [
-- 'swaync.1.scd',
-- 'swaync.5.scd',
-- 'swaync-client.1.scd',
-- ]
-+ mandir = get_option('mandir')
-+ man_files = [
-+ 'swaync.1.scd',
-+ 'swaync.5.scd',
-+ 'swaync-client.1.scd',
-+ ]
-
-- foreach filename : man_files
-- topic = filename.split('.')[-3].split('/')[-1]
-- section = filename.split('.')[-2]
-- output = '@0@.@1@'.format(topic, section)
-- message(mandir, section, '@0@/man@1@'.format(mandir, section))
-+ foreach filename : man_files
-+ topic = filename.split('.')[-3].split('/')[-1]
-+ section = filename.split('.')[-2]
-+ output = '@0@.@1@'.format(topic, section)
-+ message(mandir, section, '@0@/man@1@'.format(mandir, section))
-
-- custom_target(
-- output,
-- input: join_paths('man', filename),
-- output: output,
-- command: scdoc_prog,
-- install: true,
-- feed: true,
-- capture: true,
-- install_dir: '@0@/man@1@'.format(mandir, section)
-- )
-- endforeach
-+ custom_target(
-+ output,
-+ input: join_paths('man', filename),
-+ output: output,
-+ command: scdoc_prog,
-+ install: true,
-+ feed: true,
-+ capture: true,
-+ install_dir: '@0@/man@1@'.format(mandir, section)
-+ )
-+ endforeach
-+ endif
- endif
diff --git a/gui-apps/swaync/swaync-0.5-r1.ebuild b/gui-apps/swaync/swaync-0.6.ebuild
similarity index 93%
rename from gui-apps/swaync/swaync-0.5-r1.ebuild
rename to gui-apps/swaync/swaync-0.6.ebuild
index 5f84d19ed..b9f015b2d 100644
--- a/gui-apps/swaync/swaync-0.5-r1.ebuild
+++ b/gui-apps/swaync/swaync-0.6.ebuild
@@ -15,9 +15,6 @@ LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="+man scripting"
-PATCHES=(
- "${FILESDIR}/${P}-dont-force-build-manpages.patch"
-)
DEPEND="
dev-libs/glib:2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: gui-apps/swaync/files/, gui-apps/swaync/
@ 2023-05-01 9:20 Viorel Munteanu
0 siblings, 0 replies; 3+ messages in thread
From: Viorel Munteanu @ 2023-05-01 9:20 UTC (permalink / raw
To: gentoo-commits
commit: 0d0bb26d22717b55a787158600850b88d53b2f5a
Author: Joe Kappus <joe <AT> wt <DOT> gd>
AuthorDate: Sun Apr 30 07:07:44 2023 +0000
Commit: Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
CommitDate: Sun Apr 30 07:09:04 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=0d0bb26d
gui-apps/swaync: add 0.8.0
Signed-off-by: Joe Kappus <joe <AT> wt.gd>
gui-apps/swaync/Manifest | 1 +
gui-apps/swaync/files/swaync-0.8.0-pulsefree.patch | 942 +++++++++++++++++++++
gui-apps/swaync/swaync-0.8.0.ebuild | 52 ++
3 files changed, 995 insertions(+)
diff --git a/gui-apps/swaync/Manifest b/gui-apps/swaync/Manifest
index cd310e629..1957ad3a6 100644
--- a/gui-apps/swaync/Manifest
+++ b/gui-apps/swaync/Manifest
@@ -1 +1,2 @@
DIST swaync-0.7.3.tar.gz 3155355 BLAKE2B d976d908c12eef9a0fe71e269fd4dd1bca44cb7a389ea3b6fbcf7ef0a7cfd17623e4fa03fb61cb7d5a26837deafd0b3f8197774fe1ce17c47d512632d5aedc81 SHA512 fe049fae8ece0e54badd44ea6d04f7fa0a09c7cb258612897dbcb4b7b60ef28fc19113ec4b84520ac8226901b9d5a0b9cd11c3b071d9e90e840ac7e4595a51fc
+DIST swaync-0.8.0.tar.gz 3170861 BLAKE2B a43fd4d095b3bb1b39ff914cf3f09f9d97807d95365839a30c46c607c601c8e557e4365e3c23cbf650dca7b5a51523e4fbc8ecf49d7863b717b04e0c90e04f46 SHA512 c1ee542fff2b6b06cd0def99c96bede5cb3dc576ab4e0498bd110f1b6e3df2786526d5ec58dbfc7f5c488afc2c1c85541e878c76118486530b8937a5e13a0799
diff --git a/gui-apps/swaync/files/swaync-0.8.0-pulsefree.patch b/gui-apps/swaync/files/swaync-0.8.0-pulsefree.patch
new file mode 100644
index 000000000..5ef56ca47
--- /dev/null
+++ b/gui-apps/swaync/files/swaync-0.8.0-pulsefree.patch
@@ -0,0 +1,942 @@
+diff --git a/.github/workflows/arch-build.yml b/.github/workflows/arch-build.yml
+index aa7ac12..395339a 100644
+--- a/.github/workflows/arch-build.yml
++++ b/.github/workflows/arch-build.yml
+@@ -18,7 +18,7 @@ jobs:
+ container: archlinux:latest
+ runs-on: ubuntu-latest
+ env:
+- PACKAGES: meson gtk3 gobject-introspection vala json-glib libhandy gtk-layer-shell scdoc libpulse libgee
++ PACKAGES: meson gtk3 gobject-introspection vala json-glib libhandy gtk-layer-shell scdoc
+ steps:
+ - name: Install packages
+ run: |
+diff --git a/.github/workflows/ubuntu-build.yml b/.github/workflows/ubuntu-build.yml
+index e29f197..61d119d 100644
+--- a/.github/workflows/ubuntu-build.yml
++++ b/.github/workflows/ubuntu-build.yml
+@@ -19,7 +19,7 @@ jobs:
+ runs-on: ubuntu-latest
+ env:
+ DEBIAN_FRONTEND: noninteractive
+- PACKAGES: meson libwayland-dev libgtk-3-dev gobject-introspection libgirepository1.0-dev valac libjson-glib-dev libhandy-1-dev libgtk-layer-shell-dev scdoc libgee-0.8-dev libpulse-dev
++ PACKAGES: meson libwayland-dev libgtk-3-dev gobject-introspection libgirepository1.0-dev valac libjson-glib-dev libhandy-1-dev libgtk-layer-shell-dev scdoc
+ steps:
+ - name: Install packages
+ run: |
+diff --git a/README.md b/README.md
+index 5de6365..2bd742d 100644
+--- a/README.md
++++ b/README.md
+@@ -53,7 +53,6 @@ These widgets can be customized, added, removed and even reordered
+ - Mpris (Media player controls for Spotify, Firefox, Chrome, etc...)
+ - Menubar with dropdown and buttons
+ - Button grid
+-- Volume slider using PulseAudio
+ - Backlight slider
+
+ ## Planned Features
+diff --git a/build-scripts/PKGBUILD b/build-scripts/PKGBUILD
+index bdcbdaf..5df0d85 100644
+--- a/build-scripts/PKGBUILD
++++ b/build-scripts/PKGBUILD
+@@ -11,7 +11,7 @@ arch=(
+ 'armv7h' # ARM v7 hardfloat
+ )
+ license=(GPL3)
+-depends=("gtk3" "gtk-layer-shell" "dbus" "glib2" "gobject-introspection" "libgee" "json-glib" "libhandy" "libpulse")
++depends=("gtk3" "gtk-layer-shell" "dbus" "glib2" "gobject-introspection" "libgee" "json-glib" "libhandy")
+ conflicts=("swaync" "swaync-client")
+ provides=("swaync" "swaync-client")
+ makedepends=(vala meson git scdoc)
+diff --git a/build-scripts/PKGBUILD-git b/build-scripts/PKGBUILD-git
+index 6effc15..53de290 100644
+--- a/build-scripts/PKGBUILD-git
++++ b/build-scripts/PKGBUILD-git
+@@ -11,7 +11,7 @@ arch=(
+ 'armv7h' # ARM v7 hardfloat
+ )
+ license=('GPL3')
+-depends=("gtk3" "gtk-layer-shell" "dbus" "glib2" "gobject-introspection" "libgee" "json-glib" "libhandy" "libpulse" )
++depends=("gtk3" "gtk-layer-shell" "dbus" "glib2" "gobject-introspection" "libgee" "json-glib" "libhandy")
+ conflicts=("swaync" "swaync-client")
+ provides=("swaync" "swaync-client")
+ makedepends=(vala meson git scdoc)
+diff --git a/build-scripts/swaync.rpkg.spec b/build-scripts/swaync.rpkg.spec
+index a16b073..b2ef198 100644
+--- a/build-scripts/swaync.rpkg.spec
++++ b/build-scripts/swaync.rpkg.spec
+@@ -23,7 +23,6 @@ BuildRequires: libhandy-devel >= 1.4.0
+ BuildRequires: systemd-devel
+ BuildRequires: systemd
+ BuildRequires: scdoc
+-BuildRequires: pulseaudio-libs-devel
+ %{?systemd_requires}
+
+ %description
+diff --git a/man/swaync.5.scd b/man/swaync.5.scd
+index ba83f55..f4c0157 100644
+--- a/man/swaync.5.scd
++++ b/man/swaync.5.scd
+@@ -375,16 +375,6 @@ config file to be able to detect config errors
+ description: "Command to be executed on click" ++
+ description: A list of actions containing a label and a command ++
+ description: A grid of buttons that execute shell commands ++
+- *volume*++
+- type: object ++
+- css class: widget-volume ++
+- properties: ++
+- label: ++
+- type: string ++
+- optional: true ++
+- default: "Volume" ++
+- description: Text displayed in front of the volume slider ++
+- description: Slider to control pulse volume ++
+ *backlight*++
+ type: object ++
+ css class: widget-backlight ++
+@@ -431,7 +421,6 @@ config file to be able to detect config errors
+ default: "Clear All" ++
+ description: "Clear All" button text ++
+ description: Displayed if notifications are inhibited.
+-
+ example:
+ ```
+ {
+diff --git a/src/configSchema.json b/src/configSchema.json
+index 9bbb649..c2bd07b 100644
+--- a/src/configSchema.json
++++ b/src/configSchema.json
+@@ -293,9 +293,6 @@
+ "^menubar(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
+ "$ref": "#/widgets/menubar"
+ },
+- "^volume(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
+- "$ref": "#/widgets/volume"
+- },
+ "^backlight(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
+ "$ref": "#/widgets/backlight"
+ },
+@@ -446,18 +443,6 @@
+ }
+ }
+ },
+- "volume": {
+- "type": "object",
+- "description": "Slider to control pulse volume",
+- "additionalProperties": false,
+- "properties": {
+- "label": {
+- "type": "string",
+- "description": "Text displayed in front of the volume slider",
+- "default": "Volume"
+- }
+- }
+- },
+ "backlight": {
+ "type": "object",
+ "description": "Slider to control monitor brightness",
+diff --git a/src/controlCenter/widgets/factory.vala b/src/controlCenter/widgets/factory.vala
+index aea178d..f2ed445 100644
+--- a/src/controlCenter/widgets/factory.vala
++++ b/src/controlCenter/widgets/factory.vala
+@@ -26,9 +26,6 @@ namespace SwayNotificationCenter.Widgets {
+ case "buttons-grid":
+ widget = new ButtonsGrid (suffix, swaync_daemon, noti_daemon);
+ break;
+- case "volume":
+- widget = new Volume (suffix, swaync_daemon, noti_daemon);
+- break;
+ case "backlight":
+ widget = new Backlight (suffix, swaync_daemon, noti_daemon);
+ break;
+diff --git a/src/controlCenter/widgets/volume/pulseDaemon.vala b/src/controlCenter/widgets/volume/pulseDaemon.vala
+deleted file mode 100644
+index 766bf45..0000000
+--- a/src/controlCenter/widgets/volume/pulseDaemon.vala
++++ /dev/null
+@@ -1,531 +0,0 @@
+-// From SwaySettings PulseAudio page: https://github.com/ErikReider/SwaySettings/blob/407c9e99dd3e50a0f09c64d94a9e6ff741488378/src/Pages/Pulse/PulseDaemon.vala
+-using PulseAudio;
+-using Gee;
+-
+-namespace SwayNotificationCenter.Widgets {
+- /**
+- * Loosely based off of Elementary OS switchboard-plug-sound
+- * https://github.com/elementary/switchboard-plug-sound
+- */
+- public class PulseDaemon : Object {
+- private Context context;
+- private GLibMainLoop mainloop;
+- private bool quitting = false;
+-
+- public bool running { get; private set; }
+-
+- private string default_sink_name { get; private set; }
+- private string default_source_name { get; private set; }
+-
+- private PulseDevice ? default_sink = null;
+-
+- public HashMap<string, PulseDevice> sinks { get; private set; }
+-
+- construct {
+- mainloop = new GLibMainLoop ();
+-
+- sinks = new HashMap<string, PulseDevice> ();
+- }
+-
+- public void start () {
+- get_context ();
+- }
+-
+- public void close () {
+- quitting = true;
+- context.disconnect ();
+- context = null;
+- }
+-
+- public signal void change_default_device (PulseDevice device);
+-
+- public signal void new_device (PulseDevice device);
+- public signal void change_device (PulseDevice device);
+- public signal void remove_device (PulseDevice device);
+-
+- private void get_context () {
+- var ctx = new Context (mainloop.get_api (), null);
+- ctx.set_state_callback ((ctx) => {
+- debug ("Pulse Status: %s\n", ctx.get_state ().to_string ());
+- switch (ctx.get_state ()) {
+- case Context.State.CONNECTING:
+- case Context.State.AUTHORIZING:
+- case Context.State.SETTING_NAME:
+- break;
+- case Context.State.READY:
+- ctx.set_subscribe_callback (subscription);
+- ctx.subscribe (Context.SubscriptionMask.SINK_INPUT |
+- Context.SubscriptionMask.SINK |
+- Context.SubscriptionMask.CARD |
+- Context.SubscriptionMask.SERVER);
+- // Init data
+- ctx.get_server_info (this.get_server_info);
+- running = true;
+- break;
+- case Context.State.TERMINATED:
+- case Context.State.FAILED:
+- running = false;
+- if (quitting) {
+- quitting = false;
+- break;
+- }
+- stderr.printf (
+- "PulseAudio connection lost. Will retry connection.\n");
+- get_context ();
+- break;
+- default:
+- running = false;
+- stderr.printf ("Connection failure: %s\n",
+- PulseAudio.strerror (ctx.errno ()));
+- break;
+- }
+- });
+- if (ctx.connect (
+- null, Context.Flags.NOFAIL, null) < 0) {
+- stdout.printf ("pa_context_connect() failed: %s\n",
+- PulseAudio.strerror (ctx.errno ()));
+- }
+- this.context = ctx;
+- }
+-
+- private void subscription (Context ctx,
+- Context.SubscriptionEventType t,
+- uint32 index) {
+- var type = t & Context.SubscriptionEventType.FACILITY_MASK;
+- var event = t & Context.SubscriptionEventType.TYPE_MASK;
+- switch (type) {
+- case Context.SubscriptionEventType.SINK:
+- switch (event) {
+- default: break;
+- case Context.SubscriptionEventType.NEW:
+- case Context.SubscriptionEventType.CHANGE:
+- ctx.get_sink_info_by_index (index, this.get_sink_info);
+- break;
+- case Context.SubscriptionEventType.REMOVE:
+- foreach (var sink in sinks.values) {
+- if (sink.device_index != index) continue;
+- sink.removed = true;
+- sink.is_default = false;
+- this.remove_device (sink);
+- break;
+- }
+- break;
+- }
+- break;
+- case Context.SubscriptionEventType.CARD:
+- switch (event) {
+- default: break;
+- case Context.SubscriptionEventType.NEW:
+- case Context.SubscriptionEventType.CHANGE:
+- ctx.get_card_info_by_index (index, this.get_card_info);
+- break;
+- case Context.SubscriptionEventType.REMOVE:
+- // A safe way of removing the sink_input
+- var iter = sinks.map_iterator ();
+- while (iter.next ()) {
+- var device = iter.get_value ();
+- if (device.card_index != index) continue;
+- device.removed = true;
+- device.is_default = false;
+- iter.unset ();
+- this.remove_device (device);
+- break;
+- }
+- break;
+- }
+- break;
+- case Context.SubscriptionEventType.SERVER:
+- ctx.get_server_info (this.get_server_info);
+- break;
+- default: break;
+- }
+- }
+-
+- /*
+- * Getters
+- */
+-
+- /**
+- * Gets called when any server value changes like default devices
+- * Calls `get_card_info_list` and `get_sink_info_list`
+- */
+- private void get_server_info (Context ctx, ServerInfo ? info) {
+- if (this.default_sink_name == null) {
+- this.default_sink_name = info.default_sink_name;
+- }
+- if (this.default_sink_name != info.default_sink_name) {
+- this.default_sink_name = info.default_sink_name;
+- }
+-
+- ctx.get_card_info_list (this.get_card_info);
+- ctx.get_sink_info_list (this.get_sink_info);
+- }
+-
+- private void get_card_info (Context ctx, CardInfo ? info, int eol) {
+- if (info == null || eol != 0) return;
+-
+- unowned string ? description = info.proplist
+- .gets ("device.description");
+- unowned string ? props_icon = info.proplist
+- .gets ("device.icon_name");
+-
+- PulseDevice[] ports = {};
+- foreach (var port in info.ports) {
+- if (port->available == PortAvailable.NO) continue;
+-
+- bool is_input = port->direction == Direction.INPUT;
+- HashMap<string, PulseDevice> devices = this.sinks;
+- string id = PulseDevice.get_hash_map_key (
+- description, port.name);
+-
+- bool has_device = devices.has_key (id);
+- PulseDevice device = has_device
+- ? devices.get (id) : new PulseDevice ();
+- bool device_is_removed = device.removed;
+- device.removed = false;
+-
+- device.is_bluetooth = info.proplist.gets ("device.api") == "bluez5";
+-
+- device.card_index = info.index;
+- device.direction = port.direction;
+-
+- device.card_name = info.name;
+- device.card_description = description;
+- device.card_active_profile = info.active_profile2->name;
+-
+- device.port_name = port.name;
+- device.port_description = port.description;
+- device.port_id = port->proplist.gets ("card.profile.port");
+-
+- // Get port profiles2 (profiles is "Superseded by profiles2")
+- // and sort largest priority first
+- var profiles = new ArrayList<unowned CardProfileInfo2 *>
+- .wrap (port->profiles2);
+-
+- profiles.sort ((a, b) => {
+- if (a->priority == b->priority) return 0;
+- return a.priority > b.priority ? -1 : 1;
+- });
+- string[] new_profiles = {};
+- Array<PulseCardProfile> pulse_profiles = new Array<PulseCardProfile> ();
+- foreach (var profile in profiles) {
+- new_profiles += profile->name;
+-
+- var card_profile = new PulseCardProfile (profile);
+- pulse_profiles.append_val (card_profile);
+- if (profile->name == device.card_active_profile) {
+- device.active_profile = card_profile;
+- }
+- }
+- device.port_profiles = new_profiles;
+- device.profiles = pulse_profiles;
+-
+- device.icon_name = port->proplist.gets ("device.icon_name")
+- ?? props_icon;
+- if (device.icon_name == null) {
+- device.icon_name = is_input
+- ? "microphone-sensitivity-high"
+- : "audio-speakers";
+- }
+- devices.set (id, device);
+- ports += device;
+- if (!has_device || device_is_removed) {
+- this.new_device (device);
+- }
+- }
+-
+- /** Removes ports that are no longer available */
+- var iter = sinks.map_iterator ();
+- while (iter.next ()) {
+- var device = iter.get_value ();
+- if (device.card_index != info.index) continue;
+- bool found = false;
+- foreach (var p in ports) {
+- if (device.get_current_hash_key ()
+- == p.get_current_hash_key ()) {
+- found = true;
+- break;
+- }
+- }
+- if (!found) {
+- iter.unset ();
+- remove_device (device);
+- break;
+- }
+- }
+- }
+-
+- private void get_sink_info (Context ctx, SinkInfo ? info, int eol) {
+- if (info == null || eol != 0) return;
+-
+- bool found = false;
+- foreach (PulseDevice device in sinks.values) {
+- if (device.card_index == info.card) {
+- // Sets the name and index to profiles that aren't active
+- // Ex: The HDMI audio port that's not active
+- device.device_name = info.name;
+- device.device_description = info.description;
+- device.device_index = info.index;
+- // If the current selected sink profile is this
+- if (info.active_port != null
+- && info.active_port->name == device.port_name) {
+- found = true;
+-
+- device.card_sink_port_name = info.active_port->name;
+- bool is_default =
+- device.device_name == this.default_sink_name;
+- device.is_default = is_default;
+-
+- device.is_muted = info.mute == 1;
+-
+- device.is_virtual = info.proplist.gets ("node.virtual") == "true";
+-
+- device.cvolume = info.volume;
+- device.channel_map = info.channel_map;
+- device.balance = device.cvolume
+- .get_balance (device.channel_map);
+- device.volume_operations.foreach ((op) => {
+- if (op.get_state () != Operation.State.RUNNING) {
+- device.volume_operations.remove (op);
+- }
+- return Source.CONTINUE;
+- });
+- if (device.volume_operations.is_empty) {
+- device.volume = volume_to_double (
+- device.cvolume.max ());
+- }
+-
+- if (is_default) {
+- this.default_sink = device;
+- this.change_default_device (device);
+- }
+- }
+- this.change_device (device);
+- }
+- }
+- // If not found, it's a cardless device
+- if (found) return;
+-
+- HashMap<string, PulseDevice> devices = this.sinks;
+- string id = PulseDevice.get_hash_map_key (
+- info.index.to_string (), info.description);
+- bool has_device = devices.has_key (id);
+- PulseDevice device = has_device ? devices.get (id) : new PulseDevice ();
+-
+- bool device_is_removed = device.removed;
+- device.removed = false;
+-
+- device.has_card = false;
+-
+- device.direction = PulseAudio.Direction.OUTPUT;
+-
+- device.device_name = info.name;
+- device.device_description = info.description;
+- device.device_index = info.index;
+-
+- bool is_default = device.device_name == this.default_source_name;
+- device.is_default = is_default;
+-
+- device.is_muted = info.mute == 1;
+-
+- device.is_virtual = info.proplist.gets ("node.virtual") == "true";
+-
+- device.icon_name = "application-x-executable-symbolic";
+-
+- device.cvolume = info.volume;
+- device.channel_map = info.channel_map;
+- device.balance = device.cvolume
+- .get_balance (device.channel_map);
+- device.volume_operations.foreach ((op) => {
+- if (op.get_state () != Operation.State.RUNNING) {
+- device.volume_operations.remove (op);
+- }
+- return Source.CONTINUE;
+- });
+- if (device.volume_operations.is_empty) {
+- device.volume = volume_to_double (
+- device.cvolume.max ());
+- }
+-
+- devices.set (id, device);
+-
+- if (is_default) {
+- this.default_sink = device;
+- this.change_default_device (device);
+- }
+- if (!has_device || device_is_removed) {
+- this.new_device (device);
+- }
+- this.change_device (device);
+- }
+-
+- /*
+- * Setters
+- */
+- public void set_device_volume (PulseDevice device, double volume) {
+- device.volume_operations.foreach ((operation) => {
+- if (operation.get_state () == Operation.State.RUNNING) {
+- operation.cancel ();
+- }
+-
+- device.volume_operations.remove (operation);
+- return GLib.Source.CONTINUE;
+- });
+-
+- var cvol = device.cvolume;
+- cvol.scale (double_to_volume (volume));
+- Operation ? operation = null;
+- if (device.direction == Direction.OUTPUT) {
+- operation = context.set_sink_volume_by_name (
+- device.device_name, cvol);
+- }
+-
+- if (operation != null) {
+- device.volume_operations.add (operation);
+- }
+- }
+-
+- public async void set_default_device (PulseDevice device) {
+- if (device == null) return;
+- bool is_input = device.direction == Direction.INPUT;
+-
+- // Only set port and card profile if the device is attached to a card
+- if (device.has_card) {
+- // Gets the profile that includes support for your other device
+- string profile_name = device.port_profiles[0];
+- PulseDevice alt_device = default_sink;
+- if (alt_device != null) {
+- foreach (var profile in device.port_profiles) {
+- if (profile in alt_device.port_profiles) {
+- profile_name = profile;
+- break;
+- }
+- }
+- }
+-
+- if (profile_name != device.card_active_profile) {
+- yield set_card_profile_by_index (profile_name, device);
+- yield wait_for_update<string> (device, "device-name");
+- }
+-
+- if (!is_input) {
+- if (device.port_name != device.card_sink_port_name) {
+- debug ("Setting port to: %s", device.port_name);
+- yield set_sink_port_by_name (device);
+- }
+- }
+-
+- if (device.device_name == null) {
+- yield wait_for_update<string> (device, "device-name");
+- }
+- }
+-
+- if (!is_input) {
+- if (device.device_name != default_sink_name) {
+- debug ("Setting default sink to: %s", device.device_name);
+- yield set_default_sink (device);
+- }
+- }
+- }
+-
+- private async void wait_for_update<T> (PulseDevice device,
+- string prop_name) {
+- SourceFunc callback = wait_for_update.callback;
+- ulong handler_id = 0;
+- handler_id = device.notify[prop_name].connect ((s, p) => {
+- T prop_value;
+- device.get (prop_name, out prop_value);
+- if (prop_value != null) {
+- device.disconnect (handler_id);
+- Idle.add ((owned) callback);
+- }
+- });
+- yield;
+- }
+-
+- public async void set_bluetooth_card_profile (PulseCardProfile profile,
+- PulseDevice device) {
+- context.set_card_profile_by_index (device.card_index,
+- profile.name,
+- (c, success) => {
+- if (success == 1) {
+- set_bluetooth_card_profile.callback ();
+- } else {
+- stderr.printf ("setting the card %s profile to %s failed\n",
+- device.card_name, profile.name);
+- }
+- });
+- yield;
+- // Wait until the device has been updated
+- yield wait_for_update<string> (device, "device-name");
+- }
+-
+- private async void set_card_profile_by_index (string profile_name,
+- PulseDevice device) {
+- context.set_card_profile_by_index (device.card_index,
+- profile_name,
+- (c, success) => {
+- if (success == 1) {
+- set_card_profile_by_index.callback ();
+- } else {
+- stderr.printf ("setting the card %s profile to %s failed\n",
+- device.card_name, profile_name);
+- }
+- });
+- yield;
+- }
+-
+- private async void set_sink_port_by_name (PulseDevice device) {
+- context.set_sink_port_by_name (device.device_name,
+- device.port_name,
+- (c, success) => {
+- if (success == 1) {
+- set_sink_port_by_name.callback ();
+- } else {
+- stderr.printf ("setting sink port to %s failed\n",
+- device.port_name);
+- }
+- });
+- yield;
+- }
+-
+- private async void set_default_sink (PulseDevice device) {
+- context.set_default_sink (device.device_name, (c, success) => {
+- if (success == 1) {
+- set_default_sink.callback ();
+- } else {
+- stderr.printf ("setting default sink to %s failed\n",
+- device.device_name);
+- }
+- });
+- yield;
+- }
+-
+- public void set_device_mute (bool state, PulseDevice device) {
+- if (device.is_muted == state) return;
+- if (device.direction == Direction.OUTPUT) {
+- context.set_sink_mute_by_index (
+- device.device_index, state);
+- }
+- }
+-
+- // public void set_sink_input_mute (bool state, PulseSinkInput sink_input) {
+- // if (sink_input.is_muted == state) return;
+- // context.set_sink_input_mute (sink_input.index, state);
+- // }
+-
+- /*
+- * Volume utils
+- */
+-
+- private static double volume_to_double (PulseAudio.Volume vol) {
+- double tmp = (double) (vol - PulseAudio.Volume.MUTED);
+- return 100 * tmp / (double) (PulseAudio.Volume.NORM - PulseAudio.Volume.MUTED);
+- }
+-
+- private static PulseAudio.Volume double_to_volume (double vol) {
+- double tmp = (double) (PulseAudio.Volume.NORM - PulseAudio.Volume.MUTED) * vol / 100;
+- return (PulseAudio.Volume) tmp + PulseAudio.Volume.MUTED;
+- }
+- }
+-}
+diff --git a/src/controlCenter/widgets/volume/pulseDevice.vala b/src/controlCenter/widgets/volume/pulseDevice.vala
+deleted file mode 100644
+index accb8dc..0000000
+--- a/src/controlCenter/widgets/volume/pulseDevice.vala
++++ /dev/null
+@@ -1,135 +0,0 @@
+-// From SwaySettings PulseAudio page: https://github.com/ErikReider/SwaySettings/blob/407c9e99dd3e50a0f09c64d94a9e6ff741488378/src/Pages/Pulse/PulseDevice.vala
+-using PulseAudio;
+-using Gee;
+-
+-namespace SwayNotificationCenter.Widgets {
+- public class PulseCardProfile : Object {
+- public string name;
+- public string description;
+- public uint32 n_sinks;
+- public uint32 priority;
+- int available;
+-
+- public PulseCardProfile (CardProfileInfo2 * profile) {
+- this.name = profile->name;
+- this.description = profile->description;
+- this.n_sinks = profile->n_sinks;
+- this.priority = profile->priority;
+- this.available = profile->available;
+- }
+-
+- public bool cmp (PulseCardProfile profile) {
+- return profile.name == name
+- && profile.description == description
+- && profile.n_sinks == n_sinks
+- && profile.priority == priority
+- && profile.available == available;
+- }
+- }
+-
+- public class PulseDevice : Object {
+-
+- public bool removed { get; set; default = false; }
+-
+- public bool has_card { get; set; default = true; }
+-
+- /** The card index: ex. `Card #49` */
+- public uint32 card_index { get; set; }
+- /** Sink index: ex. `Sink #55` */
+- public uint32 device_index { get; set; }
+-
+- /** Input or Output */
+- public Direction direction { get; set; }
+-
+- /** Is default Sink */
+- public bool is_default { get; set; }
+- /** If the device is virtual */
+- public bool is_virtual { get; set; default = false; }
+- /** If the device is a bluetooth device */
+- public bool is_bluetooth { get; set; default = false; }
+-
+- /** The icon name: `device.icon_name` */
+- public string icon_name { get; set; }
+-
+- /** The card name: `Name` */
+- public string card_name { get; set; }
+- /** The card description: `device.description` */
+- public string card_description { get; set; }
+- /** The card active profile: `Active Profile` */
+- public string card_active_profile { get; set; }
+- /** The card sink port name: `Active Port` */
+- public string card_sink_port_name { get; set; }
+-
+- /** The Sink name: `Name` */
+- public string ? device_name { get; set; }
+- /** The Sink description: `Description` */
+- public string device_description { get; set; }
+- /** If the Sink is muted: `Mute` */
+- public bool is_muted { get; set; }
+-
+- public double volume { get; set; }
+- public float balance { get; set; default = 0; }
+- public CVolume cvolume;
+- public ChannelMap channel_map;
+- public LinkedList<Operation> volume_operations { get; set; }
+-
+- /** Gets the name to be shown to the user:
+- * "port_description - card_description"
+- */
+- public string ? get_display_name () {
+- if (card_name == null) {
+- return device_description;
+- }
+- string p_desc = port_description;
+- string c_desc = card_description;
+- return "%s - %s".printf (p_desc, c_desc);
+- }
+-
+- /** Compares PulseDevices. Returns true if they're the same */
+- public bool cmp (PulseDevice device) {
+- return device.card_index == card_index
+- && device.device_index == device_index
+- && device.device_name == device_name
+- && device.device_description == device_description
+- && device.is_default == is_default
+- && device.removed == removed
+- && device.card_active_profile == card_active_profile
+- && device.port_name == port_name;
+- }
+-
+- /**
+- * Gets the name to be shown to the user:
+- * If has card: "card_description:port_name"
+- * If cardless: "device_index:device_description"
+- */
+- public string get_current_hash_key () {
+- if (card_name == null) {
+- return get_hash_map_key (device_index.to_string (),
+- device_description);
+- }
+- return get_hash_map_key (card_description, port_name);
+- }
+-
+- /** Gets the name to be shown to the user:
+- * "card_description:port_name"
+- */
+- public static string get_hash_map_key (string c_desc, string p_name) {
+- return string.joinv (":", new string[] { c_desc, p_name });
+- }
+-
+- /** The port name: `Name` */
+- public string port_name { get; set; }
+- /** The port name: `Description` */
+- public string port_description { get; set; }
+- /** The port name: `card.profile.port` */
+- public string port_id { get; set; }
+- /** All port profiles */
+- public string[] port_profiles { get; set; }
+- public Array<PulseCardProfile> profiles { get; set; }
+- public PulseCardProfile ? active_profile { get; set; }
+-
+- construct {
+- volume_operations = new LinkedList<Operation> ();
+- }
+- }
+-}
+diff --git a/src/controlCenter/widgets/volume/volume.vala b/src/controlCenter/widgets/volume/volume.vala
+deleted file mode 100644
+index 4575921..0000000
+--- a/src/controlCenter/widgets/volume/volume.vala
++++ /dev/null
+@@ -1,61 +0,0 @@
+-namespace SwayNotificationCenter.Widgets {
+- public class Volume : BaseWidget {
+- public override string widget_name {
+- get {
+- return "volume";
+- }
+- }
+-
+- Gtk.Label label_widget = new Gtk.Label (null);
+- Gtk.Scale slider = new Gtk.Scale.with_range (Gtk.Orientation.HORIZONTAL, 0, 100, 1);
+-
+- private PulseDevice ? default_sink = null;
+- private PulseDaemon client = new PulseDaemon ();
+-
+- construct {
+- this.client.change_default_device.connect (default_device_changed);
+-
+- slider.value_changed.connect (() => {
+- if (default_sink != null) {
+- this.client.set_device_volume (
+- default_sink,
+- (float) slider.get_value ());
+- slider.tooltip_text = ((int) slider.get_value ()).to_string ();
+- }
+- });
+- }
+-
+-
+- public Volume (string suffix, SwayncDaemon swaync_daemon, NotiDaemon noti_daemon) {
+- base (suffix, swaync_daemon, noti_daemon);
+-
+- Json.Object ? config = get_config (this);
+- if (config != null) {
+- string ? label = get_prop<string> (config, "label");
+- label_widget.set_label (label ?? "Volume");
+- }
+-
+- slider.draw_value = false;
+-
+- add (label_widget);
+- pack_start (slider, true, true, 0);
+-
+- show_all ();
+- }
+-
+- public override void on_cc_visibility_change (bool val) {
+- if (val) {
+- this.client.start ();
+- } else {
+- this.client.close ();
+- }
+- }
+-
+- private void default_device_changed (PulseDevice device) {
+- if (device != null && device.direction == PulseAudio.Direction.OUTPUT) {
+- this.default_sink = device;
+- slider.set_value (device.volume);
+- }
+- }
+- }
+-}
+diff --git a/src/meson.build b/src/meson.build
+index 94a8e2f..2746db2 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -40,10 +40,6 @@ widget_sources = [
+ 'controlCenter/widgets/menubar/menubar.vala',
+ # Widget: Buttons Grid
+ 'controlCenter/widgets/buttonsGrid/buttonsGrid.vala',
+- # Widget: Volume
+- 'controlCenter/widgets/volume/volume.vala',
+- 'controlCenter/widgets/volume/pulseDaemon.vala',
+- 'controlCenter/widgets/volume/pulseDevice.vala',
+ # Widget: Backlight Slider
+ 'controlCenter/widgets/backlight/backlight.vala',
+ 'controlCenter/widgets/backlight/backlightUtil.vala',
+@@ -75,9 +71,6 @@ app_deps = [
+ meson.get_compiler('c').find_library('gtk-layer-shell'),
+ meson.get_compiler('c').find_library('m', required : true),
+ meson.get_compiler('vala').find_library('posix'),
+- dependency('gee-0.8'),
+- dependency('libpulse'),
+- dependency('libpulse-mainloop-glib'),
+ ]
+
+ # Checks if the user wants scripting enabled
+diff --git a/src/style.css b/src/style.css
+index 96b84a4..b2c7ed6 100644
+--- a/src/style.css
++++ b/src/style.css
+@@ -282,15 +282,6 @@
+ background: transparent;
+ }
+
+-/* Volume widget */
+-
+-.widget-volume {
+- background-color: @noti-bg;
+- padding: 8px;
+- margin: 8px;
+- border-radius: 12px;
+-}
+-
+ /* Backlight widget */
+ .widget-backlight {
+ background-color: @noti-bg;
diff --git a/gui-apps/swaync/swaync-0.8.0.ebuild b/gui-apps/swaync/swaync-0.8.0.ebuild
new file mode 100644
index 000000000..2e76984ae
--- /dev/null
+++ b/gui-apps/swaync/swaync-0.8.0.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2022-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit meson vala gnome2-utils
+
+MY_PN="SwayNotificationCenter"
+DESCRIPTION="A simple notification daemon with a GTK gui for notifications and control center"
+HOMEPAGE="https://github.com/ErikReider/SwayNotificationCenter"
+SRC_URI="https://github.com/ErikReider/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${MY_PN}-${PV}"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="pulseaudio"
+
+DEPEND="
+ dev-libs/glib:2
+ dev-libs/gobject-introspection
+ dev-libs/json-glib
+ pulseaudio? (
+ dev-libs/libgee:=
+ media-libs/libpulse
+ )
+ dev-libs/wayland
+ >=gui-libs/gtk-layer-shell-0.7.0[introspection]
+ gui-libs/libhandy:1
+ sys-apps/dbus
+ x11-libs/gdk-pixbuf:2
+ x11-libs/gtk+:3
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ $(vala_depend)
+ app-text/scdoc
+"
+
+src_prepare() {
+ ! use pulseaudio && local PATCHES=( "${FILESDIR}"/${P}-pulsefree.patch )
+ default
+ vala_setup
+}
+
+pkg_postinst() {
+ gnome2_schemas_update
+}
+
+pkg_postrm() {
+ gnome2_schemas_update
+}
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-05-01 9:20 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-06 0:07 [gentoo-commits] repo/proj/guru:master commit in: gui-apps/swaync/files/, gui-apps/swaync/ Ronny Gutbrod
-- strict thread matches above, loose matches on Subject: below --
2022-05-16 12:33 Andrew Ammerlaan
2023-05-01 9:20 Viorel Munteanu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox