This is an automated email from the git hooks/post-receive script. f 2 4 0 4 p u s h e d a c o m m i t t o b r a n c h m a s t e r in repository apps/xfce4-terminal.
commit ea503ad545b815f8f9642f53d404cf082c3ed55d Author: Igor <f2...@yandex.ru> Date: Sat Apr 14 21:51:45 2018 -0400 Add command line options for setting text (foreground) and backround colors The options are --color-text and --color-bg, respectively. The options parameters should describe a color per the following specification: https://developer.gnome.org/gdk3/stable/gdk3-RGBA-Colors.html#gdk-rgba-parse Fixes bug #4887 --- terminal/terminal-options.c | 42 +++++++++++++++++++++++++++++++++++++++++- terminal/terminal-options.h | 2 ++ terminal/terminal-screen.c | 25 ++++++++++++++++++++++--- 3 files changed, 65 insertions(+), 4 deletions(-) diff --git a/terminal/terminal-options.c b/terminal/terminal-options.c index 9b9f3df..b3dd63f 100644 --- a/terminal/terminal-options.c +++ b/terminal/terminal-options.c @@ -137,6 +137,8 @@ terminal_tab_attr_free (TerminalTabAttr *attr) g_free (attr->directory); g_free (attr->title); g_free (attr->initial_title); + g_free (attr->color_text); + g_free (attr->color_bg); g_slice_free (TerminalTabAttr, attr); } @@ -355,13 +357,51 @@ terminal_window_attr_parse (gint argc, { tab_attr->active = TRUE; } + else if (terminal_option_cmp ("color-text", 0, argc, argv, &n, &s)) + { + GdkRGBA color; + if (G_UNLIKELY (s == NULL)) + { + g_set_error (error, G_SHELL_ERROR, G_SHELL_ERROR_FAILED, + _("Option \"--color-text\" requires specifying " + "the color as its parameter")); + goto failed; + } + else if (!gdk_rgba_parse (&color, s)) + { + g_set_error (error, G_SHELL_ERROR, G_SHELL_ERROR_FAILED, + _("Unable to parse color: %s"), s); + goto failed; + } + g_free (tab_attr->color_text); + tab_attr->color_text = g_strdup (s); + } + else if (terminal_option_cmp ("color-bg", 0, argc, argv, &n, &s)) + { + GdkRGBA color; + if (G_UNLIKELY (s == NULL)) + { + g_set_error (error, G_SHELL_ERROR, G_SHELL_ERROR_FAILED, + _("Option \"--color-bg\" requires specifying " + "the color as its parameter")); + goto failed; + } + else if (!gdk_rgba_parse (&color, s)) + { + g_set_error (error, G_SHELL_ERROR, G_SHELL_ERROR_FAILED, + _("Unable to parse color: %s"), s); + goto failed; + } + g_free (tab_attr->color_bg); + tab_attr->color_bg = g_strdup (s); + } else if (terminal_option_cmp ("display", 0, argc, argv, &n, &s)) { if (G_UNLIKELY (s == NULL)) { g_set_error (error, G_SHELL_ERROR, G_SHELL_ERROR_FAILED, _("Option \"--display\" requires specifying " - "the X display as its parameters")); + "the X display as its parameter")); goto failed; } else diff --git a/terminal/terminal-options.h b/terminal/terminal-options.h index d4d676c..2358382 100644 --- a/terminal/terminal-options.h +++ b/terminal/terminal-options.h @@ -58,6 +58,8 @@ typedef struct gchar *directory; gchar *title; gchar *initial_title; + gchar *color_text; + gchar *color_bg; TerminalTitle dynamic_title_mode; guint hold : 1; guint active : 1; diff --git a/terminal/terminal-screen.c b/terminal/terminal-screen.c index fe03ce3..63e868d 100644 --- a/terminal/terminal-screen.c +++ b/terminal/terminal-screen.c @@ -186,6 +186,9 @@ struct _TerminalScreen gchar *custom_title; gchar *initial_title; + gchar *custom_fg_color; + gchar *custom_bg_color; + TerminalTitle dynamic_title_mode; guint hold : 1; #if !VTE_CHECK_VERSION (0, 51, 1) @@ -371,6 +374,8 @@ terminal_screen_finalize (GObject *object) g_free (screen->working_directory); g_free (screen->custom_title); g_free (screen->initial_title); + g_free (screen->custom_fg_color); + g_free (screen->custom_bg_color); (*G_OBJECT_CLASS (terminal_screen_parent_class)->finalize) (object); } @@ -1043,11 +1048,18 @@ terminal_screen_update_colors (TerminalScreen *screen) valid_palette = (n == 16); } - has_bg = terminal_preferences_get_color (screen->preferences, "color-background", &bg); - has_fg = terminal_preferences_get_color (screen->preferences, "color-foreground", &fg); + if (G_LIKELY (screen->custom_bg_color == NULL)) + has_bg = terminal_preferences_get_color (screen->preferences, "color-background", &bg); + else + has_bg = gdk_rgba_parse (&bg, screen->custom_bg_color); + + if (G_LIKELY (screen->custom_fg_color == NULL)) + has_fg = terminal_preferences_get_color (screen->preferences, "color-foreground", &fg); + else + has_fg = gdk_rgba_parse (&fg, screen->custom_fg_color); /* we pick a random hue value to keep readability */ - if (vary_bg && has_bg) + if (G_LIKELY (screen->custom_bg_color == NULL) && vary_bg && has_bg) { gtk_rgb_to_hsv (bg.red, bg.green, bg.blue, NULL, &hsv[HSV_SATURATION], &hsv[HSV_VALUE]); @@ -1755,6 +1767,13 @@ terminal_screen_new (TerminalTabAttr *attr, screen->hold = attr->hold; vte_terminal_set_size (VTE_TERMINAL (screen->terminal), columns, rows); + if (attr->color_text != NULL) + screen->custom_fg_color = g_strdup (attr->color_text); + if (attr->color_bg != NULL) + screen->custom_bg_color = g_strdup (attr->color_bg); + if (attr->color_text != NULL || attr->color_bg != NULL) + terminal_screen_update_colors (screen); + return screen; } -- To stop receiving notification emails like this one, please contact the administrator of this repository. _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits