diff options
| author | Luke Smith <luke@lukesmith.xyz> | 2020-05-26 07:26:42 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-26 07:26:42 -0400 | 
| commit | 6d75ac1b00482e842f3e600cddde3b31a1c35ede (patch) | |
| tree | 14e17d12341cec0d909212d1dbdac07f5a955325 | |
| parent | america (diff) | |
| parent | Merge branch 'master' into forkbefore (diff) | |
| download | dwmblocks-6d75ac1b00482e842f3e600cddde3b31a1c35ede.tar.gz dwmblocks-6d75ac1b00482e842f3e600cddde3b31a1c35ede.tar.bz2 dwmblocks-6d75ac1b00482e842f3e600cddde3b31a1c35ede.tar.xz dwmblocks-6d75ac1b00482e842f3e600cddde3b31a1c35ede.tar.zst dwmblocks-6d75ac1b00482e842f3e600cddde3b31a1c35ede.zip | |
Merge pull request #23 from danbyl/forkbefore
Update status after forking and export with setenv
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | dwmblocks.c | 16 | 
2 files changed, 7 insertions, 11 deletions
| @@ -42,5 +42,5 @@ scripts in response to click events.  See the above linked scripts for examples  of this using the `$BLOCK_BUTTON` variable.  For this feature to work, you need the appropriate patch in dwm as well. See -[here](https://gist.github.com/danbyl/54f7c1d57fc6507242a95b71c3d8fdea). +[here](https://dwm.suckless.org/patches/statuscmd/).  Credit for those patches goes to Daniel Bylinka (daniel.bylinka@gmail.com). diff --git a/dwmblocks.c b/dwmblocks.c index 64c2da2..bf648c2 100644 --- a/dwmblocks.c +++ b/dwmblocks.c @@ -184,29 +184,25 @@ void sighandler(int signum)  void buttonhandler(int sig, siginfo_t *si, void *ucontext)  { -	int button = si->si_value.sival_int & 0xff; +	char button[2] = {'0' + si->si_value.sival_int & 0xff, '\0'};  	sig = si->si_value.sival_int >> 8; -	getsigcmds(sig); -	writestatus();  	if (fork() == 0)  	{ -		static char exportstring[CMDLENGTH + 22] = "export BLOCK_BUTTON=-;";  		const Block *current; -		int i; -		for (i = 0; i < LENGTH(blocks); i++) +		for (int i = 0; i < LENGTH(blocks); i++)  		{  			current = blocks + i;  			if (current->signal == sig)  				break;  		} -		char *cmd = strcat(exportstring, blocks[i].command); -		cmd[20] = '0' + button; -		char *command[] = { "/bin/sh", "-c", cmd, NULL }; +		char *command[] = { "/bin/sh", "-c", current->command, NULL }; +		setenv("BLOCK_BUTTON", button, 1);  		setsid();  		execvp(command[0], command);  		exit(EXIT_SUCCESS); -		cmd[22] = '\0';  	} +	getsigcmds(sig); +	writestatus();  }  #endif | 
