Initial import of the i3 window manager, version 4.4.
This package contains the i3 window manager, a small tiling window manager aimed at providing helpful modern features like Xinerama multi-screen support while still being completely keyboard controlled. It is mainly aimed at engineers and people who love to get their work done without switching between keyboard and mouse.
This commit is contained in:
parent
1b000f3645
commit
126637b441
9 changed files with 265 additions and 0 deletions
8
wm/i3/DESCR
Normal file
8
wm/i3/DESCR
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Key features of i3 are correct implementation of Xinerama (workspaces are
|
||||||
|
assigned to virtual screens, i3 does the right thing when attaching new
|
||||||
|
monitors), XrandR support (not done yet), horizontal and vertical columns
|
||||||
|
(think of a table) in tiling. Also, special focus is on writing clean,
|
||||||
|
readable and well documented code. i3 uses xcb for asynchronous
|
||||||
|
communication with X11, and has several measures to be very fast.
|
||||||
|
|
||||||
|
Please be aware i3 is primarily targeted at advanced users and developers.
|
59
wm/i3/Makefile
Normal file
59
wm/i3/Makefile
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
# $NetBSD: Makefile,v 1.1.1.1 2013/02/12 23:25:35 tonnerre Exp $
|
||||||
|
#
|
||||||
|
|
||||||
|
DISTNAME= i3-4.4
|
||||||
|
CATEGORIES= wm
|
||||||
|
MASTER_SITES= http://i3wm.org/downloads/
|
||||||
|
EXTRACT_SUFX= .tar.bz2
|
||||||
|
|
||||||
|
MAINTAINER= tonnerre@NetBSD.org
|
||||||
|
HOMEPAGE= http://i3wm.org/
|
||||||
|
COMMENT= Improved dynamic tiling window manager
|
||||||
|
LICENSE= modified-bsd
|
||||||
|
|
||||||
|
USE_TOOLS+= gmake bison lex yacc pkg-config perl
|
||||||
|
USE_LANGUAGES= c99
|
||||||
|
MAKE_JOBS_SAFE= no
|
||||||
|
|
||||||
|
PKG_SYSCONFSUBDIR= i3
|
||||||
|
INSTALLATION_DIRS= bin ${PKGMANDIR}/man1 share/examples/i3
|
||||||
|
INSTALLATION_DIRS+= share/xsessions include/i3
|
||||||
|
|
||||||
|
EGDIR= ${PREFIX}/share/examples/i3
|
||||||
|
CONF_FILES= ${EGDIR}/config ${PKG_SYSCONFDIR}/config
|
||||||
|
CONF_FILES+= ${EGDIR}/config.keycodes ${PKG_SYSCONFDIR}/config.keycodes
|
||||||
|
|
||||||
|
MAKE_ENV+= SYSCONFDIR=${PKG_SYSCONFDIR:C/\/i3//}
|
||||||
|
MAKE_ENV+= DEBUG=0
|
||||||
|
MAKE_ENV+= SHM_SUPPORT=0
|
||||||
|
|
||||||
|
do-install:
|
||||||
|
${INSTALL_PROGRAM} ${WRKSRC}/i3 ${DESTDIR}${PREFIX}/bin/
|
||||||
|
${INSTALL_MAN} ${WRKSRC}/man/i3.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1/
|
||||||
|
.for i in i3bar i3-config-wizard i3-input i3-msg i3-nagbar
|
||||||
|
${INSTALL_PROGRAM} ${WRKSRC}/${i}/${i} ${DESTDIR}${PREFIX}/bin/
|
||||||
|
${INSTALL_MAN} ${WRKSRC}/man/${i}.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1/
|
||||||
|
.endfor
|
||||||
|
.for i in i3-config-wizard
|
||||||
|
${INSTALL_PROGRAM} ${WRKSRC}/${i}/${i} ${DESTDIR}${PREFIX}/bin/
|
||||||
|
.endfor
|
||||||
|
${INSTALL_DATA} ${WRKSRC}/i3.config ${DESTDIR}${EGDIR}/config
|
||||||
|
${INSTALL_DATA} ${WRKSRC}/i3.config.keycodes ${DESTDIR}${EGDIR}/config.keycodes
|
||||||
|
${INSTALL_DATA} ${WRKSRC}/i3.xsession.desktop ${DESTDIR}${PREFIX}/share/xsessions/
|
||||||
|
${INSTALL_DATA} ${WRKSRC}/include/i3/ipc.h ${DESTDIR}${PREFIX}/include/i3/
|
||||||
|
${INSTALL_SCRIPT} ${WRKSRC}/i3-sensible-editor ${DESTDIR}${PREFIX}/bin/
|
||||||
|
${INSTALL_SCRIPT} ${WRKSRC}/i3-sensible-pager ${DESTDIR}${PREFIX}/bin/
|
||||||
|
${INSTALL_SCRIPT} ${WRKSRC}/i3-sensible-terminal ${DESTDIR}${PREFIX}/bin/
|
||||||
|
|
||||||
|
.include "../../devel/libev/buildlink3.mk"
|
||||||
|
.include "../../devel/yajl/buildlink3.mk"
|
||||||
|
.include "../../devel/pcre/buildlink3.mk"
|
||||||
|
.include "../../x11/xcb-util/buildlink3.mk"
|
||||||
|
.include "../../x11/xcb-util-wm/buildlink3.mk"
|
||||||
|
.include "../../x11/xcb-util-keysyms/buildlink3.mk"
|
||||||
|
.include "../../x11/libxcb/buildlink3.mk"
|
||||||
|
.include "../../x11/libX11/buildlink3.mk"
|
||||||
|
.include "../../x11/libXcursor/buildlink3.mk"
|
||||||
|
.include "../../x11/startup-notification/buildlink3.mk"
|
||||||
|
|
||||||
|
.include "../../mk/bsd.pkg.mk"
|
20
wm/i3/PLIST
Normal file
20
wm/i3/PLIST
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
@comment $NetBSD: PLIST,v 1.1.1.1 2013/02/12 23:25:35 tonnerre Exp $
|
||||||
|
bin/i3
|
||||||
|
bin/i3-config-wizard
|
||||||
|
bin/i3-input
|
||||||
|
bin/i3-msg
|
||||||
|
bin/i3-nagbar
|
||||||
|
bin/i3-sensible-editor
|
||||||
|
bin/i3-sensible-pager
|
||||||
|
bin/i3-sensible-terminal
|
||||||
|
bin/i3bar
|
||||||
|
include/i3/ipc.h
|
||||||
|
man/man1/i3-config-wizard.1
|
||||||
|
man/man1/i3-input.1
|
||||||
|
man/man1/i3-msg.1
|
||||||
|
man/man1/i3-nagbar.1
|
||||||
|
man/man1/i3.1
|
||||||
|
man/man1/i3bar.1
|
||||||
|
share/examples/i3/config
|
||||||
|
share/examples/i3/config.keycodes
|
||||||
|
share/xsessions/i3.xsession.desktop
|
10
wm/i3/distinfo
Normal file
10
wm/i3/distinfo
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
$NetBSD: distinfo,v 1.1.1.1 2013/02/12 23:25:35 tonnerre Exp $
|
||||||
|
|
||||||
|
SHA1 (i3-4.4.tar.bz2) = bc66bdf492e9596dbd48991c7bfcfd025281001c
|
||||||
|
RMD160 (i3-4.4.tar.bz2) = 6a5f2f84da32337a991cb85fd1dc4992bf9a72e2
|
||||||
|
Size (i3-4.4.tar.bz2) = 884182 bytes
|
||||||
|
SHA1 (patch-Makefile) = 919f0e87efa951bde531b9172b74589d3e1c474a
|
||||||
|
SHA1 (patch-common.mk) = ccb5c045ea45f693dcffec972ada0dd28375f485
|
||||||
|
SHA1 (patch-libi3_ipc_send_message.c) = 93fa47c2f2bb299819b2e470e5175bffadefaf1a
|
||||||
|
SHA1 (patch-src_log.c) = ff40c08e36416748d4a5a3d19c15fd99c732bb72
|
||||||
|
SHA1 (patch-src_main.c) = c03fcb12d404fcdfd14c1892b771ee0c7a86b39d
|
12
wm/i3/patches/patch-Makefile
Normal file
12
wm/i3/patches/patch-Makefile
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
$NetBSD: patch-Makefile,v 1.1.1.1 2013/02/12 23:25:35 tonnerre Exp $
|
||||||
|
|
||||||
|
--- Makefile.orig 2012-11-25 16:04:42.000000000 +0000
|
||||||
|
+++ Makefile
|
||||||
|
@@ -18,7 +18,6 @@ include i3-msg/i3-msg.mk
|
||||||
|
include i3-input/i3-input.mk
|
||||||
|
include i3-nagbar/i3-nagbar.mk
|
||||||
|
include i3bar/i3bar.mk
|
||||||
|
-include i3-dump-log/i3-dump-log.mk
|
||||||
|
include docs/docs.mk
|
||||||
|
include man/man.mk
|
||||||
|
|
30
wm/i3/patches/patch-common.mk
Normal file
30
wm/i3/patches/patch-common.mk
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
$NetBSD: patch-common.mk,v 1.1.1.1 2013/02/12 23:25:35 tonnerre Exp $
|
||||||
|
|
||||||
|
--- common.mk.orig 2012-09-19 16:08:09.000000000 +0000
|
||||||
|
+++ common.mk
|
||||||
|
@@ -1,5 +1,7 @@
|
||||||
|
UNAME=$(shell uname)
|
||||||
|
-DEBUG=1
|
||||||
|
+ifndef DEBUG
|
||||||
|
+ DEBUG=1
|
||||||
|
+endif
|
||||||
|
COVERAGE=0
|
||||||
|
INSTALL=install
|
||||||
|
FLEX=flex
|
||||||
|
@@ -137,11 +139,11 @@ LIBSN_CFLAGS := $(call cflags_for_lib, l
|
||||||
|
LIBSN_LIBS := $(call ldflags_for_lib, libstartup-notification-1.0,startup-notification-1)
|
||||||
|
|
||||||
|
# Pango
|
||||||
|
-PANGO_CFLAGS := $(call cflags_for_lib, cairo)
|
||||||
|
-PANGO_CFLAGS += $(call cflags_for_lib, pangocairo)
|
||||||
|
-I3_CPPFLAGS += -DPANGO_SUPPORT=1
|
||||||
|
-PANGO_LIBS := $(call ldflags_for_lib, cairo)
|
||||||
|
-PANGO_LIBS += $(call ldflags_for_lib, pangocairo)
|
||||||
|
+#PANGO_CFLAGS := $(call cflags_for_lib, cairo)
|
||||||
|
+#PANGO_CFLAGS += $(call cflags_for_lib, pangocairo)
|
||||||
|
+I3_CPPFLAGS += -DPANGO_SUPPORT=0
|
||||||
|
+#PANGO_LIBS := $(call ldflags_for_lib, cairo)
|
||||||
|
+#PANGO_LIBS += $(call ldflags_for_lib, pangocairo)
|
||||||
|
|
||||||
|
# libi3
|
||||||
|
LIBS = -L$(TOPDIR) -li3
|
51
wm/i3/patches/patch-libi3_ipc_send_message.c
Normal file
51
wm/i3/patches/patch-libi3_ipc_send_message.c
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
commit f5b7bfb12ef74ddbf250e5076bbfaafd0027474c
|
||||||
|
Author: Michael Stapelberg <michael@stapelberg.de>
|
||||||
|
Date: Wed Jan 9 18:11:03 2013 +0100
|
||||||
|
|
||||||
|
Bugfix: fix IPC messages writes with low buffer sizes (Thanks jasper, dcoppa)
|
||||||
|
|
||||||
|
Use the following command to reproduce this bug:
|
||||||
|
|
||||||
|
echo 4096 | sudo tee /proc/sys/net/core/wmem_default
|
||||||
|
|
||||||
|
Then just switch workspaces with some windows on it and i3bar would
|
||||||
|
exit due to malformed IPC messages.
|
||||||
|
|
||||||
|
This bug hits OpenBSD users (and possibly other BSDs) due to their lower
|
||||||
|
default buffer size.
|
||||||
|
|
||||||
|
fixes #896
|
||||||
|
|
||||||
|
diff --git a/libi3/ipc_send_message.c b/libi3/ipc_send_message.c
|
||||||
|
index 850fbdd..88d87a6 100644
|
||||||
|
--- libi3/ipc_send_message.c
|
||||||
|
+++ libi3/ipc_send_message.c
|
||||||
|
@@ -10,6 +10,7 @@
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <err.h>
|
||||||
|
+#include <errno.h>
|
||||||
|
|
||||||
|
#include <i3/ipc.h>
|
||||||
|
|
||||||
|
@@ -38,14 +39,15 @@ int ipc_send_message(int sockfd, uint32_t message_size,
|
||||||
|
memcpy(walk, payload, message_size);
|
||||||
|
|
||||||
|
int sent_bytes = 0;
|
||||||
|
- int bytes_to_go = buffer_size;
|
||||||
|
- while (sent_bytes < bytes_to_go) {
|
||||||
|
- int n = write(sockfd, msg + sent_bytes, bytes_to_go);
|
||||||
|
- if (n == -1)
|
||||||
|
+ while (sent_bytes < buffer_size) {
|
||||||
|
+ int n = write(sockfd, msg + sent_bytes, buffer_size - sent_bytes);
|
||||||
|
+ if (n == -1) {
|
||||||
|
+ if (errno == EAGAIN)
|
||||||
|
+ continue;
|
||||||
|
return -1;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
sent_bytes += n;
|
||||||
|
- bytes_to_go -= n;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
48
wm/i3/patches/patch-src_log.c
Normal file
48
wm/i3/patches/patch-src_log.c
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
$NetBSD: patch-src_log.c,v 1.1.1.1 2013/02/12 23:25:35 tonnerre Exp $
|
||||||
|
|
||||||
|
--- src/log.c.orig 2012-12-11 23:08:17.000000000 +0000
|
||||||
|
+++ src/log.c
|
||||||
|
@@ -108,42 +108,7 @@ void init_logging(void) {
|
||||||
|
#endif
|
||||||
|
logbuffer_size = min(physical_mem_bytes * 0.01, shmlog_size);
|
||||||
|
sasprintf(&shmlogname, "/i3-log-%d", getpid());
|
||||||
|
- logbuffer_shm = shm_open(shmlogname, O_RDWR | O_CREAT, S_IREAD | S_IWRITE);
|
||||||
|
- if (logbuffer_shm == -1) {
|
||||||
|
- ELOG("Could not shm_open SHM segment for the i3 log: %s\n", strerror(errno));
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (ftruncate(logbuffer_shm, logbuffer_size) == -1) {
|
||||||
|
- close(logbuffer_shm);
|
||||||
|
- shm_unlink("/i3-log-");
|
||||||
|
- ELOG("Could not ftruncate SHM segment for the i3 log: %s\n", strerror(errno));
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- logbuffer = mmap(NULL, logbuffer_size, PROT_READ | PROT_WRITE, MAP_SHARED, logbuffer_shm, 0);
|
||||||
|
- if (logbuffer == MAP_FAILED) {
|
||||||
|
- close(logbuffer_shm);
|
||||||
|
- shm_unlink("/i3-log-");
|
||||||
|
- ELOG("Could not mmap SHM segment for the i3 log: %s\n", strerror(errno));
|
||||||
|
- logbuffer = NULL;
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* Initialize with 0-bytes, just to be sure… */
|
||||||
|
- memset(logbuffer, '\0', logbuffer_size);
|
||||||
|
-
|
||||||
|
- header = (i3_shmlog_header*)logbuffer;
|
||||||
|
-
|
||||||
|
- pthread_condattr_t cond_attr;
|
||||||
|
- pthread_condattr_init(&cond_attr);
|
||||||
|
- if (pthread_condattr_setpshared(&cond_attr, PTHREAD_PROCESS_SHARED) != 0)
|
||||||
|
- ELOG("pthread_condattr_setpshared() failed, i3-dump-log -f will not work!\n");
|
||||||
|
- pthread_cond_init(&(header->condvar), &cond_attr);
|
||||||
|
-
|
||||||
|
- logwalk = logbuffer + sizeof(i3_shmlog_header);
|
||||||
|
- loglastwrap = logbuffer + logbuffer_size;
|
||||||
|
- store_log_markers();
|
||||||
|
+ return;
|
||||||
|
}
|
||||||
|
atexit(purge_zerobyte_logfile);
|
||||||
|
}
|
27
wm/i3/patches/patch-src_main.c
Normal file
27
wm/i3/patches/patch-src_main.c
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
$NetBSD: patch-src_main.c,v 1.1.1.1 2013/02/12 23:25:35 tonnerre Exp $
|
||||||
|
|
||||||
|
--- src/main.c.orig 2012-12-11 23:08:17.000000000 +0000
|
||||||
|
+++ src/main.c
|
||||||
|
@@ -218,12 +218,6 @@ static void i3_exit(void) {
|
||||||
|
#if EV_VERSION_MAJOR >= 4
|
||||||
|
ev_loop_destroy(main_loop);
|
||||||
|
#endif
|
||||||
|
-
|
||||||
|
- if (*shmlogname != '\0') {
|
||||||
|
- fprintf(stderr, "Closing SHM log \"%s\"\n", shmlogname);
|
||||||
|
- fflush(stderr);
|
||||||
|
- shm_unlink(shmlogname);
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -233,9 +227,6 @@ static void i3_exit(void) {
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
static void handle_signal(int sig, siginfo_t *info, void *data) {
|
||||||
|
- if (*shmlogname != '\0') {
|
||||||
|
- shm_unlink(shmlogname);
|
||||||
|
- }
|
||||||
|
raise(sig);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue