diff options
author | lostd <lostd@2f30.org> | 2015-11-02 03:21:41 +0200 |
---|---|---|
committer | lostd <lostd@2f30.org> | 2015-11-02 03:21:41 +0200 |
commit | 1e18b85e56d98ca2daeb7adc587c28f5d653a01f (patch) | |
tree | 0d7c73f0b2ecdf91975addf7e87fbfba734e8ac5 | |
parent | c5283392fbf14c3a94be6b04e2561a14e9ec98df (diff) | |
download | nnn-1e18b85e56d98ca2daeb7adc587c28f5d653a01f.tar.gz |
Run screensaver after a period of idleness
-rw-r--r-- | config.def.h | 2 | ||||
-rw-r--r-- | noice.c | 13 |
2 files changed, 15 insertions, 0 deletions
diff --git a/config.def.h b/config.def.h index a355333..80cb48c 100644 --- a/config.def.h +++ b/config.def.h @@ -3,6 +3,8 @@ #define EMPTY " " int mtimeorder = 0; /* Set to 1 to sort by time in the default case */ +int idletimeout = 0; /* Screensaver timeout in seconds, 0 to disable */ +char *idlecmd = "rain"; /* The screensaver program */ struct assoc assocs[] = { { "\\.(avi|mp4|mkv|mp3|ogg|flac|mov)$", "mplayer" }, @@ -82,6 +82,7 @@ struct entry *dents; int n, cur; char *path, *oldpath; char *fltr; +int idle; /* * Layout: @@ -259,6 +260,7 @@ initcurses(void) intrflush(stdscr, FALSE); keypad(stdscr, TRUE); curs_set(FALSE); /* Hide cursor */ + timeout(1000); /* One second */ } void @@ -314,6 +316,10 @@ nextsel(char **run) int c, i; c = getch(); + if (c == -1) + idle++; + else + idle = 0; for (i = 0; i < LEN(bindings); i++) if (c == bindings[i].sym) { @@ -879,6 +885,13 @@ moretyping: initcurses(); break; } + /* Screensaver */ + if (idletimeout != 0 && idle == idletimeout) { + idle = 0; + exitcurses(); + spawn(idlecmd, NULL, NULL); + initcurses(); + } } } |