pop-os / cosmic

Computer Operating System Main Interface Components
GNU General Public License v3.0
1.16k stars 45 forks source link

[Feature] Enhanced Window Management for Ultra (Ultra) Wide Monitors #409

Open johnnyq opened 5 months ago

johnnyq commented 5 months ago

Ultra (Ultra) wide monitors, such as the Dell 49" U4924DW with a pixel resolution of 5120 x 1440, often don't receive adequate support on Linux. This resolution provides ample space to comfortably display three windows side by side. I suggest enhancing the window snapping feature to accommodate this: when snapping a window to either the right or left side of the screen, it should automatically reserve space in the center for a third window. Thus, when you drag another window to the top of the screen, instead of it expanding to fill the entire screen, it should only occupy the central portion. While I'm not particularly inclined to use tiling functions, I find the snapping feature very useful. Ideally, this behavior would be enabled by default on monitors recognized as sufficiently wide, though it should also be customizable.

joaomcarlos commented 4 months ago

I have a Samsung G9 Neo, same size and resolution as yours. Its a pain without some strong customization.

I am currently using gSnap with a set of custom layouts, but it still doesnt work exactly how I wanted it to (i'd be mostly happy with a straight copy from Windows Toys tool called FancyZones).

In the "youtube" layout (which I use for watching youtube) basically sets up 3 main areas, a center 27" area for what is basically fullscreen youtube and 2 "sidecar" panels for other stuff. If I am in the "programming" layout, I basically want that center real estate split in two (usually 2 terminals with tmux or 1 pycharm and 1 term) and then the "sidecar" areas split into room for a browser and chat windows. Slack is usually always visible since thats the main method of communication with my teams (sister teams and my own team, private messages and the many many channels) and MS Teams is mostly replaced by a terminal showing output of my local docker-composed env. These days I have been using picture in picture to split the screen at the center and basically have Mac on the left side and Pop on the right side and share mouse/keyboard with Barrier/InputLeap, so I dont always use the same workspace layout nor resolution.

Having the flexibility on Pop to change layouts with these areas would be massive. Specially if you could have tiling inside areas (if you have a big screen, an area acts like a monitor basically).

Anyhow, here is my gSnap layouts config (~/.config/gSnap/layouts.json) if anyone wants to give it a go. Once you start using this workflow, its like tiling, you cant go back!

{"workspaces":[[{"current":2},{"current":1}],[{"current":1},{"current":1}],[{"current":0}]],"definitions":[{"name":"None","type":0,"length":100,"items":[]},{"name":"Programming","type":0,"length":100,"items":[{"type":1,"length":25,"items":[{"type":0,"length":50,"items":[]},{"type":0,"length":50,"items":[]}]},{"type":0,"length":25,"items":[]},{"type":1,"length":25,"items":[]},{"type":1,"length":25,"items":[{"type":0,"length":50,"items":[]},{"type":0,"length":50,"items":[]}]}]},{"name":"Youtube","type":0,"length":100,"items":[{"type":0,"length":25,"items":[]},{"type":0,"length":50,"items":[]},{"type":0,"length":25,"items":[]}]}]}

PS: imagine having workspaces inside layout areas. That would be massive!

Edit: Related issue https://github.com/pop-os/cosmic/issues/381