diff --git a/RELEASE-NOTES-4.0 b/RELEASE-NOTES-4.0 new file mode 100644 index 00000000..c51f06f2 --- /dev/null +++ b/RELEASE-NOTES-4.0 @@ -0,0 +1,135 @@ + + ┌────────────────────────────┐ + │ Release notes for i3 v4.0 │ + └────────────────────────────┘ + +This is the first release of the new major version of i3, v4.0. It has been a +long time since v3.ε was released (over one year). A lot has been happening +since then, we made 736 commits – compare that to the total number of 1664 +commits for i3. + +The reason for the high number of commits and long time for this release is the +big refactoring we have been doing. Instead of using several lists and a table +as data structures, we now use a single tree of containers. These containers +represent invisible entities like your X11 root window, your different monitors +and workspaces, but also visible entities like actual windows. + +Using a tree has made a lot of things cleaner and easier – in the code *and* in +the user interface. Admittedly though, you will probably need a day or two to +get used to a few more advanced movement commands if you are used to v3.ε right +now. + + ┌────────────────────────────┐ + │ New features │ + └────────────────────────────┘ + + • Like we introduced a proper flex/bison based parser in 3.δ for the + configfile, we now also have a flex/bison parser for commands. This means, + instead of the cryptic commands like 'f' for fullscreen or 'mh' for move + left, we now have human-readable, beautiful command names. In fact, the + commands for the just mentioned functions *are* 'fullscreen' and 'move + left'! + + • You can now chain commands using ';' (a semicolon). One example for that is + 'workspace 3 ; exec /usr/bin/urxvt' to switch to a new workspace and open a + terminal. + + • You can specify which windows should be affected by your command by using + different criteria. A good example is '[class="Iceweasel"] kill' to get rid + of all Firefox windows. + + • As the configuration file needs new commands (and a few options are + obsolete), you need to change it. To make this process a little bit easier + for you, this release comes with the script i3-migrate-config-to-v4.pl. Just + run it on your current config file and it will spit out a v4 config file to + stdout. To make things even better, i3 automatically detects v3 config files + and calls that script, so you never end up with a non-working config :). + + • Similarly to the criteria when using commands, we now have a 'for_window' + configuration directive, which lets you automatically apply certain commands + to certain windows. Use it to set border styles per window, for example with + 'for_window [class="XTerm"] border 1pixel'. + + • Since dock clients (like dzen2) are now part of the layout tree (as opposed + to a custom data structure as before), it was easy to implement top and + bottom dock areas. Programs which properly specify the dock hint get placed + on the edge of the screen they request. i3bar has the -dtop and -dbottom + parameters, for example. + + • The internal workspace bar is obsolete. Use i3bar instead. + + • Resizing now works between everything! + + • Fullscreen now works for everything! + + • Floating now works for everything! + + • Your layout is now preserved when doing an inplace restart. + + • When you have an error in your config file, a new program called i3-nagbar + will tell you so. It offers you two buttons: One to view the error in your + $PAGER and one to edit your config in your $EDITOR. + + • The default config used key symbols (like 'bind Mod1+f fullscreen') instead + of key codes. If you use a non-qwerty layout, the program i3-config-wizard + can create a key symbol based config file based on your current layout. You + can also chose between Windows (Mod4) and Alt (Mod1) as your default + modifier. i3-config-wizard will automatically be started as long as you + don’t have a configuration file for i3. + + • Custom X cursor themes are now supported. + + • The RandR backend now respects the primary output. + + • A wrong 'font' configuration in your config file will no longer make i3 + exit. Instead, it will fall back to a different font and tell you about the + error in its log. + + • The default split direction (whether a new window gets placed right next to + the current one or below the current one) is now automatically set to + horizontal if you have a monitor that is wider than high or vertical if you + a monitor which is higher than wide. This works great with rotated monitors. + + • Sockets and temporary files are now placed in XDG_RUNTIME_DIR, if set (this + is used on systemd based systems). + + • Tools like i3bar, i3-msg etc. use the I3_SOCKET_PATH property which is set + to the X11 root window, so you don’t have to configure your socket path + anywhere. + + • The kill command kills single windows by default now. To kill a whole + application, use 'kill client'. + + • IPC: Commands can now have custom replies. When the parser encounters an + error, a proper error reply is sent. + + • There now is an 'exec_always' configuration directive which works like + 'exec' but will also be run when restarting. + + ┌────────────────────────────┐ + │ Future features │ + └────────────────────────────┘ + +Our plans were big but our time and manpower is limited. Therefore, the +following features did not make it into this release. However, the foundation +is now in place and implementing them is possible, so stay tuned! + + • Saving/Restoring specific parts of your layout + + • Session saving + + • Sticky windows + + ┌────────────────────────────┐ + │ Thanks! │ + └────────────────────────────┘ + +Thanks for testing, bugfixes, discussions and everything I forgot go out to: + + aniou, artoj, badboy, cloud, cradle, David Coppa, dbp, dothebart, eeemsi, + eelvex, f8l, fernando, jan, jimdigriz, jon, julien, kacper, ktosiek, + lexszero, litemotiv, lourens, madroach, marcus, merovius, mike, mirko, mseed, + mxf, phnom, quaec, rogutes, sardemff7, smartass, thepub, tiago, tucos, + woddf2, xpt, ys + +-- Michael Stapelberg, 2011-07-24