[FEAT]: Infinite Scrollable Tiling #613

Closed
opened 2026-01-05 14:51:58 +01:00 by adam · 15 comments
Owner

Originally created by @LeFauxMatt on GitHub (May 9, 2025).

Eligibility

GitHub Sponsor

Suggestion

As someone who uses an ultrawide monitor, inifinite scrollable tiling (such as the one implemented by niri for Linux) would help me make optimal use of my screen space. The challenge I have with any tiling window manager is that one or even two windows on a screen occupy a lot more horizontal space than is really necessary. What scrollable would solve is that I could pin windows to a desired width, and easily bring any desired window into focus.

Alternatives Considered

Such options exist for Linux (niri & PaperWM) and MacOS (PaperWM.spoon), but I have not found anything for Windows.

Update: Per the recent changelogs, it seems that Jwno may eventually have this as an option, but it hasn't been demonstrated beyond a POC.

Originally created by @LeFauxMatt on GitHub (May 9, 2025). ### Eligibility GitHub Sponsor ### Suggestion As someone who uses an ultrawide monitor, inifinite scrollable tiling (such as the one implemented by niri for Linux) would help me make optimal use of my screen space. The challenge I have with any tiling window manager is that one or even two windows on a screen occupy a lot more horizontal space than is really necessary. What scrollable would solve is that I could pin windows to a desired width, and easily bring any desired window into focus. ### Alternatives Considered Such options exist for Linux (niri & PaperWM) and MacOS (PaperWM.spoon), but I have not found anything for Windows. Update: Per the recent changelogs, it seems that Jwno may eventually have this as an option, but it hasn't been demonstrated beyond a POC.
adam added the enhancement label 2026-01-05 14:51:58 +01:00
adam closed this issue 2026-01-05 14:51:58 +01:00
Author
Owner

@github-actions[bot] commented on GitHub (May 9, 2025):

Feature requests on this repository are only open to current GitHub sponsors on the $5/month tier and above, people with a valid individual commercial use license, and approved contributors.
This issue has been automatically closed until one of those pre-requisites can be validated.

@github-actions[bot] commented on GitHub (May 9, 2025): Feature requests on this repository are only open to current [GitHub sponsors](https://github.com/sponsors/LGUG2Z) on the $5/month tier and above, people with a valid [individual commercial use license](https://lgug2z.com/software/komorebi), and approved contributors. This issue has been automatically closed until one of those pre-requisites can be validated.
Author
Owner

@LGUG2Z commented on GitHub (May 13, 2025):

Some on-going work here: https://github.com/LGUG2Z/komorebi/tree/feature/nirily

I'm probably just going to do the initial heavy lift to get something basic working and then let people who want to add additional features on top of this submit patches if they are interested (similar to komorebi-bar)

Some thoughts that came out of my initial implementation:

  • How does this handle on a multi-monitor setup? Do scrolled windows that go out of view "leak" into adjacent monitors?
  • If they do, can we limit this layout to single-monitor setups only to be able to ship something that some people can use quicker?
  • What are the expectations when resizing a window?
@LGUG2Z commented on GitHub (May 13, 2025): Some on-going work here: https://github.com/LGUG2Z/komorebi/tree/feature/nirily I'm probably just going to do the initial heavy lift to get something basic working and then let people who want to add additional features on top of this submit patches if they are interested (similar to komorebi-bar) Some thoughts that came out of my initial implementation: * How does this handle on a multi-monitor setup? Do scrolled windows that go out of view "leak" into adjacent monitors? * If they do, can we limit this layout to single-monitor setups only to be able to ship something that some people can use quicker? * What are the expectations when resizing a window?
Author
Owner

@42willow commented on GitHub (May 15, 2025):

@LGUG2Z thanks for your work :)

  1. How does this handle on a multi-monitor setup? Do scrolled windows that go out of view "leak" into adjacent monitors?

No, in niri the monitors have entirely independent workspaces, the only way to transfer a window or a workspace to another monitor is to explicitly move it there. Might be important to also note that if a device is undocked from a monitor, the workspaces on that monitor are transferred to the main screen (i.e. laptop), and when it is docked that workspace that was originally on the monitor is transferred back. (although this is less related to infinite scrollable tiling and I don't know if komorebi already does this)

  1. What are the expectations when resizing a window?

There shouldn't be gaps between windows horizontally (for example if you close window 2 out of 3 on the same workspace, 3 should move to the left to fill in the gap). In niri, there's this cool feature called "preset column widths", where you can resize columns (i.e. >=1 window stacked vertically) to presets (e.g 1/3, 1/2, 2/3).


Image

In this screenshot, each row is a different workspace, which is infinitely scrollable left and right - only the middle section is shown.

i.e. this is shown on workspace 2

Image

@42willow commented on GitHub (May 15, 2025): @LGUG2Z thanks for your work :) 1. How does this handle on a multi-monitor setup? Do scrolled windows that go out of view "leak" into adjacent monitors? No, in niri the monitors have entirely independent workspaces, the only way to transfer a window or a workspace to another monitor is to explicitly move it there. Might be important to also note that if a device is undocked from a monitor, the workspaces on that monitor are transferred to the main screen (i.e. laptop), and when it is docked that workspace that was originally on the monitor is transferred back. (although this is less related to infinite scrollable tiling and I don't know if komorebi already does this) 3. What are the expectations when resizing a window? There shouldn't be gaps between windows horizontally (for example if you close window 2 out of 3 on the same workspace, 3 should move to the left to fill in the gap). In niri, there's this cool feature called "preset column widths", where you can resize columns (i.e. >=1 window stacked vertically) to presets (e.g 1/3, 1/2, 2/3). --- ![Image](https://github.com/user-attachments/assets/690ed1dc-890f-45f6-b802-110df266f341) In this screenshot, each row is a different workspace, which is infinitely scrollable left and right - only the middle section is shown. i.e. this is shown on workspace 2 ![Image](https://github.com/user-attachments/assets/5ffd09a9-bc2d-4bea-acc1-57bd6025f01a)
Author
Owner

@rottakore commented on GitHub (May 15, 2025):

Maybe whkd will need to update to support WheelDown and WheelUp to be used in the scrollable layout? AHK already have this.

AHK is detected as a cheat in some games, like THE FINALS and the BATTLEFIELD franchise, so whkd supporting WheelDown and WheelUp can be massive for some people.

@rottakore commented on GitHub (May 15, 2025): Maybe `whkd` will need to update to support `WheelDown` and `WheelUp` to be used in the scrollable layout? `AHK` already have [this](https://www.autohotkey.com/docs/v1/Hotkeys.htm#Wheel). `AHK` is detected as a cheat in some games, like THE FINALS and the BATTLEFIELD franchise, so `whkd` supporting `WheelDown` and `WheelUp` can be massive for some people.
Author
Owner

@42willow commented on GitHub (May 16, 2025):

wheel down and wheel up are very convenient to have with scrollable twm's when you don't have both hands on the keyboard

@42willow commented on GitHub (May 16, 2025): wheel down and wheel up are very convenient to have with scrollable twm's when you don't have both hands on the keyboard
Author
Owner

@rottakore commented on GitHub (May 16, 2025):

Just adding this video from LGUG2Z Youtube channel here so people coming from Github can have more details on how this feature is going.

@rottakore commented on GitHub (May 16, 2025): Just adding [this video](https://www.youtube.com/watch?v=b1yECfF7Qyg) from LGUG2Z Youtube channel here so people coming from Github can have more details on how this feature is going.
Author
Owner

@LGUG2Z commented on GitHub (May 16, 2025):

Maybe whkd will need to update to support WheelDown and WheelUp to be used in the scrollable layout? AHK already have this.

AHK is detected as a cheat in some games, like THE FINALS and the BATTLEFIELD franchise, so whkd supporting WheelDown and WheelUp can be massive for some people.

I believe this will require changes in https://github.com/iholston/win-hotkeys - Feel free to reach out to the maintainer with a feature request; if it gets added in that library at some point, I can expose it in whkd

@LGUG2Z commented on GitHub (May 16, 2025): > Maybe `whkd` will need to update to support `WheelDown` and `WheelUp` to be used in the scrollable layout? `AHK` already have [this](https://www.autohotkey.com/docs/v1/Hotkeys.htm#Wheel). > > `AHK` is detected as a cheat in some games, like THE FINALS and the BATTLEFIELD franchise, so `whkd` supporting `WheelDown` and `WheelUp` can be massive for some people. I believe this will require changes in https://github.com/iholston/win-hotkeys - Feel free to reach out to the maintainer with a feature request; if it gets added in that library at some point, I can expose it in `whkd`
Author
Owner

@rottakore commented on GitHub (May 16, 2025):

I created a feature request in the win-hotkeys repository.

@rottakore commented on GitHub (May 16, 2025): I created a [feature request](https://github.com/iholston/win-hotkeys/issues/9) in the [win-hotkeys repository](https://github.com/iholston/win-hotkeys).
Author
Owner

@LGUG2Z commented on GitHub (May 17, 2025):

In the interests of shipping something a little quicker, I've updated the branch to only allow setting a workspace layout to Scrolling if a single monitor is connected, now that we know that with the current implementation windows end up bleeding onto adjacent monitors

This could be further refined to also allow multiple monitors if we can validate that there are no two horizontally adjacent monitors

@LGUG2Z commented on GitHub (May 17, 2025): In the interests of shipping something a little quicker, I've updated the branch to only allow setting a workspace layout to Scrolling if a single monitor is connected, now that we know that with the current implementation windows end up bleeding onto adjacent monitors This could be further refined to also allow multiple monitors if we can validate that there are no two horizontally adjacent monitors
Author
Owner

@42willow commented on GitHub (May 17, 2025):

Which implementation? Windows don’t bleed into horizontally adjacent monitors in niri
Unless you are considering the viewport as a workspace (which scrolls horizontally to other workspaces) rather than workspaces vertically that scroll infinitely horizontally?

The first screenshot I sent illustrates how niri does it

@42willow commented on GitHub (May 17, 2025): Which implementation? Windows don’t bleed into horizontally adjacent monitors in niri Unless you are considering the viewport as a workspace (which scrolls horizontally to other workspaces) rather than workspaces vertically that scroll infinitely horizontally? The first screenshot I sent illustrates how niri does it
Author
Owner

@LGUG2Z commented on GitHub (May 17, 2025):

I think you're misunderstanding - I am talking about the implementation on the feature/nirily branch in this repo

I've made some updates tonight

  • Borders now update correctly
  • komorebic scrolling-layout-columns can be used to set the number of visible columns on the fly
  • A new layout_options has been added which includes layout_options.scrolling.columns to set the same configuration declaratively
  • Both odd and even numbers of columns now work correctly

I think this is probably the limit of the work that I'm personally interested in doing on this feature - I think we can get it into the first nightly after v0.1.37 is released and then whoever is interested on iterating further can take it from there

@LGUG2Z commented on GitHub (May 17, 2025): I think you're misunderstanding - I am talking about the implementation on the feature/nirily branch in this repo I've made some updates tonight * Borders now update correctly * `komorebic scrolling-layout-columns` can be used to set the number of visible columns on the fly * A new `layout_options` has been added which includes `layout_options.scrolling.columns` to set the same configuration declaratively * Both odd and even numbers of columns now work correctly I think this is probably the limit of the work that I'm personally interested in doing on this feature - I think we can get it into the first nightly after v0.1.37 is released and then whoever is interested on iterating further can take it from there
Author
Owner

@rottakore commented on GitHub (May 17, 2025):

@LGUG2Z, is it still possible to resize apps in the scrollable layout freely? Or it will always snap in the number you put in komorebic scrolling-layout-columns? Or komorebic scrolling-layout-columns is optional?

@rottakore commented on GitHub (May 17, 2025): @LGUG2Z, is it still possible to resize apps in the scrollable layout freely? Or it will always snap in the number you put in `komorebic scrolling-layout-columns`? Or `komorebic scrolling-layout-columns` is optional?
Author
Owner

@LGUG2Z commented on GitHub (May 17, 2025):

I've been resizing apps with komorebic resize-axis and also with AltSnap on this layout without any issues; based on this I'm sure komorebic resize-edge also works

komorebic scrolling-layout-columns defaults to 3 - if you resize a column to be smaller, the adjacent column will grow to take the space it releases, and if you resize a column to be smaller, it will make the adjacent column release space to expand into - when you scroll the viewport these resize adjustments are maintained so you can also end up with a window resized to be larger not being completely within the viewport if it is on the extreme left or right visible column within the viewport

@LGUG2Z commented on GitHub (May 17, 2025): I've been resizing apps with `komorebic resize-axis` and also with AltSnap on this layout without any issues; based on this I'm sure `komorebic resize-edge` also works `komorebic scrolling-layout-columns` defaults to `3` - if you resize a column to be smaller, the adjacent column will grow to take the space it releases, and if you resize a column to be smaller, it will make the adjacent column release space to expand into - when you scroll the viewport these resize adjustments are maintained so you can also end up with a window resized to be larger not being completely within the viewport if it is on the extreme left or right visible column within the viewport
Author
Owner

@LGUG2Z commented on GitHub (May 18, 2025):

I have just cut a new nightly release with the Scrolling layout included - make sure to point the $schema key in komorebi.json to https://raw.githubusercontent.com/LGUG2Z/komorebi/refs/heads/master/schema.json to pick up the new configuration options when trying this out.

I've closed the issue since I won't be working on this anymore; if anyone wants to continue iterating on this and submit PRs we can continue any focused implementation-related discussion there.

@LGUG2Z commented on GitHub (May 18, 2025): I have just cut a new `nightly` release with the `Scrolling` layout included - make sure to point the `$schema` key in `komorebi.json` to `https://raw.githubusercontent.com/LGUG2Z/komorebi/refs/heads/master/schema.json` to pick up the new configuration options when trying this out. I've closed the issue since I won't be working on this anymore; if anyone wants to continue iterating on this and submit PRs we can continue any focused implementation-related discussion there.
Author
Owner

@DaitiDay commented on GitHub (Dec 20, 2025):

Just adding this video from LGUG2Z Youtube channel here so people coming from Github can have more details on how this feature is going.

Just a couple of questions about the video: how can I spawn the first window in the center of the screen? And how can I change the size of the columns like it is shown in the video?

@DaitiDay commented on GitHub (Dec 20, 2025): > Just adding [this video](https://www.youtube.com/watch?v=b1yECfF7Qyg) from LGUG2Z Youtube channel here so people coming from Github can have more details on how this feature is going. Just a couple of questions about the video: how can I spawn the first window in the center of the screen? And how can I change the size of the columns like it is shown in the video?
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/komorebi#613