From d65824357647ac0123186134b165f1fede999cc6 Mon Sep 17 00:00:00 2001 From: Michael Czigler Date: Fri, 24 Jul 2020 11:42:07 -0400 Subject: [PATCH] squash refactoring, bump version to 0.1.2 kfc: change SEQ to SEQUENCE kfc: remove setenv() function kfc: cleanup and commenting kfc: remove randf kfc: cleanup kfc: cleanup remove kfc.h replace system() with popen() README Update README Update fix '/' allocated memory, refactor len variable changed len and fp from global to local variables change from global to local variable change *flag variables to local variables free at end of main() changed and from global to local variables add default directory if XDG_CONFIG_HOME does not exist realloc memory for sel in random_palette() change from gloval to local variable change sval from global to local variable realloc() memory when selecting a palette fix random palette failures kfc cleanup change getenv() to threadsafe operation main(): free variable Update README to thank E5ten for his help formatting cleanup Update README remove free(tmp) since it's an invalid pointer Add files via upload cleanup formatting rename screenshot image in docs/ directory fix sel malloc() fix sel malloc() fix realloc cleanup --- Makefile | 2 +- README | 18 +-- docs/screenshot.png | Bin 0 -> 28395 bytes kfc.c | 324 +++++++++++++++++++++++++++----------------- kfc.h | 45 ------ 5 files changed, 207 insertions(+), 182 deletions(-) create mode 100644 docs/screenshot.png delete mode 100644 kfc.h diff --git a/Makefile b/Makefile index 840270f..da32f8d 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ CC ?= gcc all: kfc -kfc: kfc.c kfc.h Makefile +kfc: kfc.c Makefile $(CC) -O3 $(CFLAGS) -o $@ $< -lX11 $(LDFLAGS) install: all diff --git a/README b/README index 66dc529..19fe117 100644 --- a/README +++ b/README @@ -12,17 +12,17 @@ windows. This allows one to achieve consistent colors across all terminal utilities and applications. This application has similar functionality to okpal but is designed with execution speed in mind. There are currently 300 light and dark color palettes offered at this time that can be applied and quickly swapped -out for others. +out for others. COMPATIBILITY ------------- -Compatibility with the following terminator-emulators on KISS Linux have been -tested and confirmed: +Compatibility with the following terminator-emulators have been tested and +confirmed on KISS Linux [1]: -- simple terminal, st [1] -- alacritty [2] +- simple terminal, st [2] +- alacritty [3] DEPENDENCIES @@ -44,7 +44,8 @@ Building and installing from source: Installing on KISS Linux: - kiss b kfc && kiss i kfc + kiss b kfc + kiss i kfc USAGE @@ -97,8 +98,9 @@ in the docs/ folder) by creating a Pull Request. REFERENCES ---------- [0] https://github.com/dylanaraps/okpal -[1] Note that background, foreground and cursor color setting does not work +[1] https://k1ss.org +[2] Note that background, foreground and cursor color setting does not work without applying the 'OSC 10 11 12' patch. https://st.suckless.org -[2] Confirmed to work in wayland (per sdsddsd1). +[3] Confirmed to work in wayland (per sdsddsd1). https://github.com/mcpcpc/kfc/issues/1#issuecomment-657241830 diff --git a/docs/screenshot.png b/docs/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..defb3c3f8a214103497cfeb2d3711b4bda4d65d1 GIT binary patch literal 28395 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 literal 0 HcmV?d00001 diff --git a/kfc.c b/kfc.c index 3dc6102..d0b1424 100644 --- a/kfc.c +++ b/kfc.c @@ -8,27 +8,64 @@ #include #include #include -#include "kfc.h" -struct dirent **de; +#define VERSION "0.1.2" -static int i, cval, randf; -static int rflag, lflag, pflag = 0; /* argument flags */ -static size_t len = BUFF; -static char *line, *sval, *mode, *conf, *evar, *eval, *seq = NULL; -static char sel[BUFF]; -static FILE *fp; +#define SEQUENCE "printf \"\ +\\033]4;0;#$(echo $color00)\\033\\ \ +\\033]4;1;#$(echo $color01)\\033\\ \ +\\033]4;2;#$(echo $color02)\\033\\ \ +\\033]4;3;#$(echo $color03)\\033\\ \ +\\033]4;4;#$(echo $color04)\\033\\ \ +\\033]4;5;#$(echo $color05)\\033\\ \ +\\033]4;6;#$(echo $color06)\\033\\ \ +\\033]4;7;#$(echo $color07)\\033\\ \ +\\033]4;8;#$(echo $color08)\\033\\ \ +\\033]4;9;#$(echo $color09)\\033\\ \ +\\033]4;10;#$(echo $color10)\\033\\ \ +\\033]4;11;#$(echo $color11)\\033\\ \ +\\033]4;12;#$(echo $color12)\\033\\ \ +\\033]4;12;#$(echo $color13)\\033\\ \ +\\033]4;12;#$(echo $color14)\\033\\ \ +\\033]4;12;#$(echo $color15)\\033\\ \ +\\033]10;#$(echo $foreground)\\033\\ \ +\\033]11;#$(echo $background)\\033\\ \ +\\033]12;#$(echo $cursor)\\033\\ \ +\\033[21D\"" + +#define PALETTE "\ +\033[48;5;0m \033[0m\ +\033[48;5;1m \033[0m\ +\033[48;5;2m \033[0m\ +\033[48;5;3m \033[0m\ +\033[48;5;4m \033[0m\ +\033[48;5;5m \033[0m\ +\033[48;5;6m \033[0m\ +\033[48;5;7m \033[0m\n\ +\033[48;5;8m \033[0m\ +\033[48;5;9m \033[0m\ +\033[48;5;10m \033[0m\ +\033[48;5;11m \033[0m\ +\033[48;5;12m \033[0m\ +\033[48;5;13m \033[0m\ +\033[48;5;14m \033[0m\ +\033[48;5;15m \033[0m\n" + +static char *seq; /* path to palette source directory */ +static char *conf; /* path to configuration file */ +static char *mode = "dark"; /* selected mode string */ +static char *sval = NULL; /* selected palette string */ static void find_palettes(void) { - if ( access("/usr/share/kfc/palettes", F_OK) == 0 ) + if (access("/usr/share/kfc/palettes", F_OK) == 0) { - setenv("KFC_SEQ", "/usr/share/kfc/palettes", 1); + seq = "/usr/share/kfc/palettes"; } - else if ( access("palettes", F_OK) == 0 ) + else if (access("palettes", F_OK) == 0) { - setenv("KFC_SEQ", "palettes", 1); + seq = "palettes"; } else { @@ -38,85 +75,92 @@ find_palettes(void) } static void -select_palette(void) +select_palette(char *sel) { - line = malloc(sizeof(char) * len); - fp = fopen(sel, "r"); - - if (fp == NULL) - { - fprintf(stderr, "Selected palette does not exist\n"); - exit(1); - } - - while(fgets(line, len, fp) != NULL) - { - evar = strtok(line, "="); - eval = strtok(NULL, "="); - setenv(evar, eval, 1); - } - - fclose(fp); - free(line); - fp = fopen(conf, "w"); - fprintf(fp, "%s", sel); - fclose(fp); - system(SEQ); + char *evar, *eval, *line; + FILE *fp = fopen(sel, "r"); + size_t len = 255; + + line = malloc(sizeof(char) * len); + + if (fp == NULL) + { + fprintf(stderr, "Selected palette does not exist\n"); + exit(1); + } + + while (fgets(line, len, fp) != NULL) + { + evar = strtok(line, "="); + eval = strtok(NULL, "="); + setenv(evar, eval, 1); + } + + fclose(fp); + free(line); + fp = fopen(conf, "w"); + fprintf(fp, "%s", sel); + fclose(fp); + fp = popen(SEQUENCE, "w"); + pclose(fp); } static void -list_palette(void) +list_palette(char *sel) { - int n = scandir(sel, &de, NULL, alphasort); + struct dirent **de; + int n = scandir(sel, &de, NULL, alphasort); while (n--) - { - if (de[n]->d_type == 8) - { - printf("%s/%s\n", mode, de[n]->d_name); - } - } - - free(de); + { + if (de[n]->d_type == 8) + { + printf("%s/%s\n", mode, de[n]->d_name); + } + } + + free(de); } static void -random_palette(void) +random_palette(char *sel) { - int n = scandir(sel, &de, NULL, alphasort); - randf = 0; - - srand(time(0)); - i = (rand() % (n - 0 + 1)) + 0; - - while(n--) - { - if (i == randf) - { - strcat(sel, "/"); - strcat(sel, de[n]->d_name); - } - randf++; - } - free(de); + struct dirent **de; + int n = scandir(sel, &de, NULL, alphasort); + + srand(time(0)); + int i = (rand() % (n - 0 + 1)) + 0; + + while (n--) + { + if (i == n) + { + sval = de[n]->d_name; + } + } + + free(de); } static void print_palette(void) { - line = malloc(sizeof(char) * len); - fp = fopen(conf, "r"); + FILE *fp = fopen(conf, "r"); + size_t len = 255; + char *line; - if (fp == NULL) - { - fprintf(stderr, "No palette set or 'current' file missing\n"); - exit(1); - } + line = malloc(sizeof(char) * len); + + if (fp == NULL) + { + fprintf(stderr, "No palette set or config file missing\n"); + exit(1); + } - fgets(line,len, fp); - puts(line); - fclose(fp); - free(line); + fgets(line, len, fp); + puts(line); + fclose(fp); + free(line); printf(PALETTE); } @@ -132,99 +176,123 @@ usage: kfc [-L] [-r|-s palette] [-l|-p|-v]\n \ -l List all palettes (dark themes by default)\n \ -p Print current palette\n \ -v Show version information\n"); - exit(1); + exit(1); } int main(int argc, char **argv) { - extern char *optarg; - extern int optind, optopt; + extern char *optarg; + extern int optind, optopt; + int cval; + int rflag = 0; + int lflag = 0; + int pflag = 0; + size_t len; + char *sel, *tmp; if (argc == 1) - { + { fprintf(stderr, "No argument(s) provided\n"); exit(1); - } + } - mode = "dark"; + tmp = getenv("XDG_CONFIG_HOME"); - if ( (conf = getenv("XDG_CONFIG_HOME")) == NULL ) + if (tmp != NULL) { - fprintf(stderr, "XDG_CONFIG_HOME not defined\n"); - exit(1); + len = strlen(tmp) + sizeof("/kfc/current"); + conf = malloc(sizeof(char) * len); + snprintf(conf, len, "%s", tmp); + } + else + { + puts("XDG_CONFIG_HOME is not defined. Defaulting to HOME/.config"); + tmp = getenv("HOME"); + len = strlen(tmp) + sizeof("/.config/kfc/current"); + conf = malloc(sizeof(char) * len); + snprintf(conf, len, "%s/.config", tmp); } - strcat(conf, "/kfc"); - if ( mkdir(conf, 0777) == 0 ) - { - puts("Created 'kfc' directory in XDG_CONFIG_HOME"); - } + strcat(conf, "/kfc"); - strcat(conf, "/current"); + if (mkdir(conf, 0777) == 0) + { + puts("Created 'kfc' directory in XDG_CONFIG_HOME"); + } + + strcat(conf, "/current"); find_palettes(); - while ( ( cval = getopt(argc, argv, "rlLpvs:" ) ) != -1 ) + while ((cval = getopt(argc, argv, "rlLpvs:" )) != -1) { switch (cval) { case 'v': - puts("0.1.1"); + puts(VERSION); break; case 'L': mode = "light"; break; case 'l': - lflag++; + lflag++; break; case 'r': - rflag++; - break; + rflag++; + break; case 's': - if (rflag) - { - fprintf(stderr, "Cannot specify -r with -s\n"); - usage(); - } - sval = optarg; + if (rflag) + { + fprintf(stderr, "Cannot specify -r with -s\n"); + usage(); + } + sval = optarg; break; case 'p': - pflag++; - break; + pflag++; + break; case ':': fprintf(stderr, "Option -%c requires an operand\n", optopt); usage(); - break; + break; case '?': fprintf(stderr, "Unrecognized option: -%c\n", optopt); usage(); - break; + break; } - } - - seq = getenv("KFC_SEQ"); - snprintf(sel, sizeof(sel), "%s/%s", seq, mode); - - if (lflag) - { - list_palette(); - } - - if (rflag) - { - random_palette(); - select_palette(); - } - else if (sval) - { - snprintf(sel, sizeof(sel), "%s/%s/%s", seq, mode, sval); - select_palette(); - } - - if (pflag) - { - print_palette(); - } + } + + len = strlen(seq) + + sizeof("/") + + strlen(mode) + + (sval ? strlen(sval) + 1 : 0); + sel = malloc(sizeof(char) * len); + + if (lflag) + { + snprintf(sel, len, "%s/%s", seq, mode); + list_palette(sel); + } + + if (rflag) + { + snprintf(sel, len, "%s/%s", seq, mode); + random_palette(sel); + len = strlen(sel) + + sizeof("/") + + strlen(sval); + sel = (char *)realloc(sel, sizeof(char) * len); + } + + if (sval) + { + snprintf(sel, len, "%s/%s/%s", seq, mode, sval); + select_palette(sel); + } + + if (pflag) print_palette(); + + free(sel); return 0; } diff --git a/kfc.h b/kfc.h deleted file mode 100644 index 30fa543..0000000 --- a/kfc.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef KFC_H -#define KFC_H - -#define BUFF 1023 -#define SEQ "printf \"\ -\\033]4;0;#$(echo $color00)\\033\\ \ -\\033]4;1;#$(echo $color01)\\033\\ \ -\\033]4;2;#$(echo $color02)\\033\\ \ -\\033]4;3;#$(echo $color03)\\033\\ \ -\\033]4;4;#$(echo $color04)\\033\\ \ -\\033]4;5;#$(echo $color05)\\033\\ \ -\\033]4;6;#$(echo $color06)\\033\\ \ -\\033]4;7;#$(echo $color07)\\033\\ \ -\\033]4;8;#$(echo $color08)\\033\\ \ -\\033]4;9;#$(echo $color09)\\033\\ \ -\\033]4;10;#$(echo $color10)\\033\\ \ -\\033]4;11;#$(echo $color11)\\033\\ \ -\\033]4;12;#$(echo $color12)\\033\\ \ -\\033]4;12;#$(echo $color13)\\033\\ \ -\\033]4;12;#$(echo $color14)\\033\\ \ -\\033]4;12;#$(echo $color15)\\033\\ \ -\\033]10;#$(echo $foreground)\\033\\ \ -\\033]11;#$(echo $background)\\033\\ \ -\\033]12;#$(echo $cursor)\\033\\ \ -\\033[21D\"" - -#define PALETTE "\ -\033[48;5;0m \033[0m\ -\033[48;5;1m \033[0m\ -\033[48;5;2m \033[0m\ -\033[48;5;3m \033[0m\ -\033[48;5;4m \033[0m\ -\033[48;5;5m \033[0m\ -\033[48;5;6m \033[0m\ -\033[48;5;7m \033[0m\n\ -\033[48;5;8m \033[0m\ -\033[48;5;9m \033[0m\ -\033[48;5;10m \033[0m\ -\033[48;5;11m \033[0m\ -\033[48;5;12m \033[0m\ -\033[48;5;13m \033[0m\ -\033[48;5;14m \033[0m\ -\033[48;5;15m \033[0m\n" - -#endif