[xmonad] Hide border when switching to full screen

Brandon Allbery allbery.b at gmail.com
Sat Jan 13 21:16:01 UTC 2024


You don't handle app-initiated fullscreen mode. There's a rework of
EwmhDesktops somewhere that would let you register a handler for
`_NET_WM_STATE_FULLSCREEN` to toggle the border, but no ETA for it to land,
so you would have to use `handleEventHook` to watch for the `_NET_WM_STATE`
event being sent to the root window, extract the target window from it,
check that the requested state flag is `_NET_WM_STATE_FULLSCREEN`, and set
or toggle the border appropriately. See
https://specifications.freedesktop.org/wm-spec/wm-spec-1.3.html#idm46201142858672
at "To change the state of a mapped window".

On Sat, Jan 13, 2024 at 9:10 AM Eyal Erez <oneself at gmail.com> wrote:

> Hi,
>
> Currently, if a window goes into full screen mode (e.g., if I hit "f"
> while watching a youtube video in Chrome), I would like it to take up the
> entire screen and also remove the window border. I have tried doing this
> with the code snippets I've included below (full xmonad.hs
> <https://pastebin.com/uDqdETiF>). However this only works partially. The
> window resizes to take up the entire screen, including toggling struts.
> However, the border does not toggle off. Is there anything I can do
> differently? Thank you.
>
> -- Define a function which toggles borders and also does full float
> doFullFloatNoBorders :: ManageHook
> doFullFloatNoBorders = do
>   liftX $ withFocused toggleBorder
>   doFullFloat
>
> myManageHook :: [ManageHook]
> myManageHook =
>     [ isFullscreen                  --> doFullFloatNoBorders
>       -- more rules
>     ]
>     where role = stringProperty "WM_WINDOW_ROLE"
>           unfloat = ask >>= doF . W.sink
>
> myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
>     [      -- Toggle borders
>      ((modMask .|. shiftMask, xK_b     ), withFocused toggleBorder)
>      -- more key definitions
>     ]
>
> -- Main configuration
> myConfig = ewmhFullscreen $ ewmh def
>         { modMask            = mod1Mask
>         , keys               = myKeys
>         , manageHook         = manageDocks <+> composeAll myManageHook
>         -- more configuration
>         }
> -- Key binding to toggle the gap for the bar.
> toggleStrutsKey XConfig {XMonad.modMask = modMask} = (modMask .|.
> controlMask, xK_b)
>
> main = xmonad =<< statusBar "xmonad" def toggleStrutsKey myConfig
>
> --
> *Eyal Erez <**oneself at gmail.com* <oneself at gmail.com>*>*
>
> There are 10 types of people, those who know binary and those who don't.
>
> _______________________________________________
> xmonad mailing list
> xmonad at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
>


-- 
brandon s allbery kf8nh
allbery.b at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/xmonad/attachments/20240113/b3e0b09d/attachment.html>


More information about the xmonad mailing list