From 417d3ac80f5cd9b0c4389424c0122610e5613801 Mon Sep 17 00:00:00 2001 From: Wouter Van Rooy Date: Thu, 31 May 2012 22:27:53 +0200 Subject: Added configurable colours to terminal --- defaults.h | 5 +++++ svte.c | 39 +++++++++++++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/defaults.h b/defaults.h index ace2e91..a2ede96 100644 --- a/defaults.h +++ b/defaults.h @@ -41,3 +41,8 @@ #ifndef DEFAULT_TRANSPARENT_BG #define DEFAULT_TRANSPARENT_BG FALSE #endif +#ifndef DEFAULT_PALETTE_SIZE +#define DEFAULT_PALETTE_SIZE 16 +#endif +#define DEFAULT_FOREGROUND_COLOR "#c0c0c0" +#define DEFAULT_BACKGROUND_COLOR "#000" diff --git a/svte.c b/svte.c index afe404b..4465b76 100644 --- a/svte.c +++ b/svte.c @@ -88,7 +88,10 @@ typedef struct { gint window_height; gint window_width; gchar *word_chars; - + GdkColor foreground; + GdkColor background; + GdkColor *colour_palette; + gchar *cursor; } Settings; static Settings *config; @@ -321,8 +324,8 @@ static void tab_new() { vte_terminal_set_audible_bell(VTE_TERMINAL(t->vte), config->audible_bell); vte_terminal_set_background_transparent(VTE_TERMINAL(t->vte), config->bg_transparent); - vte_terminal_set_background_saturation(VTE_TERMINAL(t->vte), config->bg_saturation); - vte_terminal_set_background_image_file(VTE_TERMINAL(t->vte), config->bg_image); + vte_terminal_set_background_saturation(VTE_TERMINAL(t->vte), config->bg_saturation); + vte_terminal_set_background_image_file(VTE_TERMINAL(t->vte), config->bg_image); vte_terminal_set_font_from_string(VTE_TERMINAL(t->vte), config->font); vte_terminal_set_mouse_autohide(VTE_TERMINAL(t->vte), config->autohide_mouse); @@ -334,7 +337,8 @@ static void tab_new() { config->num_scrollback_lines); vte_terminal_set_visible_bell(VTE_TERMINAL(t->vte), config->visible_bell); vte_terminal_set_word_chars(VTE_TERMINAL(t->vte), config->word_chars); - + vte_terminal_set_colors(VTE_TERMINAL(t->vte), &config->foreground, + &config->background, config->colour_palette, DEFAULT_PALETTE_SIZE); *tmp = vte_terminal_match_add_gregex( VTE_TERMINAL(t->vte), @@ -393,6 +397,8 @@ static void parse_config_file(gchar *config_file) { GKeyFileFlags flags; GError *error = NULL; gsize length; + gchar *addid; + addid = (gchar *) g_malloc (3); keyfile = g_key_file_new(); if (!g_key_file_load_from_file(keyfile, config_file, flags, &error)) { @@ -434,12 +440,37 @@ static void parse_config_file(gchar *config_file) { keyfile, "ui", "window_width", NULL); config->word_chars = g_key_file_get_string( keyfile, "ui", "word_chars", NULL); + config->cursor = g_key_file_get_string( + keyfile, "colour scheme", "cursor", NULL); + + config->colour_palette = (GdkColor *) g_malloc(sizeof(GdkColor) * DEFAULT_PALETTE_SIZE); + for (int i=0; i < DEFAULT_PALETTE_SIZE; i++){ + g_snprintf(addid, 3, "%d", i); + gdk_color_parse(g_key_file_get_string(keyfile, "colour scheme", + addid , NULL), &config->colour_palette[i]); + } + + if (!gdk_color_parse(g_key_file_get_string( + keyfile, "colour scheme", "foreground", NULL), &config->foreground)){ + gdk_color_parse(DEFAULT_FOREGROUND_COLOR, &config->foreground); + g_warning("Using default foreground color"); + } + + if (!gdk_color_parse(g_key_file_get_string( + keyfile, "colour scheme", "background", NULL), &config->background)){ + gdk_color_parse(DEFAULT_BACKGROUND_COLOR, &config->background); + g_warning("Using default background color"); + } + if (NULL == config->font) { config->font = DEFAULT_FONT; } + if (NULL == config->url_regex) { config->url_regex = DEFAULT_URL_REGEX; } + + g_free(addid); } -- cgit v1.2.3