diff --git a/include/i3.h b/include/i3.h index 7bbab415..ccf7a495 100644 --- a/include/i3.h +++ b/include/i3.h @@ -3,7 +3,7 @@ * * i3 - an improved dynamic tiling window manager * - * (c) 2009 Michael Stapelberg and contributors + * © 2009 Michael Stapelberg and contributors * * See file LICENSE for license information. * @@ -20,7 +20,7 @@ #ifndef _I3_H #define _I3_H -#define NUM_ATOMS 14 +#define NUM_ATOMS 17 extern char **start_argv; extern Display *xkbdpy; diff --git a/include/xcb.h b/include/xcb.h index 7f89caaf..a8a75876 100644 --- a/include/xcb.h +++ b/include/xcb.h @@ -50,6 +50,9 @@ enum { _NET_SUPPORTED = 0, _NET_WM_WINDOW_TYPE, _NET_WM_WINDOW_TYPE_DOCK, _NET_WM_WINDOW_TYPE_DIALOG, + _NET_WM_WINDOW_TYPE_UTILITY, + _NET_WM_WINDOW_TYPE_TOOLBAR, + _NET_WM_WINDOW_TYPE_SPLASH, _NET_WM_DESKTOP, _NET_WM_STRUT_PARTIAL, WM_PROTOCOLS, diff --git a/src/commands.c b/src/commands.c index 274f0e27..10ac35f8 100644 --- a/src/commands.c +++ b/src/commands.c @@ -924,7 +924,7 @@ void parse_command(xcb_connection_t *conn, const char *command) { } if (last_focused == NULL) { - LOG("Not performing (null) \n"); + LOG("Not performing (no window found)\n"); return; } diff --git a/src/mainx.c b/src/mainx.c index 67ab25fd..ca1bc8ad 100644 --- a/src/mainx.c +++ b/src/mainx.c @@ -161,6 +161,9 @@ int main(int argc, char *argv[], char *env[]) { REQUEST_ATOM(_NET_WM_DESKTOP); REQUEST_ATOM(_NET_WM_WINDOW_TYPE_DOCK); REQUEST_ATOM(_NET_WM_WINDOW_TYPE_DIALOG); + REQUEST_ATOM(_NET_WM_WINDOW_TYPE_UTILITY); + REQUEST_ATOM(_NET_WM_WINDOW_TYPE_TOOLBAR); + REQUEST_ATOM(_NET_WM_WINDOW_TYPE_SPLASH); REQUEST_ATOM(_NET_WM_STRUT_PARTIAL); REQUEST_ATOM(WM_PROTOCOLS); REQUEST_ATOM(WM_DELETE_WINDOW); @@ -265,6 +268,9 @@ int main(int argc, char *argv[], char *env[]) { GET_ATOM(_NET_WM_DESKTOP); GET_ATOM(_NET_WM_WINDOW_TYPE_DOCK); GET_ATOM(_NET_WM_WINDOW_TYPE_DIALOG); + GET_ATOM(_NET_WM_WINDOW_TYPE_UTILITY); + GET_ATOM(_NET_WM_WINDOW_TYPE_TOOLBAR); + GET_ATOM(_NET_WM_WINDOW_TYPE_SPLASH); GET_ATOM(_NET_WM_STRUT_PARTIAL); GET_ATOM(WM_PROTOCOLS); GET_ATOM(WM_DELETE_WINDOW); diff --git a/src/manage.c b/src/manage.c index 72c7bce1..1f79cb94 100644 --- a/src/manage.c +++ b/src/manage.c @@ -259,7 +259,10 @@ void reparent_window(xcb_connection_t *conn, xcb_window_t child, SLIST_INSERT_HEAD(&(c_ws->screen->dock_clients), new, dock_clients); /* If it’s a dock we can’t make it float, so we break */ break; - } else if (atom[i] == atoms[_NET_WM_WINDOW_TYPE_DIALOG]) { + } else if (atom[i] == atoms[_NET_WM_WINDOW_TYPE_DIALOG] || + atom[i] == atoms[_NET_WM_WINDOW_TYPE_UTILITY] || + atom[i] == atoms[_NET_WM_WINDOW_TYPE_TOOLBAR] || + atom[i] == atoms[_NET_WM_WINDOW_TYPE_SPLASH]) { /* Set the dialog window to automatically floating, will be used below */ new->floating = FLOATING_AUTO_ON; LOG("dialog window, automatically floating\n");