diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b540d05..0f36ec7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -23,7 +23,7 @@ jobs: - name: Install Dependencies run: | apt update - apt install -y libgranite-7-dev libgtk-4-dev libpantheon-wayland-1-dev libpolkit-agent-1-dev libpolkit-gobject-1-dev meson valac + apt install -y libgranite-7-dev libcanberra-dev libgtk-4-dev libpantheon-wayland-1-dev libpolkit-agent-1-dev libpolkit-gobject-1-dev meson valac - name: Build env: DESTDIR: out diff --git a/meson.build b/meson.build index d87224b..1f1dc57 100644 --- a/meson.build +++ b/meson.build @@ -24,6 +24,7 @@ executable( dependency('polkit-agent-1'), dependency('polkit-gobject-1'), dependency('pantheon-wayland-1'), + dependency('libcanberra'), meson.get_compiler('vala').find_library('posix') ], c_args: [ diff --git a/src/Agent.vala b/src/Agent.vala index 6752c1e..5a685df 100644 --- a/src/Agent.vala +++ b/src/Agent.vala @@ -25,6 +25,13 @@ namespace Ag { public class Agent : PolkitAgent.Listener { + + private static Settings sound_settings; + + static construct { + sound_settings = new Settings ("org.gnome.desktop.sound"); + } + public override async bool initiate_authentication (string action_id, string message, string icon_name, Polkit.Details details, string cookie, GLib.List identities, GLib.Cancellable? cancellable) throws Polkit.Error { if (identities == null) { @@ -35,6 +42,19 @@ namespace Ag { dialog.done.connect (() => initiate_authentication.callback ()); dialog.present (); + + Canberra.Context? ca_context = null; + + if (sound_settings.get_boolean ("event-sounds")) { + Canberra.Context.create (out ca_context); + if (ca_context != null) { + ca_context.change_props (Canberra.PROP_CANBERRA_XDG_THEME_NAME, "elementary", + Canberra.PROP_MEDIA_LANGUAGE, ""); + ca_context.open (); + ca_context.play (0, Canberra.PROP_EVENT_ID, "dialog-question"); + } + } + yield; dialog.destroy ();