From: Michael Stapelberg Date: Fri, 19 Mar 2010 20:44:36 +0000 (+0100) Subject: Start dock clients on the output they request to be started on according to their... X-Git-Tag: 3.e~6^2~52 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=fdcbec248a7f139fab45993a61c96073084696f4;p=i3%2Fi3 Start dock clients on the output they request to be started on according to their geometry Use dzen2’s -xs option to use this, or specify the coordinates using -x manually. --- diff --git a/src/manage.c b/src/manage.c index 40ef6cca..10cf74c7 100644 --- a/src/manage.c +++ b/src/manage.c @@ -272,12 +272,18 @@ void reparent_window(xcb_connection_t *conn, xcb_window_t child, for (int i = 0; i < xcb_get_property_value_length(preply); i++) if (atom[i] == atoms[_NET_WM_WINDOW_TYPE_DOCK]) { DLOG("Window is a dock.\n"); + Output *t_out = get_output_containing(x, y); + if (t_out != c_ws->output) { + DLOG("Dock client requested to be on output %s by geometry (%d, %d)\n", + t_out->name, x, y); + new->workspace = t_out->current_workspace; + } new->dock = true; new->borderless = true; new->titlebar_position = TITLEBAR_OFF; new->force_reconfigure = true; new->container = NULL; - SLIST_INSERT_HEAD(&(c_ws->output->dock_clients), new, dock_clients); + SLIST_INSERT_HEAD(&(t_out->dock_clients), new, dock_clients); /* If it’s a dock we can’t make it float, so we break */ new->floating = FLOATING_AUTO_OFF; break;