For fun: partially implementing the Moisac Windows concept by @tbernard.

https://blogs.gnome.org/tbernard/2023/07/26/rethinking-window-management/

#GNOME

At the moment I am making a dynamic and intelligent tiling system that coexists with the mosaic as shown in the mockup and this has been a fairly wide road.

I have already achieved good results, but I think I will only have something that can be proved next year.

Some momentum.
Using mosaic windows is so good that going back to using overlapping windows feels strange.
It's still quite experimental, but I think I can start sharing it to begin getting some public testing.
https://github.com/CleoMenezesJr/MosaicWM
The solution I found to alert the user that the window they are resizing will overflow and no longer fit in the workspace was to make it opaque.

I initially used the Shelf algorithm to build the mosaic, but I ran into limitations I didn't like. I'm testing a hybrid approach: MaxRects algorithm augmented with some BSP algorithm features to improve space utilization and partitioning flexibility.

I need to weigh the pros and cons: a hybrid MaxRects with BSP improves space utilization and flexibility (fills gaps and eases reorganization) but increases computational complexity and processing cost.

Any thoughts?

In the end, it was worth trying to improve the algorithm I already had rather than attempting to implement something so complex that didn't meet my expectations.

Using the Shelf algorithm, I implemented an approach where windows are arranged with radial growth; exactly what I was looking for. This greatly improved space utilization and looks visually well-balanced.

Before the algorithm tried to complete the horizontal space of their "shelf" with windows before creating another "shelf". The look was very unbalanced and uncentric.

I was researching some articles about algorithms for collages and came across an interesting one: https://callistaenterprise.se/blogg/teknik/2025/06/11/genetic-algorithms-collage-creation/.

The proposal presented seems brilliant, as considering the concept of "collage" makes more sense than thinking about "mosaic" to solve this problem.

Photo Collage Generation Using Genetic Algorithms | Callista

Callista Enterprise - seniora IT-arkitekter och systemutvecklare inom Java, öppen källkod, agil utveckling och systemintegration

I tried everything: spiral packing, radial growth, bin packing... Each one promised to be "the definitive." The radial looked nice but had gaps. The spiral got stuck on edge cases. The bin packing ignored aspect ratios.

In the end, I went back to basics: horizontal rows with smart distribution. Windows arrange themselves in lines, respecting their original sizes. Simple, predictable, and it works.

Sometimes the elegant solution is the one that doesn't try to be brilliant. 🧘

Guys, MosaicWM is becoming more and more stable, so I would like to start having people testing it.

https://github.com/CleoMenezesJr/MosaicWM

#GNOME

@CleoMenezesJr ooo, I really like this. This is the stuff of dreams
@Jc00qe Me too. I had been wanting this to be a reality for a long time. 🫣
@CleoMenezesJr Looking pretty good!!!!
@fkinoshita Isn't it? I loved the animations.
@CleoMenezesJr so... I disabled PaperWM followed the install instructions (had to log out and back in after `./install.sh` to be able to enable the extensions, btw). But it... isn't doing anything? No mosaic here, just regular overlapping windows :(
@CleoMenezesJr no errors in `lg` so I must be doing something wrong... also, I tried the "nested gnome session" setup but it won't run because gnome-shell-toolbox-tools.conf doesn't exist
@aburka
Are you on GNOME 49? Try disabling other extensions as well, something might be conflicting.
How about using journalctl?
https://github.com/CleoMenezesJr/MosaicWM?tab=readme-ov-file#debugging
GitHub - CleoMenezesJr/MosaicWM: Rethinking window management for GNOME Shell

Rethinking window management for GNOME Shell. Contribute to CleoMenezesJr/MosaicWM development by creating an account on GitHub.

GitHub
@CleoMenezesJr I checked journalctl but didn't see anything, oh I'm probably on an older gnome though

@aburka some things to score:
1. The extension is being tested in GNOME 49, it may work without problems in versions 45+, but you will have to manually change it in the extension/metadata.json before installing.
2. I was using a script to install that had as dependency the zip package, if you didn't have it on your system it would fail.
3. I added a new, more polished script. You no longer need to have the zip package installed.

Please see the new installation method in the README and try again

@CleoMenezesJr okay I changed the version field to 47 and it works! (I realize you haven't tested on this version.) It's only tiling windows on the primary monitor, on the second monitor they seem basically unmanaged, is that a limitation at this point or an issue with my old Gnome?
@aburka The extension should work on multi monitor, but if it's not working it could be a bug. Unfortunately I don't have two monitors to test it at the moment. Please fill a bug report.
@CleoMenezesJr done! is there a way to simulate two monitors in the nested session?
@aburka I never asked myself that and I hadn't thought I could. I'll ask in the GNOME Extensions support channel. It would be a great solution.
@CleoMenezesJr is the idea here that if you open a new window, and there's enough space on the screen for both the existing one and the new one, it would be silly for the new window to open on top
@sashin I didn't understand what you meant. The windows will only be in the workspace if they fit in the space; if not, it will try a new one.
@CleoMenezesJr hmmm... Do you know if this would play nicely with another extension that ensures certain apps open on specific desktops
@sashin I believe so. I don't see any reason for there to be conflicts. But of course, the extension is still experimental, it might break something here and there. Please report anything you find on the bug tracker.
@CleoMenezesJr This is great! If I can make a UI suggestion, perhaps it would be good if, while dragging a window, it shrinks down and goes semi-opaque like when dragging a window in the overview? There's already an outline of the space the window will fill when released (which could perhaps be a bit less transparent), so this would mean you would be able to see other windows better while moving another.
@haydntrowell It seems like an idea I could try experimenting with, but I can't see how it would interfere with seeing other windows since they adjust by 'repelling' the spot where you're placing it.
@CleoMenezesJr it looks good, I will test it.
@visnudeva Thank you, I need some tests and feedback. 🪲

@CleoMenezesJr here is my feedback, I couldn't test it further than the installation. Your gît clone is wrong, you should do this instead;

"git clone https://github.com/CleoMenezesJr/MosaicWM.git
cd ~/MosaicWM
chmod +x install.SH
./install.sh"

But then you have more errors so it can't be installed, for exemple ./export-zip.sh: line 5: zip: command not found, [email protected]:No such file or directory...

@visnudeva Yeah, it should use the http not the ssh for git clone. Which errors on install?
@CleoMenezesJr it is on my previous post
@visnudeva just get you, try the manual installation. I added a section for that in the readme
@CleoMenezesJr here is exactly what I get
@visnudeva You don't have the 'zip' package installed. I added a manual installation method in the readme, try installing it using that, and I will add a warning about it.

@visnudeva I just updated the installation script so it no longer requires the zip package. Try it out:

https://github.com/CleoMenezesJr/MosaicWM?tab=readme-ov-file#from-source

@CleoMenezesJr OK I tried and it doesn't work as intended, every time I open a new windows it is sent to a new desktop not even maximised, it needs more work for now but you'll eventually make it work.
@visnudeva Would the windows fit in the mosaic in the same workspace? Try making them smaller.
@CleoMenezesJr Ah great! Try to get some time to test it.
@romix Thank you. Any test is welcome.
@CleoMenezesJr wow 🔥🔥🔥

@CleoMenezesJr Ohhh that's lovely! I've always wanted to try the concept @tbernard blogged about, amazing someone implemented it! Especially since native GNOME halves/quarters tiling doesn't make me happy on my 49" monitor, I'd rather have thirds, at least.

Will try this when I'm on my personal box again, currently dealing with macOS at work (which also has bad tiling and I'd love to see mosaic/collage there as well...)

@CleoMenezesJr oh my god, when it stacks three windows on top of one another on the left after putting one on the full half tile on the right.
I'm so excited for this.
@CleoMenezesJr This is sick!!! I thought the blog post exploring this idea was fantastic and was really hoping it would get prototyped
@ianmclean still quite experimental, but already taking shape.
@CleoMenezesJr I've been using it for the past week, I really like it. Would you like some feedback?

@CleoMenezesJr Excuse my messiness, but some notes I took...

- Takes some getting used to, but quite nice
- It feels like you're in overview all the time at first
- You have to resize your windows to stop them from overflowing all the time - this settles down quickly when window sizes are remembered by apps

- Whether it takes the pain out of managing windows: there are some trade-offs, but I'd say overall it accomplishes its task

- The idea of "one workspace per task" becomes harder to maintain if one task just involves too many windows; the smaller your screen, the bigger the problem

- If it could try to intelligently resize the new windows to fit, that'd help (I see the newest builds are doing this)

- Trying to intelligently resize the existing windows would help further, but perhaps at too high a cost? Don't want those windows rearranging their contents unexpectedly

- Once you have too many windows open, you have to manage them, you just do

- BUT: If you were to keep shifting existing windows to make way for new ones, and then just letting them stack when it becomes too much, that may be enough. My wife keeps opening 50 instances of Files, it would definitely help solve that

- Automatically punting the user over to the next workspace to fit a new window is disorienting because I always expect it to spawn on the current one no matter how crammed it is. If there's no choice though, perhaps make the animation slower and light up the workspace switcher so they can be clued in to what happened and how to fix it

- It interacts with the lack of tray icons in GNOME - I keep all my background apps together on a workspace; if you have a lot of background apps, you might need many workspaces to fit them all now.

(Continues)

@CleoMenezesJr (continued)

- When I've got one window among many others, and I need more space in the other windows and I can get away with not seeing this one just for one second, what do I do? I know, just move it to another workspace, but... Yet I feel some mental resistance at this.

- could it be helpful to temporarily bring up the overview when you grab a window? With window management now needing to be so much less precise than before, you could merge the functions of both into one. Rearrange or snap windows on the same workspace or drag them into another, on the same screen

- It's making me more intentional about what windows I have open, and slow the hell down and it's great

- I thought for a long time I was a "power user" by opening a hundred different things quickly and tossing them around with muscle memory, until I saw someone else doing the same and realised how much time they were wasting. I think this behaviour may actually be more of an ADHD trait than a power user trait, and having some control of window management taken away is actually helpful and not an impediment.

- For less advanced users that don't grasp window management at all though, I can foresee different benefits, but no less significant

- I never noticed that my main way of telling the active window was the one that was sitting on top of the rest. With windows no longer stacking, having another way to see what's in focus becomes more important, especially if you're switching focus with the keyboard

- Goes very well with the "Highlight focus" extension to quickly flash the focused window

- There is something weirdly really satisfying to me in knowing that a lone window is perfectly centred on screen

@ianmclean Thanks for the feedback; it’s very valuable. I’m in the same boat (I have ADHD) and have been testing different approaches to improve window management.
The original idea was for every window to have an "ideal size," but that proved unworkable in the short and medium term (and possibly long term).

+

@ianmclean So I moved to plan two: smart resize. When a new window opens, try to make it fit at all costs before letting overflow occur. Now I’m exploring plan three: abandon automatic resizing in favor of a larger, scrollable canvas that provides more space without forcefully changing existing windows.

+

@ianmclean I noticed an interesting pattern in testing: people with large or ultrawide monitors rarely mention constant overflow; those of us on 1920×1080 or smaller screens don’t get as much benefit when windows are small. In my tests, a virtual (not infinite) scrollable canvas works much better: it reinforces using workspaces and makes it easier to keep one task per workspace without awkward resizing.
@ianmclean As I’ve said, I’m still experimenting. The original mockup didn’t account for smaller windows or all the cases you raised, so I’m iterating to find solutions. Thanks again.
@CleoMenezesJr You can use a hybrid layout approach that predicts where a window should be positioned, then adjusts it locally with a constraint-driven reflow using an incremental solver on a small subtree. If the solver fails, it falls back to a pre-defined append or scroll slot and support versioned diffs for undo. Take insights from @YaLTeR btw :)
@tris @YaLTeR It's a really good idea. I'll try something like that.
@tris @CleoMenezesJr Sorry? I don't see the OP?
Cleo Menezes Jr. :verified: (@[email protected])

Attached: 1 image Using the Shelf algorithm, I implemented an approach where windows are arranged with radial growth; exactly what I was looking for. This greatly improved space utilization and looks visually well-balanced. Before the algorithm tried to complete the horizontal space of their "shelf" with windows before creating another "shelf". The look was very unbalanced and uncentric.

FLOSS.social