Use default terminal color instead of customised color

This commit is contained in:
Night Kaly 2024-11-12 16:53:50 +00:00
parent f6fe9a2982
commit b077467604
Signed by: night0721
SSH key fingerprint: SHA256:B/hgVwUoBpx5vdNsXl9w8XwZljA9766uk6T4ubZp5HM
4 changed files with 22 additions and 33 deletions

37
ccc.c
View file

@ -610,7 +610,7 @@ void add_file_stat(char *filename, char *path, int ftype)
if (stat(path, &file_stat) == -1) { if (stat(path, &file_stat) == -1) {
/* can't be triggered? */ /* can't be triggered? */
if (errno == EACCES) if (errno == EACCES)
arraylist_add(files, filename, path, NULL, REG, NULL, WHITE, false, false); arraylist_add(files, filename, path, NULL, REG, NULL, 37, false, false);
} }
int type; int type;
@ -631,39 +631,37 @@ void add_file_stat(char *filename, char *path, int ftype)
else else
memcpy(icon_str, ext_icon->icon, 5); memcpy(icon_str, ext_icon->icon, 5);
char color[12]; int color = 37;
if (S_ISDIR(file_stat.st_mode)) { if (S_ISDIR(file_stat.st_mode)) {
type = DRY; /* dir */ type = DRY; /* dir */
strncpy(color, BLUE, 12); color = 34;
memcpy(icon_str, "󰉋", 5); memcpy(icon_str, "󰉋", 5);
} else if (S_ISREG(file_stat.st_mode)) { } else if (S_ISREG(file_stat.st_mode)) {
type = REG; /* regular file */ type = REG; /* regular file */
strncpy(color, WHITE, 12); color = 37;
} else if (S_ISLNK(file_stat.st_mode)) { } else if (S_ISLNK(file_stat.st_mode)) {
type = LNK; /* symbolic link */ type = LNK; /* symbolic link */
strncpy(color, GREEN, 12); color = 32;
} else if (S_ISCHR(file_stat.st_mode)) { } else if (S_ISCHR(file_stat.st_mode)) {
type = CHR; /* character device */ type = CHR; /* character device */
strncpy(color, YELLOW, 12); color = 33;
} else if (S_ISSOCK(file_stat.st_mode)) { } else if (S_ISSOCK(file_stat.st_mode)) {
type = SOC; /* socket */ type = SOC; /* socket */
strncpy(color, PINK, 12); color = 35;
} else if (S_ISBLK(file_stat.st_mode)) { } else if (S_ISBLK(file_stat.st_mode)) {
type = BLK; /* block device */ type = BLK; /* block device */
strncpy(color, YELLOW, 12); color = 33;
} else if (S_ISFIFO(file_stat.st_mode)) { } else if (S_ISFIFO(file_stat.st_mode)) {
type = FIF; /* FIFO */ type = FIF; /* FIFO */
strncpy(color, PINK, 12); color = 35;
} else {
strncpy(color, WHITE, 12);
} }
/* If file is to be marked */ /* If file is to be marked */
if (ftype == 1 || ftype == 2) { if (ftype == 1 || ftype == 2) {
/* Force if user is marking all files */ /* Force if user is marking all files */
bool force = ftype == 2 ? true : false; bool force = ftype == 2 ? true : false;
arraylist_add(marked, filename, path, NULL, type, icon_str, WHITE, true, force); arraylist_add(marked, filename, path, NULL, type, icon_str, 37, true, force);
/* free type and return without allocating more stuff */ /* free type and return without allocating more stuff */
return; return;
} }
@ -704,7 +702,7 @@ void add_file_stat(char *filename, char *path, int ftype)
/* get file mode string */ /* get file mode string */
char *mode_str = get_file_mode(file_stat.st_mode); char *mode_str = get_file_mode(file_stat.st_mode);
if (mode_str[0] == '-' && (mode_str[3] == 'x' || mode_str[6] == 'x' || mode_str[9] == 'x')) { if (mode_str[0] == '-' && (mode_str[3] == 'x' || mode_str[6] == 'x' || mode_str[9] == 'x')) {
strncpy(color, GREEN, 12); color = 32;
} }
/* mode_str(11) + time(17) + size_size + 2 spaces + 1 null */ /* mode_str(11) + time(17) + size_size + 2 spaces + 1 null */
@ -713,7 +711,7 @@ void add_file_stat(char *filename, char *path, int ftype)
snprintf(total_stat, stat_size, "%s %s %-*s", mode_str, time, size_size, size); snprintf(total_stat, stat_size, "%s %s %-*s", mode_str, time, size_size, size);
/* DIR if color is blue */ /* DIR if color is blue */
if (strncmp(color, BLUE, 12) == 0) if (color == 34)
arraylist_add(tmp1, filename, path, total_stat, type, icon_str, color, false, false); arraylist_add(tmp1, filename, path, total_stat, type, icon_str, color, false, false);
else else
arraylist_add(tmp2, filename, path, total_stat, type, icon_str, color, false, false); arraylist_add(tmp2, filename, path, total_stat, type, icon_str, color, false, false);
@ -794,12 +792,13 @@ void list_files(void)
} }
/* print the actual filename and stats */ /* print the actual filename and stats */
char *line = get_line(files, i, file_details, show_icons); char *line = get_line(files, i, file_details, show_icons);
char *color = files->items[i].color; int color = files->items[i].color;
/* check is file marked for action */ /* check is file marked for action */
bool is_marked = arraylist_search(marked, files->items[i].path, false) != -1; bool is_marked = arraylist_search(marked, files->items[i].path, false) != -1;
move_cursor(i + 1, 1); move_cursor(i + 1, 1);
bprintf("\033[38;2;0;0;0m\033[%s;2;%sm%s\033[0m\n", if (is_marked) color = 32;
is_selected ? "48" : "38", is_marked ? GREEN : color, line); bprintf("\033[30m\033[%dm%s\033[0m\n",
is_selected ? color + 10 : color, line);
free(line); free(line);
} }
@ -864,9 +863,9 @@ void show_file_content(void)
populate_files(current_file.name, 0, &files_visit); populate_files(current_file.name, 0, &files_visit);
for (long i = 0; i < files_visit->length; i++) { for (long i = 0; i < files_visit->length; i++) {
char *line = get_line(files_visit, i, false, show_icons); char *line = get_line(files_visit, i, false, show_icons);
char *color = files_visit->items[i].color; int color = files_visit->items[i].color;
move_cursor(i + 1, half_width); move_cursor(i + 1, half_width);
bprintf("\033[K\033[38;2;%sm%s\033[0m\n", color, line); bprintf("\033[K\033[%dm%s\033[m\n", color, line);
} }
arraylist_free(files_visit); arraylist_free(files_visit);
return; return;

View file

@ -47,15 +47,6 @@ In COLS:
#define SPACE 0x20 #define SPACE 0x20
#define TILDE 0x7E #define TILDE 0x7E
/* Colros */
#define GREEN "166;227;161"
#define BLUE "137;180;250"
#define PINK "245;194;231"
#define RED "243;139;168"
#define YELLOW "249;226;175"
#define LAVENDER "180;190;254"
#define WHITE "205;214;244"
enum keys { enum keys {
BACKSPACE = 127, BACKSPACE = 127,
ARROW_LEFT = 1000, ARROW_LEFT = 1000,

5
file.c
View file

@ -71,10 +71,9 @@ void arraylist_remove(ArrayList *list, long index)
/* /*
* Force will not remove duplicate marked files, instead it just skip adding * Force will not remove duplicate marked files, instead it just skip adding
*/ */
void arraylist_add(ArrayList *list, char *name, char *path, char *stats, int type, char *icon, char color[12], bool marked, bool force) void arraylist_add(ArrayList *list, char *name, char *path, char *stats, int type, char *icon, int color, bool marked, bool force)
{ {
file new_file = { name, path, type, stats, icon }; file new_file = { name, path, type, stats, icon, color };
memcpy(new_file.color, color, 12);
if (list->capacity != list->length) { if (list->capacity != list->length) {
if (marked) { if (marked) {

4
file.h
View file

@ -20,7 +20,7 @@ typedef struct file {
int type; int type;
char *stats; char *stats;
char *icon; char *icon;
char color[12]; int color;
} file; } file;
typedef struct ArrayList { typedef struct ArrayList {
@ -33,7 +33,7 @@ ArrayList *arraylist_init(size_t capacity);
void arraylist_free(ArrayList *list); void arraylist_free(ArrayList *list);
long arraylist_search(ArrayList *list, char *filepath, bool bname); long arraylist_search(ArrayList *list, char *filepath, bool bname);
void arraylist_remove(ArrayList *list, long index); void arraylist_remove(ArrayList *list, long index);
void arraylist_add(ArrayList *list, char *name, char *path, char *stats, int type, char *icon, char color[12], bool marked, bool force); void arraylist_add(ArrayList *list, char *name, char *path, char *stats, int type, char *icon, int color, bool marked, bool force);
char *get_line(ArrayList *list, long index, bool detail, bool icons); char *get_line(ArrayList *list, long index, bool detail, bool icons);
#endif #endif