void set_vte_color(struct Window *win_data, struct Page *page_data) { #ifdef DETAIL g_debug("! Launch set_vte_color() with win_data = %p, page_data = %p", win_data, page_data); #endif #ifdef DEFENSIVE if ((win_data==NULL) || (page_data==NULL) || (page_data->vte==NULL)) return; #endif // set font/background colors vte_terminal_set_default_colors(VTE_TERMINAL(page_data->vte)); // g_debug("win_data->use_set_color_fg_bg = %d", win_data->use_set_color_fg_bg); if (win_data->use_set_color_fg_bg) { // g_debug("win_data->use_set_color_fg_bg = %d", win_data->use_set_color_fg_bg); vte_terminal_set_colors(VTE_TERMINAL(page_data->vte), &(win_data->fg_color), &(win_data->bg_color), win_data->color, 16); } else { vte_terminal_set_color_foreground(VTE_TERMINAL(page_data->vte), &(win_data->fg_color)); vte_terminal_set_color_background(VTE_TERMINAL(page_data->vte), &(win_data->bg_color)); } vte_terminal_set_color_cursor(VTE_TERMINAL(page_data->vte), &(win_data->cursor_color)); vte_terminal_set_color_bold (VTE_TERMINAL(page_data->vte), &(win_data->fg_color)); vte_terminal_set_background_tint_color (VTE_TERMINAL(page_data->vte), &(win_data->bg_color)); }
void termit_tab_set_color_foreground(struct TermitTab* pTab, const GdkColor* p_color) { if (p_color) { pTab->style.foreground_color = gdk_color_copy(p_color); vte_terminal_set_color_foreground(VTE_TERMINAL(pTab->vte), pTab->style.foreground_color); if (pTab->style.foreground_color) { vte_terminal_set_color_bold(VTE_TERMINAL(pTab->vte), pTab->style.foreground_color); } } }
void termit_tab_apply_colors(struct TermitTab* pTab) { if (pTab->style.colors) { vte_terminal_set_colors(VTE_TERMINAL(pTab->vte), NULL, NULL, pTab->style.colors, pTab->style.colors_size); if (pTab->style.foreground_color) { vte_terminal_set_color_bold(VTE_TERMINAL(pTab->vte), pTab->style.foreground_color); } } if (pTab->style.foreground_color) { vte_terminal_set_color_foreground(VTE_TERMINAL(pTab->vte), pTab->style.foreground_color); } if (pTab->style.background_color) { vte_terminal_set_color_background(VTE_TERMINAL(pTab->vte), pTab->style.background_color); } }
static void hotssh_tab_style_updated (GtkWidget *widget) { HotSshTab *self = (HotSshTab*)widget; HotSshTabPrivate *priv = hotssh_tab_get_instance_private (self); GdkRGBA fg, bg; GTK_WIDGET_CLASS (hotssh_tab_parent_class)->style_updated (widget); /* Hardcode black on white for now; in the future I'd like to do * per-host colors. */ fg.red = fg.blue = fg.green = 0; fg.alpha = 1; bg.red = bg.blue = bg.green = 1; bg.alpha = 1; vte_terminal_set_color_foreground ((VteTerminal*)priv->terminal, &fg); vte_terminal_set_color_background ((VteTerminal*)priv->terminal, &bg); vte_terminal_set_color_bold ((VteTerminal*)priv->terminal, &fg); }
void terminal::setup_terminal() { if ( m_terminal && m_configuration ) { GError *error = NULL; vte_terminal_set_scrollback_lines(m_terminal, m_configuration->get_scrollback_lines()); vte_terminal_set_allow_bold(m_terminal, m_configuration->get_allow_bold()); vte_terminal_set_audible_bell(m_terminal, m_configuration->get_audible_bell()); vte_terminal_set_scroll_on_keystroke(m_terminal, m_configuration->get_scroll_on_keystroke()); vte_terminal_set_scroll_on_output(m_terminal, m_configuration->get_scroll_on_output()); vte_terminal_set_rewrap_on_resize(m_terminal, m_configuration->get_rewrap_on_resize()); vte_terminal_set_mouse_autohide(m_terminal, m_configuration->get_autohide_mouse()); if ( ! vte_terminal_set_encoding(m_terminal, m_configuration->get_encoding().c_str(), &error) ) { sterm::common::warning("sterm::terminal", "failed to set terminal encoding to '%s'", m_configuration->get_encoding().c_str()); sterm::common::debug("sterm::terminal", "VteTerminal error message: %s", error->message); } std::string word_chars = m_configuration->get_word_chars(); if ( ! word_chars.empty() ) vte_terminal_set_word_char_exceptions(m_terminal, word_chars.c_str()); else vte_terminal_set_word_char_exceptions(m_terminal, NULL); vte_terminal_set_cursor_blink_mode(m_terminal, m_configuration->get_cursor_blink_mode()); vte_terminal_set_cursor_shape(m_terminal, m_configuration->get_cursor_shape()); PangoFontDescription *font = NULL; if ( m_configuration->copy_font_description(&font) ) { vte_terminal_set_font(m_terminal, font); pango_font_description_free(font); } else { vte_terminal_set_font(m_terminal, NULL); } std::vector<GdkRGBA> color_palette = m_configuration->get_color_palette(); color foreground = m_configuration->get_foreground_color(); color background = m_configuration->get_background_color(); color bold_color = m_configuration->get_bold_color(); color cursor_color = m_configuration->get_cursor_color(); color highlight_bg = m_configuration->get_highlight_bg_color(); color highlight_fg = m_configuration->get_highlight_fg_color(); if ( color_palette.size() == PALETTE_SIZE ) vte_terminal_set_colors(m_terminal, NULL, NULL, color_palette.data(), PALETTE_SIZE); else vte_terminal_set_default_colors(m_terminal); if ( foreground.set ) vte_terminal_set_color_foreground(m_terminal, &(foreground.value)); if ( background.set ) vte_terminal_set_color_background(m_terminal, &(background.value)); if ( bold_color.set ) vte_terminal_set_color_bold(m_terminal, &(bold_color.value)); else vte_terminal_set_color_bold(m_terminal, NULL); if ( cursor_color.set ) vte_terminal_set_color_cursor(m_terminal, &(cursor_color.value)); else vte_terminal_set_color_cursor(m_terminal, NULL); if ( highlight_bg.set ) vte_terminal_set_color_highlight(m_terminal, &(highlight_bg.value)); else vte_terminal_set_color_highlight(m_terminal, NULL); if ( highlight_fg.set ) vte_terminal_set_color_highlight_foreground(m_terminal, &(highlight_fg.value)); else vte_terminal_set_color_highlight_foreground(m_terminal, NULL); } }
static VALUE rg_set_color_bold(VALUE self, VALUE bold) { vte_terminal_set_color_bold(_SELF(self), RVAL2GDKCOLOR(bold)); return self; }
gboolean setup_term(GtkWidget *win, GtkWidget *term, struct term_options *to) { static char *args_default[] = { NULL, NULL, NULL }; char **args_use; size_t i; GdkRGBA c_foreground_gdk; GdkRGBA c_background_gdk; GdkRGBA c_palette_gdk[16]; GdkRGBA c_gdk; VteRegex *url_vregex = NULL; GError *err = NULL; GSpawnFlags spawn_flags; if (to->argv != NULL) { args_use = to->argv; spawn_flags = G_SPAWN_SEARCH_PATH; } else { if (args_default[0] == NULL) { args_default[0] = vte_get_user_shell(); if (args_default[0] == NULL) args_default[0] = "/bin/sh"; if (login_shell) args_default[1] = g_strdup_printf("-%s", args_default[0]); else args_default[1] = args_default[0]; } args_use = args_default; spawn_flags = G_SPAWN_SEARCH_PATH | G_SPAWN_FILE_AND_ARGV_ZERO; } /* Appearance. */ term_set_font(NULL, VTE_TERMINAL(term), 0); gtk_widget_show_all(win); vte_terminal_set_allow_bold(VTE_TERMINAL(term), enable_bold); vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(term), VTE_CURSOR_BLINK_OFF); vte_terminal_set_geometry_hints_for_window(VTE_TERMINAL(term), GTK_WINDOW(win)); vte_terminal_set_mouse_autohide(VTE_TERMINAL(term), TRUE); vte_terminal_set_scrollback_lines(VTE_TERMINAL(term), scrollback_lines); gdk_rgba_parse(&c_foreground_gdk, c_foreground); gdk_rgba_parse(&c_background_gdk, c_background); for (i = 0; i < 16; i++) gdk_rgba_parse(&c_palette_gdk[i], c_palette[i]); vte_terminal_set_colors(VTE_TERMINAL(term), &c_foreground_gdk, &c_background_gdk, c_palette_gdk, 16); if (c_bold != NULL) { gdk_rgba_parse(&c_gdk, c_bold); vte_terminal_set_color_bold(VTE_TERMINAL(term), &c_gdk); } if (c_cursor != NULL) { gdk_rgba_parse(&c_gdk, c_cursor); vte_terminal_set_color_cursor(VTE_TERMINAL(term), &c_gdk); } if (c_cursor_foreground != NULL) { gdk_rgba_parse(&c_gdk, c_cursor_foreground); vte_terminal_set_color_cursor_foreground(VTE_TERMINAL(term), &c_gdk); } url_vregex = vte_regex_new_for_match(url_regex, strlen(url_regex), PCRE2_MULTILINE | PCRE2_CASELESS, &err); if (url_vregex == NULL) fprintf(stderr, "url_regex: %s\n", err == NULL ? "<err is NULL>" : err->message); else { vte_terminal_match_add_regex(VTE_TERMINAL(term), url_vregex, 0); vte_regex_unref(url_vregex); } /* Signals. */ g_signal_connect(G_OBJECT(term), "bell", G_CALLBACK(sig_bell), win); g_signal_connect(G_OBJECT(term), "button-press-event", G_CALLBACK(sig_button_press), NULL); if (!to->hold) g_signal_connect(G_OBJECT(term), "child-exited", G_CALLBACK(sig_child_exited), win); g_signal_connect(G_OBJECT(term), "decrease-font-size", G_CALLBACK(sig_decrease_font_size), win); g_signal_connect(G_OBJECT(term), "increase-font-size", G_CALLBACK(sig_increase_font_size), win); g_signal_connect(G_OBJECT(term), "key-press-event", G_CALLBACK(sig_key_press), win); g_signal_connect(G_OBJECT(term), "resize-window", G_CALLBACK(sig_window_resize), win); g_signal_connect(G_OBJECT(term), "window-title-changed", G_CALLBACK(sig_window_title_changed), win); /* Spawn child. */ return vte_terminal_spawn_sync(VTE_TERMINAL(term), VTE_PTY_DEFAULT, to->cwd, args_use, NULL, spawn_flags, NULL, NULL, NULL, NULL, NULL); }
static VALUE term_set_color_bold(VALUE self, VALUE bold) { vte_terminal_set_color_bold(RVAL2TERM(self), RVAL2COLOR(bold)); return Qnil; }