-
-
Notifications
You must be signed in to change notification settings - Fork 279
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Previously floating fullscreen windows tiles after leaving fullscreen #456
Comments
This is due to this line simply sinking the window when fullscreen is removed; I guess the stackset could have changed in the meantime and for tiled windows trying to restore some sort of "previous position" is practically impossible. I wonder if it's worth making an exception for floating windows here; what do other people think? |
If the stackset doesn't change, then "simply sinking the window" does restore its original position. When I fullscreen a tiled window and then unfullscreen it, everything is back to where it was. If the window is moved in between, then the stackset is changed and when it sinks, it sinks into the master position or something, but I'd argue that stackset changing during fullscreen isn't all that likely. But floats… everything related to floats in xmonad is quite a hack, and fullscreening/maximization is a hack on top of a hack. :-( That being said, maybe it's still worth it? A simple extensible state with Oh and it seems there already is something similar: XMonad.Util.PositionStore, XMonad.Hooks.PositionStoreHooks, XMonad.Layout.PositionStoreFloat. XMonad.Util.PositionStore implements the extensible state. The rest implements layout-based floating, which (afaik) unfortunately needs decorations for moving windows, so that's not something that is widely used I'm afraid. Also not sure if it's okay to wire XMonad.Util.PositionStore into EwmhDesktops. It's definitely something one can play with, but it's a bit more difficult when compatibility with existing users' setups should be kept. :-/ |
Dwm handles this by saving the previous state, height, width and cords of a window, and when getting back from fullscreen it just restores those values. It should be possible to do this with xmonad, but haskell still looks like a alien language to me. |
Oh, well TIL then, thanks! Maybe this looks how much I value floating windows in general :>
Yes this was basically the idea here:
I have to say that wiring something into #399 sounds pretty awesome to me (if only because then that gets worked on and the last real blocker for 0.17 vanishes :>) |
Yeah, it all seems to fit into the puzzle. With (un)fullscreen hooks in EwmhDesktop, even X.L.Fullscreen can hook into it and make the two cooperate cleanly. That might be a considerable win. I'm excited. :-) |
I think the floating window should remain floating. The fact that it becomes tiling is not intuitive. But, as far as I understand, it is not so easy to implement now :). |
Not that difficult, either: remember its state in XS on entering fullscreen, use saved state to put it back floating or tiled afterward, include an extra hook for delete window to clean up the state if it's closed while still fullscreen. The truly difficult one would be trying to remember its exact state in the tile, since it'd be dependent on the layout in question and might change. |
I'd advice using the layout modifiers in XMonad.Layout.Fullscreen instead if you want this behavior. |
Fairly straightforward, just add two hooks for (un)fullscreening. There are multiple motivations for this: * Users are calling for unfullscreened windows to revert back to their original location if they were floating. * XMonad.Layout.Fullscreen uses some deprecated exports from XMonad.Hooks.EwmhDesktops and reimplements fullscreenEventHook. This commit only adds the hooks. Neither of the motivations are dealt with yet, so the docs are a bit terse still. Related: xmonad#456 Related: xmonad#394 Related: xmonad#626
Fairly straightforward, just add two hooks for (un)fullscreening. There are multiple motivations for this: * Users are calling for unfullscreened windows to revert back to their original location if they were floating. * XMonad.Layout.Fullscreen uses some deprecated exports from XMonad.Hooks.EwmhDesktops and reimplements fullscreenEventHook. This commit only adds the hooks. Neither of the motivations are dealt with yet, so the docs are a bit terse still. Related: xmonad#456 Related: xmonad#394 Related: xmonad#626
Fixes: xmonad#456 Related: xmonad#394 Related: xmonad#626
Fairly straightforward, just add two hooks for (un)fullscreening. There are multiple motivations for this: * Users are calling for unfullscreened windows to revert back to their original location if they were floating. * XMonad.Layout.Fullscreen uses some deprecated exports from XMonad.Hooks.EwmhDesktops and reimplements fullscreenEventHook. This commit only adds the hooks. Neither of the motivations are dealt with yet, so the docs are a bit terse still. Related: xmonad#456 Related: xmonad#394 Related: xmonad#626
Fixes: xmonad#456 Related: xmonad#394 Related: xmonad#626
Fairly straightforward, just add two hooks for (un)fullscreening. There are multiple motivations for this: * Users are calling for unfullscreened windows to revert back to their original location if they were floating. * XMonad.Layout.Fullscreen uses some deprecated exports from XMonad.Hooks.EwmhDesktops and reimplements fullscreenEventHook. This commit only adds the hooks. Neither of the motivations are dealt with yet, so the docs are a bit terse still. Related: xmonad#456 Related: xmonad#394 Related: xmonad#626
Problem Description
When opening a floating window, entering fullscreen with fullscreenEventHook and leaving fullscreen the window tiles instead of floating again.
Configuration File
Please include the smallest configuration file that reproduces the
problem you are experiencing:
Checklist
I've read CONTRIBUTING.md
I tested my configuration with xmonad-testing
The text was updated successfully, but these errors were encountered: