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