diff --git a/Makefile.am b/Makefile.am index f8ae7a1b..09bbb6d5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -357,10 +357,12 @@ i3_msg_i3_msg_SOURCES = \ i3_nagbar_i3_nagbar_CFLAGS = \ $(AM_CFLAGS) \ + $(LIBSN_CFLAGS) \ $(libi3_CFLAGS) i3_nagbar_i3_nagbar_LDADD = \ $(libi3_LIBS) \ + $(LIBSN_LIBS) \ $(XCB_UTIL_CURSOR_LIBS) i3_nagbar_i3_nagbar_SOURCES = \ @@ -414,10 +416,12 @@ i3bar_i3bar_SOURCES = \ i3_config_wizard_i3_config_wizard_CFLAGS = \ $(AM_CFLAGS) \ $(libi3_CFLAGS) \ + $(LIBSN_CFLAGS) \ $(XKBCOMMON_CFLAGS) i3_config_wizard_i3_config_wizard_LDADD = \ $(libi3_LIBS) \ + $(LIBSN_LIBS) \ $(XCB_UTIL_KEYSYMS_LIBS) \ $(XKBCOMMON_LIBS) diff --git a/i3-config-wizard/main.c b/i3-config-wizard/main.c index 4a843fae..013d1053 100644 --- a/i3-config-wizard/main.c +++ b/i3-config-wizard/main.c @@ -48,6 +48,9 @@ #include #include +#define SN_API_NOT_YET_FROZEN 1 +#include + #include #include #include @@ -293,6 +296,7 @@ static char *next_state(const cmdp_token *token) { } sasprintf(&res, "bindsym %s%s%s %s%s\n", (modifiers == NULL ? "" : modrep), (modifiers == NULL ? "" : "+"), str, (release == NULL ? "" : release), get_string("command")); clear_stack(); + free(modrep); return res; } @@ -846,6 +850,10 @@ int main(int argc, char *argv[]) { #include "atoms.xmacro" #undef xmacro + /* Init startup notification. */ + SnDisplay *sndisplay = sn_xcb_display_new(conn, NULL, NULL); + SnLauncheeContext *sncontext = sn_launchee_context_new_from_environment(sndisplay, screen); + root_screen = xcb_aux_get_screen(conn, screen); root = root_screen->root; @@ -878,6 +886,7 @@ int main(int argc, char *argv[]) { 0, /* back pixel: black */ XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS}); + sn_launchee_context_setup_window(sncontext, win); /* Map the window (make it visible) */ xcb_map_window(conn, win); @@ -939,6 +948,11 @@ int main(int argc, char *argv[]) { exit(-1); } + /* Startup complete. */ + sn_launchee_context_complete(sncontext); + sn_launchee_context_unref(sncontext); + sn_display_unref(sndisplay); + xcb_flush(conn); xcb_generic_event_t *event; diff --git a/i3-nagbar/main.c b/i3-nagbar/main.c index 3e5f43e3..1d1fcc51 100644 --- a/i3-nagbar/main.c +++ b/i3-nagbar/main.c @@ -32,6 +32,9 @@ #include #include +#define SN_API_NOT_YET_FROZEN 1 +#include + #include "i3-nagbar.h" /** This is the equivalent of XC_left_ptr. I’m not sure why xcb doesn’t have a @@ -415,6 +418,10 @@ int main(int argc, char *argv[]) { #include "atoms.xmacro" #undef xmacro + /* Init startup notification. */ + SnDisplay *sndisplay = sn_xcb_display_new(conn, NULL, NULL); + SnLauncheeContext *sncontext = sn_launchee_context_new_from_environment(sndisplay, screens); + root_screen = xcb_aux_get_screen(conn, screens); root = root_screen->root; @@ -484,6 +491,7 @@ int main(int argc, char *argv[]) { XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE, cursor}); + sn_launchee_context_setup_window(sncontext, win); /* Map the window (make it visible) */ xcb_map_window(conn, win); @@ -544,6 +552,11 @@ int main(int argc, char *argv[]) { /* Initialize the drawable bar */ draw_util_surface_init(conn, &bar, win, get_visualtype(root_screen), win_pos.width, win_pos.height); + /* Startup complete. */ + sn_launchee_context_complete(sncontext); + sn_launchee_context_unref(sncontext); + sn_display_unref(sndisplay); + /* Grab the keyboard to get all input */ xcb_flush(conn);