Hidden - bakkeby/dusk GitHub Wiki
A client that is Hidden
is in a special "state" which means that it is not to be displayed along
with other client on the same workspace.
This is primarily a flag that is used internally within the window manager, but the flag can also be set via client rules if the intention is that the window should start as hidden.
In terms of dwm the awesomebar patch introduces support for hidden windows and allows users to hide and unhide windows by left clicking on the window title in the bar.
That patch took advantage of the X window state of IconicState to hide windows and this had a few minor side effect such as not being able to actually focus on hidden windows using keyboard shortcuts (e.g. one could get dwm to select the hidden window, but the last terminal that had focus would still have an active cursor).
To work around this and other few nitpicks the implementation within this window manager is different in that hidden windows are simply moved out of view in the same way windows on inactive workspaces are moved out of view. A hidden client is considered as not being visible.
Notable features:
- a client window can be hidden using the showhideclient function with the
default keybinding of
Super+z
- a hidden client that has focus can be unhidden using the same keybinding
- it is possible to focus on hidden clients by passing +/-2 to the focusstack
function (
Super+Alt+Shift+j
andSuper+Alt+Shift+k
by default) - alternatively the focushidden function can be used to change focus between hidden clients only
- it is possible to unhide all hidden clients by using the unhideall function
- it is possible to use the unhidepop function to unhide the most recently hidden client (as in treating hidden clients like a stack)
- a client window can be hidden by right-clicking on the window title in the bar using the mouse
- a hidden client can be shown by right-clicking on the window title in the bar using the mouse
- a hidden client that receives a _NET_ACTIVE_WINDOW client message will automatically be shown
- if a client window receives a WM_CHANGE_STATE client message and the new state is IconicState then the window will be hidden
- if a hidden client receives a WM_CHANGE_STATE client message and the new state is NormalState then the window will be shown
- a scratchpad client that is hidden is shown if the scratchpad is toggled
The window titles for hidden clients are by default show separately in a secondary bar at the bottom
of the screen. If you prefer to show hidden windows in the main bar along other windows then you can
set the weight of hidden windows to 1
.
static int flexwintitle_hiddenweight = 0; // hidden window title weight
See flexwintitle for more details on that.