Notify remaining time on SIGUSR1 signal
This commit is contained in:
parent
bf41fc8e6c
commit
b7e94be5d0
7
TODO
7
TODO
|
@ -1,7 +1,6 @@
|
||||||
1. Show remaining time to the next timer (using SIGUSR1)
|
1. Add #ifdef to make libnotify an optional dependency
|
||||||
2. Add #ifdef to make libnotify an optional dependency
|
2. Add more support for non-libnotify such as echo(1)
|
||||||
3. Add more support for non-libnotify such as echo(1)
|
3. Pause and continue the timer
|
||||||
4. Pause and continue the timer
|
|
||||||
|
|
||||||
Misc
|
Misc
|
||||||
----
|
----
|
||||||
|
|
31
spt.c
31
spt.c
|
@ -4,6 +4,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
#include <libnotify/notify.h>
|
#include <libnotify/notify.h>
|
||||||
|
|
||||||
|
@ -21,10 +22,13 @@ typedef struct {
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
static int i, timecount;
|
||||||
|
|
||||||
/* function declarations */
|
/* function declarations */
|
||||||
static void die(const char *errstr, ...);
|
static void die(const char *errstr, ...);
|
||||||
static void spawn(char *);
|
static void spawn(char *);
|
||||||
static void notify_send(char *);
|
static void notify_send(char *);
|
||||||
|
static void remaining_time(int);
|
||||||
static void usage(void);
|
static void usage(void);
|
||||||
|
|
||||||
/* functions implementations */
|
/* functions implementations */
|
||||||
|
@ -75,6 +79,21 @@ notify_send(char *cmt)
|
||||||
spawn(notifyext);
|
spawn(notifyext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
remaining_time(int sigint)
|
||||||
|
{
|
||||||
|
char remainingtext[17];
|
||||||
|
if (signal(SIGUSR1, SIG_IGN) != SIG_IGN) {
|
||||||
|
signal(SIGUSR1, remaining_time);
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(remainingtext, 17, "Remaining: %02d:%02d\n",
|
||||||
|
(timers[i].tmr - timecount) / 60,
|
||||||
|
(timers[i].tmr - timecount) % 60);
|
||||||
|
|
||||||
|
notify_send(remainingtext);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
usage(void)
|
usage(void)
|
||||||
{
|
{
|
||||||
|
@ -84,8 +103,6 @@ usage(void)
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
ARGBEGIN {
|
ARGBEGIN {
|
||||||
case 'e':
|
case 'e':
|
||||||
notifyext = EARGF(usage());
|
notifyext = EARGF(usage());
|
||||||
|
@ -101,9 +118,17 @@ main(int argc, char *argv[])
|
||||||
break;
|
break;
|
||||||
} ARGEND;
|
} ARGEND;
|
||||||
|
|
||||||
|
if (signal(SIGUSR1, SIG_IGN) != SIG_IGN) {
|
||||||
|
signal(SIGUSR1, remaining_time);
|
||||||
|
}
|
||||||
|
|
||||||
run:
|
run:
|
||||||
notify_send(timers[i].cmt);
|
notify_send(timers[i].cmt);
|
||||||
sleep(timers[i].tmr);
|
|
||||||
|
for (timecount = 0; timecount < timers[i].tmr; timecount++) {
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
|
||||||
i + 1 >= LEN(timers) ? i = 0 : i++; /* i infinal loop */
|
i + 1 >= LEN(timers) ? i = 0 : i++; /* i infinal loop */
|
||||||
goto run;
|
goto run;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user