Merge pull request #1613 from Airblader/feature-1426
Added focus_on_window_activation directive
This commit is contained in:
@ -329,6 +329,23 @@ CFGFUN(force_display_urgency_hint, const long duration_ms) {
|
||||
config.workspace_urgency_timer = duration_ms / 1000.0;
|
||||
}
|
||||
|
||||
CFGFUN(focus_on_window_activation, const char *mode) {
|
||||
if (strcmp(mode, "smart") == 0)
|
||||
config.focus_on_window_activation = FOWA_SMART;
|
||||
else if (strcmp(mode, "urgent") == 0)
|
||||
config.focus_on_window_activation = FOWA_URGENT;
|
||||
else if (strcmp(mode, "focus") == 0)
|
||||
config.focus_on_window_activation = FOWA_FOCUS;
|
||||
else if (strcmp(mode, "none") == 0)
|
||||
config.focus_on_window_activation = FOWA_NONE;
|
||||
else {
|
||||
ELOG("Unknown focus_on_window_activation mode \"%s\", ignoring it.\n", mode);
|
||||
return;
|
||||
}
|
||||
|
||||
DLOG("Set new focus_on_window_activation mode = %i", config.focus_on_window_activation);
|
||||
}
|
||||
|
||||
CFGFUN(workspace, const char *workspace, const char *output) {
|
||||
DLOG("Assigning workspace \"%s\" to output \"%s\"\n", workspace, output);
|
||||
/* Check for earlier assignments of the same workspace so that we
|
||||
|
@ -743,16 +743,17 @@ static void handle_client_message(xcb_client_message_event_t *event) {
|
||||
workspace_show(ws);
|
||||
con_focus(con);
|
||||
} else {
|
||||
/* If the request is from an application, only focus if the
|
||||
* workspace is visible. Otherwise set the urgency hint. */
|
||||
if (workspace_is_visible(ws)) {
|
||||
DLOG("Request to focus con on a visible workspace. Focusing con = %p\n", con);
|
||||
/* Request is from an application. */
|
||||
|
||||
if (config.focus_on_window_activation == FOWA_FOCUS || (config.focus_on_window_activation == FOWA_SMART && workspace_is_visible(ws))) {
|
||||
DLOG("Focusing con = %p\n", con);
|
||||
workspace_show(ws);
|
||||
con_focus(con);
|
||||
} else {
|
||||
DLOG("Request to focus con on a hidden workspace. Setting urgent con = %p\n", con);
|
||||
} else if (config.focus_on_window_activation == FOWA_URGENT || (config.focus_on_window_activation == FOWA_SMART && !workspace_is_visible(ws))) {
|
||||
DLOG("Marking con = %p urgent\n", con);
|
||||
con_set_urgency(con, true);
|
||||
}
|
||||
} else
|
||||
DLOG("Ignoring request for con = %p", con);
|
||||
}
|
||||
|
||||
tree_render();
|
||||
|
Reference in New Issue
Block a user