diff --git a/config.def.h b/config.def.h
index e2acaf1..2cb999a 100644
--- a/config.def.h
+++ b/config.def.h
@@ -23,13 +23,13 @@ int sticky_history = True;
int verbosity = 0;
int word_wrap = False;
int ignore_newline = False;
-int line_height = 0; /* if line height < font height, it will be raised to font height */
+int line_height = 0; /* if line height < font height, it will be raised to font height */
-int separator_height = 2; /* height of the separator line between two notifications */
+int separator_height = 2; /* height of the separator line between two notifications */
int padding = 0;
-int h_padding = 0; /* horizontal padding */
-enum separator_color sep_color = AUTO; /* AUTO, FOREGROUND, FRAME, CUSTOM */
-char *sep_custom_color_str = NULL; /* custom color if sep_color is set to CUSTOM */
+int h_padding = 0; /* horizontal padding */
+enum separator_color sep_color = AUTO; /* AUTO, FOREGROUND, FRAME, CUSTOM */
+char *sep_custom_color_str = NULL; /* custom color if sep_color is set to CUSTOM */
int frame_width = 0;
char *frame_color = "#888888";
@@ -39,7 +39,6 @@ char *frame_color = "#888888";
* */
int startup_notification = False;
-
/* monitor to display notifications on */
int monitor = 0;
@@ -63,25 +62,29 @@ enum follow_mode f_mode = FOLLOW_NONE;
* use "none" to disable
*/
keyboard_shortcut close_ks = {.str = "none",
- .code = 0, .sym = NoSymbol,.is_valid = False}; /* ignore this */
+ .code = 0,.sym = NoSymbol,.is_valid = False
+}; /* ignore this */
keyboard_shortcut close_all_ks = {.str = "none",
- .code = 0, .sym = NoSymbol,.is_valid = False}; /* ignore this */
+ .code = 0,.sym = NoSymbol,.is_valid = False
+}; /* ignore this */
keyboard_shortcut history_ks = {.str = "none",
- .code = 0, .sym = NoSymbol,.is_valid = False}; /* ignore this */
+ .code = 0,.sym = NoSymbol,.is_valid = False
+}; /* ignore this */
keyboard_shortcut context_ks = {.str = "none",
- .code = 0, .sym = NoSymbol,.is_valid = False}; /* ignore this */
+ .code = 0,.sym = NoSymbol,.is_valid = False
+}; /* ignore this */
rule_t default_rules[] = {
- /* name can be any unique string. It is used to identify the rule in dunstrc to override it there */
+ /* name can be any unique string. It is used to identify the rule in dunstrc to override it there */
- /* name, appname, summary, body, icon, timeout, urgency, fg, bg, format, script */
- { "empty", NULL, NULL, NULL, NULL, -1, -1, NULL, NULL, NULL, NULL},
- /* { "rule1", "notify-send", NULL, NULL, NULL, -1, -1, NULL, NULL, "%s %b", NULL }, */
- /* { "rule2", "Pidgin", "*says*, NULL, NULL, -1, CRITICAL, NULL, NULL, NULL, NULL }, */
- /* { "rule3", "Pidgin", "*signed on*", NULL, NULL, -1, LOW, NULL, NULL, NULL, NULL }, */
- /* { "rule4", "Pidgin", "*signed off*", NULL, NULL, -1, LOW, NULL, NULL, NULL, NULL }, */
- /* { "rule5", NULL, "*foobar*", NULL, NULL, -1, -1, NULL, "#00FF00", NULL, NULL }, */
- };
+ /* name, appname, summary, body, icon, timeout, urgency, fg, bg, format, script */
+ {"empty", NULL, NULL, NULL, NULL, -1, -1, NULL, NULL, NULL, NULL},
+ /* { "rule1", "notify-send", NULL, NULL, NULL, -1, -1, NULL, NULL, "%s %b", NULL }, */
+ /* { "rule2", "Pidgin", "*says*, NULL, NULL, -1, CRITICAL, NULL, NULL, NULL, NULL }, */
+ /* { "rule3", "Pidgin", "*signed on*", NULL, NULL, -1, LOW, NULL, NULL, NULL, NULL }, */
+ /* { "rule4", "Pidgin", "*signed off*", NULL, NULL, -1, LOW, NULL, NULL, NULL, NULL }, */
+ /* { "rule5", NULL, "*foobar*", NULL, NULL, -1, -1, NULL, "#00FF00", NULL, NULL }, */
+};
diff --git a/dbus.c b/dbus.c
index c5dc31a..1a0b575 100644
--- a/dbus.c
+++ b/dbus.c
@@ -10,14 +10,13 @@ GDBusConnection *dbus_conn;
static GDBusNodeInfo *introspection_data = NULL;
-static const char *introspection_xml = ""
+static const char *introspection_xml =
+ ""
""
- " "
- " "
+ " " " "
" "
" "
- " "
- " "
+ " " " "
" "
" "
" "
@@ -27,98 +26,85 @@ static const char *introspection_xml = ""
" "
" "
- " "
- " "
- " "
+ " " " " " "
" "
- " "
- " "
+ " " " "
" "
" "
" "
" "
- " "
- " "
+ " " " "
" "
- " "
- " "
+ " " " "
" "
" "
- " "
- " "
- " "
- " "
- " "
+ " " " "
+ " " " " " "
" " " " "";
+static void onGetCapabilities(GDBusConnection * connection,
+ const gchar * sender,
+ const GVariant * parameters,
+ GDBusMethodInvocation * invocation);
+static void onNotify(GDBusConnection * connection,
+ const gchar * sender,
+ GVariant * parameters, GDBusMethodInvocation * invocation);
+static void onCloseNotification(GDBusConnection * connection,
+ const gchar * sender,
+ GVariant * parameters,
+ GDBusMethodInvocation * invocation);
+static void onGetServerInformation(GDBusConnection * connection,
+ const gchar * sender,
+ const GVariant * parameters,
+ GDBusMethodInvocation * invocation);
-static void onGetCapabilities(GDBusConnection *connection,
- const gchar *sender,
- const GVariant *parameters,
- GDBusMethodInvocation *invocation);
-static void onNotify(GDBusConnection *connection,
- const gchar *sender,
- GVariant *parameters,
- GDBusMethodInvocation *invocation);
-static void onCloseNotification(GDBusConnection *connection,
- const gchar *sender,
- GVariant *parameters,
- GDBusMethodInvocation *invocation);
-static void onGetServerInformation(GDBusConnection *connection,
- const gchar *sender,
- const GVariant *parameters,
- GDBusMethodInvocation *invocation);
-
-void handle_method_call(GDBusConnection *connection,
- const gchar *sender,
- const gchar *object_path,
- const gchar *interface_name,
- const gchar *method_name,
- GVariant *parameters,
- GDBusMethodInvocation *invocation,
- gpointer user_data)
+void handle_method_call(GDBusConnection * connection,
+ const gchar * sender,
+ const gchar * object_path,
+ const gchar * interface_name,
+ const gchar * method_name,
+ GVariant * parameters,
+ GDBusMethodInvocation * invocation, gpointer user_data)
{
if (g_strcmp0(method_name, "GetCapabilities") == 0) {
onGetCapabilities(connection, sender, parameters, invocation);
- }
- else if (g_strcmp0(method_name, "Notify") == 0) {
+ } else if (g_strcmp0(method_name, "Notify") == 0) {
onNotify(connection, sender, parameters, invocation);
- }
- else if (g_strcmp0(method_name, "CloseNotification") == 0) {
+ } else if (g_strcmp0(method_name, "CloseNotification") == 0) {
onCloseNotification(connection, sender, parameters, invocation);
- }
- else if (g_strcmp0(method_name, "GetServerInformation") == 0) {
- onGetServerInformation(connection, sender, parameters, invocation);
+ } else if (g_strcmp0(method_name, "GetServerInformation") == 0) {
+ onGetServerInformation(connection, sender, parameters,
+ invocation);
} else {
g_object_unref(invocation);
- printf("WARNING: sender: %s; unknown method_name: %s\n", sender, method_name);
+ printf("WARNING: sender: %s; unknown method_name: %s\n", sender,
+ method_name);
}
}
-static void onGetCapabilities(GDBusConnection *connection,
- const gchar *sender,
- const GVariant *parameters,
- GDBusMethodInvocation *invocation)
+static void onGetCapabilities(GDBusConnection * connection,
+ const gchar * sender,
+ const GVariant * parameters,
+ GDBusMethodInvocation * invocation)
{
GVariantBuilder *builder;
GVariant *value;
- builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
- g_variant_builder_add (builder, "s", "actions");
- g_variant_builder_add (builder, "s", "body");
- value = g_variant_new ("(as)", builder);
- g_variant_builder_unref (builder);
+ builder = g_variant_builder_new(G_VARIANT_TYPE("as"));
+ g_variant_builder_add(builder, "s", "actions");
+ g_variant_builder_add(builder, "s", "body");
+ value = g_variant_new("(as)", builder);
+ g_variant_builder_unref(builder);
g_dbus_method_invocation_return_value(invocation, value);
g_dbus_connection_flush(connection, NULL, NULL, NULL);
g_variant_unref(value);
}
-static void onNotify(GDBusConnection *connection,
- const gchar *sender,
- GVariant *parameters,
- GDBusMethodInvocation *invocation)
+static void onNotify(GDBusConnection * connection,
+ const gchar * sender,
+ GVariant * parameters, GDBusMethodInvocation * invocation)
{
gchar *appname = NULL;
@@ -146,53 +132,83 @@ static void onNotify(GDBusConnection *connection,
while ((content = g_variant_iter_next_value(iter))) {
switch (idx) {
- case 0:
- if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING))
- appname = g_variant_dup_string(content, NULL);
- break;
- case 1:
- if (g_variant_is_of_type(content, G_VARIANT_TYPE_UINT32))
- replaces_id = g_variant_get_uint32(content);
- break;
- case 2:
- if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING))
- icon = g_variant_dup_string(content, NULL);
- break;
- case 3:
- if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING))
- summary = g_variant_dup_string(content, NULL);
- break;
- case 4:
- if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING))
- body = g_variant_dup_string(content, NULL);
- break;
- case 5:
- if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING_ARRAY))
- actions->actions = g_variant_dup_strv(content, &(actions->count));
- break;
- case 6:
- if (g_variant_is_of_type(content, G_VARIANT_TYPE_DICTIONARY)) {
+ case 0:
+ if (g_variant_is_of_type
+ (content, G_VARIANT_TYPE_STRING))
+ appname =
+ g_variant_dup_string(content, NULL);
+ break;
+ case 1:
+ if (g_variant_is_of_type
+ (content, G_VARIANT_TYPE_UINT32))
+ replaces_id =
+ g_variant_get_uint32(content);
+ break;
+ case 2:
+ if (g_variant_is_of_type
+ (content, G_VARIANT_TYPE_STRING))
+ icon =
+ g_variant_dup_string(content, NULL);
+ break;
+ case 3:
+ if (g_variant_is_of_type
+ (content, G_VARIANT_TYPE_STRING))
+ summary =
+ g_variant_dup_string(content, NULL);
+ break;
+ case 4:
+ if (g_variant_is_of_type
+ (content, G_VARIANT_TYPE_STRING))
+ body =
+ g_variant_dup_string(content, NULL);
+ break;
+ case 5:
+ if (g_variant_is_of_type
+ (content, G_VARIANT_TYPE_STRING_ARRAY))
+ actions->actions =
+ g_variant_dup_strv(content,
+ &(actions->
+ count));
+ break;
+ case 6:
+ if (g_variant_is_of_type
+ (content, G_VARIANT_TYPE_DICTIONARY)) {
- dict_value = g_variant_lookup_value(content, "urgency", G_VARIANT_TYPE_BYTE);
- if (dict_value)
- urgency = g_variant_get_byte(dict_value);
+ dict_value =
+ g_variant_lookup_value(content,
+ "urgency",
+ G_VARIANT_TYPE_BYTE);
+ if (dict_value)
+ urgency =
+ g_variant_get_byte
+ (dict_value);
- dict_value = g_variant_lookup_value(content, "fgcolor", G_VARIANT_TYPE_STRING);
- if (dict_value)
- fgcolor = g_variant_dup_string(dict_value, NULL);
+ dict_value =
+ g_variant_lookup_value(content,
+ "fgcolor",
+ G_VARIANT_TYPE_STRING);
+ if (dict_value)
+ fgcolor =
+ g_variant_dup_string
+ (dict_value, NULL);
- dict_value = g_variant_lookup_value(content, "bgcolor", G_VARIANT_TYPE_STRING);
- if(dict_value)
- bgcolor = g_variant_dup_string(dict_value, NULL);
- }
- break;
- case 7:
- if (g_variant_is_of_type(content, G_VARIANT_TYPE_INT32))
- timeout = g_variant_get_int32(content);
- break;
+ dict_value =
+ g_variant_lookup_value(content,
+ "bgcolor",
+ G_VARIANT_TYPE_STRING);
+ if (dict_value)
+ bgcolor =
+ g_variant_dup_string
+ (dict_value, NULL);
+ }
+ break;
+ case 7:
+ if (g_variant_is_of_type
+ (content, G_VARIANT_TYPE_INT32))
+ timeout = g_variant_get_int32(content);
+ break;
}
-
idx++;
}
@@ -209,7 +225,7 @@ static void onNotify(GDBusConnection *connection,
}
}
- notification *n = malloc(sizeof (notification));
+ notification *n = malloc(sizeof(notification));
n->appname = appname;
n->summary = summary;
n->body = body;
@@ -219,10 +235,10 @@ static void onNotify(GDBusConnection *connection,
n->urgency = urgency;
n->dbus_client = strdup(sender);
if (actions->count > 0) {
- n->actions = actions;
+ n->actions = actions;
} else {
- n->actions = NULL;
- free(actions);
+ n->actions = NULL;
+ free(actions);
}
for (int i = 0; i < ColLast; i++) {
@@ -234,17 +250,17 @@ static void onNotify(GDBusConnection *connection,
int id = notification_init(n, replaces_id);
wake_up();
- GVariant *reply = g_variant_new ("(u)", id);
+ GVariant *reply = g_variant_new("(u)", id);
g_dbus_method_invocation_return_value(invocation, reply);
g_dbus_connection_flush(connection, NULL, NULL, NULL);
run(NULL);
}
-static void onCloseNotification(GDBusConnection *connection,
- const gchar *sender,
- GVariant *parameters,
- GDBusMethodInvocation *invocation)
+static void onCloseNotification(GDBusConnection * connection,
+ const gchar * sender,
+ GVariant * parameters,
+ GDBusMethodInvocation * invocation)
{
guint32 id;
g_variant_get(parameters, "(u)", &id);
@@ -253,14 +269,14 @@ static void onCloseNotification(GDBusConnection *connection,
g_dbus_connection_flush(connection, NULL, NULL, NULL);
}
-static void onGetServerInformation(GDBusConnection *connection,
- const gchar *sender,
- const GVariant *parameters,
- GDBusMethodInvocation *invocation)
+static void onGetServerInformation(GDBusConnection * connection,
+ const gchar * sender,
+ const GVariant * parameters,
+ GDBusMethodInvocation * invocation)
{
GVariant *value;
- value = g_variant_new ("(ssss)", "dunst", "knopwob", VERSION, "1.2");
+ value = g_variant_new("(ssss)", "dunst", "knopwob", VERSION, "1.2");
g_dbus_method_invocation_return_value(invocation, value);
g_dbus_connection_flush(connection, NULL, NULL, NULL);
@@ -269,21 +285,18 @@ static void onGetServerInformation(GDBusConnection *connection,
void notificationClosed(notification * n, int reason)
{
if (!dbus_conn) {
- printf("DEBUG: notificationClosed but not (yet) connected\n");
- return;
+ printf("DEBUG: notificationClosed but not (yet) connected\n");
+ return;
}
- GVariant *body = g_variant_new ("(uu)", n->id, reason);
+ GVariant *body = g_variant_new("(uu)", n->id, reason);
GError *err = NULL;
- g_dbus_connection_emit_signal(
- dbus_conn,
- n->dbus_client,
- "/org/freedesktop/Notifications",
- "org.freedesktop.Notifications",
- "NotificationClosed",
- body,
- &err);
+ g_dbus_connection_emit_signal(dbus_conn,
+ n->dbus_client,
+ "/org/freedesktop/Notifications",
+ "org.freedesktop.Notifications",
+ "NotificationClosed", body, &err);
if (err) {
printf("notificationClosed ERROR\n");
@@ -291,60 +304,52 @@ void notificationClosed(notification * n, int reason)
}
-void actionInvoked(notification *n, const char *identifier)
+void actionInvoked(notification * n, const char *identifier)
{
- GVariant *body = g_variant_new ("(us)", n->id, identifier);
+ GVariant *body = g_variant_new("(us)", n->id, identifier);
GError *err = NULL;
- g_dbus_connection_emit_signal(
- dbus_conn,
- n->dbus_client,
- "/org/freedesktop/Notifications",
- "org.freedesktop.Notifications",
- "ActionInvoked",
- body,
- &err);
+ g_dbus_connection_emit_signal(dbus_conn,
+ n->dbus_client,
+ "/org/freedesktop/Notifications",
+ "org.freedesktop.Notifications",
+ "ActionInvoked", body, &err);
if (err) {
printf("ActionInvoked ERROR\n");
}
}
-static const GDBusInterfaceVTable interface_vtable =
-{
+static const GDBusInterfaceVTable interface_vtable = {
handle_method_call
};
-static void on_bus_acquired(GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
+static void on_bus_acquired(GDBusConnection * connection,
+ const gchar * name, gpointer user_data)
{
guint registration_id;
- registration_id = g_dbus_connection_register_object( connection,
- "/org/freedesktop/Notifications",
- introspection_data->interfaces[0],
- &interface_vtable,
- NULL,
- NULL,
- NULL);
+ registration_id = g_dbus_connection_register_object(connection,
+ "/org/freedesktop/Notifications",
+ introspection_data->
+ interfaces[0],
+ &interface_vtable,
+ NULL, NULL, NULL);
- if (! registration_id > 0) {
+ if (!registration_id > 0) {
fprintf(stderr, "Unable to register\n");
exit(1);
}
}
-static void on_name_acquired(GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
+static void on_name_acquired(GDBusConnection * connection,
+ const gchar * name, gpointer user_data)
{
dbus_conn = connection;
}
-static void on_name_lost(GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
+static void on_name_lost(GDBusConnection * connection,
+ const gchar * name, gpointer user_data)
{
fprintf(stderr, "Name Lost\n");
exit(1);
@@ -357,22 +362,20 @@ int initdbus(void)
g_type_init();
introspection_data = g_dbus_node_info_new_for_xml(introspection_xml,
- NULL);
+ NULL);
- owner_id = g_bus_own_name (G_BUS_TYPE_SESSION,
- "org.freedesktop.Notifications",
- G_BUS_NAME_OWNER_FLAGS_NONE,
- on_bus_acquired,
- on_name_acquired,
- on_name_lost,
- NULL,
- NULL);
+ owner_id = g_bus_own_name(G_BUS_TYPE_SESSION,
+ "org.freedesktop.Notifications",
+ G_BUS_NAME_OWNER_FLAGS_NONE,
+ on_bus_acquired,
+ on_name_acquired, on_name_lost, NULL, NULL);
return owner_id;
}
void dbus_tear_down(int owner_id)
{
- g_bus_unown_name(owner_id);
+ g_bus_unown_name(owner_id);
}
+
/* vim: set ts=8 sw=8 tw=0: */
diff --git a/dbus.h b/dbus.h
index 4175785..56f1dc7 100644
--- a/dbus.h
+++ b/dbus.h
@@ -11,7 +11,7 @@ int initdbus(void);
void dbus_tear_down(int id);
/* void dbus_poll(int timeout); */
void notificationClosed(notification * n, int reason);
-void actionInvoked(notification *n, const char *identifier);
+void actionInvoked(notification * n, const char *identifier);
#endif
diff --git a/dunst.c b/dunst.c
index a59f51d..7dc9106 100644
--- a/dunst.c
+++ b/dunst.c
@@ -37,7 +37,6 @@
#include "option_parser.h"
#include "settings.h"
-
#define LENGTH(X) (sizeof X / sizeof X[0])
#ifndef VERSION
@@ -54,9 +53,6 @@ typedef struct _x11_source {
Window w;
} x11_source_t;
-
-
-
/* index of colors fit to urgency level */
bool pause_display = false;
@@ -65,37 +61,22 @@ bool timer_active = false;
bool force_redraw = false;
-
/* notification lists */
-GQueue *queue = NULL; /* all new notifications get into here */
-GQueue *displayed = NULL; /* currently displayed notifications */
-GQueue *history = NULL; /* history of displayed notifications */
+GQueue *queue = NULL; /* all new notifications get into here */
+GQueue *displayed = NULL; /* currently displayed notifications */
+GQueue *history = NULL; /* history of displayed notifications */
GSList *rules = NULL;
-
-
-
/* misc funtions */
-
-
-
-
-
-
-
-
-
-
-
-
void check_timeouts(void)
{
/* nothing to do */
if (displayed->length == 0)
return;
- for (GList *iter = g_queue_peek_head_link(displayed); iter; iter = iter->next) {
+ for (GList * iter = g_queue_peek_head_link(displayed); iter;
+ iter = iter->next) {
notification *n = iter->data;
/* don't timeout when user is idle */
@@ -128,7 +109,8 @@ void update_lists()
if (pause_display) {
while (displayed->length > 0) {
- g_queue_insert_sorted(queue, g_queue_pop_head(queue), notification_cmp_data, NULL);
+ g_queue_insert_sorted(queue, g_queue_pop_head(queue),
+ notification_cmp_data, NULL);
}
return;
}
@@ -143,7 +125,6 @@ void update_lists()
limit = xctx.geometry.h;
}
-
/* move notifications from queue to displayed */
while (queue->length > 0) {
@@ -163,11 +144,11 @@ void update_lists()
notification_run_script(n);
}
- g_queue_insert_sorted(displayed, n, notification_cmp_data, NULL);
+ g_queue_insert_sorted(displayed, n, notification_cmp_data,
+ NULL);
}
}
-
void move_all_to_history()
{
while (displayed->length > 0) {
@@ -205,7 +186,7 @@ void update(void)
/* move messages from notification_queue to displayed_notifications */
update_lists();
- if (displayed->length > 0 && ! xctx.visible) {
+ if (displayed->length > 0 && !xctx.visible) {
x_win_show();
}
if (displayed->length == 0 && xctx.visible) {
@@ -248,10 +229,6 @@ gboolean run(void *data)
return true;
}
-
-
-
-
int main(int argc, char *argv[])
{
@@ -259,7 +236,6 @@ int main(int argc, char *argv[])
displayed = g_queue_new();
queue = g_queue_new();
-
cmdline_load(argc, argv);
if (cmdline_get_bool("-v/-version", false, "Print version")
@@ -282,11 +258,11 @@ int main(int argc, char *argv[])
x_setup();
- signal (SIGUSR1, pause_signal_handler);
- signal (SIGUSR2, pause_signal_handler);
+ signal(SIGUSR1, pause_signal_handler);
+ signal(SIGUSR2, pause_signal_handler);
if (settings.startup_notification) {
- notification *n = malloc(sizeof (notification));
+ notification *n = malloc(sizeof(notification));
n->appname = "dunst";
n->summary = "startup";
n->body = "dunst is up and running";
@@ -305,8 +281,9 @@ int main(int argc, char *argv[])
mainloop = g_main_loop_new(NULL, FALSE);
- GPollFD dpy_pollfd = {xctx.dc->dpy->fd,
- G_IO_IN | G_IO_HUP | G_IO_ERR, 0 };
+ GPollFD dpy_pollfd = { xctx.dc->dpy->fd,
+ G_IO_IN | G_IO_HUP | G_IO_ERR, 0
+ };
GSourceFuncs x11_source_funcs = {
x_mainloop_fd_prepare,
@@ -314,20 +291,21 @@ int main(int argc, char *argv[])
x_mainloop_fd_dispatch,
NULL,
NULL,
- NULL };
+ NULL
+ };
GSource *x11_source =
- g_source_new(&x11_source_funcs, sizeof(x11_source_t));
- ((x11_source_t*)x11_source)->dpy = xctx.dc->dpy;
- ((x11_source_t*)x11_source)->w = xctx.win;
- g_source_add_poll(x11_source, &dpy_pollfd);
+ g_source_new(&x11_source_funcs, sizeof(x11_source_t));
+ ((x11_source_t *) x11_source)->dpy = xctx.dc->dpy;
+ ((x11_source_t *) x11_source)->w = xctx.win;
+ g_source_add_poll(x11_source, &dpy_pollfd);
- g_source_attach(x11_source, NULL);
+ g_source_attach(x11_source, NULL);
- run(NULL);
- g_main_loop_run(mainloop);
+ run(NULL);
+ g_main_loop_run(mainloop);
- dbus_tear_down(owner_id);
+ dbus_tear_down(owner_id);
return 0;
}
@@ -341,7 +319,7 @@ void pause_signal_handler(int sig)
pause_display = false;
}
- signal (sig, pause_signal_handler);
+ signal(sig, pause_signal_handler);
}
void usage(int exit_status)
@@ -355,8 +333,9 @@ void usage(int exit_status)
void print_version(void)
{
- printf("Dunst - A customizable and lightweight notification-daemon %s\n",
- VERSION);
+ printf
+ ("Dunst - A customizable and lightweight notification-daemon %s\n",
+ VERSION);
exit(EXIT_SUCCESS);
}
diff --git a/dunst.h b/dunst.h
index 9ea632a..4923fbf 100644
--- a/dunst.h
+++ b/dunst.h
@@ -11,7 +11,6 @@
#define PERR(msg, errnum) printf("(%d) %s : %s\n", __LINE__, (msg), (strerror(errnum)))
#define LENGTH(X) (sizeof X / sizeof X[0])
-
#define ColLast 2
#define ColFG 1
#define ColBG 0
@@ -20,7 +19,6 @@ enum alignment { left, center, right };
enum separator_color { FOREGROUND, AUTO, FRAME, CUSTOM };
enum follow_mode { FOLLOW_NONE, FOLLOW_MOUSE, FOLLOW_KEYBOARD };
-
extern int verbosity;
extern GQueue *queue;
extern GQueue *displayed;
@@ -30,8 +28,6 @@ extern bool pause_display;
extern const char *color_strings[2][3];
extern DC *dc;
-
-
/* return id of notification */
gboolean run(void *data);
void wake_up(void);
diff --git a/menu.c b/menu.c
index 27d6378..a567ca8 100644
--- a/menu.c
+++ b/menu.c
@@ -12,81 +12,79 @@
#include "settings.h"
#include "dbus.h"
-
/*
* Exctract all urls from a given string.
*
* Return: a string of urls separated by \n
*
*/
-char *extract_urls( const char * to_match)
+char *extract_urls(const char *to_match)
{
- static bool is_initialized = false;
- static regex_t cregex;
+ static bool is_initialized = false;
+ static regex_t cregex;
- if (!is_initialized) {
- char *regex = "((http|ftp|https)(://))?(www\\.)?[[:alnum:]_-]+\\.[^[:space:]]+";
- int ret = regcomp(&cregex, regex, REG_EXTENDED|REG_ICASE);
- if (ret != 0) {
- printf("failed to compile regex\n");
- return NULL;
- } else {
- is_initialized = true;
+ if (!is_initialized) {
+ char *regex =
+ "((http|ftp|https)(://))?(www\\.)?[[:alnum:]_-]+\\.[^[:space:]]+";
+ int ret = regcomp(&cregex, regex, REG_EXTENDED | REG_ICASE);
+ if (ret != 0) {
+ printf("failed to compile regex\n");
+ return NULL;
+ } else {
+ is_initialized = true;
+ }
}
- }
- char *urls = NULL;
+ char *urls = NULL;
- const char * p = to_match;
- regmatch_t m;
+ const char *p = to_match;
+ regmatch_t m;
- while (1) {
- int nomatch = regexec (&cregex, p, 1, &m, 0);
- if (nomatch) {
- return urls;
+ while (1) {
+ int nomatch = regexec(&cregex, p, 1, &m, 0);
+ if (nomatch) {
+ return urls;
+ }
+ int start;
+ int finish;
+ if (m.rm_so == -1) {
+ break;
+ }
+ start = m.rm_so + (p - to_match);
+ finish = m.rm_eo + (p - to_match);
+
+ char *match = strndup(to_match + start, finish - start);
+
+ urls = string_append(urls, match, "\n");
+
+ p += m.rm_eo;
}
- int start;
- int finish;
- if (m.rm_so == -1) {
- break;
- }
- start = m.rm_so + (p - to_match);
- finish = m.rm_eo + (p - to_match);
-
- char *match = strndup(to_match+start, finish-start);
-
- urls = string_append(urls, match, "\n");
-
- p += m.rm_eo;
- }
- return urls;
+ return urls;
}
-
-
/*
* Open url in browser.
*
*/
void open_browser(const char *url)
{
-int browser_pid1 = fork();
+ int browser_pid1 = fork();
-if (browser_pid1) {
- int status;
- waitpid(browser_pid1, &status, 0);
-} else {
- int browser_pid2 = fork();
- if (browser_pid2) {
- exit(0);
+ if (browser_pid1) {
+ int status;
+ waitpid(browser_pid1, &status, 0);
} else {
- char *browser_cmd = string_append(settings.browser, url, " ");
- char **cmd = g_strsplit(browser_cmd, " ", 0);
- execvp(cmd[0], cmd);
+ int browser_pid2 = fork();
+ if (browser_pid2) {
+ exit(0);
+ } else {
+ char *browser_cmd =
+ string_append(settings.browser, url, " ");
+ char **cmd = g_strsplit(browser_cmd, " ", 0);
+ execvp(cmd[0], cmd);
+ }
}
}
-}
-
/*
* Notify the corresponding client
@@ -94,38 +92,38 @@ if (browser_pid1) {
*/
void invoke_action(const char *action)
{
- notification *invoked = NULL;
- char *action_identifier = NULL;
+ notification *invoked = NULL;
+ char *action_identifier = NULL;
- char *name_begin = strstr(action, "(");
- if (!name_begin) {
- printf("invalid action: %s\n", action);
- return;
- }
- name_begin++;
+ char *name_begin = strstr(action, "(");
+ if (!name_begin) {
+ printf("invalid action: %s\n", action);
+ return;
+ }
+ name_begin++;
+ for (GList * iter = g_queue_peek_head_link(displayed); iter;
+ iter = iter->next) {
+ notification *n = iter->data;
+ if (g_str_has_prefix(action, n->appname)) {
+ if (!n->actions)
+ continue;
- for (GList *iter = g_queue_peek_head_link(displayed); iter; iter = iter->next) {
- notification *n = iter->data;
- if (g_str_has_prefix(action, n->appname)) {
- if (! n->actions)
- continue;
+ for (int i = 0; i < n->actions->count; i += 2) {
+ char *a_identifier = n->actions->actions[i];
+ char *name = n->actions->actions[i + 1];
+ if (g_str_has_prefix(name_begin, name)) {
+ invoked = n;
+ action_identifier = a_identifier;
+ break;
+ }
+ }
+ }
+ }
- for (int i = 0; i < n->actions->count; i += 2) {
- char *a_identifier = n->actions->actions[i];
- char *name = n->actions->actions[i+1];
- if (g_str_has_prefix(name_begin, name)) {
- invoked = n;
- action_identifier = a_identifier;
- break;
- }
- }
- }
- }
-
- if (invoked && action_identifier) {
- actionInvoked(invoked, action_identifier);
- }
+ if (invoked && action_identifier) {
+ actionInvoked(invoked, action_identifier);
+ }
}
/*
@@ -134,14 +132,14 @@ void invoke_action(const char *action)
*/
void dispatch_menu_result(const char *input)
{
- char *maybe_url = extract_urls(input);
- if (maybe_url) {
- open_browser(maybe_url);
- free(maybe_url);
- return;
- }
+ char *maybe_url = extract_urls(input);
+ if (maybe_url) {
+ open_browser(maybe_url);
+ free(maybe_url);
+ return;
+ }
- invoke_action(input);
+ invoke_action(input);
}
/*
@@ -152,14 +150,16 @@ void context_menu(void)
{
char *dmenu_input = NULL;
- for (GList *iter = g_queue_peek_head_link(displayed); iter; iter = iter->next) {
+ for (GList * iter = g_queue_peek_head_link(displayed); iter;
+ iter = iter->next) {
notification *n = iter->data;
dmenu_input = string_append(dmenu_input, n->urls, "\n");
if (n->actions)
- dmenu_input = string_append(dmenu_input, n->actions->dmenu_str, "\n");
+ dmenu_input =
+ string_append(dmenu_input, n->actions->dmenu_str,
+ "\n");
}
-
if (!dmenu_input)
return;
@@ -176,42 +176,39 @@ void context_menu(void)
}
int pid = fork();
- if (pid == 0) {
- close(child_io[1]);
+ if (pid == 0) {
+ close(child_io[1]);
+ close(parent_io[0]);
+ close(0);
+ if (dup(child_io[0]) == -1) {
+ PERR("dup()", errno);
+ exit(EXIT_FAILURE);
+ }
+ close(1);
+ if (dup(parent_io[1]) == -1) {
+ PERR("dup()", errno);
+ exit(EXIT_FAILURE);
+ }
+ execvp(settings.dmenu_cmd[0], settings.dmenu_cmd);
+ } else {
+ close(child_io[0]);
+ close(parent_io[1]);
+ size_t wlen = strlen(dmenu_input);
+ if (write(child_io[1], dmenu_input, wlen) != wlen) {
+ PERR("write()", errno);
+ }
+ close(child_io[1]);
+
+ size_t len = read(parent_io[0], buf, 1023);
+ if (len == 0)
+ return;
+ buf[len - 1] = '\0';
+
+ int status;
+ waitpid(pid, &status, 0);
+ }
+
close(parent_io[0]);
- close(0);
- if (dup(child_io[0]) == -1) {
- PERR("dup()", errno);
- exit(EXIT_FAILURE);
- }
- close(1);
- if (dup(parent_io[1]) == -1) {
- PERR("dup()", errno);
- exit(EXIT_FAILURE);
- }
- execvp(settings.dmenu_cmd[0], settings.dmenu_cmd);
- } else {
- close(child_io[0]);
- close(parent_io[1]);
- size_t wlen = strlen(dmenu_input);
- if (write(child_io[1], dmenu_input, wlen) != wlen) {
- PERR("write()", errno);
- }
- close(child_io[1]);
- size_t len = read(parent_io[0], buf, 1023);
- if (len == 0)
- return;
- buf[len - 1] = '\0';
-
- int status;
- waitpid(pid, &status, 0);
- }
-
- close(parent_io[0]);
-
-
- dispatch_menu_result(buf);
+ dispatch_menu_result(buf);
}
-
-
diff --git a/notification.c b/notification.c
index 0aeaf0b..ddce3b5 100644
--- a/notification.c
+++ b/notification.c
@@ -18,12 +18,8 @@
#include "rules.h"
#include "menu.h"
-
int next_notification_id = 1;
-
-
-
/*
* print a human readable representation
* of the given notification to stdout.
@@ -49,7 +45,8 @@ void notification_print(notification * n)
printf("\tactions:\n");
printf("\t{\n");
for (int i = 0; i < n->actions->count; i += 2) {
- printf("\t\t [%s,%s]\n", n->actions->actions[i], n->actions->actions[i+1]);
+ printf("\t\t [%s,%s]\n", n->actions->actions[i],
+ n->actions->actions[i + 1]);
}
printf("actions_dmenu: %s\n", n->actions->dmenu_str);
printf("\t]\n");
@@ -62,7 +59,7 @@ void notification_print(notification * n)
* Run the script associated with the
* given notification.
*/
-void notification_run_script(notification *n)
+void notification_run_script(notification * n)
{
if (!n->script || strlen(n->script) < 1)
return;
@@ -74,18 +71,18 @@ void notification_run_script(notification *n)
char *urgency;
switch (n->urgency) {
- case LOW:
- urgency = "LOW";
- break;
- case NORM:
- urgency = "NORMAL";
- break;
- case CRIT:
- urgency = "CRITICAL";
- break;
- default:
- urgency = "NORMAL";
- break;
+ case LOW:
+ urgency = "LOW";
+ break;
+ case NORM:
+ urgency = "NORMAL";
+ break;
+ case CRIT:
+ urgency = "CRITICAL";
+ break;
+ default:
+ urgency = "NORMAL";
+ break;
}
int pid1 = fork();
@@ -99,13 +96,12 @@ void notification_run_script(notification *n)
exit(0);
} else {
int ret = execlp(n->script, n->script,
- appname,
- summary,
- body,
- icon,
- urgency,
- (char *) NULL
- );
+ appname,
+ summary,
+ body,
+ icon,
+ urgency,
+ (char *)NULL);
if (ret != 0) {
PERR("Unable to run script", errno);
exit(EXIT_FAILURE);
@@ -120,8 +116,8 @@ void notification_run_script(notification *n)
*/
int notification_cmp(const void *va, const void *vb)
{
- notification *a = (notification*) va;
- notification *b = (notification*) vb;
+ notification *a = (notification *) va;
+ notification *b = (notification *) vb;
if (!settings.sort)
return 1;
@@ -142,7 +138,6 @@ int notification_cmp_data(const void *va, const void *vb, void *data)
return notification_cmp(va, vb);
}
-
/*
* Free the memory used by the given notification.
*/
@@ -265,11 +260,11 @@ int notification_init(notification * n, int id)
n->msg = g_strstrip(n->msg);
-
n->dup_count = 0;
/* check if n is a duplicate */
- for (GList *iter = g_queue_peek_head_link(queue); iter; iter = iter->next) {
+ for (GList * iter = g_queue_peek_head_link(queue); iter;
+ iter = iter->next) {
notification *orig = iter->data;
if (strcmp(orig->appname, n->appname) == 0
&& strcmp(orig->msg, n->msg) == 0) {
@@ -280,7 +275,8 @@ int notification_init(notification * n, int id)
}
}
- for (GList *iter = g_queue_peek_head_link(displayed); iter; iter = iter->next) {
+ for (GList * iter = g_queue_peek_head_link(displayed); iter;
+ iter = iter->next) {
notification *orig = iter->data;
if (strcmp(orig->appname, n->appname) == 0
&& strcmp(orig->msg, n->msg) == 0) {
@@ -309,7 +305,8 @@ int notification_init(notification * n, int id)
n->colors = initcolor(xctx.dc, fg, bg);
- n->timeout = n->timeout == -1 ? settings.timeouts[n->urgency] : n->timeout;
+ n->timeout =
+ n->timeout == -1 ? settings.timeouts[n->urgency] : n->timeout;
n->start = 0;
n->timestamp = time(NULL);
@@ -334,26 +331,27 @@ int notification_init(notification * n, int id)
n->urls = extract_urls(tmp);
-
if (n->actions) {
n->actions->dmenu_str = NULL;
for (int i = 0; i < n->actions->count; i += 2) {
- char *human_readable = n->actions->actions[i+1];
+ char *human_readable = n->actions->actions[i + 1];
printf("debug: %s\n", n->appname);
printf("debug: %s\n", human_readable);
- char *tmp = g_strdup_printf("%s %s", n->appname, human_readable);
+ char *tmp =
+ g_strdup_printf("%s %s", n->appname,
+ human_readable);
printf("debug: %s\n", tmp);
- n->actions->dmenu_str = string_append(n->actions->dmenu_str,
- g_strdup_printf("%s(%s)",
- n->appname,
- human_readable), "\n");
+ n->actions->dmenu_str =
+ string_append(n->actions->dmenu_str,
+ g_strdup_printf("%s(%s)", n->appname,
+ human_readable),
+ "\n");
}
}
free(tmp);
-
if (settings.print_notifications)
notification_print(n);
@@ -373,7 +371,8 @@ int notification_close_by_id(int id, int reason)
{
notification *target = NULL;
- for (GList *iter = g_queue_peek_head_link(displayed); iter; iter = iter->next) {
+ for (GList * iter = g_queue_peek_head_link(displayed); iter;
+ iter = iter->next) {
notification *n = iter->data;
if (n->id == id) {
g_queue_remove(displayed, n);
@@ -383,7 +382,8 @@ int notification_close_by_id(int id, int reason)
}
}
- for (GList *iter = g_queue_peek_head_link(queue); iter; iter = iter->next) {
+ for (GList * iter = g_queue_peek_head_link(queue); iter;
+ iter = iter->next) {
notification *n = iter->data;
if (n->id == id) {
g_queue_remove(queue, n);
@@ -410,4 +410,3 @@ int notification_close(notification * n, int reason)
return -1;
return notification_close_by_id(n->id, reason);
}
-
diff --git a/notification.h b/notification.h
index 2205461..30b5246 100644
--- a/notification.h
+++ b/notification.h
@@ -37,12 +37,11 @@ typedef struct _notification {
Actions *actions;
} notification;
-
int notification_init(notification * n, int id);
int notification_close_by_id(int id, int reason);
int notification_cmp(const void *a, const void *b);
int notification_cmp_data(const void *a, const void *b, void *data);
-void notification_run_script(notification *n);
+void notification_run_script(notification * n);
int notification_close(notification * n, int reason);
-void notification_print(notification *n);
+void notification_print(notification * n);
char *notification_fix_markup(char *str);
diff --git a/option_parser.c b/option_parser.c
index 23ddae1..326c142 100644
--- a/option_parser.c
+++ b/option_parser.c
@@ -110,7 +110,7 @@ char *ini_get_string(char *section, char *key, const char *def)
if (def == NULL)
return NULL;
else
- return def ? g_strdup(def) : NULL;
+ return def ? g_strdup(def) : NULL;
}
int ini_get_int(char *section, char *key, int def)
@@ -444,13 +444,15 @@ void cmdline_usage_append(char *key, char *type, char *description)
key_type = g_strdup(key);
if (!usage_str) {
- usage_str = g_strdup_printf("%-40s - %s\n", key_type, description);
+ usage_str =
+ g_strdup_printf("%-40s - %s\n", key_type, description);
free(key_type);
return;
}
char *tmp;
- tmp = g_strdup_printf("%s%-40s - %s\n", usage_str, key_type, description);
+ tmp =
+ g_strdup_printf("%s%-40s - %s\n", usage_str, key_type, description);
free(key_type);
free(usage_str);
diff --git a/rules.c b/rules.c
index 9d6254d..3502db7 100644
--- a/rules.c
+++ b/rules.c
@@ -7,7 +7,7 @@
/*
* Apply rule to notification.
*/
-void rule_apply(rule_t *r, notification *n)
+void rule_apply(rule_t * r, notification * n)
{
if (r->timeout != -1)
n->timeout = r->timeout;
@@ -26,9 +26,9 @@ void rule_apply(rule_t *r, notification *n)
/*
* Check all rules if they match n and apply.
*/
-void rule_apply_all(notification *n)
+void rule_apply_all(notification * n)
{
- for (GSList *iter = rules; iter; iter = iter->next) {
+ for (GSList * iter = rules; iter; iter = iter->next) {
rule_t *r = iter->data;
if (rule_matches_notification(r, n)) {
rule_apply(r, n);
@@ -39,7 +39,7 @@ void rule_apply_all(notification *n)
/*
* Initialize rule with default values.
*/
-void rule_init(rule_t *r)
+void rule_init(rule_t * r)
{
r->name = NULL;
r->appname = NULL;
@@ -53,15 +53,14 @@ void rule_init(rule_t *r)
r->format = NULL;
}
-
/*
* Check whether rule should be applied to n.
*/
-bool rule_matches_notification(rule_t *r, notification *n)
+bool rule_matches_notification(rule_t * r, notification * n)
{
- return ((!r->appname || !fnmatch(r->appname, n->appname, 0))
- && (!r->summary || !fnmatch(r->summary, n->summary, 0))
- && (!r->body || !fnmatch(r->body, n->body, 0))
- && (!r->icon || !fnmatch(r->icon, n->icon, 0)));
+ return ((!r->appname || !fnmatch(r->appname, n->appname, 0))
+ && (!r->summary || !fnmatch(r->summary, n->summary, 0))
+ && (!r->body || !fnmatch(r->body, n->body, 0))
+ && (!r->icon || !fnmatch(r->icon, n->icon, 0)));
}
diff --git a/rules.h b/rules.h
index 664bf83..9fb2bbd 100644
--- a/rules.h
+++ b/rules.h
@@ -24,7 +24,7 @@ typedef struct _rule_t {
extern GSList *rules;
-void rule_init(rule_t *r);
-void rule_apply(rule_t *r, notification *n);
-void rule_apply_all(notification *n);
-bool rule_matches_notification(rule_t *r, notification *n);
+void rule_init(rule_t * r);
+void rule_apply(rule_t * r, notification * n);
+void rule_apply_all(notification * n);
+bool rule_matches_notification(rule_t * r, notification * n);
diff --git a/settings.c b/settings.c
index 940f5e0..cef3e85 100644
--- a/settings.c
+++ b/settings.c
@@ -74,7 +74,8 @@ void load_settings(char *cmdline_config_path)
settings.ignore_newline =
option_get_bool("global", "ignore_newline", "-ignore_newline",
- ignore_newline, "Ignore newline characters in notifications");
+ ignore_newline,
+ "Ignore newline characters in notifications");
settings.idle_threshold =
option_get_int("global", "idle_threshold", "-idle_threshold",
idle_threshold,
@@ -83,9 +84,8 @@ void load_settings(char *cmdline_config_path)
option_get_int("global", "monitor", "-mon", monitor,
"On which monitor should the notifications be displayed");
{
- char *c =
- option_get_string("global", "follow", "-follow", "",
- "Follow mouse, keyboard or none?");
+ char *c = option_get_string("global", "follow", "-follow", "",
+ "Follow mouse, keyboard or none?");
if (strlen(c) > 0) {
parse_follow_mode(c);
free(c);
@@ -103,10 +103,9 @@ void load_settings(char *cmdline_config_path)
bounce_freq,
"Make long text bounce from side to side");
{
- char *c =
- option_get_string("global", "alignment",
- "-align/-alignment", "",
- "Align notifications left/center/right");
+ char *c = option_get_string("global", "alignment",
+ "-align/-alignment", "",
+ "Align notifications left/center/right");
if (strlen(c) > 0) {
if (strcmp(c, "left") == 0)
settings.align = left;
@@ -134,18 +133,18 @@ void load_settings(char *cmdline_config_path)
"height of the separator line");
settings.padding =
option_get_int("global", "padding", "-padding", padding,
- "Padding between text and separator");
+ "Padding between text and separator");
settings.h_padding =
- option_get_int("global", "horizontal_padding", "-horizontal_padding",
- h_padding, "horizontal padding");
+ option_get_int("global", "horizontal_padding",
+ "-horizontal_padding", h_padding,
+ "horizontal padding");
settings.transparency =
option_get_int("global", "transparency", "-transparency",
transparency, "Transparency. range 0-100");
{
- char *c =
- option_get_string("global", "separator_color",
- "-sep_color/-separator_color", "",
- "Color of the separator line (or 'auto')");
+ char *c = option_get_string("global", "separator_color",
+ "-sep_color/-separator_color", "",
+ "Color of the separator line (or 'auto')");
if (strlen(c) > 0) {
if (strcmp(c, "auto") == 0)
settings.sep_color = AUTO;
@@ -161,20 +160,27 @@ void load_settings(char *cmdline_config_path)
}
}
- settings.startup_notification = option_get_bool("global", "startup_notification",
- "-startup_notification", false, "print notification on startup");
+ settings.startup_notification =
+ option_get_bool("global", "startup_notification",
+ "-startup_notification", false,
+ "print notification on startup");
-
- settings.dmenu = option_get_string("global", "dmenu", "-dmenu", dmenu, "path to dmenu");
+ settings.dmenu =
+ option_get_string("global", "dmenu", "-dmenu", dmenu,
+ "path to dmenu");
settings.dmenu_cmd = g_strsplit(dmenu, " ", 0);
- settings.browser = option_get_string("global", "browser", "-browser", browser, "path to browser");
+ settings.browser =
+ option_get_string("global", "browser", "-browser", browser,
+ "path to browser");
- settings.frame_width = option_get_int("frame", "width", "-frame_width", frame_width,
- "Width of frame around window");
+ settings.frame_width =
+ option_get_int("frame", "width", "-frame_width", frame_width,
+ "Width of frame around window");
- settings.frame_color = option_get_string("frame", "color", "-frame_color",
- frame_color, "Color of the frame around window");
+ settings.frame_color =
+ option_get_string("frame", "color", "-frame_color", frame_color,
+ "Color of the frame around window");
settings.lowbgcolor =
option_get_string("urgency_low", "background", "-lb", lowbgcolor,
@@ -222,9 +228,8 @@ void load_settings(char *cmdline_config_path)
"Shortcut to pop the last notification from history");
settings.context_ks.str =
- option_get_string("shortcuts", "context", "-context_key",
- context_ks.str,
- "Shortcut for context menu");
+ option_get_string("shortcuts", "context", "-context_key",
+ context_ks.str, "Shortcut for context menu");
settings.print_notifications =
cmdline_get_bool("-print", false,
@@ -249,7 +254,7 @@ void load_settings(char *cmdline_config_path)
/* check for existing rule with same name */
rule_t *r = NULL;
- for (GSList *iter = rules; iter; iter = iter->next) {
+ for (GSList * iter = rules; iter; iter = iter->next) {
rule_t *match = iter->data;
if (match->name &&
strcmp(match->name, cur_section) == 0)
@@ -290,7 +295,6 @@ void load_settings(char *cmdline_config_path)
r->script = ini_get_string(cur_section, "script", NULL);
}
-
#ifndef STATIC_CONFIG
fclose(config_file);
free_ini();
diff --git a/utils.c b/utils.c
index cc50312..3e9b013 100644
--- a/utils.c
+++ b/utils.c
@@ -14,7 +14,7 @@ char *string_replace_all(const char *needle, const char *replacement,
{
char *start;
start = strstr(haystack, needle);
- while(start != NULL) {
+ while (start != NULL) {
haystack = string_replace(needle, replacement, haystack);
start = strstr(haystack, needle);
}
@@ -51,7 +51,7 @@ char *string_append(char *a, const char *b, const char *sep)
char *new;
if (!sep)
- new = g_strconcat(a,b, NULL);
+ new = g_strconcat(a, b, NULL);
else
new = g_strconcat(a, sep, b, NULL);
free(a);
diff --git a/x.c b/x.c
index a0934d9..c7c88b8 100644
--- a/x.c
+++ b/x.c
@@ -301,32 +301,30 @@ int textw(DC * dc, const char *text)
return textnw(dc, text, strlen(text)) + dc->font.height;
}
-
/*
* Helper function to use glib's mainloop mechanic
* with Xlib
*/
-gboolean x_mainloop_fd_prepare(GSource *source, gint *timeout)
+gboolean x_mainloop_fd_prepare(GSource * source, gint * timeout)
{
*timeout = -1;
return false;
}
-
/*
* Helper function to use glib's mainloop mechanic
* with Xlib
*/
-gboolean x_mainloop_fd_check(GSource *source)
+gboolean x_mainloop_fd_check(GSource * source)
{
return XPending(xctx.dc->dpy) > 0;
}
-
/*
* Main Dispatcher for XEvents
*/
-gboolean x_mainloop_fd_dispatch(GSource *source, GSourceFunc callback, gpointer user_data)
+gboolean x_mainloop_fd_dispatch(GSource * source, GSourceFunc callback,
+ gpointer user_data)
{
XEvent ev;
while (XPending(xctx.dc->dpy) > 0) {
@@ -350,24 +348,30 @@ gboolean x_mainloop_fd_dispatch(GSource *source, GSourceFunc callback, gpointer
break;
case KeyPress:
if (settings.close_ks.str
- && XLookupKeysym(&ev.xkey, 0) == settings.close_ks.sym
+ && XLookupKeysym(&ev.xkey,
+ 0) == settings.close_ks.sym
&& settings.close_ks.mask == ev.xkey.state) {
if (displayed) {
- notification_close(g_queue_peek_head_link(displayed)->data, 2);
+ notification_close
+ (g_queue_peek_head_link(displayed)->
+ data, 2);
}
}
if (settings.history_ks.str
- && XLookupKeysym(&ev.xkey, 0) == settings.history_ks.sym
+ && XLookupKeysym(&ev.xkey,
+ 0) == settings.history_ks.sym
&& settings.history_ks.mask == ev.xkey.state) {
history_pop();
}
if (settings.close_all_ks.str
- && XLookupKeysym(&ev.xkey, 0) == settings.close_all_ks.sym
+ && XLookupKeysym(&ev.xkey,
+ 0) == settings.close_all_ks.sym
&& settings.close_all_ks.mask == ev.xkey.state) {
move_all_to_history();
}
if (settings.context_ks.str
- && XLookupKeysym(&ev.xkey, 0) == settings.context_ks.sym
+ && XLookupKeysym(&ev.xkey,
+ 0) == settings.context_ks.sym
&& settings.context_ks.mask == ev.xkey.state) {
context_menu();
}
@@ -377,8 +381,6 @@ gboolean x_mainloop_fd_dispatch(GSource *source, GSourceFunc callback, gpointer
return true;
}
-
-
/*
* Check whether the user is currently idle.
*/
@@ -407,9 +409,12 @@ void x_handle_click(XEvent ev)
if (ev.xbutton.button == Button1) {
int y = settings.separator_height;
notification *n = NULL;
- for (GList *iter = g_queue_peek_head_link(displayed); iter; iter = iter->next) {
+ for (GList * iter = g_queue_peek_head_link(displayed); iter;
+ iter = iter->next) {
n = iter->data;
- int text_h = MAX(xctx.font_h, settings.line_height) * n->line_count;
+ int text_h =
+ MAX(xctx.font_h,
+ settings.line_height) * n->line_count;
int padding = 2 * settings.h_padding;
int height = text_h + padding;
@@ -424,8 +429,6 @@ void x_handle_click(XEvent ev)
}
}
-
-
/*
* Return the window that currently has
* the keyboard focus.
@@ -460,12 +463,15 @@ Window get_focused_window(void)
int select_screen(XineramaScreenInfo * info, int info_len)
{
if (settings.f_mode == FOLLOW_NONE) {
- return settings.monitor >= 0 ? settings.monitor : XDefaultScreen(xctx.dc->dpy);
+ return settings.monitor >=
+ 0 ? settings.monitor : XDefaultScreen(xctx.dc->dpy);
} else {
int x, y;
- assert(settings.f_mode == FOLLOW_MOUSE || settings.f_mode == FOLLOW_KEYBOARD);
- Window root = RootWindow(xctx.dc->dpy, DefaultScreen(xctx.dc->dpy));
+ assert(settings.f_mode == FOLLOW_MOUSE
+ || settings.f_mode == FOLLOW_KEYBOARD);
+ Window root =
+ RootWindow(xctx.dc->dpy, DefaultScreen(xctx.dc->dpy));
if (settings.f_mode == FOLLOW_MOUSE) {
int dummy;
@@ -483,7 +489,10 @@ int select_screen(XineramaScreenInfo * info, int info_len)
if (focused == 0) {
/* something went wrong. Fallback to default */
- return settings.monitor >= 0 ? settings.monitor : XDefaultScreen(xctx.dc->dpy);
+ return settings.monitor >=
+ 0 ? settings.monitor : XDefaultScreen(xctx.
+ dc->
+ dpy);
}
Window child_return;
@@ -500,7 +509,8 @@ int select_screen(XineramaScreenInfo * info, int info_len)
}
/* something seems to be wrong. Fallback to default */
- return settings.monitor >= 0 ? settings.monitor : XDefaultScreen(xctx.dc->dpy);
+ return settings.monitor >=
+ 0 ? settings.monitor : XDefaultScreen(xctx.dc->dpy);
}
}
#endif
@@ -509,7 +519,7 @@ int select_screen(XineramaScreenInfo * info, int info_len)
* Update the information about the monitor
* geometry.
*/
-void x_screen_info(screen_info *scr)
+void x_screen_info(screen_info * scr)
{
#ifdef XINERAMA
int n;
@@ -542,7 +552,6 @@ void x_screen_info(screen_info *scr)
}
}
-
/*
* Setup X11 stuff
*/
@@ -579,7 +588,8 @@ void x_setup(void)
xctx.framec = getcolor(xctx.dc, settings.frame_color);
if (settings.sep_color == CUSTOM) {
- xctx.sep_custom_col = getcolor(xctx.dc, settings.sep_custom_color_str);
+ xctx.sep_custom_col =
+ getcolor(xctx.dc, settings.sep_custom_color_str);
} else {
xctx.sep_custom_col = 0;
}
@@ -593,19 +603,15 @@ void x_setup(void)
}
xctx.geometry.mask = XParseGeometry(settings.geom,
- &xctx.geometry.x, &xctx.geometry.y,
- &xctx.geometry.w, &xctx.geometry.h);
-
+ &xctx.geometry.x, &xctx.geometry.y,
+ &xctx.geometry.w, &xctx.geometry.h);
xctx.screensaver_info = XScreenSaverAllocInfo();
-
x_win_setup();
x_shortcut_grab(&settings.history_ks);
}
-
-
/* TODO comments and naming */
GSList *do_word_wrap(char *text, int max_width)
@@ -627,11 +633,14 @@ GSList *do_word_wrap(char *text, int max_width)
}
if (*end == '\n') {
*end = ' ';
- result = g_slist_append(result, g_strndup(begin, end - begin));
+ result =
+ g_slist_append(result,
+ g_strndup(begin, end - begin));
begin = ++end;
}
- if (settings.word_wrap && max_width > 0 && textnw(xctx.dc, begin, (end - begin) + 1) > max_width) {
+ if (settings.word_wrap && max_width > 0
+ && textnw(xctx.dc, begin, (end - begin) + 1) > max_width) {
/* find previous space */
char *space = end;
while (space > begin && !isspace(*space))
@@ -640,7 +649,9 @@ GSList *do_word_wrap(char *text, int max_width)
if (space > begin) {
end = space;
}
- result = g_slist_append(result, g_strndup(begin, end - begin));
+ result =
+ g_slist_append(result,
+ g_strndup(begin, end - begin));
begin = ++end;
}
end++;
@@ -649,24 +660,21 @@ GSList *do_word_wrap(char *text, int max_width)
return result;
}
-
-char *generate_final_text(notification *n)
+char *generate_final_text(notification * n)
{
char *msg = g_strstrip(n->msg);
char *buf;
- /* print dup_count and msg*/
+ /* print dup_count and msg */
if (n->dup_count > 0 && (n->actions || n->urls)) {
buf = g_strdup_printf("(%d%s%s) %s",
- n->dup_count,
- n->actions ? "A" : "",
- n->urls ? "U" : "",
- msg);
+ n->dup_count,
+ n->actions ? "A" : "",
+ n->urls ? "U" : "", msg);
} else if (n->actions || n->urls) {
buf = g_strdup_printf("(%s%s) %s",
- n->actions ? "A" : "",
- n->urls ? "U" : "",
- msg);
+ n->actions ? "A" : "",
+ n->urls ? "U" : "", msg);
} else {
buf = g_strdup(msg);
}
@@ -675,18 +683,21 @@ char *generate_final_text(notification *n)
int hours, minutes, seconds;
time_t t_delta = time(NULL) - n->timestamp;
- if (settings.show_age_threshold >= 0 && t_delta >= settings.show_age_threshold) {
+ if (settings.show_age_threshold >= 0
+ && t_delta >= settings.show_age_threshold) {
hours = t_delta / 3600;
minutes = t_delta / 60 % 60;
seconds = t_delta % 60;
char *new_buf;
if (hours > 0) {
- new_buf = g_strdup_printf("%s (%dh %dm %ds old)", buf, hours,
- minutes, seconds);
+ new_buf =
+ g_strdup_printf("%s (%dh %dm %ds old)", buf, hours,
+ minutes, seconds);
} else if (minutes > 0) {
- new_buf = g_strdup_printf("%s (%dm %ds old)", buf, minutes,
- seconds);
+ new_buf =
+ g_strdup_printf("%s (%dm %ds old)", buf, minutes,
+ seconds);
} else {
new_buf = g_strdup_printf("%s (%ds old)", buf, seconds);
}
@@ -704,17 +715,20 @@ int calculate_x_offset(int line_width, int text_width)
struct timeval t;
float pos;
/* If the text is wider than the frame, bouncing is enabled and word_wrap disabled */
- if (line_width < text_width && settings.bounce_freq > 0.0001 && !settings.word_wrap) {
+ if (line_width < text_width && settings.bounce_freq > 0.0001
+ && !settings.word_wrap) {
gettimeofday(&t, NULL);
pos =
- ((t.tv_sec % 100) * 1e6 + t.tv_usec) / (1e6 / settings.bounce_freq);
+ ((t.tv_sec % 100) * 1e6 +
+ t.tv_usec) / (1e6 / settings.bounce_freq);
return (1 + sinf(2 * 3.14159 * pos)) * leftover / 2;
}
switch (settings.align) {
case left:
return settings.frame_width + settings.h_padding;
case center:
- return settings.frame_width + settings.h_padding + (leftover / 2);
+ return settings.frame_width + settings.h_padding +
+ (leftover / 2);
case right:
return settings.frame_width + settings.h_padding + leftover;
default:
@@ -725,7 +739,8 @@ int calculate_x_offset(int line_width, int text_width)
unsigned long calculate_foreground_color(unsigned long source_color)
{
- Colormap cmap = DefaultColormap(xctx.dc->dpy, DefaultScreen(xctx.dc->dpy));
+ Colormap cmap =
+ DefaultColormap(xctx.dc->dpy, DefaultScreen(xctx.dc->dpy));
XColor color;
color.pixel = source_color;
@@ -792,7 +807,7 @@ int calculate_width(void)
void move_and_map(int width, int height)
{
- int x,y;
+ int x, y;
screen_info scr;
x_screen_info(&scr);
/* calculate window position */
@@ -829,10 +844,11 @@ GSList *generate_render_texts(int width)
{
GSList *render_texts = NULL;
- for (GList *iter = g_queue_peek_head_link(displayed); iter; iter = iter->next) {
+ for (GList * iter = g_queue_peek_head_link(displayed); iter;
+ iter = iter->next) {
render_text *rt = g_malloc(sizeof(render_text));
- rt->colors = ((notification*)iter->data)->colors;
+ rt->colors = ((notification *) iter->data)->colors;
char *text = generate_final_text(iter->data);
rt->lines = do_word_wrap(text, width);
free(text);
@@ -843,14 +859,22 @@ GSList *generate_render_texts(int width)
if (settings.indicate_hidden && queue->length > 0) {
if (xctx.geometry.h != 1) {
render_text *rt = g_malloc(sizeof(render_text));
- rt->colors = ((render_text *) g_slist_last(render_texts)->data)->colors;
- rt->lines = g_slist_append(NULL, g_strdup_printf("%d more)", queue->length));
+ rt->colors =
+ ((render_text *) g_slist_last(render_texts)->data)->
+ colors;
+ rt->lines =
+ g_slist_append(NULL,
+ g_strdup_printf("%d more)",
+ queue->length));
render_texts = g_slist_append(render_texts, rt);
} else {
- GSList *last_lines = ((render_text *) g_slist_last(render_texts)->data)->lines;
+ GSList *last_lines =
+ ((render_text *) g_slist_last(render_texts)->data)->
+ lines;
GSList *last_line = g_slist_last(last_lines);
char *old = last_line->data;
- char *new = g_strdup_printf("%s (%d more)", old, queue->length);
+ char *new =
+ g_strdup_printf("%s (%d more)", old, queue->length);
free(old);
last_line->data = new;
}
@@ -859,18 +883,16 @@ GSList *generate_render_texts(int width)
return render_texts;
}
-void free_render_text(void *data) {
+void free_render_text(void *data)
+{
g_slist_free_full(((render_text *) data)->lines, g_free);
}
-void free_render_texts(GSList *texts) {
+void free_render_texts(GSList * texts)
+{
g_slist_free_full(texts, free_render_text);
}
-
-
-
-
void x_win_draw(void)
{
@@ -878,40 +900,44 @@ void x_win_draw(void)
screen_info scr;
x_screen_info(&scr);
-
settings.line_height = MAX(settings.line_height, xctx.font_h);
int width;
if (outer_width == 0)
width = 0;
else
- width = outer_width - (2 * settings.frame_width) - (2 * settings.h_padding);
-
+ width =
+ outer_width - (2 * settings.frame_width) -
+ (2 * settings.h_padding);
GSList *texts = generate_render_texts(width);
int line_count = 0;
- for (GSList *iter = texts; iter; iter = iter->next) {
+ for (GSList * iter = texts; iter; iter = iter->next) {
render_text *tmp = iter->data;
line_count += g_slist_length(tmp->lines);
}
/* if we have a dynamic width, calculate the actual width */
if (width == 0) {
- for (GSList *iter = texts; iter; iter = iter->next) {
+ for (GSList * iter = texts; iter; iter = iter->next) {
GSList *lines = ((render_text *) iter->data)->lines;
- for (GSList *iiter = lines; iiter; iiter = iiter->next)
+ for (GSList * iiter = lines; iiter; iiter = iiter->next)
width = MAX(width, textw(xctx.dc, iiter->data));
}
- outer_width = width + (2 * settings.frame_width) + (2 * settings.h_padding);
+ outer_width =
+ width + (2 * settings.frame_width) +
+ (2 * settings.h_padding);
}
/* resize xctx.dc to correct width */
int height = (line_count * settings.line_height)
- + displayed->length * 2 * settings.padding
- + ((settings.indicate_hidden && queue->length > 0 && xctx.geometry.h != 1) ? 2 * settings.padding : 0)
- + (settings.separator_height * (displayed->length - 1))
- + (2 * settings.frame_width);
+ + displayed->length * 2 * settings.padding
+ +
+ ((settings.indicate_hidden && queue->length > 0
+ && xctx.geometry.h != 1) ? 2 * settings.padding : 0)
+ + (settings.separator_height * (displayed->length - 1))
+ + (2 * settings.frame_width);
resizedc(xctx.dc, outer_width, height);
@@ -928,15 +954,14 @@ void x_win_draw(void)
xctx.dc->y = settings.frame_width;
xctx.dc->x = settings.frame_width;
- for (GSList *iter = texts; iter; iter = iter->next) {
+ for (GSList * iter = texts; iter; iter = iter->next) {
render_text *cur = iter->data;
ColorSet *colors = cur->colors;
-
int line_count = 0;
bool first_line = true;
- for (GSList *iiter = cur->lines; iiter; iiter = iiter->next) {
+ for (GSList * iiter = cur->lines; iiter; iiter = iiter->next) {
char *line = iiter->data;
line_count++;
@@ -944,24 +969,30 @@ void x_win_draw(void)
bool last_line = iiter->next == NULL;
if (first_line && last_line)
- pad = 2*settings.padding;
+ pad = 2 * settings.padding;
else if (first_line || last_line)
pad = settings.padding;
xctx.dc->x = settings.frame_width;
/* draw background */
- drawrect(xctx.dc, 0, 0, width + (2*settings.h_padding), pad + settings.line_height, true, colors->BG);
+ drawrect(xctx.dc, 0, 0,
+ width + (2 * settings.h_padding),
+ pad + settings.line_height, true, colors->BG);
/* draw text */
- xctx.dc->x = calculate_x_offset(width, textw(xctx.dc, line));
+ xctx.dc->x =
+ calculate_x_offset(width, textw(xctx.dc, line));
- xctx.dc->y += ((settings.line_height - xctx.font_h) / 2);
+ xctx.dc->y +=
+ ((settings.line_height - xctx.font_h) / 2);
xctx.dc->y += first_line ? settings.padding : 0;
drawtextn(xctx.dc, line, strlen(line), colors);
- xctx.dc->y += settings.line_height - ((settings.line_height - xctx.font_h) / 2);
+ xctx.dc->y +=
+ settings.line_height -
+ ((settings.line_height - xctx.font_h) / 2);
xctx.dc->y += last_line ? settings.padding : 0;
first_line = false;
@@ -981,7 +1012,9 @@ void x_win_draw(void)
/* CUSTOM */
color = xctx.sep_custom_col;
}
- drawrect(xctx.dc, 0, 0, width + (2*settings.h_padding), settings.separator_height, true, color);
+ drawrect(xctx.dc, 0, 0,
+ width + (2 * settings.h_padding),
+ settings.separator_height, true, color);
xctx.dc->y += settings.separator_height;
}
}
@@ -1020,13 +1053,17 @@ void x_win_setup(void)
xctx.win =
XCreateWindow(xctx.dc->dpy, root, scr.dim.x, scr.dim.y, scr.dim.w,
xctx.font_h, 0, DefaultDepth(xctx.dc->dpy,
- DefaultScreen(xctx.dc->dpy)),
+ DefaultScreen(xctx.dc->
+ dpy)),
CopyFromParent, DefaultVisual(xctx.dc->dpy,
- DefaultScreen(xctx.dc->dpy)),
+ DefaultScreen(xctx.dc->
+ dpy)),
CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
- settings.transparency = settings.transparency > 100 ? 100 : settings.transparency;
+ settings.transparency =
+ settings.transparency > 100 ? 100 : settings.transparency;
setopacity(xctx.dc, xctx.win,
- (unsigned long)((100 - settings.transparency) * (0xffffffff / 100)));
+ (unsigned long)((100 - settings.transparency) *
+ (0xffffffff / 100)));
}
/*
@@ -1069,9 +1106,6 @@ void x_win_hide()
xctx.visible = false;
}
-
-
-
/*
* Parse a string into a modifier mask.
*/
@@ -1139,7 +1173,7 @@ static int x_shortcut_tear_down_error_handler(void)
/*
* Grab the given keyboard shortcut.
*/
-int x_shortcut_grab(keyboard_shortcut *ks)
+int x_shortcut_grab(keyboard_shortcut * ks)
{
if (!ks->is_valid)
return 1;
@@ -1163,7 +1197,7 @@ int x_shortcut_grab(keyboard_shortcut *ks)
/*
* Ungrab the given keyboard shortcut.
*/
-void x_shortcut_ungrab(keyboard_shortcut *ks)
+void x_shortcut_ungrab(keyboard_shortcut * ks)
{
Window root;
root = RootWindow(xctx.dc->dpy, DefaultScreen(xctx.dc->dpy));
@@ -1174,7 +1208,7 @@ void x_shortcut_ungrab(keyboard_shortcut *ks)
/*
* Initialize the keyboard shortcut.
*/
-void x_shortcut_init(keyboard_shortcut *ks)
+void x_shortcut_init(keyboard_shortcut * ks)
{
if (ks == NULL || ks->str == NULL)
return;
diff --git a/x.h b/x.h
index b253e70..4ddfea5 100644
--- a/x.h
+++ b/x.h
@@ -46,7 +46,6 @@ DEALINGS IN THE SOFTWARE.
#include
-
#define BUTTONMASK (ButtonPressMask|ButtonReleaseMask)
#define FONT_HEIGHT_BORDER 2
#define DEFFONT "Monospace-11"
@@ -144,20 +143,21 @@ void x_win_show(void);
void x_win_setup(void);
/* shortcut */
-void x_shortcut_init(keyboard_shortcut *shortcut);
-void x_shortcut_ungrab(keyboard_shortcut *ks);
-int x_shortcut_grab(keyboard_shortcut *ks);
+void x_shortcut_init(keyboard_shortcut * shortcut);
+void x_shortcut_ungrab(keyboard_shortcut * ks);
+int x_shortcut_grab(keyboard_shortcut * ks);
KeySym x_shortcut_string_to_mask(const char *str);
/* X misc */
void x_handle_click(XEvent ev);
-void x_screen_info(screen_info *scr);
+void x_screen_info(screen_info * scr);
bool x_is_idle(void);
void x_setup(void);
-gboolean x_mainloop_fd_dispatch(GSource *source, GSourceFunc callback, gpointer user_data);
-gboolean x_mainloop_fd_check(GSource *source);
-gboolean x_mainloop_fd_prepare(GSource *source, gint *timeout);
+gboolean x_mainloop_fd_dispatch(GSource * source, GSourceFunc callback,
+ gpointer user_data);
+gboolean x_mainloop_fd_check(GSource * source);
+gboolean x_mainloop_fd_prepare(GSource * source, gint * timeout);
#endif
/* vim: set ts=8 sw=8 tw=0: */