Files
FERRUM/themes.h
2025-04-28 12:35:52 +02:00

92 lines
2.7 KiB
C

#ifndef THEMES_H
#define THEMES_H
#include "common.h"
typedef struct {
// Standard console colors
WORD PRIMARY_COLOR; // Main text color
WORD SECONDARY_COLOR; // Secondary text color
WORD ACCENT_COLOR; // Color for highlights/important elements
WORD SUCCESS_COLOR; // Success messages
WORD ERROR_COLOR; // Error messages
WORD WARNING_COLOR; // Warning messages
WORD INVALID_COMMAND_COLOR; // unrecognized command
// UI element colors
WORD HEADER_COLOR; // Headers and titles
WORD STATUS_BAR_COLOR; // Status bar background
WORD STATUS_TEXT_COLOR; // Status bar text
WORD PROMPT_COLOR; // Command prompt
// File system colors
WORD DIRECTORY_COLOR; // Directory names
WORD EXECUTABLE_COLOR; // Executable files
WORD TEXT_FILE_COLOR; // Text files
WORD IMAGE_FILE_COLOR; // Image files
WORD CODE_FILE_COLOR; // Code files (non-executable)
WORD ARCHIVE_FILE_COLOR; // Archive files
// Syntax highlighting colors
WORD SYNTAX_KEYWORD; // Keywords in syntax highlighting
WORD SYNTAX_STRING; // Strings in syntax highlighting
WORD SYNTAX_COMMENT; // Comments in syntax highlighting
WORD SYNTAX_NUMBER; // Numbers in syntax highlighting
WORD SYNTAX_PREPROCESSOR; // Preprocessor in syntax highlighting
// ANSI true color definitions (for modern terminals)
char ANSI_BASE[20]; // Base color
char ANSI_SURFACE[20]; // Surface color
char ANSI_OVERLAY[20]; // Overlay color
char ANSI_MUTED[20]; // Muted color
char ANSI_SUBTLE[20]; // Subtle color
char ANSI_TEXT[20]; // Text color
char ANSI_LOVE[20]; // Love/Red color
char ANSI_GOLD[20]; // Gold color
char ANSI_ROSE[20]; // Rose/pink color
char ANSI_PINE[20]; // Pine color
char ANSI_FOAM[20]; // Foam color
char ANSI_IRIS[20]; // Iris color
char ANSI_HIGHLIGHT[20]; // Highlight color
char ANSI_INVALID_COMMAND[20];
// Flag to indicate if ANSI colors should be used
BOOL use_ansi_colors;
// Name of the theme
char name[32];
} ShellTheme;
// Initialize theme system
void init_theme_system(void);
// Shutdown theme system
void shutdown_themes(void);
// Initialize themes for shell startup
void init_themes(void);
// Load a theme by name
int load_theme(const char *theme_name);
// Apply current theme settings
void apply_current_theme(void);
// Get current theme
const ShellTheme *get_current_theme(void);
// List available themes
void list_available_themes(void);
// Get theme names for tab completion
char **get_theme_names(int *theme_count);
// Command handler for "theme" command
int lsh_theme(char **args);
// Current active theme
extern ShellTheme current_theme;
#endif // THEMES_H