i3/RELEASE-NOTES-3.e

129 lines
7.2 KiB
Plaintext
Raw Normal View History

2010-03-30 07:13:51 -04:00
Release notes for i3 v3.ε
-----------------------------
This is the fifth version (3.ε, transcribed 3.e) of i3. It is considered
stable.
A really big change in this release is the support of RandR instead of
Xinerama. The Xinerama API is a subset of RandR and its limitations clearly
showed when you reconfigured outputs using xrandr(1) during runtime (it was
not designed to handle such changes). The implementation of RandR fixes some
long-standing bugs (workspaces were messed up when reconfiguring outputs)
and cleans up some code. Furthermore, you are now able to assign workspaces
to outputs (like LVDS1, VGA1, …) instead of the formerly used heuristics
like "the screen at position (x, y)" or "the second screen in the list".
Furthermore, another big change is the separation of debug output (the
so-called logfile): you now need to enable verbose output (parameter -V)
and you need to specify which (if any) debug output you want to see (parameter
-d <loglevels>). When starting without -V, i3 will only log errors. This is
what you usually want for a production system. When enabling verbose output,
you will see the names and window classes of new windows (useful for creating
assignments in your configuration file) and other useful messages. For an
explanation of the debuglevels, please see the "How to debug" document (for
the impatient: "-d all" gives you full output).
In 3.δ, a new parser/lexer was introduced and available using the -l option.
The old parser/lexer has been removed in the meantime, so in 3.ε, the "new"
parser/lexer is always used and you do not need the -l option anymore. To
make debugging errors in your configuration easier, the error messages have
been very much improved. Also, the parser tries to skip invalid lines (though
it may not always succeed, it usually works and does not crash i3).
Starting from version 3.ε, i3 obeys the XDG base directory specification,
meaning that you can now put your configuration file into ~/.config/i3/config,
which might be useful if you manage your ~/.config directory in some way (git,
…). The old configuration file path is still supported (there are no plans
to change this), but using ~/.config seems reasonable for clean setups.
You can disable the internal workspace bar in this release. Instead of the
internal bar, you can use dzen2 (or similar) in dock mode (-dock for dzen2,
but you need an svn revision). The sample implementation i3-wsbar takes
stdin, generates a combined bar (workspaces + stdin) and starts dzen2 on
your outputs as needed (does the right thing when you reconfigure your
monitors dynamically).
To accomplish the external workspace bar feature, the IPC interface has
seen much love: requests and replies now use JSON for serialization of
data structures and provide a nice and simple way to get information (like
the current workspaces or outputs) from i3 or send commands to it. You can
also subscribe to certain types of events (workspace or output changes).
See the AnyEvent::I3 module for a sample implementation of a library.
Thanks for this release go out to Merovius, badboy, xeen, Atsutane, Ciprian,
dirkson, Mirko, sur5r, artoj, Scytale, fallen, Thomas, Sasha, dothebart, msi
and all other people who reported bugs/made suggestions.
A complete list of changes follows:
* Implement RandR instead of Xinerama
* Obey the XDG Base Directory Specification for config file paths
* lexer/parser: proper error messages
* Add new options -V for verbose mode and -d <loglevel> for debug log levels
* Implement resize command for floating clients
* Include date of the last commit in version string
* Fixed cursor orientation when resizing
* Added focus_follows_mouse config option
* Feature: Cycle through workspaces
* Fix bindings using the cursor keys in default config
* added popup for handling SIGSEGV or SIGFPE
* Correctly exit when another window manager is already running
* Take into account the windows base_{width,height} when resizing
* Disable XKB instead of quitting with an error
* Make containers containing exactly one window behave like default containers
* Also warp the pointer when moving a window to a another visible workspace
* work around clients setting 0xFFFF as resize increments
* Move autostart after creating the IPC socket in start process
* Restore geometry of all windows before exiting/restarting
* When in fullscreen mode, focus whole screens instead of denying to focus
* draw consistent borders for each frame in a tabbed/stacked container
* Update fullscreen client position/size when an output changes
* i3-input: Bugfix: repeatedly grab the keyboard if it does not succeed
* put windows with WM_CLIENT_LEADER on the workspace of their leader
* use real functions instead of nested functions (enables compilation with
llvm-clang)
* implement screen-spanning fullscreen mode
* floating resize now uses arbitrary corners
* floating resize now works proportionally when pressing shift
* Dont use SYNC key bindings for mode_switch but re-grab keys
* support PREFIX and SYSCONFDIR in Makefile
* make pointer follow the focus when moving to a different screen also for
floating clients
* start dock clients on the output they request to be started on according
to their geometry
* handle destroy notify events like unmap notify events
* ewmh: correctly set _NET_CURRENT_DESKTOP to the number of the active
workspace
* ewmh: correctly set _NET_ACTIVE_WINDOW
* ewmh: implement support for _NET_WORKAREA (rdesktop can use that)
* default ipc-socket path is now ~/.i3/ipc.sock, enabled in the default config
* Bugfix: Containers could lose their snap state
* Bugfix: Use ev_loop_new to not block SIGCHLD
* Bugfix: if a font provides no per-char info for width, fall back to default
* Bugfix: lexer: return to INITIAL state after floating_modifier
* Bugfix: Dont leak IPC socket to launched processes
* Bugfix: Use both parts of WM_CLASS (it contains instance and class)
* Bugfix: Correctly do boundary checking/moving to other workspaces when
moving floating clients via keyboard
* Bugfix: checked for wrong flag in size hints
* Bugfix: Correctly render workspace names containing some non-ascii chars
* Bugfix: Correctly position floating windows sending configure requests
* Bugfix: Dont remap stack windows errnously when changing workspaces
* Bugfix: configure floating windows above tiling windows when moving them
to another workspace
* Bugfix: Take window out of fullscreen mode before entering floating mode
* Bugfix: Dont enter BIND_A2WS_COND state too early
* Bugfix: only restore focus if the workspace is focused, not if it is visible
* Bugfix: numlock state will now be filtered in i3-input and signal handler
* Bugfix: Dont unmap windows when current workspace gets reassigned
* Bugfix: correctly translate coordinates for floating windows when outputs
change
* Bugfix: Correctly switch workspace when using the "jump" command
* Bugfix: Fix rendering of workspace names after "reload"
* Bugfix: Correctly ignore clicks when in fullscreen mode
* Bugfix: Dont allow fullscreen floating windows to be moved
* Bugfix: Dont render containers which are not visible on hint changes
* Some memory leaks/invalid accesses have been fixed
-- Michael Stapelberg, 2010-03-30