Hi,

as many of you might have noticed, terminal emulators such as urxvt set
an X11 hint for getting resized only in increments of a specific size
(for example in increments of 13 px, if one line in your font size is 13
px high).

Oftentimes, the available space cannot be evenly divided by the resize
increment hint, and therefore you get little borders at the bottom or
right of a window.

Until now, we thought that this is just the way it is, but it turns out
that all terminal emulators I have tested (urxvt, xterm, gnome-terminal,
ROXterm) cope with whatever size one assigns them, that is, they still
work if i3 entirely ignores the size increment hint.

As I’ve mentioned in http://bugs.i3wm.org/query/ticket/540#comment:7,
Openbox ignores the size increment hint when windows are in fullscreen
for several years and that seems to work just fine.

Therefore, I’m announcing that we will ignore size increment hints for
tiling windows (NOT for floating windows such as GIMP toolbar windows)
in i3 4.3 UNLESS somebody has a good reason against that. In case you
have a good reason against it, please tell me/us ASAP.

In case you want to test whether your favorite terminal emulator still
works fine, apply ignore-size-increment-hints.patch (attached) and
check. In case you test one which was not mentioned in this thread
before, feel free to post your results.

Best regards,
Michael
diff --git i/src/handlers.c w/src/handlers.c
index 0d087e7..ed65bc9 100644
--- i/src/handlers.c
+++ w/src/handlers.c
@@ -723,6 +723,7 @@ static bool handle_normal_hints(void *data, xcb_connection_t *conn, uint8_t stat
     }
 
     bool changed = false;
+#if 0
     if ((size_hints.flags & XCB_ICCCM_SIZE_HINT_P_RESIZE_INC)) {
         if (size_hints.width_inc > 0 && size_hints.width_inc < 0xFFFF)
             if (con->width_increment != size_hints.width_inc) {
@@ -738,6 +739,7 @@ static bool handle_normal_hints(void *data, xcb_connection_t *conn, uint8_t stat
         if (changed)
             DLOG("resize increments changed\n");
     }
+#endif
 
     int base_width = 0, base_height = 0;
 

Reply via email to