I am new to i3 and to tiling window managers in general. I'm using i3 now, after having experimented briefly with awesome and xmonad, because the UI seems a little better thought out and documented here.
There is one thing I miss from conventional window managers, though, and I am wondering if it could be integrated into i3's model. The practical problem is that I normally want both my terminal emulators and my Emacs windows to have a fixed 80-column width (unless I explicitly resize them), in order for the text displays to look natural. The more general problem is that i3's rules for sizing windows take no account of the application's preferred or default size. This also affects (for example) Pithos, which in a floating-layout window manager creates a smallish window but under i3 gets sized so it has acres of pointless whitespace. I propose a "natural sizing" option that would, at window-layout time, query an application for its preferred size and try to meet that preference as closely as possible. I suggest the following rules: (1) When splitting a container vertically to create a naturally-sized application window, the new window's width is set to that size (provided it is less than the parent width). The new window's height is the parent height. (2) When splitting a container horizontally to create a naturally-sized application window, the new window's height is set to that size (provided it is less than the parent height). The new window's width is the parent width. (3) When the user explicitly resizes a window, it is no longer treated as naturally sized. (4) When a container is resized, naturally-sized subwindows are *not* resized - only the "flex-sized" others shrink or expand. This rule may lock the container's horizontal or vertical or both sizes depending on the subwindow layout. (5) Because the first window created in a workspace isn't made with a container split, it is always flex-sized. I would like to be able to tell i3 to size all terminal emulators and Emacs windows naturally. Then my normal startup sequence would look like this: 1. $mod-Enter to create a flex-sized terminal emulator filling the screen. 2. $mod-Enter to create a natural-sized terminal emulator 3. Change focus to the flex-sized window 4. $mod-d emacs to create a naturally-sized Emacs My normal practice when suggesting a feature like this would be to ship a patch implementing it, and I apologize for not doing so. But it seems like a simple enough idea to be implemented very quickly by someone who (unlike me) already knows the window manager internals. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> When all government ...in little as in great things... shall be drawn to Washington as the center of all power; it will render powerless the checks provided of one government on another, and will become as venal and oppressive as the government from which we separated." -- Thomas Jefferson, 1821