Dunst
Lightweight notification daemon
Loading...
Searching...
No Matches
dbus.c File Reference
#include <gio/gio.h>
#include <glib.h>
#include <stdio.h>
#include <stdlib.h>
#include "dbus.h"
#include "draw.h"
#include "dunst.h"
#include "log.h"
#include "menu.h"
#include "rules.h"
#include "queues.h"
#include "settings.h"
#include "utils.h"
#include "settings_data.h"
+ Include dependency graph for dbus.c:

Go to the source code of this file.

Data Structures

struct  dbus_method
 

Macros

#define FDN_PATH   "/org/freedesktop/Notifications"
 
#define FDN_IFAC   "org.freedesktop.Notifications"
 
#define FDN_NAME   "org.freedesktop.Notifications"
 
#define DUNST_PATH   "/org/freedesktop/Notifications"
 
#define DUNST_IFAC   "org.dunstproject.cmd0"
 
#define DUNST_NAME   "org.freedesktop.Notifications"
 
#define PROPERTIES_IFAC   "org.freedesktop.DBus.Properties"
 
#define DBUS_METHOD(name)
 

Functions

int cmp_methods (const void *vkey, const void *velem)
 
 DBUS_METHOD (Notify)
 
 DBUS_METHOD (CloseNotification)
 
 DBUS_METHOD (GetCapabilities)
 
 DBUS_METHOD (GetServerInformation)
 
void dbus_cb_fdn_methods (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data)
 
 DBUS_METHOD (dunst_ContextMenuCall)
 
 DBUS_METHOD (dunst_NotificationAction)
 
 DBUS_METHOD (dunst_NotificationClearHistory)
 
 DBUS_METHOD (dunst_NotificationCloseAll)
 
 DBUS_METHOD (dunst_NotificationCloseLast)
 
 DBUS_METHOD (dunst_NotificationListHistory)
 
 DBUS_METHOD (dunst_NotificationPopHistory)
 
 DBUS_METHOD (dunst_NotificationRemoveFromHistory)
 
 DBUS_METHOD (dunst_NotificationShow)
 
 DBUS_METHOD (dunst_RuleEnable)
 
 DBUS_METHOD (dunst_RuleList)
 
 DBUS_METHOD (dunst_ConfigReload)
 
 DBUS_METHOD (dunst_Ping)
 
void dbus_cb_dunst_methods (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data)
 
static void dbus_cb_dunst_ContextMenuCall (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_dunst_NotificationAction (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_dunst_NotificationClearHistory (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_dunst_NotificationCloseAll (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_dunst_NotificationCloseLast (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_dunst_NotificationShow (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_dunst_NotificationListHistory (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_dunst_NotificationPopHistory (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_dunst_NotificationRemoveFromHistory (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static const char * enum_to_string (const struct string_to_enum_def values[], int enum_value)
 
static void color_entry (const struct color c, GVariantDict *dict, const char *field_name)
 
static void gradient_entry (const struct gradient *grad, GVariantDict *dict, const char *field_name)
 
static void dbus_cb_dunst_RuleList (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_dunst_RuleEnable (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_dunst_ConfigReload (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_dunst_Ping (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_GetCapabilities (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static struct notificationdbus_message_to_notification (const gchar *sender, GVariant *parameters)
 
void signal_length_propertieschanged (void)
 
void signal_paused_propertieschanged (void)
 
static void dbus_cb_Notify (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_CloseNotification (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
static void dbus_cb_GetServerInformation (GDBusConnection *connection, const gchar *sender, GVariant *parameters, GDBusMethodInvocation *invocation)
 
void signal_notification_closed (struct notification *n, enum reason reason)
 
void signal_action_invoked (const struct notification *n, const char *identifier)
 
GVariant * dbus_cb_dunst_Properties_Get (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error, gpointer user_data)
 
gboolean dbus_cb_dunst_Properties_Set (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error, gpointer user_data)
 
static void dbus_cb_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data)
 
static void dbus_cb_name_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data)
 
static bool dbus_get_fdn_daemon_info (GDBusConnection *connection, guint *pid, char **name, char **vendor)
 Get the PID of the current process, which acquired FDN DBus Name.
 
static void dbus_cb_name_lost (GDBusConnection *connection, const gchar *name, gpointer user_data)
 
int dbus_init (void)
 
void signal_history_removed (guint id)
 
void signal_history_cleared (guint n)
 
void signal_config_reloaded (char **const configs)
 
void dbus_teardown (int owner_id)
 

Variables

GDBusConnection * dbus_conn = NULL
 
static GDBusNodeInfo * introspection_data = NULL
 
static const char * introspection_xml
 
static const char * stack_tag_hints []
 
static struct dbus_method methods_fdn []
 
static struct dbus_method methods_dunst []
 
static const GDBusInterfaceVTable interface_vtable_fdn
 
static const GDBusInterfaceVTable interface_vtable_dunst
 

Detailed Description

License
BSD-3-Clause

Definition in file dbus.c.

Macro Definition Documentation

◆ DBUS_METHOD

#define DBUS_METHOD ( name)
Value:
static void dbus_cb_##name( \
GDBusConnection *connection, \
const gchar *sender, \
GVariant *parameters, \
GDBusMethodInvocation *invocation)

Definition at line 162 of file dbus.c.

◆ DUNST_IFAC

#define DUNST_IFAC   "org.dunstproject.cmd0"

Definition at line 30 of file dbus.c.

◆ DUNST_NAME

#define DUNST_NAME   "org.freedesktop.Notifications"

Definition at line 31 of file dbus.c.

◆ DUNST_PATH

#define DUNST_PATH   "/org/freedesktop/Notifications"

Definition at line 29 of file dbus.c.

◆ FDN_IFAC

#define FDN_IFAC   "org.freedesktop.Notifications"

Definition at line 26 of file dbus.c.

◆ FDN_NAME

#define FDN_NAME   "org.freedesktop.Notifications"

Definition at line 27 of file dbus.c.

◆ FDN_PATH

#define FDN_PATH   "/org/freedesktop/Notifications"

Definition at line 25 of file dbus.c.

◆ PROPERTIES_IFAC

#define PROPERTIES_IFAC   "org.freedesktop.DBus.Properties"

Definition at line 33 of file dbus.c.

Function Documentation

◆ cmp_methods()

int cmp_methods ( const void * vkey,
const void * velem )

Definition at line 168 of file dbus.c.

◆ color_entry()

static void color_entry ( const struct color c,
GVariantDict * dict,
const char * field_name )
static

Definition at line 471 of file dbus.c.

◆ dbus_cb_bus_acquired()

static void dbus_cb_bus_acquired ( GDBusConnection * connection,
const gchar * name,
gpointer user_data )
static

Definition at line 1268 of file dbus.c.

◆ dbus_cb_CloseNotification()

static void dbus_cb_CloseNotification ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 1072 of file dbus.c.

◆ dbus_cb_dunst_ConfigReload()

static void dbus_cb_dunst_ConfigReload ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 665 of file dbus.c.

◆ dbus_cb_dunst_ContextMenuCall()

static void dbus_cb_dunst_ContextMenuCall ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 265 of file dbus.c.

◆ dbus_cb_dunst_methods()

void dbus_cb_dunst_methods ( GDBusConnection * connection,
const gchar * sender,
const gchar * object_path,
const gchar * interface_name,
const gchar * method_name,
GVariant * parameters,
GDBusMethodInvocation * invocation,
gpointer user_data )

Definition at line 242 of file dbus.c.

◆ dbus_cb_dunst_NotificationAction()

static void dbus_cb_dunst_NotificationAction ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 277 of file dbus.c.

◆ dbus_cb_dunst_NotificationClearHistory()

static void dbus_cb_dunst_NotificationClearHistory ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 307 of file dbus.c.

◆ dbus_cb_dunst_NotificationCloseAll()

static void dbus_cb_dunst_NotificationCloseAll ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 322 of file dbus.c.

◆ dbus_cb_dunst_NotificationCloseLast()

static void dbus_cb_dunst_NotificationCloseLast ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 335 of file dbus.c.

◆ dbus_cb_dunst_NotificationListHistory()

static void dbus_cb_dunst_NotificationListHistory ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 365 of file dbus.c.

◆ dbus_cb_dunst_NotificationPopHistory()

static void dbus_cb_dunst_NotificationPopHistory ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 425 of file dbus.c.

◆ dbus_cb_dunst_NotificationRemoveFromHistory()

static void dbus_cb_dunst_NotificationRemoveFromHistory ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 442 of file dbus.c.

◆ dbus_cb_dunst_NotificationShow()

static void dbus_cb_dunst_NotificationShow ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 352 of file dbus.c.

◆ dbus_cb_dunst_Ping()

static void dbus_cb_dunst_Ping ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 682 of file dbus.c.

◆ dbus_cb_dunst_Properties_Get()

GVariant * dbus_cb_dunst_Properties_Get ( GDBusConnection * connection,
const gchar * sender,
const gchar * object_path,
const gchar * interface_name,
const gchar * property_name,
GError ** error,
gpointer user_data )

Definition at line 1190 of file dbus.c.

◆ dbus_cb_dunst_Properties_Set()

gboolean dbus_cb_dunst_Properties_Set ( GDBusConnection * connection,
const gchar * sender,
const gchar * object_path,
const gchar * interface_name,
const gchar * property_name,
GVariant * value,
GError ** error,
gpointer user_data )

Definition at line 1220 of file dbus.c.

◆ dbus_cb_dunst_RuleEnable()

static void dbus_cb_dunst_RuleEnable ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 620 of file dbus.c.

◆ dbus_cb_dunst_RuleList()

static void dbus_cb_dunst_RuleList ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 497 of file dbus.c.

◆ dbus_cb_fdn_methods()

void dbus_cb_fdn_methods ( GDBusConnection * connection,
const gchar * sender,
const gchar * object_path,
const gchar * interface_name,
const gchar * method_name,
GVariant * parameters,
GDBusMethodInvocation * invocation,
gpointer user_data )

Definition at line 187 of file dbus.c.

◆ dbus_cb_GetCapabilities()

static void dbus_cb_GetCapabilities ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 692 of file dbus.c.

◆ dbus_cb_GetServerInformation()

static void dbus_cb_GetServerInformation ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 1096 of file dbus.c.

◆ dbus_cb_name_acquired()

static void dbus_cb_name_acquired ( GDBusConnection * connection,
const gchar * name,
gpointer user_data )
static

Definition at line 1296 of file dbus.c.

◆ dbus_cb_name_lost()

static void dbus_cb_name_lost ( GDBusConnection * connection,
const gchar * name,
gpointer user_data )
static

Definition at line 1419 of file dbus.c.

◆ dbus_cb_Notify()

static void dbus_cb_Notify ( GDBusConnection * connection,
const gchar * sender,
GVariant * parameters,
GDBusMethodInvocation * invocation )
static

Definition at line 1041 of file dbus.c.

◆ dbus_get_fdn_daemon_info()

static bool dbus_get_fdn_daemon_info ( GDBusConnection * connection,
guint * pid,
char ** name,
char ** vendor )
static

Get the PID of the current process, which acquired FDN DBus Name.

If name or vendor specified, the name and vendor will get additionally get via the FDN GetServerInformation method

Parameters
connectionThe DBus connection
pidThe place to report the PID to
nameThe place to report the name to, if not required set to NULL
vendorThe place to report the vendor to, if not required set to NULL
Return values
trueon success
falseAny error happened

Definition at line 1319 of file dbus.c.

◆ dbus_init()

int dbus_init ( void )

Definition at line 1443 of file dbus.c.

◆ dbus_message_to_notification()

static struct notification * dbus_message_to_notification ( const gchar * sender,
GVariant * parameters )
static

Definition at line 723 of file dbus.c.

◆ dbus_teardown()

void dbus_teardown ( int owner_id)

Definition at line 1532 of file dbus.c.

◆ enum_to_string()

static const char * enum_to_string ( const struct string_to_enum_def values[],
int enum_value )
static

Definition at line 461 of file dbus.c.

◆ gradient_entry()

static void gradient_entry ( const struct gradient * grad,
GVariantDict * dict,
const char * field_name )
static

Definition at line 478 of file dbus.c.

◆ signal_action_invoked()

void signal_action_invoked ( const struct notification * n,
const char * identifier )

Definition at line 1165 of file dbus.c.

◆ signal_config_reloaded()

void signal_config_reloaded ( char **const configs)

Definition at line 1508 of file dbus.c.

◆ signal_history_cleared()

void signal_history_cleared ( guint n)

Definition at line 1485 of file dbus.c.

◆ signal_history_removed()

void signal_history_removed ( guint id)

Definition at line 1462 of file dbus.c.

◆ signal_length_propertieschanged()

void signal_length_propertieschanged ( void )

Definition at line 942 of file dbus.c.

◆ signal_notification_closed()

void signal_notification_closed ( struct notification * n,
enum reason reason reason  )

Definition at line 1108 of file dbus.c.

◆ signal_paused_propertieschanged()

void signal_paused_propertieschanged ( void )

Definition at line 1008 of file dbus.c.

Variable Documentation

◆ dbus_conn

GDBusConnection* dbus_conn = NULL

Definition at line 35 of file dbus.c.

◆ interface_vtable_dunst

const GDBusInterfaceVTable interface_vtable_dunst
static
Initial value:
= {
dbus_cb_dunst_methods,
dbus_cb_dunst_Properties_Get,
dbus_cb_dunst_Properties_Set,
}

Definition at line 1262 of file dbus.c.

◆ interface_vtable_fdn

const GDBusInterfaceVTable interface_vtable_fdn
static
Initial value:
= {
dbus_cb_fdn_methods,
}

Definition at line 1258 of file dbus.c.

◆ introspection_data

GDBusNodeInfo* introspection_data = NULL
static

Definition at line 37 of file dbus.c.

◆ introspection_xml

const char* introspection_xml
static

Definition at line 39 of file dbus.c.

◆ methods_dunst

struct dbus_method methods_dunst[]
static
Initial value:
= {
{"ConfigReload", dbus_cb_dunst_ConfigReload},
{"ContextMenuCall", dbus_cb_dunst_ContextMenuCall},
{"NotificationAction", dbus_cb_dunst_NotificationAction},
{"NotificationClearHistory", dbus_cb_dunst_NotificationClearHistory},
{"NotificationCloseAll", dbus_cb_dunst_NotificationCloseAll},
{"NotificationCloseLast", dbus_cb_dunst_NotificationCloseLast},
{"NotificationListHistory", dbus_cb_dunst_NotificationListHistory},
{"NotificationPopHistory", dbus_cb_dunst_NotificationPopHistory},
{"NotificationRemoveFromHistory", dbus_cb_dunst_NotificationRemoveFromHistory},
{"NotificationShow", dbus_cb_dunst_NotificationShow},
{"Ping", dbus_cb_dunst_Ping},
{"RuleEnable", dbus_cb_dunst_RuleEnable},
{"RuleList", dbus_cb_dunst_RuleList},
}

Definition at line 226 of file dbus.c.

◆ methods_fdn

struct dbus_method methods_fdn[]
static
Initial value:
= {
{"CloseNotification", dbus_cb_CloseNotification},
{"GetCapabilities", dbus_cb_GetCapabilities},
{"GetServerInformation", dbus_cb_GetServerInformation},
{"Notify", dbus_cb_Notify},
}

Definition at line 180 of file dbus.c.

◆ stack_tag_hints

const char* stack_tag_hints[]
static
Initial value:
= {
"synchronous",
"private-synchronous",
"x-canonical-private-synchronous",
"x-dunst-stack-tag"
}

Definition at line 147 of file dbus.c.