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

Reply via email to