Add debug command
This commit is contained in:
parent
e80e8e9eb5
commit
a3342d0ced
16
dunstctl
16
dunstctl
@ -20,6 +20,7 @@ function show_help() {
|
||||
history-pop Pop one notification from history
|
||||
status Check if
|
||||
status-set [true|false] Set the status
|
||||
debug Print debugging information
|
||||
help Show this help
|
||||
EOH
|
||||
}
|
||||
@ -66,6 +67,21 @@ case "${1:-}" in
|
||||
"help"|"--help"|"-h")
|
||||
show_help
|
||||
;;
|
||||
"debug")
|
||||
dbus-send --print-reply=literal --dest="${DBUS_NAME}" "${DBUS_PATH}" "${DBUS_IFAC_FDN}.GetServerInformation" >/dev/null 2>/dev/null \
|
||||
|| die "Dunst is not running."
|
||||
|
||||
dbus-send --print-reply=literal --dest="${DBUS_NAME}" "${DBUS_PATH}" "${DBUS_IFAC_FDN}.GetServerInformation" \
|
||||
| (
|
||||
read name vendor version protocol_version
|
||||
[ "${name}" == dunst ]
|
||||
printf "dunst version: %s\n" "${version}"
|
||||
) \
|
||||
|| die "Another notification manager is running. It's not dunst"
|
||||
|
||||
dbus-send --print-reply=literal --dest="${DBUS_NAME}" "${DBUS_PATH}" "${DBUS_IFAC_DUNST}.Ping" >/dev/null 2>/dev/null \
|
||||
|| die "Dunst controlling interface not available. Is the version too old?"
|
||||
;;
|
||||
"")
|
||||
die "dunstctl: No command specified. Please consult the usage."
|
||||
;;
|
||||
|
14
src/dbus.c
14
src/dbus.c
@ -76,6 +76,7 @@ static const char *introspection_xml =
|
||||
" <method name=\"NotificationCloseLast\" />"
|
||||
" <method name=\"NotificationCloseAll\" />"
|
||||
" <method name=\"NotificationShow\" />"
|
||||
" <method name=\"Ping\" />"
|
||||
|
||||
" <property name=\"running\" type=\"b\" access=\"readwrite\">"
|
||||
" <annotation name=\"org.freedesktop.DBus.Property.EmitsChangedSignal\" value=\"true\"/>"
|
||||
@ -154,11 +155,13 @@ DBUS_METHOD(dunst_ContextMenuCall);
|
||||
DBUS_METHOD(dunst_NotificationCloseAll);
|
||||
DBUS_METHOD(dunst_NotificationCloseLast);
|
||||
DBUS_METHOD(dunst_NotificationShow);
|
||||
DBUS_METHOD(dunst_Ping);
|
||||
static struct dbus_method methods_dunst[] = {
|
||||
{"ContextMenuCall", dbus_cb_dunst_ContextMenuCall},
|
||||
{"NotificationCloseAll", dbus_cb_dunst_NotificationCloseAll},
|
||||
{"NotificationCloseLast", dbus_cb_dunst_NotificationCloseLast},
|
||||
{"NotificationShow", dbus_cb_dunst_NotificationShow},
|
||||
{"Ping", dbus_cb_dunst_Ping},
|
||||
};
|
||||
|
||||
void dbus_cb_dunst_methods(GDBusConnection *connection,
|
||||
@ -241,6 +244,17 @@ static void dbus_cb_dunst_NotificationShow(GDBusConnection *connection,
|
||||
g_dbus_connection_flush(connection, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
/* Just a simple Ping command to give the ability to dunstctl to test for the existence of this interface
|
||||
* Any other way requires parsing the XML of the Introspection or other foo. Just calling the Ping on an old dunst version will fail. */
|
||||
static void dbus_cb_dunst_Ping(GDBusConnection *connection,
|
||||
const gchar *sender,
|
||||
GVariant *parameters,
|
||||
GDBusMethodInvocation *invocation)
|
||||
{
|
||||
g_dbus_method_invocation_return_value(invocation, NULL);
|
||||
g_dbus_connection_flush(connection, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
static void dbus_cb_GetCapabilities(
|
||||
GDBusConnection *connection,
|
||||
|
Loading…
x
Reference in New Issue
Block a user