diff options
| author | Devin J. Pohly <djpohly@gmail.com> | 2017-10-10 10:30:23 -0500 | 
|---|---|---|
| committer | Devin J. Pohly <djpohly@gmail.com> | 2018-02-25 21:53:24 -0600 | 
| commit | 3e44ee5569a81ba6f06e1ecd19bf0ceb1e97f18d (patch) | |
| tree | f1ae3a269e18cdff7638c7fe9eabe9a2bbab24b8 | |
| parent | 1f24bde82b19912c080fbb4a0b153a248cd6c6ea (diff) | |
| download | st-3e44ee5569a81ba6f06e1ecd19bf0ceb1e97f18d.tar.gz st-3e44ee5569a81ba6f06e1ecd19bf0ceb1e97f18d.tar.bz2  | |
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>
| -rw-r--r-- | st.c | 8 | ||||
| -rw-r--r-- | win.h | 2 | ||||
| -rw-r--r-- | x.c | 8 | 
3 files changed, 4 insertions, 14 deletions
@@ -60,7 +60,7 @@ char *argv0;  #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 @@ execsh(void)  	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 @@ tprinter(char *s, size_t len)  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); @@ -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); @@ -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 @@ xbell(int vol)  	XkbBell(xw.dpy, xw.win, vol, (Atom)NULL);  } -unsigned long -xwinid(void) -{ -	return xw.win; -} -  void  focus(XEvent *ev)  { @@ -1765,6 +1760,7 @@ run:  	XSetLocaleModifiers("");  	tnew(MAX(cols, 1), MAX(rows, 1));  	xinit(); +	xsetenv();  	selinit();  	run();  | 
