Skip to content

fix(layout): preserve explicit width when resizing a single column - #155

Closed
itsJai42 wants to merge 2 commits into
noctalia-dev:mainfrom
itsJai42:fix/scrolling-single-column-resize
Closed

fix(layout): preserve explicit width when resizing a single column#155
itsJai42 wants to merge 2 commits into
noctalia-dev:mainfrom
itsJai42:fix/scrolling-single-column-resize

Conversation

@itsJai42

@itsJai42 itsJai42 commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Allow a single scrolling-layout column to keep an explicitly selected width when expand_single_column is enabled.

New columns still expand to fill the workspace. Pointer resizing, width actions, and width preset cycling now mark the column as user-sized so automatic expansion no longer overrides its width. This state is preserved when the layout is captured and restored.

Motivation

With expand_single_column = true, tiled windows (in my case, Steam/Spotify) could not be resized horizontally. The resize changed the stored width, but the layout immediately expanded the column back to the full workspace width. To me, this seems more like a bug than a design decision.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Refactoring
  • Build / packaging
  • Documentation

Testing

  • meson compile -C build-debug
  • meson test -C build-debug --print-errorlogs
    • 52 tests passed
  • tests/harness/check.sh build-debug/umbriel 410_drag_width 516_resize_past_neighbor_minimum 517_expand_single_resize
    • 3 checks passed
  • Added unit coverage for:
    • Preserving automatic expansion after initial width seeding
    • Allowing pointer resizing to override automatic expansion
  • Added a headless compositor check that confirms a lone column starts expanded and remains at its resized width after a right-edge drag.

Manual Coverage

  • Tested in a nested Umbriel session
  • Tested in a native Umbriel session
  • Tested with native Wayland applications
  • Tested with X11 applications through xwayland-satellite
  • Tested with the scrolling layout

Screenshots / Videos

2026-09-05.18-34-55.mp4

Checklist

  • This PR is ready for review, or it is marked as Draft.
  • This change fits SCOPE.md, or its scope was agreed in an issue or on Discord first.
  • I read and followed the relevant guidance in CONTRIBUTING.md.
  • I ran just format, or this PR has no C++ changes.
  • I ran the relevant build, test, lint, or verification commands, or explained why they were not run.
  • I functionally verified compositor behavior where automated checks are insufficient.
  • I self-reviewed the changes.
  • I checked for new warnings or errors.
  • I updated docs/ and examples/config.toml, or this PR does not change user-facing configuration or behavior.
  • I used canonical names for config keys, IPC actions, paths, and identifiers.

Additional Notes

The original problem was observed with X11 applications through xwayland-satellite. The regression check uses a native Wayland client to exercise the same scrolling-layout resize path.

@itsJai42 itsJai42 closed this Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant