*
* A_COMMAND = run the specified command for the matching window
* A_TO_WORKSPACE = assign the matching window to the specified workspace
- * A_TO_OUTPUT = assign the matching window to the specified output
*
* While the type is a bitmask, only one value can be set at a time. It is
* a bitmask to allow filtering for multiple types, for example in the
enum {
A_ANY = 0,
A_COMMAND = (1 << 0),
- A_TO_WORKSPACE = (1 << 1),
- A_TO_OUTPUT = (1 << 2)
+ A_TO_WORKSPACE = (1 << 1)
} type;
/** the criteria to check if a window matches */
Match match;
- /** destination workspace/output/command, depending on the type */
+ /** destination workspace/command, depending on the type */
union {
char *command;
char *workspace;
- char *output;
} dest;
TAILQ_ENTRY(Assignment) assignments;
assign = TAILQ_FIRST(&assignments);
if (assign->type == A_TO_WORKSPACE)
FREE(assign->dest.workspace);
- else if (assign->type == A_TO_OUTPUT)
- FREE(assign->dest.output);
else if (assign->type == A_COMMAND)
FREE(assign->dest.command);
match_free(&(assign->match));
/* See if any container swallows this new window */
nc = con_for_window(search_at, cwindow, &match);
if (nc == NULL) {
- /* If not, check if it is assigned to a specific workspace / output */
- if ((assignment = assignment_for(cwindow, A_TO_WORKSPACE | A_TO_OUTPUT))) {
+ /* If not, check if it is assigned to a specific workspace */
+ if ((assignment = assignment_for(cwindow, A_TO_WORKSPACE))) {
DLOG("Assignment matches (%p)\n", match);
- if (assignment->type == A_TO_WORKSPACE) {
- Con *assigned_ws = workspace_get(assignment->dest.workspace, NULL);
- nc = con_descend_tiling_focused(assigned_ws);
- DLOG("focused on ws %s: %p / %s\n", assigned_ws->name, nc, nc->name);
- if (nc->type == CT_WORKSPACE)
- nc = tree_open_con(nc, cwindow);
- else
- nc = tree_open_con(nc->parent, cwindow);
-
- /* set the urgency hint on the window if the workspace is not visible */
- if (!workspace_is_visible(assigned_ws))
- urgency_hint = true;
- }
- /* TODO: handle assignments with type == A_TO_OUTPUT */
+ Con *assigned_ws = workspace_get(assignment->dest.workspace, NULL);
+ nc = con_descend_tiling_focused(assigned_ws);
+ DLOG("focused on ws %s: %p / %s\n", assigned_ws->name, nc, nc->name);
+ if (nc->type == CT_WORKSPACE)
+ nc = tree_open_con(nc, cwindow);
+ else
+ nc = tree_open_con(nc->parent, cwindow);
+
+ /* set the urgency hint on the window if the workspace is not visible */
+ if (!workspace_is_visible(assigned_ws))
+ urgency_hint = true;
} else if (startup_ws) {
/* If it’s not assigned, but was started on a specific workspace,
* we want to open it there */
# CONTINUOUS_INTEGRATION gets set when running under Travis, see
# http://docs.travis-ci.com/user/ci-environment/ and
# https://github.com/travis-ci/travis-ci/issues/1337
- return (! -t STDOUT) || $ENV{CONTINUOUS_INTEGRATION} eq 'true';
+ return (! -t STDOUT) || (
+ defined($ENV{CONTINUOUS_INTEGRATION}) &&
+ $ENV{CONTINUOUS_INTEGRATION} eq 'true');
}
# setup %ansi_line_upwards to map all working displays to the
# i3 config file (v4)
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
-force_display_urgency_hint 150ms
+force_display_urgency_hint 500ms
EOT
my $pid = launch_with_config($config);
# now check if the timer was triggered
cmd "workspace $tmp2";
-sleep(0.1);
+sleep(0.5);
@content = @{get_ws_content($tmp1)};
@urgent = grep { $_->{urgent} } @content;
is(@urgent, 0, 'window not marked as urgent anymore');
$split_left->delete_hint('urgency');
sync_with_i3;
-sleep(0.2);
+sleep(0.6);
is(count_total_urgent(get_ws($tmp3)), 0, "no more urgent windows on workspace $tmp3");
exit_gracefully($pid);