Changes from upstream since 4.11
• use https instead of git/http, update contact information, add GPG key
• docs/hacking-howto: fix old cfgparse.y reference to config_parser.c
• docs/ipc: added link to i3ipcpp (C++ library)
• docs/userguide: clarify no_focus documentation
• docs/userguide: add documentation for binding modes
• docs/userguide: fix rendering of __focused__
• docs/userguide: improve placement of explicit IDs for headings
• docs/userguide: make rendering of key bindings more consistent
• docs/userguide: clarify quoting of “exec” commands
• man/i3-nagbar: fix example invocation
• man/i3: add “floating window” to terminology
• i3-sensible-*: quote variables correctly
• i3-sensible-editor: add neovim
• i3-sensible-terminal: add termit, st
• i3bar: use cairo for all drawing operations
• i3bar: support per-statusblock border and background colors
• i3bar: support different bar background colors depending on whether the bar
is on the focused output or not
• i3bar: multiple tray_output directives on the same bar are now supported
• i3bar: support disabling the modifier by specifying “modifier none”
• use cairo for all drawing operations
• fix a number of memory leaks, thanks to AddressSanitizer
• no_focus is now suppressed for the first window of a workspace
• “workspace next/prev” now looks for numbered workspaces after reaching the
last workspace (it used to incorrectly only look at named workspaces)
• multiple marks can now be set on a single window (but a mark can still only
be present on one window at a time)
• the “unmark” command now supports criteria
• the “con_id” criterion now supports the special value __focused__
• the “workspace” command now supports the --no-auto-back-and-forth parameter
• the “move window to workspace” command now supports the
--no-auto-back-and-forth parameter
• the “resize grow|shrink width|height” command now works for a nested split
in the same direction
• support _NET_WM_USER_TIME’s special 0 value, indicating that a window
should not be focused
• use 32-bit visual by default if available. This reduces graphical glitches
when using transparency (which is still not officially supported)
• the “move position center” command now supports criteria
• specifying invalid match criteria now results in an error instead of
blindly applying the operation to the currently focused window
• allow mouse bindings to run on the root window
• support matching _NET_WM_WINDOW_TYPE_NOTIFICATION in criteria
• all criteria are now matched, even when con_id or con_mark are given (used
to be a special case)
• allow the “id” criterion to be specified in any base recognized by
strtol(), not only base 10
• non-true color displays are now supported again (e.g. the Raspberry Pi)
• the “split” command now has a “toggle” option
• the additional color class “decoration_border” was added
• title_format is now stored on containers instead of windows, allowing the
use of title_format on split containers
• On OpenBSD, i3 now uses pledge(2)
• support _NET_WM_DESKTOP (for pager applications like gnome-panel)
• floating workspaces are no longer available (they were not supported for a
while now)
• floating windows now carry the I3_FLOATING_WINDOW atom so that tools like
compositors can be configured to match on floating windows
Bugfixes from upstream since 4.11
• i3bar: display short text only on the monitor(s) on which it is necessary
• i3bar: explicitly set cursor using libxcb-cursor if available
• i3bar: fix XEMBED messages
• i3-nagbar: explicitly set cursor using libxcb-cursor if available
• duplicated keybindings are now also detected when one uses bindcode but the
other(s) use(s) bindsym
• keymap fallback for servers without XKB (e.g. TightVNC) has been added
• using pango markup in mode names is now optional, fixing a regression in i3
v4.11 where modes which contained characters such as “<” would break.
• moving windows to a workspace by specifying a mark now works
• the root output is now used when any RandR request fails (for x2go)
• assignments are now marked as run before executing them, preventing endless
loops/crashes when assignments cause another assignment evaluation
• splitting/floating a dock container no longer crashes i3
• correctly compare modifier mask when identifying keybindings (fixes
bindings which use --release)
• no longer fail config validation when there is no newline at the end of
the config file
• scrollwheel buttons are now only grabbed when necessary, allowing the use
of “bindsym button*” or scrolling in windows without focusing them (in case
no “bindsym button*” is present)
• parse con_id in base 16 (affected FreeBSD only)
• fix crash when opening a large number of windows
• reject empty swallow definitions to avoid crashes
• don’t remove SubstructureRedirect event mask temporarily (fixes i3bar
stopping after system suspend)
• move urgent flag before killing the parent to avoid a crash
• correctly validate “kill” command to avoid crashing when “kill” is invoked
on workspace containers
• actually accept the documented “workspace” token as an alternative to “→”
in assign statements
• remove _NET_WM_STATE on withdrawn windows to comply with the spec
• the “border” command now uses logical pixels (relevant for hi-dpi displays)
• “tray_output primary” does not properly fall back and hence was removed
from the default config again
• correctly determine focused workspace when moving workspace to output
• revert to default binding mode before reloading the config file
• correctly interpret _MOTIF_WM_HINTS (endianness-dependent)
Changes to i3 mentioned in the release notes:
Keyboard binding handling has been made more correct, for details see:
bf3cd41b5d
Changes:
* docs/debugging: provide instructions on how to debug i3bar
* docs/debugging: added a note about sensitive data
* docs/userguide: add a note to both "exec"s about semicolon and comma
* docs/userguide: quoted strings need to be used, escaping isn't possible
* docs/userguide: make syntax of syntax descriptions consistent
* docs/userguide: recommend "exec exec" for correct signal handling
* docs/userguide: explain i3-config-wizard's behavior
* i3-nagbar: open on the primary screen
* i3-config-wizard: respect XDG config directories
* i3-input: position i3-input at window with input focus
* i3bar: use a reasonable default sep_block_width if a separator_symbol is given
* i3bar: add binding mode indicator
* i3bar: add bindsym command (deprecates wheel_{up,down}_cmd)
* i3bar: make tray padding configurable
* makefiles: respect EXEC_PREFIX and PKG_CONFIG
* added a --toggle switch to mark: "mark [--toggle] <mark>"
* added "focus_on_window_activation" directive
* added "no_focus" directive
* added "move [container|window] [to] mark <str>" command
* added "move [window|container] [to] position mouse|cursor|pointer" command
* added "title_format" command
* added "resize set [width] [height]" command
* added "sticky" command (for floating containers)
* added "workspace" criterion
* added "window_type" criterion
* make center coordinates relative to current workspace
* draw marks in window decoration (configure with show_marks)
* only mark a window if only one window is matched
* make floating window mouse handling consistent with tiled windows
* add a --border flag to enable mouse binds to trigger on border click
* set the _NET_WM_STATE_HIDDEN atom on windows that are currently not visible
due to being in the non-focused tab of a stacked or tabbed container
* ignore InputHint when not in WM_HINTS
* display which config is used in i3 --moreversion
* support config file line continuation
* use WM_SIZE_HINTS when present to set the geometry of floating windows
* add "tray_output primary" to the default config
* use libxkbcommon for translating keysyms, support all XKB groups
* support special value "__focused__" in criteria
* support _NET_WM_VISIBLE_NAME
* make sure borders are never counted as adjacent to the edge for floating
containers
* support moving dock clients to another output
* let "focus" report success depending on whether a window was matched
* handle _NET_WM_STATE_STICKY (for floating containers)
* make "debuglog on" command persist over restarts
* randr: use root window in case of no randr outputs
* set proper WM_CLASS on frame windows
Bugfixes:
* i3bar: only detect clicks within the statusline width
* i3bar: fix flickering shortened status bar on other output(s)
* i3bar: send custom-defined command upon click on the non-statusline part of
i3bar even if workspace_buttons is set to "no".
* i3-config-wizard: Make window size and click coordinates dependent on font
* i3-save-tree: retain "rect" for floating cons
* move urgency hint when moving container
* fix percents when attaching a window to a ws creates a new split con
* cope with non-null-terminated x class properties
* get workspace name when renaming current workspace
* allow single-child non-default layout cons to be moved between outputs
* allow --whole-window right after 'bindsym' within binding modes
* remove windows from the save set when unmapping (fixes problems with e.g.
owncloud when restarting i3)
* serialize con_id with %p in run_binding()
* initialize workspace rect to the output's upon creation
* mkdirp: do not throw an error if directory exists
* grab all buttons when managing a window to also allow 'bindsym
--whole-window button4 ...' to work correctly
* properly clear the urgency hint when set by i3
* layout restore: load floating containers correctly
* layout restore: remove remaining criteria when swallowing window
* layout restore: When appending a layout containing a marked container, make
sure that any other containers with the same mark are unmarked during
insertion of the new container.
* use the EWMH support window rather than the root window as an input
focus fallback
* use the focused container to determine the target window_mode when using
floating mode_toggle
Problems found with existing distfiles:
distfiles/fvwm-1.24r.tar.gz
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
Release notes:
Bugfixes:
* serialize con_id with %p in run_binding() (For FreeBSD)
* ignore InputHint when not in WM_HINTS (fixes e.g. mupdf focus)
* disable physically disconnect RandR outputs
* initialize workspace rect to the output's upon creation
* userguide: quoted strings need to be used, escaping isn’t possible
* mkdirp: do not throw an error if directory exists (fixes layout loss for
in-place restarts)
* i3bar: fix freeing static strings
Changes mentioned in the release notes:
* Cope with non-null-terminated x class properties.
* Get workspace name when renaming current workspace (fixes crash).
* Use a reasonable default sep_block_width if a separator_symbol is given.
* Remove windows from the save set when unmapping.
Remove do-install and use post-install for the files not
installed by the install from the package.
Changelog:
Changes in i3 v4.10.1
* i3bar: cut long statuslines from the left
* i3bar: add support for the short_text property
* i3-sensible-terminal: launch i3-nagbar when no terminal is found
* i3-config-wizard: switch modifier on key up/down
* docs/layout-saving: added a troubleshooting section
* docs: degender all the terms
* Revert "Workspace command number selection"
* don't parse blocks as markup by default
* Allow escaping backslashes in commands.
* switch default font from "DejaVu Sans Mono 8" to "monospace 8", which is
typically a synonym, except for users who prefer a different font.
* When renaming a workspace, look for assignments and move the renamed
workspace to the appropriate output.
* i3-save-tree: make --workspace optional by defaulting to the focused
workspace
* Allow nop command without argument
Bugfixes
* i3bar: buffer the statusline to avoid flickering
* i3bar: fix click events for workspace buttons with long statusline
* i3bar: set correct initial position when reconfiguring
* i3bar: reconfigure strut partial on reload
* i3-nagbar: fix sizes/positioning on hi-dpi displays
* i3-config-wizard: fix sizes/positioning on hi-dpi displays
* i3-input: fix sizes/positioning on hi-dpi displays
* Fix scrolling in window decoration with hidden cursor.
* workspace rename focus mismatch
* Don't overwrite border width when already set (placeholders).
* fix a segfault during config file validation
* Restore placeholder windows after restarting.
* Don't focus placeholder windows.
Changes in v4.9.1
Bugfixes
* i3bar: fix incorrect y-offset for text
* fix key bindings on big-endian platforms
* fix key bindings using Mode_switch
* fix keyboard layout change detection
* revert "Handle WM_CHANGE_STATE requests for iconic state" (fixes problems
with application windows disappearing, like SDL-based games when switching
workspaces)
* insert id-based match at HEAD, not TAIL (fixes window swallowing not
working when the criteria match the placeholder window)
* improve error messages on failing commands
* replace ~ in filepath when calling append_layout
* properly error out when the layout file cannot be read
Changes in v4.9
* docs/ipc: use an actual event type
* docs/debugging: use logs.i3wm.org
* docs/testsuite: add hint to use xvfb-run
* testcases: use Xephyr instead of XDummy
* i3-sensible-*: use command -v (built-in) instead of which(1)
* i3.xsession.desktop: set DesktopNames (which gdm uses)
* i3-save-tree: interpret commandline parameters as utf-8
* i3-save-tree: add 'mark' as allowed key to i3-save-tree output
* i3bar-protocol: ensure align = left is the default
* i3bar: implement custom mouse wheel commands
* i3bar: improve error message when a full_text property is missing
* i3bar: respect the urgency flag on status blocks
* i3bar: inset the urgent background of a status block for consistency with
workspace buttons
* i3bar: suspend the child when bars are fully obscured
* i3bar: use Pango markup
* ipc: implement the window::close event
* ipc: implement the window::move event
* ipc: implement the window::floating event
* ipc: implement the window::urgent event
* ipc: set ws reply "num" member to -1 when named
* ipc: add deco_rect property to con in ipc response
* ipc: include workspace con in workspace event
* ewmh: implement property _NET_NUMBER_OF_DESKTOPS
* ewmh: implement property _NET_DESKTOP_VIEWPORT
* ewmh: implement property _NET_DESKTOP_NAMES
* ewmh: handle _NET_CURRENT_DESKTOP requests
* ewmh: handle _NET_CLOSE_WINDOW requests
* ewmh: handle _NET_WM_MOVERESIZE requests
* implement mouse bindings (e.g. bindsym button3 kill)
* add mouse binding --whole-window flag
* add mouse binding --release flag
* switch to xcb-xkb and libxkbcommon, removing our last direct Xlib dep
* make "move [direction]" work with criteria
* make "move <window|container> to <absolute> position" work with criteria
* "workspace <n>" and "move to workspace <n>" now look for a workspace
starting with number <n> (unless there is a workspace exactly matching that
number). I.e., "workspace 4" will go to a workspace called ": www" unless
you have a workspace "4"
* "focus <direction>" now focuses floating containers when there are no
tiling containers on the destination output
* take the motif border into account when calculating floating window
geometry
* revert "Disable pointer warps when focus_follows_mouse is disabled" as it
was unexpected by a number of users. Sorry for the back-and-forth
* handle WM_CLASS changes
* raise floating windows on "focus <direction>"
* align lower line of bar decoration to border width
* parse tray_output as a word, not string
* allow to validate the config file without X
* do not resend focus on click, fixes compatibility problems with some wine
or mono apps (e.g. Office 2010)
* don't draw borders wider than actual width
* prevent workspace change during global fullscreen
* extend the fullscreen command (fullscreen <enable|toggle|disable> [global])
* fix start_application() doc about which shell is used
Bugfixes
* i3-dmenu-desktop: quote path
* i3bar: fix a double free when changing color configuration
* i3bar: render bars after the first chunk of JSON
* i3bar: add a sync call to confirm reparents before exiting (fixes tray
restart issues)
* i3bar: correctly calculate clicks on i3bar status blocks
* i3bar: make click events on status blocks work with 'workspace_buttons no'
* retina support: convert logical to physical pixels for default_border_width
* retina support: treat everything up to 120 dpi as 96 dpi
* don't set input focus if not accepted (fixes problems with xfce4-notifyd)
* don't focus unmapped container on manage
* create the directory for storing the restart state
* avoid changing border width when changing containers from tiling to
floating
* layout saving: properly restore workspace containers
* rerender the decoration when the container requires a pixmap and doesn't
have one
* don't set focus in con_set_layout() on invisible workspaces
* properly handle windows unsetting WM_TRANSIENT_FOR
* use the command parser to properly extract workspace names
* copy binding before run (fixes reloads)
* revert "Bugfix: Set input focus with last timestamp"
* render floating windows during global fullscreen
* actually parse client.placeholder
Important changes since 4.7:
- layout saving / restoring
- proper handling of DPI
- improve compatibility with other softwares (java-based, or external
pagers)
- fix several memory leaks
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.
Changes since 4.6
v 4.7.2
• install i3-with-shmlog.xsession.desktop to the correct location
• OpenBSD currently lacks posix_fallocate()
v 4.7.1
• docs/debugging: explain how to enable logging on the fly
• docs/debugging: small cleanups (versions, bzip2)
• add i3-with-shmlog.xsession.desktop
• only LOG() the DPI when it changes, DLOG() it otherwise
• make “move <direction>” properly send workspace focus event
• i3bar: set mapped flag on trayclient creation
• i3bar: don’t show EOF status line error in favor of exit code
v 4.7.0
• docs/userguide: clarify variable parsing
• docs/userguide: clarify urgent_workspace
• docs/userguide: add proper quoting for rename sample command
• docs/userguide: clarify multiple criteria
• docs/userguide: userguide: explain the difference between comma and semicolon for command chaining
• docs/hacking-howto: update to reflect parser changes
• man/i3-dump-log: document -f
• switch from libXcursor to xcb-util-cursor
• Respect workspace numbers when looking for a free workspace name
• Revert "raise fullscreen windows on top of all other X11 windows"
• i3bar: Create pixmaps using the real bar height, rather than screen height
• Add scratchpad bindings to the default config
• Close all children when closing a workspace
• i3bar: Add new bar.binding_mode_indicator configuration
• Improve error message when $XDG_RUNTIME_DIR is not writable
• libi3/font: Draw the text at the expected place
• libi3/font: Set DPI for the pango context
• Add ability to escape out of a mouse-resize operation
• Do not resize/reposition floating containers when moving them to scratchpad
• i3-nagbar: Set button inner-width to the width of the label
• Assigned windows open urgent when not visible
• i3bar: Only configure tray on own outputs
• Command 'move <direction>' moves across outputs
• i3bar: Handle DestroyNotify events
• i3bar: Realign tray clients on map/unmap notify
• i3bar: Group child processes for signalling
• i3bar: Print error message when status_command fails
• Remove references to PATH_MAX macro for GNU/Hurd
• update root geometry on output changes for “fullscreen global”
• don’t flatten tabbed/stacked containers
• Fix handling of new windows with WM_STATE_FULLSCREEN
• correctly recognize assigned windows as urgent
• Fix keyboard and mouse resize in nested containers
• Reply to _NET_REQUEST_FRAME_EXTENTS correctly
• Fix command parser: resizing tiling windows
• Fix output retrieval for floating cons
• Use _PATH_BSHELL to ensure using a bourne shell
• Instead of crashing, return DRAG_ABORT on UnmapNotify from drag_pointer
• Remove-child callback skips output content cons
• ignore _NET_ACTIVE_WINDOW for scratchpad windows
Also, install a few more scripts and their manual pages, and put the correct
Perl interpreter in all Perl scripts.
Changes since version 4.4:
• docs/hacking-howto: refer people to cr.i3wm.org
• docs/ipc: Adds Go IPC lib to the docs.
• docs/userguide: remove obsolete sentence about client.background
• docs/userguide: be explicit about assignment processing order
• docs/userguide: be more clear about the resize command arguments
• docs/userguide: fix typo: s/11x/11px/
• i3-dmenu-desktop: don’t add “geany” if “Geany” is already present
• i3-dmenu-desktop: strip newlines from dmenu ≥ 4.4
• i3-dmenu-desktop: skip files with broken utf8 but warn about it
• i3-dmenu-desktop: skip broken files (no/empty Exec=) but warn about them
• i3-dmenu-desktop: List filenames of .desktop files
• i3-dmenu-desktop: remove %i from commandline
• i3-nagbar: Work around terminals not supporting -e with quoted arguments
• i3-nagbar: use the same font as configured for i3
• i3bar: set _NET_SYSTEM_TRAY_COLORS for symbolic icons (gtk3+)
• i3bar: don’t use X11 borders to avoid overlapping in hide mode
• i3bar: separator color via config; separator width and on/off via ipc
• i3bar: Allow min_width of a block in i3bar to be a string
• i3-msg: parse command replies and display errors nicely if there were
errors
• Draw 1px tab separators left/right instead of 2px on the right only
• Render tree before destroying X11 containers upon unmap
• scratchpad show: move visible scratchpad window from another workspace to
focused workspace instead of doing nothing
• ignore MotionNotify events generated while warping the pointer
• Allow X11 servers which do not support the XKB extension.
• remove the urgency indicator when a window is closed
• wrap when moving containers to outputs with direction
• scratchpad_show: focus unfocused scratchpad window
• Split workspace instead of changing orientation
• scratchpad: always auto center on 'scratchpad show' if window hasn't been
repositioned by the user
• Add a new IPC event for changes on windows.
• config: accept “smart” as popup_during_fullscreen parameter
• Add support for _NET_WM_STATE_DEMANDS_ATTENTION.
• Obey WM_SIZE_HINTS's resize increments in floating mode
• Do not move focus if a container is moved across outputs
• docs/userguide: mention forgotten layout splitv/splith
• docs/multi-monitor: nVidia ≥ 302.17 works just fine
• docs/wsbar: update (we have i3bar now, i3-wsbar is just an example)
• docs/testsuite: Document fixes and workarounds for test failures
• man/i3-msg.man: updated man page to include all options
• lib/i3test: clarify how to identify open_window() windows in i3 commands
• Use a saner sanity check for floating_reposition
• tabbed: floor(), put extra pixels into the last tab
• raise fullscreen windows on top of all other X11 windows
• Draw indicator border only for split layouts
• re-shuffle struct members to save a bit of memory
• Add 'NoDisplay=true' to i3.application.desktop
• Store aspect_ratio instead of weird proportional_{width,height}
• Implement shmlog command
• Implement debuglog command
• Implement unmark command
• actively delete _NET_WORKAREA on startup
• Handle the _NET_REQUEST_FRAME_EXTENTS ClientMessage (java compat)
• i3bar: add click events
• i3bar: fix -b parameter, fix usage description
• i3bar: restore compatibility with libyajl version 1
• i3bar: unhide hidden i3bar when mode is active
• i3bar: fix font display height in i3bar
• i3bar: introduced i3 command for changing the hidden state and mode
• i3bar: fix wrong placement of i3bar when connecting/disconnecting outputs
• i3bar: draw workspace buttons at x=0 instead of x=1
• i3-nagbar: take our terminal execution kludge to the next level
• i3-nagbar: Bugfix: -m requires an argument (crashes if none specified)
• i3-dmenu-desktop: run commands when they don’t match a .desktop file
(e.g. enter “i3 layout stacking”)
• i3-dmenu-desktop: honor Path= key
• contrib/dump-asy.pl: Fix $ and & in window titles
• contrib/dump-asy.pl: Display nicer double-quotes
• contrib/gtk-tree-watch.pl: Remove bogus default socket path
• Ignore ConfigureRequests for scratchpad windows
• Correctly parse `move ... workspace *_on_output`
• i3bar: Set separator color properly when drawing
• Properly parse commands like “move workspace torrent”
• Handle nested transient popups properly
• Fix decoration rect size for windows without border
• parse outputs as "word", not "string", to ignore trailing whitespace
• fix crash when disabling output without any windows
• scratchpad: fix crash when moving last window of an invisible workspace
• fix coordinates of scratchpad windows on output changes
• call scratchpad_show() when focusing scratchpad windows via criteria
• fix continuous resize bug in floating mode, e.g. with xbmc
• fix “overlapping” --release key bindings
• fix IPC messages writes with low buffer sizes
• unregister as window manager before restarting (fixes a race condition)
• Fix bind[code|sym] --release
• remove superfluous #include <xcb/xcb_atom.h>
• Makefile: Repect AR environment variable
• i3-input: restore input focus on exit()
• Also draw right tab border for split containers
• Fix scrolling on a tabbed titlebar which contains split cons
• Correctly close floating windows
• handle MapRequests sent between i3 registering as a wm and handling events
• i3bar: fake DestroyNotify and send MANAGER ClientMessages to fix tray restarts
• ipc: use correct workspace in workspace change event
• fix floating window size with hide_edge_borders
• Fix parsing of comments in the config file
• Fix error messages for the debug log
• shm_unlink the correct file when handling errors
• Fix shm logging on FreeBSD
• Fix restarting with 32 bit depth windows
• Fix scratchpad_show on non-scratchpad windows
• i3bar: mark IPC fd CLOEXEC
• fix crash when not having tray_output configured
• make sure that resize will take place even if pixel is smaller
than size increments.
• render_con: fix height rounding in aspect ratio computation
• fix problem when moving fullscreen window to scratchpad
• Unmap windows before reparenting them to the root window
(fixes Mathematica)
• update parent urgency hint if a child is removed.
• fix bus error on OpenBSD/sparc64
• fix focus handling in 'floating disable' on non-visible windows
• ignore spaces in front of default workspace name
• call i3-nagbar correctly for configfiles without the font directive
• resize and center a scratchpad even when a criteria is used.
a) refer 'perl' in their Makefile, or
b) have a directory name of p5-*, or
c) have any dependency on any p5-* package
Like last time, where this caused no complaints.
This package contains the i3 window manager, a small tiling window
manager aimed at providing helpful modern features like Xinerama
multi-screen support while still being completely keyboard
controlled. It is mainly aimed at engineers and people who
love to get their work done without switching between keyboard and
mouse.