Previous version most of the time just got "stuck" on floating windows,
switching back and forth between floating window and tiled window underneath.
This was because "magic point" was left in the same position and thus next
navigation commands selected the same windows over and over again.
Now the "magic point" is moved around such that it doesn't overlap with the previously selected window,
and there are more complicated rules to make navigation between floating and tiled windows more natural.
The original behavior of navigating between tiled windows is preserved almost precisely.
Previous version also prevented switching windows using focusUp/focusDown
when in Full layout. Now there's a special case that handles such situations.
In the original code, when a GridSelect is shown, user has to use
keyboard to cancel it (ESC key by default). With this field added,
when it is set to True (the default), mouse click on empty space
can cancel the GridSelect.
_NET_CURRENT_DESKTOP doesn't act on a specific window and its ev_window
is set to the root window, but the root window is considered unmanaged
so this would be caught by the "not member" guard and ignored. We need
to move the guard a bit further down.
Fixes: 3839c8bce99b ("X.H.EwmhDesktops: Fix menus in Steam client")
Fixes: https://old.reddit.com/r/xmonad/comments/1cfclhh/psa_steam_fixes_merged_to_xmonadcontrib_master/l2hjwuy/
For ease of use, provide `fixSteamFlicker` as a pre-packaged
`floatConfReqHook` that can easily be added directly to a
`handleEventHook`.
Also, for discoverability, re-export it from X.U.Hacks.
Implements a replacement event handler for 'ConfigureRequestEvent' to
work around misbehaving client applications such as Steam, URxvt and
others that try to restore their absolute window positions. Primarily
motivated by the Steam client being almost completely unusable in xmonad
lately.
(I've been running this code in my xmonad.hs for other purposes for
years.)
More specifically, ignore ClientMessageEvents for unmanaged windows.
Steam likes to send _NET_ACTIVE_WINDOW requests for all its windows,
including override-redirect ones, which used to result in an invocation
of `windows` with a no-op Endo—equivalent to a call to `refresh`. But
this refresh makes Steam close its menus immediately.
Fixes: https://github.com/ValveSoftware/steam-for-linux/issues/9376
Fixes: https://github.com/xmonad/xmonad/issues/451
This contains a breaking change for readHistory, writeHistory,
historyCompletion, and historyCompletionP to take an XPConfig, so they
are aware of this choice. While the latter two are exported, it seems
unlikely to affect many users.
`EwmhFullscreen` unconditionally sinks windows in response to a
`_NET_WM_STATE` root window message removing `_NET_WM_STATE_FULLSCREEN`.
Unfortunately, at least some versions of either the Gtk or GNOME
libraries send this on startup while restoring a window's last
known state, which means a `manageHook` `doFloat` will be undone.
This change ignores the remove if the window is not fullscreen.
A followup issue, #865, has been added for the follow-on problem
that the floating state of a window is not restored on removal of
the fullscreen state.
Fixes: #820
* First version of DecorationEx.
* Fixed most warnings.
* Fix build error with ghc-9.8.1.
* Fix title shrinking with text decoration.
* Add convinience re-exports.
* Get rid of orphan instances.
* Fix a couple of warnings.
* Rename X.L.DecorationEx.Types -> X.L.DecorationEx.Common
* Add instance Default StandardCommand.
* Fix some typos and formatting
thanks to @geekosaur
Co-authored-by: brandon s allbery kf8nh <allbery.b@gmail.com>
* Fix reference to xmonad.hs
See also #859
Co-authored-by: brandon s allbery kf8nh <allbery.b@gmail.com>
* Fix reference to xmonad.hs
Co-authored-by: brandon s allbery kf8nh <allbery.b@gmail.com>
* Fix formatting
Co-authored-by: brandon s allbery kf8nh <allbery.b@gmail.com>
* Fix some typos and formatting
thanks to @geekosaur
Co-authored-by: brandon s allbery kf8nh <allbery.b@gmail.com>
* Remove commented code.
* Update CHANGES.md.
* calcWidgetPlace is now allowed to return rectangle with any X,
but that will be ignored.
* More generic instance for DecorationWidget GenericWidget.
* Replace explicit definition of `fi` with import from X.Prelude.
thanks to @slotThe.
* Move fetch-all pattern to the end of definition.
thanks to @slotThe.
* X.L.DecorationEx: Add screenshot
---------
Co-authored-by: brandon s allbery kf8nh <allbery.b@gmail.com>
Co-authored-by: Tony Zorman <soliditsallgood@mailbox.org>
Useful for restoring browser windows to where they were before restart
(which is something one should do several times a week as security
updates get released).
I believe this common use-case for the deprecated X.L.Named should still
be provided somewhere, rather than telling everybody to let-define this
themselves.
The other one – `nameTail` – only has about 6 uses in publicly available
configs (https://github.com/search?q=nameTail+path%3Axmonad&type=code),
so I'm not adding that one but I'm happy to be convinced to add it too.
Related: 3bf9d80c40b9 ("XMonad.Layout.Named: Deprecate")
It might be that the keypress does not have a valid stroke associated to
it, but is still bound to an action (e.g., xK_Left an friends). In this
case, we still want to execute it.
Closes: https://github.com/xmonad/xmonad-contrib/issues/845