aboutsummaryrefslogtreecommitdiff
path: root/swaygrab/main.c
diff options
context:
space:
mode:
authorMikkel Oscar Lyderik <mikkeloscar@gmail.com>2015-12-17 18:25:25 +0100
committerMikkel Oscar Lyderik <mikkeloscar@gmail.com>2015-12-17 18:37:09 +0100
commitc97555d9f085138814b49e57c353d3b88e6b6fb8 (patch)
treefd566c6f7e23764d2124be44c2e2c98f38582fde /swaygrab/main.c
parentb656297d4f44cd1da398677400e0c20b01571153 (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.c27
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;
}