From 107cbdea3345753a27fee76744b80a2d1f5cca8a Mon Sep 17 00:00:00 2001 From: Cameron Katri Date: Wed, 28 Jul 2021 18:56:32 -0400 Subject: Add x11-wm/cwm with menu-mosh patch --- x11-wm/cwm/Makefile | 28 +++++++++++++++ x11-wm/cwm/distinfo | 3 ++ x11-wm/cwm/files/patch-Makefile | 14 ++++++++ x11-wm/cwm/files/patch-calmwm.h | 10 ++++++ x11-wm/cwm/files/patch-conf.c | 18 ++++++++++ x11-wm/cwm/files/patch-kbfunc.c | 75 +++++++++++++++++++++++++++++++++++++++++ x11-wm/cwm/pkg-descr | 5 +++ 7 files changed, 153 insertions(+) create mode 100644 x11-wm/cwm/Makefile create mode 100644 x11-wm/cwm/distinfo create mode 100644 x11-wm/cwm/files/patch-Makefile create mode 100644 x11-wm/cwm/files/patch-calmwm.h create mode 100644 x11-wm/cwm/files/patch-conf.c create mode 100644 x11-wm/cwm/files/patch-kbfunc.c create mode 100644 x11-wm/cwm/pkg-descr diff --git a/x11-wm/cwm/Makefile b/x11-wm/cwm/Makefile new file mode 100644 index 0000000..2fa85ef --- /dev/null +++ b/x11-wm/cwm/Makefile @@ -0,0 +1,28 @@ +PORTNAME= cwm +DISTVERSION= 6.7 +PORTREVISION= 1 +CATEGORIES= x11-wm +MASTER_SITES= https://leahneukirchen.org/releases/ + +MAINTAINER= me@emilengler.com +COMMENT= Minimalistic window manager for X11 based on evilwm + +LICENSE= ISCL + +LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ + libfreetype.so:print/freetype2 + +USES= pkgconfig xorg +USE_XORG= x11 xft xrandr +MAKE_ARGS= MANPREFIX="${MANPREFIX}/man" +PLIST_FILES= bin/cwm \ + man/man1/cwm.1.gz \ + man/man5/cwmrc.5.gz + +post-patch: + @${REINPLACE_CMD} 's@/usr/X11R6@${LOCALBASE}@' ${WRKSRC}/cwmrc.5 + +post-install: + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/cwm + +.include diff --git a/x11-wm/cwm/distinfo b/x11-wm/cwm/distinfo new file mode 100644 index 0000000..126f992 --- /dev/null +++ b/x11-wm/cwm/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1590178399 +SHA256 (cwm-6.7.tar.gz) = fdd3d5b4fe9b1b03e1fc270d3dd5a031218589a8e40170e8438d2b9c44a35f08 +SIZE (cwm-6.7.tar.gz) = 53172 diff --git a/x11-wm/cwm/files/patch-Makefile b/x11-wm/cwm/files/patch-Makefile new file mode 100644 index 0000000..8ad8f3c --- /dev/null +++ b/x11-wm/cwm/files/patch-Makefile @@ -0,0 +1,14 @@ +Prefer libc version over custom strlcpy, strlcat, reallocarray, strtonum + +--- Makefile.orig 2020-05-22 19:40:11 UTC ++++ Makefile +@@ -11,8 +11,7 @@ SRCS= calmwm.c screen.c xmalloc.c client.c menu.c \ + + OBJS= calmwm.o screen.o xmalloc.o client.o menu.o \ + search.o util.o xutil.o conf.o xevents.o group.o \ +- kbfunc.o strlcpy.o strlcat.o y.tab.o \ +- strtonum.o reallocarray.o ++ kbfunc.o y.tab.o + + PKG_CONFIG?= pkg-config + diff --git a/x11-wm/cwm/files/patch-calmwm.h b/x11-wm/cwm/files/patch-calmwm.h new file mode 100644 index 0000000..d4c1e46 --- /dev/null +++ b/x11-wm/cwm/files/patch-calmwm.h @@ -0,0 +1,10 @@ +--- calmwm.h.orig 2021-07-28 22:34:54 UTC ++++ calmwm.h +@@ -533,6 +533,7 @@ void kbfunc_menu_group(void *, struct cargs *); + void kbfunc_menu_wm(void *, struct cargs *); + void kbfunc_menu_exec(void *, struct cargs *); + void kbfunc_menu_ssh(void *, struct cargs *); ++void kbfunc_menu_mosh(void *, struct cargs *); + void kbfunc_client_menu_label(void *, struct cargs *); + void kbfunc_exec_cmd(void *, struct cargs *); + void kbfunc_exec_lock(void *, struct cargs *); diff --git a/x11-wm/cwm/files/patch-conf.c b/x11-wm/cwm/files/patch-conf.c new file mode 100644 index 0000000..9d597b1 --- /dev/null +++ b/x11-wm/cwm/files/patch-conf.c @@ -0,0 +1,18 @@ +--- conf.c.orig 2021-07-28 22:34:31 UTC ++++ conf.c +@@ -180,6 +180,7 @@ static const struct { + { FUNC_SC(menu-cmd, menu_cmd, 0) }, + { FUNC_SC(menu-group, menu_group, 0) }, + { FUNC_SC(menu-ssh, menu_ssh, 0) }, ++ { FUNC_SC(menu-mosh, menu_mosh, 0) }, + { FUNC_SC(menu-window, menu_client, CWM_MENU_WINDOW_ALL) }, + { FUNC_SC(menu-window-hidden, menu_client, CWM_MENU_WINDOW_HIDDEN) }, + { FUNC_SC(menu-exec, menu_exec, 0) }, +@@ -212,6 +213,7 @@ static const struct { + { "M-question", "menu-exec" }, + { "CM-w", "menu-exec-wm" }, + { "M-period", "menu-ssh" }, ++ { "MS-period", "menu-mosh" }, + { "M-Return", "window-hide" }, + { "M-Down", "window-lower" }, + { "M-Up", "window-raise" }, diff --git a/x11-wm/cwm/files/patch-kbfunc.c b/x11-wm/cwm/files/patch-kbfunc.c new file mode 100644 index 0000000..20a2935 --- /dev/null +++ b/x11-wm/cwm/files/patch-kbfunc.c @@ -0,0 +1,75 @@ +--- kbfunc.c.orig 2021-07-28 22:35:08 UTC ++++ kbfunc.c +@@ -753,6 +753,72 @@ out: + } + + void ++kbfunc_menu_mosh(void *ctx, struct cargs *cargs) ++{ ++ struct screen_ctx *sc = ctx; ++ struct cmd_ctx *cmd; ++ struct menu *mi; ++ struct menu_q menuq; ++ FILE *fp; ++ char *buf, *lbuf, *p; ++ char hostbuf[_POSIX_HOST_NAME_MAX+1]; ++ char path[PATH_MAX]; ++ int l; ++ size_t len; ++ ssize_t slen; ++ int mflags = (CWM_MENU_DUMMY); ++ ++ TAILQ_FOREACH(cmd, &Conf.cmdq, entry) { ++ if (strcmp(cmd->name, "term") == 0) ++ break; ++ } ++ TAILQ_INIT(&menuq); ++ ++ if ((fp = fopen(Conf.known_hosts, "r")) == NULL) { ++ warn("%s: %s", __func__, Conf.known_hosts); ++ goto menu; ++ } ++ ++ lbuf = NULL; ++ len = 0; ++ while ((slen = getline(&lbuf, &len, fp)) != -1) { ++ buf = lbuf; ++ if (buf[slen - 1] == '\n') ++ buf[slen - 1] = '\0'; ++ ++ /* skip hashed hosts */ ++ if (strncmp(buf, HASH_MARKER, strlen(HASH_MARKER)) == 0) ++ continue; ++ for (p = buf; *p != ',' && *p != ' ' && p != buf + slen; p++) ++ ; ++ /* ignore badness */ ++ if (p - buf + 1 > sizeof(hostbuf)) ++ continue; ++ (void)strlcpy(hostbuf, buf, p - buf + 1); ++ menuq_add(&menuq, NULL, "%s", hostbuf); ++ } ++ free(lbuf); ++ if (ferror(fp)) ++ err(1, "%s", path); ++ (void)fclose(fp); ++menu: ++ if ((mi = menu_filter(sc, &menuq, "mosh", NULL, mflags, ++ search_match_text, search_print_text)) != NULL) { ++ if (mi->text[0] == '\0') ++ goto out; ++ l = snprintf(path, sizeof(path), "%s -T '[ssh] %s' -e mosh %s", ++ cmd->path, mi->text, mi->text); ++ if (l == -1 || l >= sizeof(path)) ++ goto out; ++ u_spawn(path); ++ } ++out: ++ if (mi != NULL && mi->dummy) ++ free(mi); ++ menuq_clear(&menuq); ++} ++ ++void + kbfunc_client_menu_label(void *ctx, struct cargs *cargs) + { + struct client_ctx *cc = ctx; diff --git a/x11-wm/cwm/pkg-descr b/x11-wm/cwm/pkg-descr new file mode 100644 index 0000000..8df9fa0 --- /dev/null +++ b/x11-wm/cwm/pkg-descr @@ -0,0 +1,5 @@ +cwm is a window manager for X11 initially inspired by evilwm. cwm has several +novel features, including the ability to search for windows. it features a +very simple and attractive aesthetic. + +WWW: https://github.com/leahneukirchen/cwm -- cgit v1.2.3-56-ge451