BUGS
====

Some BUGS:

    - On some (currently not reproducable) situations the keyboard focus is not
      in the same client as the one that is marked to be focused. This happens
      with some applications (e.g. sakura) on some machines. It also happens
      when switching the monitor focus quickly.
    - keyboard focus stays in window, if cursor is over it and
      herbstluftwm-focus goes away
    - don't always re-layout all if only one thing changes (e.g. border_color)
    - don't reset border width on each layouting
    - don't call monitor_apply_layout() if only the focus changes, e.g. on an
      enternotify event.
    - herbstclient: add timeout if server does not respond
    - herbstclient: errorstatus2string2stderr
    - add function to put window into tag (and use it in manage, merge_tag,
      move)
    - the default panel.sh spawns too many shells and does not clean them up
      properly at quit. you should do something like killall panel.sh when
      logging out (this is only a workaround!).
    - raise_on_click doesn't work with gnome-settings-daemon
    - window_focus is called twice when switching desktops (before mapping
      windows and after mapping them). TODO: only do it once.
    - also update window title if *only* the _NET_WM_NAME changes
    - make focus_window(client->window, true, false); work
    - do not flicker if there are three monitors and the tag of the topmost is
      swapped with the tag of the most bottom monitor (flickering can be
      noticed at the middle monitor)
    - Fullscreen clients must not be above the panel of another monitor which
      actually is above that fullscreen window in the stacking order. (But it
      currently is, because we can't distinguish which monitor a panel is
      associated to or if a window is a panel at all). There is no clean
      solution yet, because we can't easily find out, which monitor a panel is
      associated to. One could automatically detect the monitor association of
      a panel by a panel's and a monitor's geometry, but those heuristics
      mostly fail if two monitors overlap heavily (which is the *only* case in
      which this bug is triggered).

      Steps to reproduce: Create to monitors which overlap (Use add_monitor,
      move_monitor and raise_monitor). Focus a fullscreen client on the lower
      monitor and focus a non-fullscreen client on the higher monitor and
      select the higher monitor. Effect: the non-fullscreen client on the
      higher monitor should be above the fullscreen window but is displayed
      below the fullscreen window on the lower monitor.
    - If gnome-terminal is mapped (e.g. by switching the tag) it sends a
      ConfigureRequest which is rejected.  This causes flickering because the
      terminal content is drawn with the requested size first and again with
      the actual size. This bug only occurs at certain widths of
      gnome-terminal.
    - Do not flicker when removing a frame. Currently first the children frame
      is destroyed (especially hidden) and then the parent frame is shown
      again. The fix is to first show the parent frame (above of the children
      frames) and then hide the children.

Planned features:

    - dump/load floating values
    - set range for some integer-setting-values
    - (optional) move cursor after focus change
    - optional focus selection after frame_split
    - focus_follows_mouse based on frames/monitors
    - mouse bindings in tiling mode
    - better xcompmgr support
    - keybind with keycodes
    - chain keys/key chains/...
    - lastfocused{window,frame,tag} - commands
    - own X-Properties to indicate window state (fullscreen, pseudotile,
      float,...)
    - alias commands: alias shortcmd = cmd default arg, alias shortcmd --delete
    - provide multiple mechanisms to split clients to child frames:
         * 100:0 (and vice versa)
         * 50:50
         * clients before focus to the first child, others to the second
    - automatic split command which splits along the longest side
    - catchall for frames (this frame will catch all new clients)
    - try to find a empty frame for new clients
    - (currently unknown) handling of WM_TRANSIENT_FOR
    - move clients in pseudotile mode
    - make it configurable if clients are allowed to change their own
      floating size or even position
    - undo command which undos the last layout changes on a certain tag
    - load frame without changing it's properties to just change the
      child-frames. Something like: (split unchanged $child1 child2)
    - a more verbose tag_status: list_tags with one line per tag
    - cycle through all "invisible" (or non-focused) clients
    - setting to make focus_follows_mouse not apply for the empty area of
      pseudotiled frames
    - consequence: stack={top,underfocus,bottom} and setting to set the initial
      stacking position on manage or after moving a client to a tag
    - maybe shift_nth: like focus_nth except that it swaps those two windows
      inside the current frame

