Summary
On the Scrolling layout, a strip holding fewer containers than columns widens them to fill the work area. With columns: 3 and a single container, that container gets the entire work area rather than one column's worth.
This is the opposite of how scrollable tiling behaves in PaperWM and niri, where a column keeps its width and the remainder of the strip is simply left empty.
Measured on a 32:9 panel
columns: 3, work area 7632px wide (7680px panel, komorebi-bar offset applied):
| containers |
column width |
| 1 |
7584 |
| 2 |
3792 |
| 3 |
2544 |
The single-container case is the one that hurts: a browser window spans 7632px instead of the 2544px column the config asks for.
Resizing is not a workaround
I expected to be able to narrow the column by hand, but resize-axis horizontal is a silent no-op with one container. Three separate places prevent it:
calculate_scrolling_adjustment returns early for len <= 1, so any resize delta is discarded
enforce_resize_for_scrolling calls enforce_no_resize for 0 or 1 containers, and always zeroes the last column's right
is_valid_direction rejects Left for idx 0 and Right for the last container, so with a single container neither horizontal direction is valid
The commands return exit 0 throughout, so from the outside it just looks like nothing happens.
Proposal
Two opt-in additions to ScrollingLayoutOptions, both defaulting to unset so existing behaviour is unchanged:
fixed_column_width — keep columns at work_area / columns regardless of container count
width_steps — width presets that a new komorebic scrolling-cycle-column-width <next|previous> snaps the focused column to, mirroring PaperWM's cycle_width_steps / cycleWindowWidth. Defaults to the golden ratio steps [0.382, 0.5, 0.618]
Worth noting that column_ratios cannot serve as width_steps: validate_ratios truncates once the cumulative sum reaches 1.0, which would cut [0.382, 0.5, 0.618] down to two entries. Steps are alternatives rather than a partition, so they need their own validator.
I have this working and will open a PR against this issue. Happy to drop the width_steps half and land only fixed_column_width if you would rather keep the surface area smaller, or to take a different design entirely.
Environment
komorebi 0.1.41, Windows 11 26200, four monitors (7680x2160 32:9 plus three others).
Summary
On the Scrolling layout, a strip holding fewer containers than
columnswidens them to fill the work area. Withcolumns: 3and a single container, that container gets the entire work area rather than one column's worth.This is the opposite of how scrollable tiling behaves in PaperWM and niri, where a column keeps its width and the remainder of the strip is simply left empty.
Measured on a 32:9 panel
columns: 3, work area 7632px wide (7680px panel, komorebi-bar offset applied):The single-container case is the one that hurts: a browser window spans 7632px instead of the 2544px column the config asks for.
Resizing is not a workaround
I expected to be able to narrow the column by hand, but
resize-axis horizontalis a silent no-op with one container. Three separate places prevent it:calculate_scrolling_adjustmentreturns early forlen <= 1, so any resize delta is discardedenforce_resize_for_scrollingcallsenforce_no_resizefor 0 or 1 containers, and always zeroes the last column'srightis_valid_directionrejectsLeftfor idx 0 andRightfor the last container, so with a single container neither horizontal direction is validThe commands return exit 0 throughout, so from the outside it just looks like nothing happens.
Proposal
Two opt-in additions to
ScrollingLayoutOptions, both defaulting to unset so existing behaviour is unchanged:fixed_column_width— keep columns atwork_area / columnsregardless of container countwidth_steps— width presets that a newkomorebic scrolling-cycle-column-width <next|previous>snaps the focused column to, mirroring PaperWM'scycle_width_steps/cycleWindowWidth. Defaults to the golden ratio steps[0.382, 0.5, 0.618]Worth noting that
column_ratioscannot serve aswidth_steps:validate_ratiostruncates once the cumulative sum reaches 1.0, which would cut[0.382, 0.5, 0.618]down to two entries. Steps are alternatives rather than a partition, so they need their own validator.I have this working and will open a PR against this issue. Happy to drop the
width_stepshalf and land onlyfixed_column_widthif you would rather keep the surface area smaller, or to take a different design entirely.Environment
komorebi 0.1.41, Windows 11 26200, four monitors (7680x2160 32:9 plus three others).