
 ┌────────────────────────────┐
 │ Release notes for i3 v4.12 │
 └────────────────────────────┘

This is i3 v4.12. This version is considered stable. All users of i3 are
strongly encouraged to upgrade.

If cairo ≥ 1.14.4 is available, i3 and i3bar will use cairo for rendering
(instead of raw X11 drawing primitives). While this is currently optional,
having cairo ≥ 1.14.4 will be a hard requirement in future release.

This release contains a good number of detail improvements and fixes.

 ┌────────────────────────────┐
 │ Changes in i3 v4.12        │
 └────────────────────────────┘

  • 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                   │
 └────────────────────────────┘

  • 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)

 ┌────────────────────────────┐
 │ Thanks!                    │
 └────────────────────────────┘

Thanks for testing, bugfixes, discussions and everything I forgot go out to:

  Adaephon, Airblader, Alexis211, bendem, botovq, brianmillar, DavidMikeSimon,
  dcoppa, Florian Merkel, fmthoma, frederik, hwangcc23, jolange, Juuso
  Lapinlampi, kneitinger, lotheac, nicklan, norrland, pra85, romanblanco,
  sur5r, tbu-, tyll, wodny

-- Michael Stapelberg, 2016-03-06
