mirror of
https://github.com/xmonad/xmonad.git
synced 2025-07-26 01:31:53 -07:00
cf9828cbcdd6307207c9fd2b9e98a93e5030e91c
According to the ICCCM, clients should send a synthetic unmap event when they initiate an unmap. The old code waited for these synthetic unmaps to unmanage windows. However, certain 'obsolete' clients do not send synthetic unmaps (notably xpdf's find dialog). These windows entered a zombified state: xmonad does not manage them, yet they are still mapped and raised on screen. The new algorithm (derived from wmii): - track windows that are mapped on screen - track the number of expected unmap events for each window, increment every time 'hide' is called on a window that is not mapped. - decrement the expected unmap counter on each unmap event - treat an unmap event as genuine (ie. unmap the window) when: - the event is synthetic (per ICCCM) - OR there are no expected unmap events for this window
xmonad : a lightweight X11 window manager. http://xmonad.org ------------------------------------------------------------------------ About: Xmonad is a tiling window manager for X. Windows are managed using automatic tiling algorithms, which can be dynamically configured. Windows are arranged so as to tile the screen without gaps, maximising screen use. All features of the window manager are accessible from the keyboard: a mouse is strictly optional. Xmonad is written and extensible in Haskell, and custom layout algorithms may be implemented by the user in config files. A guiding principle of the user interface is <i>predictability</i>: users should know in advance precisely the window arrangement that will result from any action, leading to an intuitive user interface. Xmonad provides three tiling algorithms by default: tall, wide and fullscreen. In tall or wide mode, all windows are visible and tiled to fill the plane without gaps. In fullscreen mode only the focused window is visible, filling the screen. Alternative tiling algorithms are provided as extensions. Sets of windows are grouped together on virtual workspaces and each workspace retains its own layout. Multiple physical monitors are supported via Xinerama, allowing simultaneous display of several workspaces. Adhering to a minimalist philosophy of doing one job, and doing it well, the entire code base remains tiny, and is written to be simple to understand and modify. By using Haskell as a configuration language arbitrarily complex extensions may be implemented by the user using a powerful `scripting' language, without needing to modify the window manager directly. For example, users may write their own tiling algorithms. ------------------------------------------------------------------------ Building: Get the dependencies It is likely that you already have some of these dependencies. To check whether you've got a package run 'ghc-pkg list some_package_name' mtl http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mtl-1.0 (Included with GHC) unix http://hackage.haskell.org/cgi-bin/hackage-scripts/package/unix-2.0 (Included with GHC) X11 http://hackage.haskell.org/cgi-bin/hackage-scripts/package/X11-1.2.2 (Included with GHC) X11-extras: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/X11-extras-0.2 And then build with Cabal: runhaskell Setup.lhs configure --prefix=/home/dons runhaskell Setup.lhs build runhaskell Setup.lhs install --user ------------------------------------------------------------------------ Running xmonad: Add: exec /home/dons/bin/xmonad to the last line of your .xsession or .xinitrc file. ------------------------------------------------------------------------ Other useful programs: For a program dispatch menu: dmenu http://www.suckless.org/download/ or gmrun (in your package system) For custom status bars: dzen http://gotmor.googlepages.com/dzen A nicer xterm replacment, that supports resizing better: urxvt http://software.schmorp.de/pkg/rxvt-unicode.html Authors: Spencer Janssen Don Stewart Jason Creighton
Description
The core of xmonad, a small but functional ICCCM-compliant tiling window manager
Readme
BSD-3-Clause
6.3 MiB
Languages
Haskell
97.6%
Nix
2%
Shell
0.4%