commit 84bd54b91380adea157135aada52d36803f91d86
Author: Raniconduh <clagv.randomgames@gmail.com>
Date: Mon Jan 31 11:53:37 2022 +0000
diff --git a/include/io.h b/include/io.h
index bd7eca0..46b4c50 100644
--- a/include/io.h
+++ b/include/io.h
@@ -1013 +1030 @@
enum colors {
- BLUE = 1,
- CYAN = 2,
- GREEN = 3,
- MAGENTA = 4,
- YELLOW = 5,
- RED = 6,
- WHITE = 7,
+ COLOR_DIR = 1,
+ COLOR_LINK = 2,
+ COLOR_EXEC = 3,
+ COLOR_SOCK = 4,
+ COLOR_FIFO = 5,
+ COLOR_UNKNOWN = 6,
+ COLOR_FILE = 7,
+ COLOR_BLOCK = 8,
+ COLOR_MEDIA = 9,
+ COLOR_ARCHIVE = 10,
+
+ CUSTOM_FILE = 11,
+ CUSTOM_DIR = 12,
+ CUSTOM_FIFO = 13,
+ CUSTOM_LINK = 14,
+ CUSTOM_BLOCK = 15,
+ CUSTOM_SOCK = 16,
+ CUSTOM_EXEC = 17,
+ CUSTOM_UNKNOWN = 18,
+ CUSTOM_MEDIA = 19,
+ CUSTOM_ARCHIVE = 20,
+
+ RED = 21,
+ WHITE = 22,
};
enum keys {
diff --git a/include/opts.h b/include/opts.h
index 8d04b34..62bb4c2 100644
--- a/include/opts.h
+++ b/include/opts.h
@@ -27 +211 @@
#define _OPTS_H
#include <stdbool.h>
+#include <stdint.h>
+// RGB values can be up to 10 bits (<= 1000)
+#define RGB(R, G, B) (((R << 20) | (G << 10)) | B)
+#define GET_RGB(C) ((C >> 20) & 0x3FF), ((C >> 10) & 0x3FF), (C & 0x3FF)
#define ICONS_VAR "icons"
extern bool show_icons;
@@ -117 +1526 @@ extern bool show_dot_files;
extern bool color;
#define LONG_VAR "long"
extern bool p_long;
-
+#define DIR_COLOR_VAR "dir_color"
+extern uint32_t dir_color;
+#define REG_COLOR_VAR "reg_color"
+extern uint32_t reg_color;
+#define FIFO_COLOR_VAR "fifo_color"
+extern uint32_t fifo_color;
+#define LINK_COLOR_VAR "link_color"
+extern uint32_t link_color;
+#define BLK_COLOR_VAR "block_color"
+extern uint32_t blk_color;
+#define SOCK_COLOR_VAR "sock_color"
+extern uint32_t sock_color;
+#define UNKNOWN_COLOR_VAR "unknown_color"
+extern uint32_t unknown_color;
+#define EXEC_COLOR_VAR "exec_color"
+extern uint32_t exec_color;
+#define MEDIA_COLOR_VAR "media_color"
+extern uint32_t media_color;
+#define ARCHIVE_COLOR_VAR "archive_color"
+extern uint32_t archive_color;
bool check_config(void);
void create_config(void);
diff --git a/src/io.c b/src/io.c
index e0e5bfc..8bcda21 100644
--- a/src/io.c
+++ b/src/io.c
@@ -5419 +5449 @@ void terminate_curses(void) {
void set_color(void) {
if (color) {
- init_pair(BLUE, COLOR_BLUE, COLOR_BLACK);
- init_pair(CYAN, COLOR_CYAN, COLOR_BLACK);
- init_pair(GREEN, COLOR_GREEN, COLOR_BLACK);
- init_pair(MAGENTA, COLOR_MAGENTA, COLOR_BLACK);
- init_pair(YELLOW, COLOR_YELLOW, COLOR_BLACK);
+ init_color(CUSTOM_DIR, GET_RGB(dir_color));
+ init_pair(COLOR_DIR, CUSTOM_DIR, COLOR_BLACK);
+
+ init_color(CUSTOM_LINK, GET_RGB(link_color));
+ init_pair(COLOR_LINK, CUSTOM_LINK, COLOR_BLACK);
+
+ init_color(CUSTOM_EXEC, GET_RGB(exec_color));
+ init_pair(COLOR_EXEC, CUSTOM_EXEC, COLOR_BLACK);
+
+ init_color(CUSTOM_SOCK, GET_RGB(sock_color));
+ init_pair(COLOR_SOCK, CUSTOM_SOCK, COLOR_BLACK);
+
+ init_color(CUSTOM_FIFO, GET_RGB(fifo_color));
+ init_pair(COLOR_FIFO, CUSTOM_FIFO, COLOR_BLACK);
+
+ init_color(CUSTOM_BLOCK, GET_RGB(blk_color));
+ init_pair(COLOR_BLOCK, CUSTOM_BLOCK, COLOR_BLACK);
+
+ init_color(CUSTOM_UNKNOWN, GET_RGB(unknown_color));
+ init_pair(COLOR_UNKNOWN, CUSTOM_UNKNOWN, COLOR_BLACK);
+
+ init_color(CUSTOM_MEDIA, GET_RGB(media_color));
+ init_pair(COLOR_MEDIA, CUSTOM_MEDIA, COLOR_BLACK);
+
+ init_color(CUSTOM_ARCHIVE, GET_RGB(archive_color));
+ init_pair(COLOR_ARCHIVE, CUSTOM_ARCHIVE, COLOR_BLACK);
+
+ init_color(CUSTOM_FILE, GET_RGB(reg_color));
+ init_pair(COLOR_FILE, CUSTOM_FILE, COLOR_BLACK);
+
init_pair(RED, COLOR_RED, COLOR_BLACK);
init_pair(WHITE, COLOR_WHITE, COLOR_BLACK);
} else {
- init_pair(BLUE, COLOR_WHITE, COLOR_BLACK);
- init_pair(CYAN, COLOR_WHITE, COLOR_BLACK);
- init_pair(GREEN, COLOR_WHITE, COLOR_BLACK);
- init_pair(MAGENTA, COLOR_WHITE, COLOR_BLACK);
- init_pair(YELLOW, COLOR_WHITE, COLOR_BLACK);
+ init_pair(COLOR_DIR, COLOR_WHITE, COLOR_BLACK);
+ init_pair(COLOR_LINK, COLOR_WHITE, COLOR_BLACK);
+ init_pair(COLOR_EXEC, COLOR_WHITE, COLOR_BLACK);
+ init_pair(COLOR_SOCK, COLOR_WHITE, COLOR_BLACK);
+ init_pair(COLOR_FIFO, COLOR_WHITE, COLOR_BLACK);
+ init_pair(COLOR_UNKNOWN, COLOR_WHITE, COLOR_BLACK);
+ init_pair(COLOR_BLOCK, COLOR_WHITE, COLOR_BLACK);
+ init_pair(COLOR_MEDIA, COLOR_WHITE, COLOR_BLACK);
+ init_pair(COLOR_ARCHIVE, COLOR_WHITE, COLOR_BLACK);
+ init_pair(COLOR_FILE, COLOR_WHITE, COLOR_BLACK);
init_pair(RED, COLOR_WHITE, COLOR_BLACK);
init_pair(WHITE, COLOR_WHITE, COLOR_BLACK);
}
@@ -10429 +13429 @@ void curses_write_file(struct dir_entry_t * dir_entry, bool highlight) {
switch (dir_entry->file_type) {
case FILE_DIR:
- cp = BLUE;
+ cp = COLOR_DIR;
f_ident = '/';
break;
case FILE_FIFO:
- cp = YELLOW;
+ cp = COLOR_FIFO;
f_ident = '|';
break;
case FILE_BLK:
- cp = YELLOW;
+ cp = COLOR_BLOCK;
f_ident = '#';
break;
case FILE_LINK:
if (dir_entry->under_link == FILE_DIR)
u_text = "=> /";
- cp = CYAN;
+ cp = COLOR_LINK;
f_ident = '@';
break;
case FILE_SOCK:
- cp = MAGENTA;
+ cp = COLOR_SOCK;
f_ident = '=';
break;
case FILE_UNKNOWN:
- cp = RED;
+ cp = COLOR_UNKNOWN;
f_ident = '?';
break;
default:
@@ -13610 +16610 @@ void curses_write_file(struct dir_entry_t * dir_entry, bool highlight) {
switch (dir_entry->m_type) {
case MIME_MEDIA:
- cp = MAGENTA;
+ cp = COLOR_MEDIA;
break;
case MIME_ARCHIVE:
- cp = RED;
+ cp = COLOR_ARCHIVE;
break;
case MIME_UNKNOWN:
default:
@@ -15610 +18610 @@ void curses_write_file(struct dir_entry_t * dir_entry, bool highlight) {
if ((dir_entry->mode & POWNER(M_EXEC)) &&
dir_entry->file_type != FILE_LINK &&
dir_entry->file_type != FILE_DIR) {
- cp = GREEN;
+ cp = COLOR_EXEC;
if (f_ident == NO_IDENT) f_ident = '*';
} else if (cp == -1) {
- cp = WHITE;
+ cp = COLOR_FILE;
f_ident = ' ';
}
diff --git a/src/opts.c b/src/opts.c
index 8844be1..87231a4 100644
--- a/src/opts.c
+++ b/src/opts.c
@@ -15 +16 @@
#include <sys/stat.h>
#include <stdbool.h>
+#include <stdint.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
@@ -166 +1717 @@ bool show_dot_files = false;
bool color = true;
bool p_long = false;
+uint32_t dir_color = RGB(8, 584, 815); // blue
+uint32_t reg_color = RGB(800, 800, 800); // white
+uint32_t fifo_color = RGB(984, 812, 16); // yellow
+uint32_t link_color = RGB(502, 776, 710); // cyan
+uint32_t blk_color = RGB(984, 812, 16); // yellow
+uint32_t sock_color = RGB(573, 8, 353); // magenta
+uint32_t exec_color = RGB(4, 506, 239); // green
+uint32_t unknown_color = RGB(855, 176, 141); // red
+uint32_t media_color = RGB(573, 8, 353); // magenta
+uint32_t archive_color = RGB(855, 176, 141); // red
+
static char * default_config_dir = NULL;
static char * csc_config_path = NULL;
static char * csc_config_file = NULL;