]> git.sur5r.net Git - i3/i3status/commitdiff
make SIGUSR1 do nothing, so that killall -USR1 i3status will force an update
authorMichael Stapelberg <michael@stapelberg.de>
Wed, 5 Dec 2012 16:47:29 +0000 (17:47 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Wed, 5 Dec 2012 16:49:54 +0000 (17:49 +0100)
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
man/i3status.man

index 503f76382b9103ecea50ff9663e0bdb80385f6fb..87a793b346e034bd22b08d29bc6d7cc6d98a7392 100644 (file)
@@ -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.");
 
index c14d8d2457ab97bf6d94a17ccf05433438d15492..3f7a924ba64d0db6e576224485ffb222b6acb4a3 100644 (file)
@@ -378,6 +378,12 @@ Note that if you want to use the JSON output format (with colors in i3bar), you
 need to use a slightly more complex wrapper script. There are examples in the
 contrib/ folder, see http://code.i3wm.org/i3status/tree/contrib
 
+== SIGNALS
+
+When receiving +SIGUSR1+, i3status’s nanosleep() will be interrupted and thus
+you will force an update. You can use killall -USR1 i3status to force an update
+after changing the system volume, for example.
+
 == SEE ALSO
 
 +strftime(3)+, +date(1)+, +glob(3)+, +dzen2(1)+, +xmobar(1)+