herbstluftwm NEWS -- History of user-visible changes
----------------------------------------------------

Release 0.7.1 on 2018-08-09
---------------------------

    * Many bugfixes:
      - Fix Xlib race condition
      - Fix _NET_DESKTOP_VIEWPORT
      - etc
    * New setting: verbose
    * Fix the initial floating position of new windows by taking their
      position relative to the nearest hlwm monitor.
    * new example scripts:

      - float-maximize.sh

Release 0.7.0 on 2016-02-04
---------------------------

    * Handle EWMH request _NET_WM_MOVERESIZE more conform
    * Make tag objects accessible by their index
    * Automatically unmanage desktop windows (e.g. xfdesktop), and force them
      to stay below all other windows.
    * new command: close_and_remove
    * new herbstclient flags: --last-arg --print0
    * new example scripts:

      - maximize.sh
      - toggledualhead.sh
      - windowmenu.sh
      - wselect.sh (new subcommand "select_here")

Release 0.6.2 on 2014-03-27
---------------------------
Two bug fixes:

    * A crash has been fixed. It could be triggered by changing a
      non-callback settings attribute e.g. settings.raise_on_focus
    * The dialog re-mapping-problem has been fixed. So now, applications can
      show the same dialogs again after the dialog has been closed (e.g. the
      connection window of qjackctl).


Release 0.6.1 on 2014-03-25
---------------------------

    * directional shift of floating windows
    * fix crash of directional focus
    * document theme.minimal

Release 0.6.0 on 2014-03-19
---------------------------

    * Add window decorations, configurable via the theme-object
    * The tag attributes curframe_windex and curframe_wcount have been removed,
      they are replaced by the more general attributes frames.focus.windex
      frames.focus.wcount.
    * new example script: scratchpad.sh
    * if swap_monitors_to_get_tag is set to 0, then focus the other monitor if
      the desired tag is shown on another monitor instead of doing nothing
    * new split mode: auto
    * new attribute monitors.count indicating the number of monitors
    * new settings object with an attribute for each setting.
    * directional focus for floating clients, i.e. switch between floating
      windows via focus left|right|up|down. It also raises the freshly focused
      window.
    * directional monitor focusing
    * new detect_monitors flags: --list -l --no-disjoin while detect_monitors
      does disjoin_rects on the detected monitors per default.
    * For each client a keymask can be given. A keymask is a regular
      expression, that is matched against the string representation of a
      keybinding. If it matches, the keybinding is enabled for this client,
      otherwise not. The default is an empty keymask ("") that matches all
      keybindings, so no bindings are masked out by default. A keymask is a
      client attribute, and can be set by a client rule.
    * add completion to the mousebind command
    * add mouse function call to call commands on mouse button press
    * add setting update_dragged_clients
    * new rule consequence: monitor
    * new command: try
    * new command: silent

Release 0.5.3 on 2013-12-24
---------------------------

    * make window floating faster, by dropping old motion events
    * new rule flag: prepend
    * close now accepts an arbitrary window id as a parameter
    * Also allow decimal window ids for commands accepting a window id, like
      raise, jump, close
    * new split modes, i.e. parameters to the split command: bottom, right
      (indicating the relative location of the new empty frame)
    * new split mode: explode
    * make fraction parameter for the split command optional
    * respect size hints in floating and tiling mode
    * new setting: frame_transparent_width
    * frame_bg_transparent: instead of copying the pixmap from the root window
      achieve transparency by cutting out a rectangle from the center of frames
      using the Shape Extension of X.
    * Make respecting of sizehints configurable for tiling and floating mode
      via the client properties sizehints_tiling and sizehints_floating
    * new setting: pseudotile_center_threshold
    * new command: cycle_frame
    * new object attribute type: color

Release 0.5.2 on 2013-06-23
---------------------------

Changes:

    * cycle_all now raises the focused client.
    * focus a client on its tag after moving it there (by shift_to_monitor or move)
    * disallow focus_follows_mouse if the focus change hides another window
      (e.g. an pseudotiled window in the max layout). In that case an extra
      click is required to change the focus.
    * new command complete_shell for posix shell specific completion
    * add completion for the rule command
    * add completion for keycombinations in keybind
    * add completion for setenv, getenv and unsetenv
    * the hook consequence now also tells the window id that triggerd the rule
    * new command: echo
    * new commands: true false
    * rule labels: rules can be given a label with the 'label' property. The
      label can be printed to stdout using the 'printlabel' flag to the rule
      command. Unrule command accepts a label to remove all rules with that
      label.
    * new command: list_rules
    * allow true/false as arguments to commands accepting boolean values. This
      affects the commands: floating, fullscreen, pseudotile and rule.
    * new command: new_attr, remove_attr, get_attr, set_attr
    * new command: substitute, sprintf, mktemp

Release 0.5.1 on 2013-01-05
---------------------------

Changes:

    * new command: use_previous
    * Makefile: new target: install-nodoc -- install without man/html-docs
    * fixup of the + flag in tag_status
    * fixup of the example script q3terminal.sh
    * announce it if the tag changes due to remove_monitor

Release 0.5.0 on 2012-12-31
---------------------------
Incompatible changes:

    * The setting focus_follows_shift has been removed. The behaviour now is
      set like it were set to 1; the focus always follows the shift now.

Changes:

    * new settings: wmname, mouse_recenter_gap
    * hook togglehidepanel: the default panel.sh also accepts the parameters
      "current" or a certain monitor index
    * align captions of the tree output (commands: layout, stack) better by
      inserting a space in front of every caption
    * let new clients and monitors (and other items that are stacked) appear on
      top of the stacking order
    * chaining of commands now is possible with the new command: chain
    * new commands: and or negate
    * tag switch locking for monitors. The new lock_tag and unlock_tag commands
      control, whether tag switching operations for a monitor are allowed.
    * set the urgent flag on _NET_WM_STATE_DEMANDS_ATTENTION
    * clear the urgent flag on window focus
    * new command: list_padding
    * new commands: getenv/setenv/unsetenv
    * new rule: ewmhnotify
    * floating, fullscreen, pseudotile: default to toggle if no argument is
      given
    * add error messages for herbstclient
    * new commands: focus_edge, shift_edge
    * new command: shift_to_monitor
    * optional names for monitors, new command rename_monitor
    * new consequence: hook
    * new example script: q3terminal.sh which provides a q3-like terminal

Release: 0.4.1 on 2012-08-30
----------------------------

This fixes some build system issues:

    * Separate CFLAGS and CPPFLAGS
    * Add patch level to the version number
    * Only use __MACH__ if really needed
    * Honor CPPFLAGS

Release: 0.4 on 2012-08-18
--------------------------

Changes that require user interaction on upgrade:

    * the setting window_gap is now called frame_gap

Other changes:

    * new setting window_gap which controls the gap between windows within one
      frame
    * new setting: frame_padding
    * new command: close_or_remove
    * new flags '-' and '%' for tag_status for multi monitor handling
    * toggle default panel on hook togglehidepanel
    * new setting: window_border_urgent_color
    * new command: set_monitors
    * new command: disjoin_rects
    * new command: jumpto
    * use clock_get_time on systems with a mach kernel (typically Mac OS X).
      This lets herbstluftwm run on Mac systems again.
    * fix many memory leaks.
    * new command line flag --skip-visible for use_index and move_index
    * new command: detect_monitors, to detect Xinerama monitors automatically
    * new ewmh feature: react to _NET_WM_DESKTOP client messages
    * new command: rotate
    * new setting: auto_detect_monitors
    * only one Makefile for herbstluftwm and herbstclient. The herbstclient
      binary now is put in the main directory.
    * new settings: smart_frame_surroundings and smart_window_surroundings
    * new settings: window_border_inner_color and window_border_inner_width
    * new settings: frame_border_inner_color and frame_border_inner_width
    * new option --skip-invisible for cycle_all
    * cycle_layout now offers to cycle through a custom list of layouts
    * add completion for +1 and -1 to many commands: cycle, cycle_all,
      cycle_monitor, cycle_layout, split and use_index
    * start system wide autostart file if there is no working user defined one
    * clients are restored (i.e. managed) from _NET_CLIENT_LIST even if they
      are not visible
    * do proper window and monitor stacking, this also introduces:

      - new command: raise_monitor
      - new setting: raise_on_focus_temporarily
      - new command: stack
    * new command: focus_nth
    * new command: bring
    * respect the WM_TAKE_FOCUS atom, this fixes keyboard focus issues with
      many (mostly Java/swing based) applications
    * new rule consequences: switchtag, ewmhrequests

Release 0.3 on 2012-04-12
-------------------------

Changes:

    * new hook: window_title_changed
    * hook focus_changed now also reports the window title
    * the setting ignore_class is removed, because this also can be done by
      rules. You can replace a line like 'set ignore_class "$foo"' in your
      autostart by 'rule class~"$foo" manage=off'
    * remember the value when toggling a setting and restore it on next toggle
    * new command: cycle_value
    * new commands: use_index, move_index
    * recursive command completion for keybind
    * new rule condition: title
    * in the default autostart:

        - new green and gray color theme
        - use/move was replaced by use_index/move_index
    * proper signal handling: map all windows on SIGINT,SIGQUIT,SIGTERM
    * respect the initial fullscreen state of new clients on startup (as it is
      set in the _NET_WM_STATE property)
    * monitor locking mechanism, i.e. a new setting: monitors_locked with its
      accessors lock and unlock and the command line argument -l and --locked

Release 0.2 on 2012-01-25
-------------------------

Small bugfixes and major features:

    * new command: monitor_rect
    * let panel.sh fork less often
    * set clients to fullscreen
    * new client layouting algorithm: grid layout
    * new command argument: keyunbind --all
    * new command: pseudotile (tile client but keep its floating size)
    * new command: list_keybinds
    * new hook: focus_changed
    * client rules with:

        - condition: class
        - condition: instance
        - condition: pid
        - condition: maxage
        - condition: windowtype
        - condition: windowrole
        - operator: = (equals)
        - operator: ~ (regex-matching)
        - flag: once
        - flag: not (negation of conditions)
        - consequence: tag
        - consequence: focus
        - consequence: index (where to insert a new client in layout tree)
        - consequence: pseudotile
        - consequence: fullscreen
        - consequence: manage (whether window will be managed)

    * basic ewmh features:

        - the following properties will be set:
            _NET_ACTIVE_WINDOW
            _NET_CLIENT_LIST
            _NET_CURRENT_DESKTOP
            _NET_DESKTOP_NAMES
            _NET_NUMBER_OF_DESKTOPS
            _NET_SUPPORTING_WM_CHECK
            _NET_WM_DESKTOP
            _NET_WM_STATE: fullscreen

        - the following client messages are handled:
            _NET_ACTIVE_WINDOW
            _NET_CURRENT_DESKTOP
            _NET_WM_STATE: fullscreen


Release 0.1 on 2011-10-02
-------------------------

Initial release. The tiling algorithm and many things are working. But some
things like EWMH or rules aren't implemented yet (See BUGS file for a list of
planned features). Currently implemented features are:

    * basic tiling concept
    * floating mode (with border snapping)
    * calling herbstluftwm internal commands with herbstclient
    * change keybindings/mousebindings at runtime
    * change/get settings (e.g. colors) at runtime
    * add/remove monitors at runtime
    * wmexec into other window manager
    * dump/load tiling layouts to/from a string
    * bash/zsh tab completion for herbstclient
    * hook system: let herbstclient listen for internal events
    * provide an easy way to build an own panel (using herbstclient hooks/commands)
      (there is also an example panel.sh)
    * give information about urgent state of clients

