Compare commits

...

2 commits

Author SHA1 Message Date
2f53329a58 2026-04-07 14:46:54 +03:00
eb67301c5f pavucontrol bump to 6.2 2026-04-06 00:53:28 +03:00
11 changed files with 332 additions and 0 deletions

View file

@ -0,0 +1 @@
DIST pavucontrol-6.2.tar.xz 198492 BLAKE2B 048550330399e3a262a8b0de182da0914f6c7d946eece9121fd98835cc29436c38542b23dc95fa1b8a3655baba378d9433e59864781b4a8bc68364b7ace2af89 SHA512 00916eeea56e5b18146a98487d6b5d41e96c668258b0191effc985b663538ae853f50eead22fa638527e4f2adf67afb97b9de7925f5806ce0bf759718f9a92dd

View file

@ -0,0 +1,125 @@
From 8916cb62b0facf45ccb220fd2efd5746fdaf79b8 Mon Sep 17 00:00:00 2001
From: Adrian Ratiu <adrian.ratiu@collabora.com>
Date: Mon, 25 Mar 2024 02:19:42 +0200
Subject: [PATCH] Make libcanberra optional
libcanberra is an old abandoned project whose last release
was well over a decade ago, despite getting some few fixes
on its master branch since then, which are unreleased.
My problem with libcanberra is that it can't be built on
pure wayland systems (no X11 headers) which are becoming
more common nowadays.
It is the only thing keeping pavucontrol tied to X11, all
other dependencies (eg gtk+) build fine on pure wayland.
Since canberra is not a core part of the project, let's
make it optional so pavucontrol can build & work on
pure wayland systems.
Ideally in the future libcanberra can be replaced with
something else, however I don't have the bandwidth to
take this on for now, so I'm just making it optional.
Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
---
configure.ac | 9 ++++++++-
src/pavuapplication.cc | 2 --
src/pavucontrol.cc | 4 ++++
src/sinkwidget.cc | 5 +++++
4 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/configure.ac b/configure.ac
index 056ba5e..1b793b8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -41,10 +41,17 @@ AC_TYPE_SIGNAL
AC_HEADER_STDC
AX_CXX_COMPILE_STDCXX_11
-PKG_CHECK_MODULES(GUILIBS, [ gtkmm-3.0 >= 3.22 sigc++-2.0 libcanberra-gtk3 >= 0.16 json-glib-1.0 ])
+PKG_CHECK_MODULES(GUILIBS, [ gtkmm-3.0 >= 3.22 sigc++-2.0 json-glib-1.0 ])
AC_SUBST(GUILIBS_CFLAGS)
AC_SUBST(GUILIBS_LIBS)
+AC_CHECK_LIB([canberra-gtk3], [canberra_gtk_play], [HAVE_LIBCANBERRA=yes], [HAVE_LIBCANBERRA=no])
+AS_IF([test "x$HAVE_LIBCANBERRA" = "xyes"], [
+ AC_DEFINE([HAVE_LIBCANBERRA], [1], [Have libcanberra support.])
+ AC_SUBST(LIBCANBERRA_CFLAGS)
+ AC_SUBST(LIBCANBERRA_LIBS)
+])
+
if test -d ../pulseaudio ; then
PULSE_CFLAGS='-I$(top_srcdir)/../pulseaudio/src'
PULSE_LIBS='-L$(top_srcdir)/../pulseaudio/src/.libs -lpulse -lpulse-mainloop-glib'
diff --git a/src/pavuapplication.cc b/src/pavuapplication.cc
index 6773b53..60c016c 100644
--- a/src/pavuapplication.cc
+++ b/src/pavuapplication.cc
@@ -24,8 +24,6 @@
#include "i18n.h"
-#include <canberra-gtk.h>
-
#include "pavuapplication.h"
#include "pavucontrol.h"
#include "mainwindow.h"
diff --git a/src/pavucontrol.cc b/src/pavucontrol.cc
index 18d5400..ff652be 100644
--- a/src/pavucontrol.cc
+++ b/src/pavucontrol.cc
@@ -29,7 +29,9 @@
#include <json-glib/json-glib.h>
#endif
+#ifdef HAVE_LIBCANBERRA
#include <canberra-gtk.h>
+#endif
#include "pavucontrol.h"
#include "i18n.h"
@@ -916,7 +918,9 @@ MainWindow* pavucontrol_get_window(pa_glib_mainloop *m, bool maximize, bool _ret
tab_number = _tab_number;
retry = _retry;
+#ifdef HAVE_LIBCANBERRA
ca_context_set_driver(ca_gtk_context_get(), "pulse");
+#endif
mainWindow = MainWindow::create(maximize);
diff --git a/src/sinkwidget.cc b/src/sinkwidget.cc
index f30bd37..41d7bb8 100644
--- a/src/sinkwidget.cc
+++ b/src/sinkwidget.cc
@@ -24,7 +24,10 @@
#include "sinkwidget.h"
+#ifdef HAVE_LIBCANBERRA
#include <canberra-gtk.h>
+#endif
+
#if HAVE_EXT_DEVICE_RESTORE_API
# include <pulse/format.h>
# include <pulse/ext-device-restore.h>
@@ -120,6 +123,7 @@ void SinkWidget::executeVolumeUpdate() {
pa_operation_unref(o);
+#ifdef HAVE_LIBCANBERRA
ca_context_playing(ca_gtk_context_get(), 2, &playing);
if (playing)
return;
@@ -136,6 +140,7 @@ void SinkWidget::executeVolumeUpdate() {
NULL);
ca_context_change_device(ca_gtk_context_get(), NULL);
+#endif
}
void SinkWidget::onMuteToggleButton() {
--
2.43.2

View file

@ -0,0 +1,13 @@
diff --git a/meson.build b/meson.build
index bc1a300..553abc1 100644
--- a/meson.build
+++ b/meson.build
@@ -28,7 +28,7 @@ configinc = include_directories('.')
prefix = get_option('prefix')
datadir = join_paths(prefix, get_option('datadir'))
-docdir = join_paths(datadir, 'doc', 'pavucontrol')
+docdir = join_paths(datadir, 'doc', 'pavucontrol-' + meson.project_version())
localedir = join_paths(prefix, get_option('localedir'))
cdata = configuration_data()

View file

@ -0,0 +1,39 @@
https://bugs.gentoo.org/950761
https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/merge_requests/104
From 53b44d9ccd2e095a9c0ce1511e122e4ed37bbbb5 Mon Sep 17 00:00:00 2001
From: Alfred Wingate <parona@protonmail.com>
Date: Mon, 10 Mar 2025 20:44:02 +0200
Subject: [PATCH] Add a option for controlling libcanberra feature
The retains the previous behavior of automagic except it allows the user to
explicitly enable or disable the feature.
Chose to call the feature a more agnostic "audio-feedback".
Bug: https://bugs.gentoo.org/950761
See-Also: 22b04fff6e881b4e0a1b8344a6513bdf99a10c65
Signed-off-by: Alfred Wingate <parona@protonmail.com>
--- a/meson.build
+++ b/meson.build
@@ -10,7 +10,7 @@ cpp = meson.get_compiler('cpp')
gtkmm_dep = dependency('gtkmm-4.0', version : '>= 4.0', required : true)
sigcpp_dep = dependency('sigc++-3.0', required : true)
-canberragtk_dep = dependency('libcanberra', version : '>= 0.16', required : false)
+canberragtk_dep = dependency('libcanberra', version : '>= 0.16', required : get_option('audio-feedback'))
libpulse_dep = dependency('libpulse', version : '>= 5.0', required : true)
libpulsemlglib_dep = dependency('libpulse-mainloop-glib', version : '>= 0.9.16', required : true)
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,3 +1,6 @@
option('lynx',
type : 'boolean', value : true,
description : 'Enable building of the README text file for installation')
+option('audio-feedback',
+ type : 'feature', value: 'auto',
+ description : 'Play a sound when you change the volume of a sink')
--
GitLab

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>sound@gentoo.org</email>
<name>Gentoo Sound project</name>
</maintainer>
<upstream>
<remote-id type="freedesktop-gitlab">pulseaudio/pavucontrol</remote-id>
</upstream>
<use>
<flag name="sound">Enable sound notifications using <pkg>media-libs/libcanberra</pkg></flag>
</use>
</pkgmetadata>

View file

@ -0,0 +1,50 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit meson
DESCRIPTION="Pulseaudio Volume Control, GTK based mixer for Pulseaudio"
HOMEPAGE="https://freedesktop.org/software/pulseaudio/pavucontrol/"
SRC_URI="https://freedesktop.org/software/pulseaudio/${PN}/${P}.tar.xz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 arm ~arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
IUSE="sound"
RDEPEND="
dev-cpp/gtkmm:4.0
dev-libs/json-glib
dev-libs/libsigc++:3
>=media-libs/libpulse-15.0[glib]
virtual/freedesktop-icon-theme
sound? ( media-libs/libcanberra )
"
DEPEND="${RDEPEND}"
BDEPEND="
virtual/pkgconfig
sys-devel/gettext
"
#PATCHES=(
# "${FILESDIR}/pavucontrol-6.1-libcanberra-automagic.patch"
#)
src_prepare() {
default
# Follow Gentoo FHS with docdir
sed -i -e "/^docdir/ { s/${PN}/${PF}/ }" meson.build || die
}
src_configure() {
local emesonargs=(
-Dlynx=disabled
$(meson_feature sound audio-feedback)
)
meson_src_configure
}

View file

@ -0,0 +1,15 @@
BDEPEND=virtual/pkgconfig sys-devel/gettext >=dev-build/meson-1.2.3 app-alternatives/ninja dev-build/meson-format-array
DEFINED_PHASES=compile configure install prepare test
DEPEND=dev-cpp/gtkmm:4.0 dev-libs/json-glib dev-libs/libsigc++:3 >=media-libs/libpulse-15.0[glib] virtual/freedesktop-icon-theme sound? ( media-libs/libcanberra )
DESCRIPTION=Pulseaudio Volume Control, GTK based mixer for Pulseaudio
EAPI=8
HOMEPAGE=https://freedesktop.org/software/pulseaudio/pavucontrol/
INHERIT=meson
IUSE=sound
KEYWORDS=amd64 arm ~arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86
LICENSE=GPL-2
RDEPEND=dev-cpp/gtkmm:4.0 dev-libs/json-glib dev-libs/libsigc++:3 >=media-libs/libpulse-15.0[glib] virtual/freedesktop-icon-theme sound? ( media-libs/libcanberra )
SLOT=0
SRC_URI=https://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-6.2.tar.xz
_eclasses_=toolchain-funcs 5195689ff6a73b0e789acfa09d4fbcb9 flag-o-matic fd3558f73f6503093adee69adf41020d multiprocessing 45d0620f25c2f063ad6276ecd9ed9399 ninja-utils d063ea1900a793f93eb095010d6d9156 eapi9-pipestatus d2c134036ac31c3085aebc9147f572bd python-utils-r1 9c4180f103a0e8340bc993fc85dbdadd sysroot ba2e3d2f7daad91fdef9350dc789d87f rust-toolchain 76468983281b0a7fc167ca224f84ecfd meson 12065b402c6d78a2aec926ed8dfd964f
_md5_=432582accd38f60ecb538657cfb82b1f

View file

@ -0,0 +1,15 @@
BDEPEND=app-arch/unzip
DEFINED_PHASES=install prepare
DESCRIPTION=Incredibly fast JavaScript runtime, bundler, test runner, and package manager
EAPI=8
HOMEPAGE=https://bun.sh https://github.com/oven-sh/bun
INHERIT=shell-completion
IUSE=+symlink
KEYWORDS=-* ~amd64 ~arm64
LICENSE=MIT
RDEPEND=symlink? ( !net-libs/nodejs )
RESTRICT=strip
SLOT=0
SRC_URI=amd64? ( https://github.com/oven-sh/bun/releases/download/bun-v1.3.11/bun-linux-x64.zip -> bun-bin-1.3.11-amd64.zip ) arm64? ( https://github.com/oven-sh/bun/releases/download/bun-v1.3.11/bun-linux-aarch64.zip -> bun-bin-1.3.11-arm64.zip )
_eclasses_=toolchain-funcs 5195689ff6a73b0e789acfa09d4fbcb9 bash-completion-r1 9e91505e030725688d1e953321a47501 shell-completion 0b655d0d825e157a5e99c463bddaac16
_md5_=e491c9190458c60714b4fb8e30500e7c

View file

@ -0,0 +1,2 @@
DIST bun-bin-1.3.11-amd64.zip 38253527 BLAKE2B 7f3c7c63e2f6afa16788e0949b7daa37b8f667a3f99ae1bd64d56a8eef8fbad6b99b4ed01dbf8b11da0d055fc8af8c6dc5396866b37c5e14f6e518d4136ab9c3 SHA512 e7322a364a6b51d07a4d3c9fe301375f49715717c8d7584f2070d9e278c47e2dae2336f0b8f8d1c31997022f0ad94671f53773b97bfe0dba06f00ebdd9304a40
DIST bun-bin-1.3.11-arm64.zip 37957120 BLAKE2B 2fdea01af8e2b47938fbde89061645efd88c89f41665128a5082f6082ae373a11b95168b79a4a05c313349e8b81dd6046b6527b0a17ed8d8bc98f8458fcf36e1 SHA512 d6c8a6c9aeab2faed12a011c6a6198691e0384c216a924711df2f8d4487e2a8a0f009c0fe473fb2fe4181fcbe5fdab530ea4df339f3c34f546a0d4ea2627e2b5

View file

@ -0,0 +1,48 @@
# Copyright 2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit shell-completion
DESCRIPTION="Incredibly fast JavaScript runtime, bundler, test runner, and package manager"
HOMEPAGE="https://bun.sh https://github.com/oven-sh/bun"
SRC_URI="
amd64? ( https://github.com/oven-sh/bun/releases/download/bun-v${PV}/bun-linux-x64.zip -> ${P}-amd64.zip )
arm64? ( https://github.com/oven-sh/bun/releases/download/bun-v${PV}/bun-linux-aarch64.zip -> ${P}-arm64.zip )
"
S="${WORKDIR}"
LICENSE="MIT"
SLOT="0"
KEYWORDS="-* ~amd64 ~arm64"
IUSE="+symlink"
BDEPEND="app-arch/unzip"
RDEPEND="
symlink? ( !net-libs/nodejs )
"
RESTRICT="strip"
QA_PREBUILT="usr/bin/bun"
src_prepare() {
default
mv bun-linux*/bun . || die "Failed to move bun binary"
# generate shell completion scripts
for sh in bash fish zsh; do
env SHELL=${sh} "${S}/bun" completions ${sh} > "${WORKDIR}/completion.${sh}"
done
}
src_install() {
dobin bun
dosym bun /usr/bin/bunx
use symlink && dosym bun /usr/bin/node # fix env: node: No such file or directory
newbashcomp completion.bash "${PN}"
newfishcomp completion.fish "${PN}".fish
newzshcomp completion.zsh _"${PN}"
}

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<upstream>
<remote-id type="github">oven-sh/bun</remote-id>
</upstream>
<use>
<flag name="symlink">Install node symlink to fix shell shebang</flag>
</use>
</pkgmetadata>