Commit Graph

263 Commits

Author SHA1 Message Date
JA d600f47de1 Split pavucontrol.glade into separate .ui files
and some cleanup
2024-04-26 17:38:54 +02:00
JA 64881e3db0 Embed ui file as resource and clean it up
Remove a lot of unrequired ids, and fix meson dependency name
2024-04-26 17:26:43 +02:00
Adrian Ratiu 22b04fff6e 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>
2024-04-24 20:06:52 +03:00
Arun Raghavan 44f984883f Some minor whitespace fixups
We should really just get a clang-format config that's close enough and
set that up instead.
2024-04-15 17:38:36 -04:00
Arun Raghavan a1ac8eb8d3 pavuapplication: Drop references to unused on_hide_window 2024-04-15 17:07:22 -04:00
Arun Raghavan 19d19b9e4b mainwindow: Clean up canberra context on shutdown 2024-04-15 17:07:22 -04:00
Arun Raghavan 1fa1b86ca7 devicewidget: Minor function rename for legibility 2024-04-15 17:07:22 -04:00
Arun Raghavan a892798177 Fix some minor lints and warnings 2024-04-15 17:07:22 -04:00
JA 52aef7e81d Use Gtk4 instead of Gtk3 2024-04-12 13:05:00 -04:00
Arun Raghavan 04655fae70 build-sys: Drop autotools build
We've had the meson build for a bit, and it's faster and cleaner to
maintain.
2024-04-12 13:00:39 -04:00
Will Thompson c330506815 metainfo: Add release notes for 5.0
These are taken from README.html.in, without the information about new
dependencies (IMHO not useful to end-users) or “Some bug fixes.” (IMHO
not specific enough to be useful).
2024-03-18 14:30:55 +00:00
Will Thompson be02260941 Add AppStream metainfo file
This file is taken from the Flathub package, as of
https://github.com/flathub/org.pulseaudio.pavucontrol/pull/31 where I
have adjusted the name & summary to conform to Flathub's rules. In
particular:

- The name must be no more than 20 characters, so I have used “Volume
  Control” to match the window title and GenericName

- The summary must be no more than 35 characters.

I noticed while preparing this patch that the Comment in the .desktop
file (which the appstream specification says is “roughly equivalent” to
the <summary>) is just “Adjust the volume level”. IMO “Adjust the volume
level” contains no more information than the name “Volume Control”.

Fixes https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/issues/127
2024-03-18 14:30:55 +00:00
warmos eba9ca6898 Less choppy peak bars
Update the sample rate to 144 to keep up with high refresh rate
monitors.
2023-06-23 08:21:08 -04:00
Konstantin Kharlamov 1363cd73c2 mainwindow: change "[Set as] fallback" to "default"
The "Set as fallback" title is a frequent source of confusion, many
people look at it and do not realize that its actual functional is
"setting as default". Presumably, when this title first appeared it
was presumed that apps should chose a device themselves, and then if
they don't there's a "fallback". But in reality most apps do not chose
any device explicitly, and it's expected behavior to make use of this
"fallback" device. So it is more correct to call a "default" device.
2023-06-22 10:42:06 +03:00
Alexander Epaneshnikov a796f995f8 fix focus trap in output selection widget
this fixes #124

Part-of: <https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/merge_requests/73>
2022-05-02 15:15:02 +00:00
Jan Alexander Steffens (heftig) 8f04dad2c0 meson: Define HAVE_PULSE_MESSAGING_API when available
To match the autotools build.
2022-04-13 16:05:19 +00:00
Arun Raghavan 964f2987a4 Fix warning in .desktop file
With the underscore, we got:

../src/pavucontrol.desktop.in:12:0: warning: invalid non-blank line
2022-01-15 13:45:17 -05:00
Arun Raghavan 805d6522c6 build-sys: Add a meson-based build systeom
The only missing feature for parity with autotools is generating a text
README using lynx. I think this might be okay to skip as it seems
unnecessary as a dependency.
2022-01-15 13:38:28 -05:00
Arun Raghavan 327288055b i18n: Migrate to upstream gettext over intltool
Newer gettext has feature parity, rendering intltool obsolete. Details
at:

  https://wiki.gnome.org/MigratingFromIntltoolToGettext
2022-01-14 18:39:01 -05:00
Wim Taymans a400e057d1 sink-widget: add support for TrueHD and DTS-HD formats
Also add toggles for TrueHD and DTS-HD formats in the sink widget.

Part-of: <https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/merge_requests/71>
2022-01-10 17:55:02 +01:00
Igor V. Kovalenko 4bc93d9d9c Disconnect and unreference all peak indicator stream objects
Most of sink input peak indicator streams are still connected alive at the time
their widgets are destroyed. Disconnect and unreference each one to stop memory
leak.

When sink input peak indicator stream is recreated, previous stream is only
disconnected but not unreferenced. Unreference it to stop memory leak.

Part-of: <https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/merge_requests/62>
2021-08-15 12:26:23 +03:00
Igor V. Kovalenko a1b4622ad5 cardwidget: add flag to lock profile from switching automatically
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/merge_requests/60>
2021-06-01 02:28:40 +03:00
Igor V. Kovalenko b874058ae8 card: use JSON with pulseaudio messaging API
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/merge_requests/59>
2021-03-29 21:52:44 +03:00
Igor V. Kovalenko 1515492168 card: do not quit on error sending message to object
Server API versions < 35 do not support PA_COMMAND_SEND_OBJECT_MESSAGE
one of these is current Pipewire pulseaudio server.

Do not quit on error sending message to object, this is already handled as if
send message API is not available.

Part-of: <https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/merge_requests/57>
2021-02-27 15:13:13 +03:00
Igor V. Kovalenko d66137f9a8 card: implement bluetooth profile codec selection
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/merge_requests/54>
2021-02-26 14:03:20 +03:00
Igor V. Kovalenko 381b708202 mainwindow: do not erase from container while iterating
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/merge_requests/53>
2021-01-04 18:56:17 +03:00
Tanu Kaskinen f4279df637 devicewidget: Mark Cancel and OK button texts translatable
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pavucontrol/-/merge_requests/50>
2020-12-03 18:21:07 +02:00
mephinet a2a452f249 mainwindow: Close window instead of quitting on Ctrl-W etc.
The end result is the same, so this isn't strictly needed - originally
this patch fixed a segfault, but that segfault got fixed in a different
way before merging this patch.
2020-11-09 17:32:16 +02:00
Felipe Sateler 2840825519 Migrate away from deprecated Gtk interfaces
This was accomplished by building with -DGTKMM_DISABLE_DEPRECATED.
2020-10-11 17:18:59 +03:00
Jamison Lofthouse 9954baa343 Set channel label width to 12
Add a bit more padding for when percentages and decibel levels are weird
so that sliders and labels are a consistent width.
2020-08-04 17:45:06 -06:00
Yousuf Philips aff7bdea2b Have pulseaudio appear in the Settings category of menu 2020-07-07 14:45:12 +03:00
Yousuf Philips 64b086580a Additional keywords from the dialog and elsewhere 2020-06-10 19:28:53 +00:00
Yousuf Philips 64b8bc9f61 Make pulse audio appear in Xfce's settings dialog 2020-06-09 12:35:31 +00:00
Leon Kowarschick fb75f5d1e4 add gtk window class to mainwindow.
This allows pavucontrol to be specifically addressed when creating GTK
themes.
2020-06-02 20:20:35 +02:00
Allan Nordhøy 8921ee0cd6 i18n: Correct spelling "AC-3" and "E-AC-3" 2020-05-17 00:48:43 +00:00
lionel 327be8dc28 pavuapplication: fix compilation issue with g++ (Raspbian 4.9.2-10+deb8u2)
Fixes this compilation issue:

pavuapplication.cc: In function ‘int main(int, char**)’:
pavuapplication.cc:146:32: error: use of deleted function ‘PavuApplication::PavuApplication(PavuApplication&&)’
     auto app = PavuApplication();
                                ^
In file included from pavuapplication.cc:29:0:
pavuapplication.h:27:7: note: ‘PavuApplication::PavuApplication(PavuApplication&&)’ is implicitly deleted because the default definition would be ill-formed:
 class PavuApplication : public Gtk::Application {
       ^
In file included from /usr/include/gtkmm-3.0/gtkmm/window.h:32:0,
                 from /usr/include/gtkmm-3.0/gtkmm/dialog.h:30,
                 from /usr/include/gtkmm-3.0/gtkmm/aboutdialog.h:33,
                 from /usr/include/gtkmm-3.0/gtkmm.h:99,
                 from pavucontrol.h:29,
                 from pavuapplication.h:24,
                 from pavuapplication.cc:29:
/usr/include/gtkmm-3.0/gtkmm/application.h:211:3: error: ‘Gtk::Application::Application(const Gtk::Application&)’ is private
   Application(const Application&);
   ^
In file included from pavuapplication.cc:29:0:
pavuapplication.h:27:7: error: within this context
 class PavuApplication : public Gtk::Application {
       ^
In file included from /usr/include/glibmm-2.4/glibmm/wrap.h:26:0,
                 from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:26,
                 from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:23,
                 from /usr/include/glibmm-2.4/glibmm.h:91,
                 from /usr/include/gtkmm-3.0/gtkmm.h:87,
                 from pavucontrol.h:29,
                 from pavuapplication.h:24,
                 from pavuapplication.cc:29:
/usr/include/glibmm-2.4/glibmm/objectbase.h:238:3: error: ‘Glib::ObjectBase::ObjectBase(const Glib::ObjectBase&)’ is private
   ObjectBase(const ObjectBase&);
   ^
In file included from pavuapplication.cc:29:0:
pavuapplication.h:27:7: error: within this context
 class PavuApplication : public Gtk::Application {
       ^
2020-02-14 11:35:54 +02:00
Christoph Haag 4f31ec83a8 mainwindow: escape nameLabel
Fixes a warning with the 'Valve VR Radio & HMD Mic' device.
2019-12-22 05:57:20 +00:00
Tanu Kaskinen ae278b8643 streamwidget: Use a drop-down list instead of a button and a popup for selecting the device
This looks better, requires less code and probably fixes
https://gitlab.freedesktop.org/pulseaudio/pavucontrol/issues/63
2019-11-27 19:54:30 +00:00
Will Thompson a36506b82e Add keywords to desktop file
In traditional packages, including 'pavucontrol' here is redundant with
Exec.  However, only the first field of Exec is used as a search key,
and in the Flatpak the first field is 'flatpak'. I often search for
'pavucontrol' and fail to find the app as a result.

All the others are terms that seem relevant to finding this app. Most of
them are borrowed from gnome-control-center's sound panel's .desktop
file.
2019-11-07 16:19:27 +00:00
Tanu Kaskinen 2a1072cc2b devicewidget: fix the enabling logic of the advanced options expander
The old logic disabled the expander always when a sink didn't have any
ports. That's bad if the sink has no ports but supports configuring
formats. That hasn't caused problems so far, but I have a patch for
module-null-sink that will enable format configuration support, and the
null sink has no ports, so it's affected by this issue.

This patch also changes things so that the expander is completely hidden
when it's disabled instead just setting it non-sensitive. I think that's
better (at least it saves some space).
2019-09-19 15:26:04 +03:00
Tanu Kaskinen 0dd27ba347 mainwindow: set the updating flag later for sinks and sources
The updating flag is used to determine whether a change in some UI
control state is due to a user action or an update from the server. The
flag was set to false too early when processing sink and source updates
from the server. This caused at least unnecessary "set port" commands,
because each update refreshes the port list, which generates change
events in the port list combo box, causing the portChanged callbacks to
be called.

The unnecessary "set port" commands could even confuse the automatic
port selection policies in the server. If the current port wasn't
originally explicitly chosen by the user, then the "set port" command
from pavucontrol will make the server think that the user explicitly
chose that port.
2019-09-19 11:37:11 +03:00
Tanu Kaskinen e6caa8b87a mainwindow: scale icons to sane size
If load_icon() fails, we treat the icon name as a file path and try to
load an image from the path. In case that works, we need to ensure that
the has correct size. Previously that wasn't done, which led to too
large icons.

scale_simple() doesn't do anything if the image is already the correct
size, so we can call it unconditionally.

The exception handling was a bit weird in that the exception types
didn't match the documentation of IconTheme::load_icon() and
Image::set(). I updated the exception types (Image::set() doesn't need
exception handling any more, because now it's called with a Pixbuf
rather than a file name).

Fixes: https://gitlab.freedesktop.org/pulseaudio/pavucontrol/issues/60
2019-07-27 13:53:48 +03:00
Tanu Kaskinen 5f664bc63b channelwidget: ensure that all channel labels have the same width
pavucontrol.glade previously set the channel label width to 15
characters, with the goal of making all channel labels have the same
width. However, with some translations and font settings the configured
width wasn't enough, so sometimes a label was wider than others, and
that made the volume slider widths different too. If the volume sliders
have different widths, it's very hard to visually compare the volumes of
the channels.

This patch removes the fixed width in pavucontrol.glade and solves the
problem by finding the widest label and using that label's width with
all labels.

Fixes: https://gitlab.freedesktop.org/pulseaudio/pavucontrol/issues/51
2019-02-26 15:42:57 +00:00
Tanu Kaskinen f200a10d98 channelwidget: refactor to reduce repetition
DeviceWidget and StreamWidget had some duplicate code to initialize
ChannelWidgets. This patch moves some of the duplicated initialization
code into ChannelWidgets to reduce repetition and to improve
encapsulation.
2019-02-26 15:42:57 +00:00
Tanu Kaskinen 46ce3e418e pavucontrol.glade: right-align channel labels
The channel labels ("Front Left" etc.) that are adjacent to volume
sliders used to be left-aligned, which meant that there was some empty
space (depending on the text width) between the label text and the
volume slider. Right-aligning the labels looks nicer.
2019-02-26 15:42:57 +00:00
Karl Ove Hufthammer ce36a44a1d channelwidget: Make volume strings translatable and add missing space
The volume strings (e.g. ‘86% (-3.81dB)’) shown to the right of each
volume slider is now translatable/localisable. (The similar string
‘100% (0dB)’, centred *below* each slider, was already translatable.)
Also, the English strings now include a space between the decibel value
and the unit, e.g. ‘-3.81 dB’ instead of ‘-3.81dB’.

Fixes: https://gitlab.freedesktop.org/pulseaudio/pavucontrol/issues/52
2019-02-25 18:25:09 +02:00
Andreas Rönnquist 1035910f45 Remove closing window by pressing Esc
Disable closing using Esc, to avoid closing the window by mistake.
2019-02-09 07:23:48 +00:00
Tanu Kaskinen dfeabf086c drop gtk2 support
When opening pavucontrol.glade with Glade 3.22.1, this message was
shown:

    pavucontrol.glade targets Gtk+ 2.16

    But this version of Glade is for GTK+ 3 only.
    Make sure you can run this project with Glade 3.8 with no deprecated
    widgets first.

I think it's best to just drop the gtk2 support.
2018-11-21 12:55:11 +02:00
Tanu Kaskinen 577246f15a pavucontrol.glade: changes automatically done by Glade
When opening pavucontrol.glade in Glade 3.22.1 and saving the file
without doing any manual changes, these changes are made to the file.
The changes seem harmless, so let's apply them to avoid unnecessary
clutter appearing when doing more important changes in the future.
2018-11-21 12:25:02 +02:00
Tanu Kaskinen 0fa1969108 pavucontrol.glade: object renames automatically done by Glade
When opening pavucontrol.glade with Glade and saving it without any
manual changes, Glade does these object rename to get rid of duplicate
IDs. None of these are referenced by the code, so the renames are
harmless.
2018-11-21 12:17:55 +02:00