aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: c827164e0a9a077be740d2211bcbef81c8bd1227 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# unmapfullscreen

## Description

This patch hides fullscreen clients by unmapping them instead of moving them
off-screen. It applies to dwm 6.8.

`showhide()` hides a window by moving it to `-2 * width`. Some games and
Wine/Proton builds treat that as a broken or minimized state and do not
recover fullscreen when the tag returns. With this patch a hidden fullscreen
client is unmapped and mapped again when it becomes visible.

dwm selects `StructureNotifyMask` on clients and `SubstructureNotifyMask` on
the root, so calling `XUnmapWindow()` directly reaches `unmapnotify()` and
unmanages the client. The patch adds a small `unmapclient()` helper that
suppresses both masks around the unmap, the same technique the windowmap
patch uses. Hidden fullscreen clients are still parked off-screen so the
initial map from `manage()` does not put them on the wrong tag.

## Testing

Applies and builds against dwm 6.8. Runtime tested under Xvfb: a hidden
fullscreen client reports map state unmapped and stays managed.

## Download

* [dwm-unmapfullscreen-6.8.diff](dwm-unmapfullscreen-6.8.diff)

## Author

* Daniel Guihot - [daniel@guihot.net](mailto:daniel@guihot.net)