domferr / domferr/tilingshell

Untile shortcut behavior buggy and unintuitive — doesn't preserve untiled size and moves window back on monitors even if no longer tiled

Open
#564 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
2k
Forks
116
PR merge metrics
No merged PRs in 30d

Description

**Describe the bug**
When the window is untiled, while it was previously tiled and moved between different monitors, the untiled state is not restored properly. Sometimes the window inherits the size of previous tiled size, and other times it can warp to previous monitor even in it's untiled state. The window also jumps around on monitors, which makes untiling feel like a wild goose chase. I feel like it's a bunch of similar problems showing as a symptom of a single core bug — the unntiled and tiled state restore being different than user expectaions.

Ultimately, I think the states should sue the following logic:

1. Remember window untiled size, position and starting monitor.
2. After a series of window tiled, moved between tiles, maximized, retiled again and moved between monitors...
3. ...When window is untiled:
- Resize the window to size from 1.
- IFF monitor is the same, restore position

Currently one of the following happens:
- tiled window jumps to original monitor where i was tiled
- tiled window doesn't restore it's original size

Currently it looks like part of state — window size and position — is overwritten whenever window is maximized on a new monitor
**To Reproduce**
My setup assumes 3 monitors, two big ones placed horizontally next to each other and the 3rd small laptop monitor placed below them in an inversed piramid shape.

Moreover at times monitor thinks it is still tiled even though its untiled, and after it's moved by the title bar, the animation plays as if it was demaximized. I am not sure how to reproduce this particular case reliably for now.

Image

For simplicity I used default 4-quarter layouts on each monitor

Steps to reproduce the window jumping to original monitor:
1. Start from a small floating window on monitor 2
2. tile to right twice (first goes to corner on monitor 2, then moves to monitor 3)
3. untile with shortcut
4. window jumps back to monitor 2

(On the following video I pressed tile right 3 times and untile shortcut)
https://github.com/user-attachments/assets/55c5c1ea-96ca-4213-9673-a040c3c2a3b0

The second behavior, where window overwrites the "untiled" size by it's fullscreen size can be achieved with he following sequence of steps:
1. Start with small window on onitor 2
2. tile a window down 2 times (once to the bottom of monitor 2, second time to top of monitor 1)
3. "Tile up" twice — first time to maximize on monitor 1, second time to move back to monitor 2.
4. Untile with shortcut
5. Notice the window jumped back to monitor 1 into seemingly fully maximized state

This is how it looks like (here I also pressed tile up 3 times):

https://github.com/user-attachments/assets/8fb8c84a-6fa9-4123-ac06-c2a534b7b0ea

My shortcuts are SUPER+arrows for tiling.

**Information (please complete the following):**
- Tiling Shell version: v17.3
- GNOME version: 50.1

**Additional context**
I also recorded another session where I try to reproduce the behaviors above and see other bugs as well — for instance ghost animations of window switching tiling/maximized state from weird places when they move between monitors, and aforementioned weird behavior when I untile by dragging by titlebar (alo animation issues, this appears to be #405).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.