Added "layout incnmaster|incncol" commands

This commit is contained in:
wil 2016-12-21 16:55:02 +01:00
parent 5425d0489f
commit 8b0073b195
2 changed files with 44 additions and 6 deletions

View file

@ -74,6 +74,36 @@ struct cmd_results *cmd_layout(int argc, char **argv) {
parent = new_container(parent, L_AUTO_BOTTOM);
}
swayc_change_layout(parent, L_AUTO_BOTTOM);
} else if (strcasecmp(argv[0], "incnmaster") == 0) {
if ((error = checkarg(argc, "layout incnmaster",
EXPECTED_EQUAL_TO, 2))) {
return error;
}
int inc = (int) strtol(argv[1], NULL, 10);
swayc_t *container = get_focused_view(swayc_active_workspace());
if (container && inc &&
is_auto_layout(container->parent->layout) &&
((int)container->parent->nb_master + inc >= 0)) {
for (int i = container->parent->nb_master;
i >= 0 && i < container->parent->children->length &&
i != (int) container->parent->nb_master + inc;) {
((swayc_t *) container->parent->children->items[i])->height = -1;
((swayc_t *) container->parent->children->items[i])->width = -1;
i += inc > 0 ? 1 : -1;
}
container->parent->nb_master += inc;
}
} else if ((strcasecmp(argv[0], "incncol") == 0) && argc ==2) {
if ((error = checkarg(argc, "layout incncol",
EXPECTED_EQUAL_TO, 2))) {
return error;
}
int inc = (int) strtol(argv[1], NULL, 10);
swayc_t *container = get_focused_view(swayc_active_workspace());
if (container && inc && is_auto_layout(container->parent->layout) &&
((int)container->parent->nb_slave_groups + inc >= 1)) {
container->parent->nb_slave_groups += inc;
}
}
}

View file

@ -62,11 +62,14 @@ They are expected to be used with **bindsym** or at runtime through **swaymsg**(
Make focused view floating, non-floating, or the opposite of what it is now.
**focus** <direction>::
Direction may be one of _up_, _down_, _left_, _right_, _parent_, or _child_.
The directional focus commands will move the focus in that direction. The parent
focus command will change the focus to the parent of the currently focused
container, which is useful, for example, to open a sibling of the parent
container, or to move the entire container around.
Direction may be one of _up_, _down_, _left_, _right_, _next_, _prev_,
_parent_, or _child_. The directional focus commands will move the focus
in that direction. The auto_next and auto_prev will focus the next,
respectively previous, element in the current container if it is using
one of the _auto_ layouts. The parent focus command will change the
focus to the parent of the currently focused container, which is useful,
for example, to open a sibling of the parent container, or to move the
entire container around.
**focus** output <direction|name>::
Direction may be one of _up_, _down_, _left_, _right_. The directional focus
@ -84,6 +87,11 @@ They are expected to be used with **bindsym** or at runtime through **swaymsg**(
_splitv_, _toggle split_, _stacking_, _tabbed_, _auto_left_, _auto_right_,
_auto_top, _auto_bottom_.
**layout** <incnmaster|incncol> <n>::
Modify the number of master elements, respectively slave columns, in the
focused container. <n> can be a positive or negative integer. These commands
only have an effect if the focused container uses one of the "auto" layouts.
**move** <left|right|up|down>::
Moves the focused container _left_, _right_, _up_, or _down_.