diff options
| author | Victor Kareh <[email protected]> | 2026-02-04 14:49:54 -0500 |
|---|---|---|
| committer | Victor Kareh <[email protected]> | 2026-02-04 14:49:54 -0500 |
| commit | cb60caeb060c73d2ffd1b0736d501857e89d14be (patch) | |
| tree | 52adce633674edcd23d4b10ddf80664a2870643a /mate-session | |
| parent | 6df44358e1e1688a32c63d840ea50e21491ffc0a (diff) | |
| download | mate-session-manager-canberra-sounds.tar.bz2 mate-session-manager-canberra-sounds.tar.xz | |
session: Add sound events for login and logoutcanberra-sounds
Adds optional libcanberra support to play desktop-login and
desktop-logout sound events during session start and end. Sound playback
is controlled through the system sound theme configuration.
Fixes #328
Diffstat (limited to 'mate-session')
| -rw-r--r-- | mate-session/Makefile.am | 4 | ||||
| -rw-r--r-- | mate-session/gsm-manager.c | 17 |
2 files changed, 20 insertions, 1 deletions
diff --git a/mate-session/Makefile.am b/mate-session/Makefile.am index 448ee76..aa2be01 100644 --- a/mate-session/Makefile.am +++ b/mate-session/Makefile.am @@ -63,6 +63,7 @@ mate_session_CPPFLAGS = \ $(SM_CFLAGS) \ $(ICE_CFLAGS) \ $(XEXT_CFLAGS) \ + $(LIBCANBERRA_CFLAGS) \ -I$(top_srcdir)/mate-submodules/libegg \ -DLOCALE_DIR=\""$(datadir)/locale"\" \ -DDATA_DIR=\""$(datadir)/mate-session"\" \ @@ -82,7 +83,8 @@ mate_session_LDADD = \ $(MATE_SESSION_LIBS) \ $(SYSTEMD_LIBS) \ $(LIBELOGIND_LIBS) \ - $(EXECINFO_LIBS) + $(EXECINFO_LIBS) \ + $(LIBCANBERRA_LIBS) libgsmutil_la_SOURCES = \ gsm-util.c \ diff --git a/mate-session/gsm-manager.c b/mate-session/gsm-manager.c index 37ca39d..d67bed1 100644 --- a/mate-session/gsm-manager.c +++ b/mate-session/gsm-manager.c @@ -65,6 +65,10 @@ #endif #include "gsm-session-save.h" +#ifdef HAVE_LIBCANBERRA +#include <canberra-gtk.h> +#endif + #define GSM_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_MANAGER, GsmManagerPrivate)) #define GSM_MANAGER_DBUS_PATH "/org/gnome/SessionManager" @@ -1548,6 +1552,13 @@ do_phase_query_end_session (GsmManager *manager) data.flags = 0; priv = gsm_manager_get_instance_private (manager); +#ifdef HAVE_LIBCANBERRA + ca_context_play (ca_gtk_context_get (), 0, + CA_PROP_EVENT_ID, "desktop-logout", + CA_PROP_EVENT_DESCRIPTION, "Session logout", + NULL); +#endif + if (priv->logout_mode == GSM_MANAGER_LOGOUT_MODE_FORCE) { data.flags |= GSM_CLIENT_END_SESSION_FLAG_FORCEFUL; } @@ -1620,6 +1631,12 @@ start_phase (GsmManager *manager) break; case GSM_MANAGER_PHASE_RUNNING: g_signal_emit (manager, signals[SESSION_RUNNING], 0); +#ifdef HAVE_LIBCANBERRA + ca_context_play (ca_gtk_context_get (), 0, + CA_PROP_EVENT_ID, "desktop-login", + CA_PROP_EVENT_DESCRIPTION, "Session login", + NULL); +#endif update_idle (manager); break; case GSM_MANAGER_PHASE_QUERY_END_SESSION: |
