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@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). 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@gmail.com>

There are 10 types of people, those who know binary and those who don't.

_______________________________________________
xmonad mailing list
xmonad@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad


--
brandon s allbery kf8nh
allbery.b@gmail.com