diff options
author | Mikkel Oscar Lyderik <mikkeloscar@gmail.com> | 2015-12-17 18:25:25 +0100 |
---|---|---|
committer | Mikkel Oscar Lyderik <mikkeloscar@gmail.com> | 2015-12-17 18:37:09 +0100 |
commit | c97555d9f085138814b49e57c353d3b88e6b6fb8 (patch) | |
tree | fd566c6f7e23764d2124be44c2e2c98f38582fde /swaygrab/main.c | |
parent | b656297d4f44cd1da398677400e0c20b01571153 (diff) |
swaygrab: add default output filename.
With this it's possible to run `swaygrab` without a filename argument.
With no filename supplied it will use a default name based on the
current time.
The default file will get the extension `png` for screenshots and `webm`
for video capture.
Diffstat (limited to 'swaygrab/main.c')
-rw-r--r-- | swaygrab/main.c | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/swaygrab/main.c b/swaygrab/main.c index 671b8737..1120f0d5 100644 --- a/swaygrab/main.c +++ b/swaygrab/main.c @@ -135,6 +135,19 @@ char *get_focused_output(int socketfd) { return output; } +char *default_filename(const char *extension) { + int ext_len = strlen(extension); + int len = 28 + ext_len; // format: "2015-12-17-180040_swaygrab.ext" + char *filename = malloc(len * sizeof(char)); + time_t t = time(NULL); + + struct tm *lt = localtime(&t); + strftime(filename, len, "%Y-%m-%d-%H%M%S_swaygrab.", lt); + strncat(filename, extension, ext_len); + + return filename; +} + int main(int argc, char **argv) { static int capture = 0, raw = 0; char *socket_path = NULL; @@ -214,10 +227,7 @@ int main(int argc, char **argv) { if (optind >= argc + 1) { sway_abort("Invalid usage. See `man swaygrab` %d %d", argc, optind); } - } else { - if (optind >= argc) { - sway_abort("Invalid usage. See `man swaygrab`"); - } + } else if (optind < argc) { file = argv[optind]; } @@ -228,6 +238,14 @@ int main(int argc, char **argv) { output = get_focused_output(socketfd); } + if (!file) { + if (!capture) { + file = default_filename("png"); + } else { + file = default_filename("webm"); + } + } + if (!capture) { grab_and_apply_magick(file, output, socketfd, raw); } else { @@ -235,6 +253,7 @@ int main(int argc, char **argv) { } free(output); + free(file); close(socketfd); return 0; } |