Hi here is the new version 3.d of i3, it is still young (verbose and debug output is still there - it should be configurable by next release) most of the patches has been integrated upstream.
Hope the patch is ok regards, Bapt
diff -Nrau i3.orig/Makefile i3/Makefile --- i3.orig/Makefile Mon Sep 14 19:19:29 2009 +++ i3/Makefile Tue Nov 10 08:14:51 2009 @@ -2,8 +2,8 @@ COMMENT = improved dynamic tiling window manager -DISTNAME = i3-3.c -PKGNAME = i3-3.3p0 +DISTNAME = i3-3.d +PKGNAME = i3-3.4p0 CATEGORIES = x11 EXTRACT_SUFX = .tar.bz2 @@ -21,6 +21,7 @@ xcb-icccm xcb-keysyms xcb-property xcb-xinerama MODULES = converters/libiconv +BUILD_DEPENDS = ::devel/bison LIB_DEPENDS = ev::devel/libev RUN_DEPENDS = ::x11/dmenu diff -Nrau i3.orig/distinfo i3/distinfo --- i3.orig/distinfo Wed Sep 2 21:26:17 2009 +++ i3/distinfo Tue Nov 10 08:14:51 2009 @@ -1,5 +1,5 @@ -MD5 (i3-3.c.tar.bz2) = jjpMN4S+7lxQNMdXC8/xyA== -RMD160 (i3-3.c.tar.bz2) = lNfn7XDI1dVymFkJ2+aEtDw7B98= -SHA1 (i3-3.c.tar.bz2) = QgH86kbiPnXqpwv/W9K9Cr6auhk= -SHA256 (i3-3.c.tar.bz2) = kXJqpPuVj/flfOTwdMCGtzjqzCMb40vGDZ0xaT5JMVU= -SIZE (i3-3.c.tar.bz2) = 110076 +MD5 (i3-3.d.tar.bz2) = 3GSMC79xHWaRyYH2ZcfFTA== +RMD160 (i3-3.d.tar.bz2) = piK0U7G/PC6essJ3Fw0u9i6P12I= +SHA1 (i3-3.d.tar.bz2) = jOSdbCSH6heZx/8/abcqLYaU0NI= +SHA256 (i3-3.d.tar.bz2) = pki+iCy1eLP3O985a6yr+u9lCparxnZBKmXOFrKKSSs= +SIZE (i3-3.d.tar.bz2) = 156205 diff -Nrau i3.orig/patches/patch-Makefile i3/patches/patch-Makefile --- i3.orig/patches/patch-Makefile Wed Sep 2 22:05:34 2009 +++ i3/patches/patch-Makefile Tue Nov 10 08:14:51 2009 @@ -1,20 +1,31 @@ -$OpenBSD: patch-Makefile,v 1.2 2009/09/02 20:05:34 bernd Exp $ ---- Makefile.orig Wed Aug 19 14:39:09 2009 -+++ Makefile Wed Sep 2 21:23:16 2009 -@@ -8,24 +8,20 @@ HEADERS=$(wildcard include/*.h) +--- Makefile.orig Mon Nov 9 22:37:11 2009 ++++ Makefile Tue Nov 10 07:59:39 2009 +@@ -10,37 +10,33 @@ # Depend on the specific file (.c for each .o) and on all headers src/%.o: src/%.c ${HEADERS} - echo "CC $<" $(CC) $(CFLAGS) -c -o $@ $< - all: ${FILES} + all: src/cfgparse.y.o src/cfgparse.yy.o ${FILES} - echo "LINK i3" - $(CC) -o i3 ${FILES} $(LDFLAGS) + $(CC) -o i3 ${FILES} src/cfgparse.y.o src/cfgparse.yy.o $(LDFLAGS) - echo "" - echo "SUBDIR i3-msg" $(MAKE) TOPDIR=$(TOPDIR) -C i3-msg +- echo "SUBDIR i3-input" + $(MAKE) TOPDIR=$(TOPDIR) -C i3-input + src/cfgparse.yy.o: src/cfgparse.l +- echo "LEX $<" + flex -i -o$(@:.o=.c) $< + $(CC) $(CFLAGS) -c -o $@ $(@:.o=.c) + + src/cfgparse.y.o: src/cfgparse.y +- echo "YACC $<" + bison --debug --verbose -b $(basename $< .y) -d $< + $(CC) $(CFLAGS) -c -o $@ $(<:.y=.tab.c) + install: all - echo "INSTALL" - $(INSTALL) -d -m 0755 $(DESTDIR)/usr/bin @@ -22,14 +33,19 @@ - $(INSTALL) -d -m 0755 $(DESTDIR)/usr/share/xsessions - $(INSTALL) -m 0755 i3 $(DESTDIR)/usr/bin/ - test -e $(DESTDIR)/etc/i3/config || $(INSTALL) -m 0644 i3.config $(DESTDIR)/etc/i3/config +- $(INSTALL) -m 0644 i3.welcome $(DESTDIR)/etc/i3/welcome - $(INSTALL) -m 0644 i3.desktop $(DESTDIR)/usr/share/xsessions/ + $(INSTALL) -d -m 0755 $(PREFIX)/bin ++ $(INSTALL) -d -m 0755 $(PREFIX)/etc/i3 + $(INSTALL) -d -m 0755 $(PREFIX)/share/examples/i3 + $(INSTALL) -d -m 0755 $(PREFIX)/share/xsessions + $(INSTALL) -m 0755 i3 $(PREFIX)/bin/ ++ $(INSTALL) -m 0644 i3.config $(PREFIX)/share/examples/i3/config + $(INSTALL) -m 0444 man/i3.1 $(PREFIX)/man/man1/ -+ test -e $(PREFIX)/etc/i3/config || $(INSTALL) -m 0644 i3.config $(PREFIX)/share/examples/i3/config ++ $(INSTALL) -m 0444 man/i3-msg.1 $(PREFIX)/man/man1/ ++ $(INSTALL) -m 0444 man/i3-input.1 $(PREFIX)/man/man1/ ++ $(INSTALL) -m 0644 i3.welcome $(PREFIX)/etc/i3/welcome + $(INSTALL) -m 0644 i3.desktop $(PREFIX)/share/xsessions/ $(MAKE) TOPDIR=$(TOPDIR) -C i3-msg install + $(MAKE) TOPDIR=$(TOPDIR) -C i3-input install - dist: distclean diff -Nrau i3.orig/patches/patch-common_mk i3/patches/patch-common_mk --- i3.orig/patches/patch-common_mk Wed Sep 2 21:26:17 2009 +++ i3/patches/patch-common_mk Tue Nov 10 08:14:51 2009 @@ -1,45 +1,12 @@ -$OpenBSD: patch-common_mk,v 1.1.1.1 2009/09/02 19:26:17 landry Exp $ ---- common.mk.orig Wed Aug 19 14:39:09 2009 -+++ common.mk Wed Sep 2 21:23:04 2009 -@@ -9,7 +9,7 @@ CFLAGS += -pipe - CFLAGS += -Wall - CFLAGS += -Wunused - CFLAGS += -Iinclude --CFLAGS += -I/usr/local/include -+CFLAGS += -I${LOCALBASE}/include - CFLAGS += -DI3_VERSION=\"${GIT_VERSION}\" - - # Check if pkg-config is installed, because without pkg-config, the following -@@ -38,7 +38,7 @@ LDFLAGS += -lxcb-icccm - LDFLAGS += -lxcb-xinerama - LDFLAGS += -lX11 - LDFLAGS += -lev --LDFLAGS += -L/usr/local/lib -L/usr/pkg/lib -+LDFLAGS += -L${LOCALBASE}/lib -L/usr/pkg/lib - - ifeq ($(UNAME),NetBSD) - # We need -idirafter instead of -I to prefer the system’s iconv over GNU libiconv -@@ -50,6 +50,13 @@ ifeq ($(UNAME),FreeBSD) - LDFLAGS += -liconv - endif - -+ifeq ($(UNAME),OpenBSD) -+CFLAGS += -ftrampolines -+CFLAGS += -I${X11BASE}/include -+LDFLAGS += -liconv -+LDFLAGS += -L${X11BASE}/lib -+endif -+ - ifeq ($(UNAME),Linux) - CFLAGS += -D_GNU_SOURCE - endif -@@ -61,9 +68,6 @@ CFLAGS += -g3 - else +--- common.mk.orig Tue Nov 10 00:04:07 2009 ++++ common.mk Tue Nov 10 00:04:13 2009 +@@ -70,9 +70,6 @@ CFLAGS += -O2 endif -- + -# Don’t print command lines which are run -.SILENT: - +- # Always remake the following targets .PHONY: install clean dist distclean + diff -Nrau i3.orig/patches/patch-i3-msg_Makefile i3/patches/patch-i3-msg_Makefile --- i3.orig/patches/patch-i3-msg_Makefile Wed Sep 2 21:26:17 2009 +++ i3/patches/patch-i3-msg_Makefile Tue Nov 10 08:14:51 2009 @@ -1,7 +1,6 @@ -$OpenBSD: patch-i3-msg_Makefile,v 1.1.1.1 2009/09/02 19:26:17 landry Exp $ ---- i3-msg/Makefile.orig Wed Aug 19 14:39:09 2009 -+++ i3-msg/Makefile Mon Aug 31 20:33:37 2009 -@@ -9,17 +9,14 @@ HEADERS=$(wildcard *.h) +--- i3-msg/Makefile.orig Mon Nov 9 22:37:11 2009 ++++ i3-msg/Makefile Mon Nov 9 23:27:34 2009 +@@ -9,17 +9,14 @@ # Depend on the specific file (.c for each .o) and on all headers %.o: %.c ${HEADERS} diff -Nrau i3.orig/patches/patch-i3_config i3/patches/patch-i3_config --- i3.orig/patches/patch-i3_config Wed Sep 2 21:26:17 2009 +++ i3/patches/patch-i3_config Tue Nov 10 08:14:51 2009 @@ -1,21 +1,20 @@ -$OpenBSD: patch-i3_config,v 1.1.1.1 2009/09/02 19:26:17 landry Exp $ ---- i3.config.orig Wed Aug 19 14:39:09 2009 -+++ i3.config Wed Sep 2 21:23:04 2009 +--- i3.config.orig Tue Nov 10 08:09:27 2009 ++++ i3.config Tue Nov 10 08:11:18 2009 @@ -4,7 +4,7 @@ # Tell i3 about your preferred terminal. You can refer to this as $terminal # later. It is recommended to set this option to allow i3 to open a terminal # containing the introduction on first start. -terminal /usr/bin/urxvt -+terminal ${X11BASE}/bin/xterm ++terminal ${X11BASE}/bin/urxvt # ISO 10646 = Unicode font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 -@@ -83,14 +83,14 @@ bind Mod1+Shift+18 m9 +@@ -106,14 +106,14 @@ bind Mod1+Shift+19 m10 # Mod1+Enter starts a new terminal -bind Mod1+36 exec /usr/bin/urxvt -+bind Mod1+36 exec ${X11BASE}/bin/xterm ++bind Mod1+36 exec ${X11BASE}/bin/urxvt # Mod1+Shift+q kills the current client bind Mod1+Shift+24 kill @@ -27,3 +26,9 @@ # Mod1+Shift+e exits i3 bind Mod1+Shift+26 exit +@@ -124,4 +124,4 @@ + ############################################################# + # DELETE THE FOLLOWING LINES TO DISABLE THE WELCOME MESSAGE # + ############################################################# +-exec xmessage -file /etc/i3/welcome ++exec xmessage -file ${LOCALBASE}/etc/i3/welcome diff -Nrau i3.orig/patches/patch-include_util_h i3/patches/patch-include_util_h --- i3.orig/patches/patch-include_util_h Wed Sep 2 21:26:17 2009 +++ i3/patches/patch-include_util_h Thu Jan 1 01:00:00 1970 @@ -1,15 +0,0 @@ -$OpenBSD: patch-include_util_h,v 1.1.1.1 2009/09/02 19:26:17 landry Exp $ ---- include/util.h.orig Wed Aug 19 14:39:09 2009 -+++ include/util.h Mon Aug 31 14:01:38 2009 -@@ -161,4 +161,11 @@ void switch_layout_mode(xcb_connection_t *conn, Contai - Client *get_matching_client(xcb_connection_t *conn, - const char *window_classtitle, Client *specific); - -+/* -+ * Add a copy of memmem for OpenBSD -+ */ -+#if defined(__OpenBSD__) -+void * memmem(const void *l, size_t l_len, const void *s, size_t s_len); -+#endif -+ - #endif diff -Nrau i3.orig/patches/patch-src_config_c i3/patches/patch-src_config_c --- i3.orig/patches/patch-src_config_c Wed Sep 2 21:26:17 2009 +++ i3/patches/patch-src_config_c Thu Jan 1 01:00:00 1970 @@ -1,33 +0,0 @@ -$OpenBSD: patch-src_config_c,v 1.1.1.1 2009/09/02 19:26:17 landry Exp $ ---- src/config.c.orig Wed Aug 19 14:39:09 2009 -+++ src/config.c Mon Aug 31 20:30:32 2009 -@@ -226,8 +226,8 @@ void load_configuration(xcb_connection_t *conn, const - /* We first check for ~/.i3/config, then for /etc/i3/config */ - char *globbed = glob_path("~/.i3/config"); - if ((handle = fopen(globbed, "r")) == NULL) -- if ((handle = fopen("/etc/i3/config", "r")) == NULL) -- die("Neither \"%s\" nor /etc/i3/config could be opened\n", globbed); -+ if ((handle = fopen("${SYSCONFDIR}/i3/config", "r")) == NULL) -+ die("Neither \"%s\" nor ${SYSCONFDIR}/i3/config could be opened\n", globbed); - free(globbed); - } - char key[512], value[512], buffer[1026]; -@@ -312,7 +312,17 @@ void load_configuration(xcb_connection_t *conn, const - rest++; - if (*rest != ' ') - die("Invalid binding (keysym)\n"); -- new->symbol = strndup(sym, (rest - sym)); -+#if defined(__OpenBSD__) -+ size_t len = strlen(sym); -+ if( len > (rest - sym)) -+ len = (rest - sym); -+ new->symbol = malloc(len + 1); -+ memcpy(new->symbol,sym,len+1); -+ new->symbol[len]='\0'; -+#else -+ new->symbol = strndup(sym, (rest - sym)); -+#endif -+ - } - rest++; - LOG("keycode = %d, symbol = %s, modifiers = %d, command = *%s*\n", new->keycode, new->symbol, modifiers, rest); diff -Nrau i3.orig/patches/patch-src_util_c i3/patches/patch-src_util_c --- i3.orig/patches/patch-src_util_c Mon Sep 14 19:19:29 2009 +++ i3/patches/patch-src_util_c Thu Jan 1 01:00:00 1970 @@ -1,66 +0,0 @@ -$OpenBSD: patch-src_util_c,v 1.2 2009/09/14 17:19:29 naddy Exp $ ---- src/util.c.orig Wed Aug 19 14:39:09 2009 -+++ src/util.c Mon Sep 14 19:15:36 2009 -@@ -15,6 +15,9 @@ - #include <unistd.h> - #include <string.h> - #include <sys/wait.h> -+#if defined(__OpenBSD__) -+#include <sys/cdefs.h> -+#endif - #include <stdarg.h> - #include <assert.h> - #include <iconv.h> -@@ -145,7 +148,7 @@ void start_application(const char *command) { - shell = "/bin/sh"; - - /* This is the child */ -- execl(shell, shell, "-c", command, NULL); -+ execl(shell, shell, "-c", command, (void *)NULL); - /* not reached */ - } - exit(0); -@@ -466,3 +469,43 @@ done: - FREE(to_title_ucs); - return matching; - } -+ -+ -+#if defined(__OpenBSD__) -+ -+/* -+ * Taken from FreeBSD -+ * Find the first occurrence of the byte string s in byte string l. -+ */ -+ -+void * -+memmem(const void *l, size_t l_len, const void *s, size_t s_len) -+{ -+ register char *cur, *last; -+ const char *cl = (const char *)l; -+ const char *cs = (const char *)s; -+ -+ /* we need something to compare */ -+ if (l_len == 0 || s_len == 0) -+ return NULL; -+ -+ /* "s" must be smaller or equal to "l" */ -+ if (l_len < s_len) -+ return NULL; -+ -+ /* special case where s_len == 1 */ -+ if (s_len == 1) -+ return memchr(l, (int)*cs, l_len); -+ -+ /* the last position where its possible to find "s" in "l" */ -+ last = (char *)cl + l_len - s_len; -+ -+ for (cur = (char *)cl; cur <= last; cur++) -+ if (cur[0] == cs[0] && memcmp(cur, cs, s_len) == 0) -+ return cur; -+ -+ return NULL; -+} -+ -+#endif -+ diff -Nrau i3.orig/pkg/PLIST i3/pkg/PLIST --- i3.orig/pkg/PLIST Wed Sep 2 21:26:17 2009 +++ i3/pkg/PLIST Tue Nov 10 08:14:51 2009 @@ -1,7 +1,11 @@ @comment $OpenBSD: PLIST,v 1.1.1.1 2009/09/02 19:26:17 landry Exp $ @bin bin/i3 @bin bin/i3-msg +...@bin bin/i3-input @man man/man1/i3.1 +...@man man/man1/i3-msg.1 +...@man man/man1/i3-input.1 +etc/i3/welcome share/examples/i3/ @sample ${SYSCONFDIR}/i3/ share/examples/i3/config