add minimalistic working version.

This commit is contained in:
NunoSempere 2023-08-20 11:46:34 +02:00
parent 25bb1ec9c2
commit 24f3108395
3 changed files with 72 additions and 26 deletions

14
LICENSE Normal file
View File

@ -0,0 +1,14 @@
Copyright (c) 2015-2020, Ivan Tham <pickfire@riseup.net>
2023- , Nuño Sempere <nuno.semperelh@protonmail.com>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

View File

@ -1,26 +0,0 @@
typedef enum {
start_work,
start_small_break,
start_long_break
} pomodoro_period;
static char *notify_start_work = "";
static char *notify_start_small_break = "";
static char *notify_start_long_break = "";
typedef struct {
unsigned int tmr;
pomodoro_period p;
} Timers;
static Timers timers[] = {
/* timer(s) comment */
{ 1500, start_work},
{ 300, start_small_break},
{ 1500, start_work},
{ 300, start_small_break},
{ 1500, start_work},
{ 300, start_small_break},
{ 1500, start_work},
{ 900, start_long_break},
};

58
spt.c Normal file
View File

@ -0,0 +1,58 @@
#include <unistd.h> // for the "sleep" & exec functions
#include <stdio.h> // snprintf
#include <stdlib.h> // exit
#define MAX_MSG_LEN 100
#define LEN(a) (sizeof(a) / sizeof(a[0]))
typedef struct {
unsigned int t;
char *msg;
} Timers;
static Timers timers[] = {
/* timer(s) comment */
{ 1500, "Time to start working!"},
{ 300, "Time to start resting!"},
{ 1500, "Time to start working!"},
{ 300, "Time to start resting!"},
{ 1500, "Time to start working!"},
{ 300, "Time to start resting!"},
{ 1500, "Time to start working!"},
{ 900, "Time to take a longer rest!" },
};
void spawn(char *argv[])
{
if (fork() == 0) {
// we need to fork the process so that
// when we exit the sent screen
// this program continues.
setsid();
execvp(argv[0], argv);
// printfn("spt: execvp %s\n", argv[0]);
perror(" failed");
exit(0);
}
}
void display_message_with_sent(char *msg){
char sh_command[MAX_MSG_LEN];
snprintf(sh_command, MAX_MSG_LEN, "echo '%s' | sent", msg); // NOLINT: We are being carefull here by considering MAX_ERROR_LENGTH explicitly.
printf("%s", sh_command);
char *spawn_args[] = {
"/bin/bash",
"-c",
sh_command,
NULL
};
fprintf(stderr, "%s\n", msg);
spawn(spawn_args);
}
int main(int argc, char *argv[]){
for(int i=0; ; i = (i+1) % LEN(timers)){
display_message_with_sent(timers[i].msg);
sleep(timers[i].t);
}
}