feat: Add stacker_loop option

This commit introduces a new configuration option `stacker_loop` to
control the behavior of the `stack_with_left` function.

When `stacker_loop` is set to `false` in the user's `config.conf`,
invoking `stack_with_left` on the first window in the layout will have
no effect.

When `stacker_loop` is set to `true` or is not present in the config
file, the default behavior is maintained, where `stack_with_left` on the
first window will wrap around and create a stack with the last window.

This provides users with more control over the stacking behavior in the
stacker layout.
This commit is contained in:
nixpup 2026-01-16 23:40:13 +01:00
parent 7b11593c15
commit 535f41e76b
3 changed files with 18 additions and 0 deletions

View file

@ -205,6 +205,7 @@ typedef struct {
int32_t scroller_ignore_proportion_single;
int32_t scroller_focus_center;
int32_t scroller_prefer_center;
int32_t stacker_loop;
int32_t edge_scroller_pointer_focus;
int32_t focus_cross_monitor;
int32_t exchange_cross_monitor;
@ -1241,6 +1242,8 @@ void parse_option(Config *config, char *key, char *value) {
config->scroller_focus_center = atoi(value);
} else if (strcmp(key, "scroller_prefer_center") == 0) {
config->scroller_prefer_center = atoi(value);
} else if (strcmp(key, "stacker_loop") == 0) {
config->stacker_loop = atoi(value);
} else if (strcmp(key, "edge_scroller_pointer_focus") == 0) {
config->edge_scroller_pointer_focus = atoi(value);
} else if (strcmp(key, "focus_cross_monitor") == 0) {