From 0a608d4af67fe59390f2e8931f61b664f48660db Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Wed, 5 Dec 2012 17:47:29 +0100 Subject: make SIGUSR1 do nothing, so that killall -USR1 i3status will force an update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sending SIGUSR1 will interrupt the nanosleep() and thus force a new iteration of i3status’s output loop. The signal handler itself is empty. Based on the question by ttjjss at http://faq.i3wm.org/question/854/how-to-force-status-bar-update/ --- i3status.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'i3status.c') diff --git a/i3status.c b/i3status.c index 503f763..87a793b 100644 --- a/i3status.c +++ b/i3status.c @@ -57,6 +57,14 @@ void sigpipe(int signum) { exit(1); } +/* + * Do nothing upon SIGUSR1. Running this signal handler will nevertheless + * interrupt nanosleep() so that i3status immediately generates new output. + * + */ +void sigusr1(int signum) { +} + /* * Checks if the given path exists by calling stat(). * @@ -305,6 +313,10 @@ int main(int argc, char *argv[]) { action.sa_handler = sigpipe; sigaction(SIGPIPE, &action, NULL); + memset(&action, 0, sizeof(struct sigaction)); + action.sa_handler = sigusr1; + sigaction(SIGUSR1, &action, NULL); + if (setlocale(LC_ALL, "") == NULL) die("Could not set locale. Please make sure all your LC_* / LANG settings are correct."); -- cgit v1.2.3