all repos — st @ 3e44ee5569a81ba6f06e1ecd19bf0ceb1e97f18d

st (suckless terminal) config

Call xsetenv() in main process instead of child

This makes xsetenv internal to x.c, and allows iso14755's external
command to use $WINDOWID instead of having to snprintf it again.  (The
same benefit will apply to the externalpipe patch.)  The xwinid function
is no longer needed.

Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
Devin J. Pohly djpohly@gmail.com
commit

3e44ee5569a81ba6f06e1ecd19bf0ceb1e97f18d

parent

1f24bde82b19912c080fbb4a0b153a248cd6c6ea

3 files changed, 4 insertions(+), 14 deletions(-)

jump to
M st.cst.c

@@ -60,7 +60,7 @@ #define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c))

#define ISDELIM(u) (utf8strchr(worddelimiters, u) != NULL) /* constants */ -#define ISO14755CMD "dmenu -w %lu -p codepoint: </dev/null" +#define ISO14755CMD "dmenu -w \"$WINDOWID\" -p codepoint: </dev/null" enum cursor_movement { CURSOR_SAVE,

@@ -706,7 +706,6 @@ setenv("USER", pw->pw_name, 1);

setenv("SHELL", sh, 1); setenv("HOME", pw->pw_dir, 1); setenv("TERM", termname, 1); - xsetenv(); signal(SIGCHLD, SIG_DFL); signal(SIGHUP, SIG_DFL);

@@ -1993,14 +1992,11 @@

void iso14755(const Arg *arg) { - unsigned long id = xwinid(); - char cmd[sizeof(ISO14755CMD) + NUMMAXLEN(id)]; FILE *p; char *us, *e, codepoint[9], uc[UTF_SIZ]; unsigned long utf32; - snprintf(cmd, sizeof(cmd), ISO14755CMD, id); - if (!(p = popen(cmd, "r"))) + if (!(p = popen(ISO14755CMD, "r"))) return; us = fgets(codepoint, sizeof(codepoint), p);
M win.hwin.h

@@ -19,12 +19,10 @@ void xinit(void);

void xloadcols(void); int xsetcolorname(int, const char *); void xloadfonts(char *, double); -void xsetenv(void); void xsettitle(char *); void xsetpointermotion(int); void xseturgency(int); void xunloadfonts(void); void xresize(int, int); void xselpaste(void); -unsigned long xwinid(void); void xsetsel(char *, Time);
M x.cx.c

@@ -89,6 +89,7 @@ static void xdrawcursor(void);

static int xgeommasktogravity(int); static int xloadfont(Font *, FcPattern *); static void xunloadfont(Font *); +static void xsetenv(void); static void expose(XEvent *); static void visibility(XEvent *);

@@ -1487,12 +1488,6 @@ {

XkbBell(xw.dpy, xw.win, vol, (Atom)NULL); } -unsigned long -xwinid(void) -{ - return xw.win; -} - void focus(XEvent *ev) {

@@ -1765,6 +1760,7 @@ setlocale(LC_CTYPE, "");

XSetLocaleModifiers(""); tnew(MAX(cols, 1), MAX(rows, 1)); xinit(); + xsetenv(); selinit(); run();