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 | 	  history-pop              Pop one notification from history | ||||||
| 	  status                   Check if | 	  status                   Check if | ||||||
| 	  status-set [true|false]  Set the status | 	  status-set [true|false]  Set the status | ||||||
|  | 	  debug                    Print debugging information | ||||||
| 	  help                     Show this help | 	  help                     Show this help | ||||||
| 	EOH | 	EOH | ||||||
| } | } | ||||||
| @ -66,6 +67,21 @@ case "${1:-}" in | |||||||
| 	"help"|"--help"|"-h") | 	"help"|"--help"|"-h") | ||||||
| 		show_help | 		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." | 		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=\"NotificationCloseLast\" />" | ||||||
|     "        <method name=\"NotificationCloseAll\"  />" |     "        <method name=\"NotificationCloseAll\"  />" | ||||||
|     "        <method name=\"NotificationShow\"      />" |     "        <method name=\"NotificationShow\"      />" | ||||||
|  |     "        <method name=\"Ping\"                  />" | ||||||
| 
 | 
 | ||||||
|     "        <property name=\"running\" type=\"b\" access=\"readwrite\">" |     "        <property name=\"running\" type=\"b\" access=\"readwrite\">" | ||||||
|     "            <annotation name=\"org.freedesktop.DBus.Property.EmitsChangedSignal\" value=\"true\"/>" |     "            <annotation name=\"org.freedesktop.DBus.Property.EmitsChangedSignal\" value=\"true\"/>" | ||||||
| @ -154,11 +155,13 @@ DBUS_METHOD(dunst_ContextMenuCall); | |||||||
| DBUS_METHOD(dunst_NotificationCloseAll); | DBUS_METHOD(dunst_NotificationCloseAll); | ||||||
| DBUS_METHOD(dunst_NotificationCloseLast); | DBUS_METHOD(dunst_NotificationCloseLast); | ||||||
| DBUS_METHOD(dunst_NotificationShow); | DBUS_METHOD(dunst_NotificationShow); | ||||||
|  | DBUS_METHOD(dunst_Ping); | ||||||
| static struct dbus_method methods_dunst[] = { | static struct dbus_method methods_dunst[] = { | ||||||
|         {"ContextMenuCall",        dbus_cb_dunst_ContextMenuCall}, |         {"ContextMenuCall",        dbus_cb_dunst_ContextMenuCall}, | ||||||
|         {"NotificationCloseAll",   dbus_cb_dunst_NotificationCloseAll}, |         {"NotificationCloseAll",   dbus_cb_dunst_NotificationCloseAll}, | ||||||
|         {"NotificationCloseLast",  dbus_cb_dunst_NotificationCloseLast}, |         {"NotificationCloseLast",  dbus_cb_dunst_NotificationCloseLast}, | ||||||
|         {"NotificationShow",       dbus_cb_dunst_NotificationShow}, |         {"NotificationShow",       dbus_cb_dunst_NotificationShow}, | ||||||
|  |         {"Ping",                   dbus_cb_dunst_Ping}, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| void dbus_cb_dunst_methods(GDBusConnection *connection, | 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); |         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( | static void dbus_cb_GetCapabilities( | ||||||
|                 GDBusConnection *connection, |                 GDBusConnection *connection, | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Benedikt Heine
						Benedikt Heine