diff --git a/Makefile b/Makefile index 378376c..a70ac98 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ VERSION = $(shell git describe --tags) PREFIX = /usr/local GTK = gtk+-3.0 -VTE = vte-2.90 +VTE = vte-2.91 TERMINFO = ${PREFIX}/share/terminfo CXXFLAGS := -std=c++11 -O3 \ diff --git a/README.rst b/README.rst index d141319..84310a6 100644 --- a/README.rst +++ b/README.rst @@ -12,7 +12,7 @@ process. DEPENDENCIES ============ -A vte version >= ``0.34``. A `patch +A vte version >= ``0.38.0``. A `patch `_ is required to expose the functions needed for keyboard selection. diff --git a/config b/config index 169de23..97a9819 100644 --- a/config +++ b/config @@ -3,7 +3,6 @@ resize_grip = false scroll_on_output = false scroll_on_keystroke = true audible_bell = false -visible_bell = false mouse_autohide = false allow_bold = true dynamic_title = true @@ -24,10 +23,6 @@ cursor_shape = block # $BROWSER is used by default #browser = firefox -# word characters used for word selection -# (default if unset: all graphic non-punctuation/space characters) -#word_chars = -A-Za-z0-9,./?%&#:_=+@~ - # set size hints for the window #size_hints = false @@ -37,7 +32,6 @@ cursor_shape = block [colors] foreground = #dcdccc foreground_bold = #ffffff -#foreground_dim = #888888 background = #3f3f3f #cursor = #dcdccc diff --git a/expose_select_text.patch b/expose_select_text.patch index 80a2a44..7f72b17 100644 --- a/expose_select_text.patch +++ b/expose_select_text.patch @@ -1,7 +1,20 @@ -diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c ---- vte-0.32.2-old/src/vte.c 2012-07-13 21:09:04.003969877 -0400 -+++ vte-0.32.2/src/vte.c 2012-08-30 04:30:04.285924831 -0400 -@@ -129,7 +129,6 @@ +Only in vte-0.38.0.new: expose_select_text.patch +diff -aur vte-0.38.0/src/vteaccess.c vte-0.38.0.new/src/vteaccess.c +--- vte-0.38.0/src/vteaccess.c 2014-08-13 08:00:38.000000000 -0400 ++++ vte-0.38.0.new/src/vteaccess.c 2014-09-21 17:05:23.934641193 -0400 +@@ -1427,7 +1427,7 @@ + *start_offset = offset_from_xy (priv, start_x, start_y); + _vte_terminal_get_end_selection (terminal, &end_x, &end_y); + *end_offset = offset_from_xy (priv, end_x, end_y); +- return _vte_terminal_get_selection (terminal); ++ return vte_terminal_get_selection (terminal); + } + + static gboolean +diff -aur vte-0.38.0/src/vte.c vte-0.38.0.new/src/vte.c +--- vte-0.38.0/src/vte.c 2014-09-13 03:23:47.000000000 -0400 ++++ vte-0.38.0.new/src/vte.c 2014-09-21 17:03:04.671656749 -0400 +@@ -122,7 +122,6 @@ gpointer data, GArray *attributes, gboolean include_trailing_spaces); @@ -9,7 +22,7 @@ diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c static void _vte_terminal_disconnect_pty_write(VteTerminal *terminal); static void vte_terminal_stop_processing (VteTerminal *terminal); -@@ -3508,8 +3507,8 @@ +@@ -3267,9 +3266,10 @@ _vte_debug_print (VTE_DEBUG_IO, "removed poll of vte_terminal_io_read\n"); terminal->pvt->pty_input_source = 0; } @@ -18,9 +31,11 @@ diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c +void +vte_terminal_connect_pty_read(VteTerminal *terminal) { ++ g_return_if_fail(VTE_IS_TERMINAL(terminal)); if (terminal->pvt->pty_channel == NULL) { return; -@@ -3560,8 +3559,8 @@ + } +@@ -3321,9 +3321,10 @@ } } @@ -29,29 +44,11 @@ diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c +void +vte_terminal_disconnect_pty_read(VteTerminal *terminal) { ++ g_return_if_fail(VTE_IS_TERMINAL(terminal)); if (terminal->pvt->pty_input_source != 0) { _vte_debug_print (VTE_DEBUG_IO, "disconnecting poll of vte_terminal_io_read\n"); -@@ -3708,8 +3707,8 @@ - return NULL; - } - --static char * --_vte_terminal_get_user_shell_with_fallback (void) -+char * -+vte_terminal_get_user_shell_with_fallback (void) - { - char *command; - const gchar *env; -@@ -3744,7 +3743,7 @@ - char **argv2; - char *shell = NULL; - -- argv2 = __vte_pty_get_argv(command ? command : (shell = _vte_terminal_get_user_shell_with_fallback ()), -+ argv2 = __vte_pty_get_argv(command ? command : (shell = vte_terminal_get_user_shell_with_fallback ()), - argv, - flags); - g_free(shell); -@@ -6545,6 +6544,28 @@ + g_source_remove(terminal->pvt->pty_input_source); +@@ -6154,6 +6155,28 @@ } } @@ -80,8 +77,8 @@ diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c static GtkClipboard * vte_terminal_clipboard_get(VteTerminal *terminal, GdkAtom board) { -@@ -6676,7 +6697,7 @@ - terminal->pvt->selection_start.row); +@@ -6319,7 +6342,7 @@ + vte_terminal_extend_selection(terminal, x, y, FALSE, TRUE); /* Temporarily stop caring about input from the child. */ - _vte_terminal_disconnect_pty_read(terminal); @@ -89,7 +86,7 @@ diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c } static gboolean -@@ -6693,7 +6714,7 @@ +@@ -6336,7 +6359,7 @@ terminal->pvt->selecting = FALSE; /* Reconnect to input from the child if we paused it. */ @@ -98,35 +95,8 @@ diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c return TRUE; } -@@ -8994,7 +9015,7 @@ - #endif - kill(terminal->pvt->pty_pid, SIGHUP); - } -- _vte_terminal_disconnect_pty_read(terminal); -+ vte_terminal_disconnect_pty_read(terminal); - _vte_terminal_disconnect_pty_write(terminal); - if (terminal->pvt->pty_channel != NULL) { - g_io_channel_unref (terminal->pvt->pty_channel); -@@ -14384,7 +14405,7 @@ - g_object_freeze_notify(object); - - if (pvt->pty != NULL) { -- _vte_terminal_disconnect_pty_read(terminal); -+ vte_terminal_disconnect_pty_read(terminal); - _vte_terminal_disconnect_pty_write(terminal); - - if (terminal->pvt->pty_channel != NULL) { -@@ -14440,7 +14461,7 @@ - _vte_terminal_setup_utf8 (terminal); - - /* Open channels to listen for input on. */ -- _vte_terminal_connect_pty_read (terminal); -+ vte_terminal_connect_pty_read (terminal); - - g_object_notify(object, "pty"); - g_object_notify(object, "pty-object"); -@@ -14567,6 +14588,50 @@ - } +@@ -6834,6 +6857,50 @@ + vte_terminal_deselect_all (terminal); } +/** @@ -173,21 +143,72 @@ diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c + _vte_terminal_select_text(terminal, start_col, start_row, end_col, end_row, 0, 0); +} + - void - _vte_terminal_select_text(VteTerminal *terminal, - long start_col, long start_row, -diff -aur vte-0.32.2-old/src/vte.h vte-0.32.2/src/vte.h ---- vte-0.32.2-old/src/vte.h 2012-07-13 21:09:04.003969877 -0400 -+++ vte-0.32.2/src/vte.h 2012-08-30 04:30:09.695999432 -0400 -@@ -296,6 +296,15 @@ - /* simple manipulation of selection */ - void vte_terminal_select_all(VteTerminal *terminal); - void vte_terminal_select_none(VteTerminal *terminal); -+gboolean vte_terminal_get_selection_block_mode(VteTerminal *terminal); -+void vte_terminal_set_selection_block_mode(VteTerminal *terminal, gboolean block_mode); + /* Autoscroll a bit. */ + static gboolean + vte_terminal_autoscroll(VteTerminal *terminal) +@@ -8476,7 +8543,7 @@ + #endif + kill(terminal->pvt->pty_pid, SIGHUP); + } +- _vte_terminal_disconnect_pty_read(terminal); ++ vte_terminal_disconnect_pty_read(terminal); + _vte_terminal_disconnect_pty_write(terminal); + if (terminal->pvt->pty_channel != NULL) { + g_io_channel_unref (terminal->pvt->pty_channel); +@@ -12533,7 +12600,7 @@ + g_object_freeze_notify(object); + + if (pvt->pty != NULL) { +- _vte_terminal_disconnect_pty_read(terminal); ++ vte_terminal_disconnect_pty_read(terminal); + _vte_terminal_disconnect_pty_write(terminal); + + if (terminal->pvt->pty_channel != NULL) { +@@ -12588,7 +12655,7 @@ + _vte_terminal_setup_utf8 (terminal); + + /* Open channels to listen for input on. */ +- _vte_terminal_connect_pty_read (terminal); ++ vte_terminal_connect_pty_read (terminal); + + g_object_notify(object, "pty"); + +@@ -12623,7 +12690,7 @@ + } + + char * +-_vte_terminal_get_selection(VteTerminal *terminal) ++vte_terminal_get_selection(VteTerminal *terminal) + { + g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL); + +Only in vte-0.38.0.new/src: .vte.c.swp +diff -aur vte-0.38.0/src/vteint.h vte-0.38.0.new/src/vteint.h +--- vte-0.38.0/src/vteint.h 2014-05-16 13:51:26.000000000 -0400 ++++ vte-0.38.0.new/src/vteint.h 2014-09-21 17:05:44.934589281 -0400 +@@ -25,7 +25,6 @@ + G_BEGIN_DECLS + + void _vte_terminal_accessible_ref(VteTerminal *terminal); +-char* _vte_terminal_get_selection(VteTerminal *terminal); + void _vte_terminal_get_start_selection(VteTerminal *terminal, long *x, long *y); + void _vte_terminal_get_end_selection(VteTerminal *terminal, long *x, long *y); + void _vte_terminal_select_text(VteTerminal *terminal, long start_x, long start_y, long end_x, long end_y, int start_offset, int end_offset); +diff -aur vte-0.38.0/src/vteterminal.h vte-0.38.0.new/src/vteterminal.h +--- vte-0.38.0/src/vteterminal.h 2014-09-13 03:23:47.000000000 -0400 ++++ vte-0.38.0.new/src/vteterminal.h 2014-09-21 17:03:39.094903032 -0400 +@@ -170,6 +170,18 @@ + + void vte_terminal_select_all(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); + void vte_terminal_unselect_all(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); ++gboolean vte_terminal_get_selection_block_mode(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); ++void vte_terminal_set_selection_block_mode(VteTerminal *terminal, ++ gboolean block_mode) _VTE_GNUC_NONNULL(1); +void vte_terminal_select_text(VteTerminal *terminal, + long start_col, long start_row, -+ long end_col, long end_row); ++ long end_col, long end_row) _VTE_GNUC_NONNULL(1); ++char * ++vte_terminal_get_selection(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); + +/* pause and unpause output */ +void vte_terminal_disconnect_pty_read(VteTerminal *vte); @@ -195,20 +216,13 @@ diff -aur vte-0.32.2-old/src/vte.h vte-0.32.2/src/vte.h /* Set the terminal's size. */ void vte_terminal_set_size(VteTerminal *terminal, -@@ -435,6 +444,8 @@ - GArray *attributes); +@@ -276,6 +288,8 @@ void vte_terminal_get_cursor_position(VteTerminal *terminal, - glong *column, glong *row); + glong *column, + glong *row) _VTE_GNUC_NONNULL(1); +void vte_terminal_set_cursor_position(VteTerminal *terminal, -+ long column, long row); - /* Display string matching: clear all matching expressions. */ - void vte_terminal_match_clear_all(VteTerminal *terminal); ++ long column, long row) _VTE_GNUC_NONNULL(1); -@@ -484,6 +495,7 @@ - VtePty *vte_terminal_get_pty_object(VteTerminal *terminal); - - char *vte_get_user_shell (void); -+char *vte_terminal_get_user_shell_with_fallback(void); - - /* Accessors for bindings. */ - #if !GTK_CHECK_VERSION (2, 91, 2) + /* Add a matching expression, returning the tag the widget assigns to that + * expression. */ +Only in vte-0.38.0.new/src: .vteterminal.h.swp diff --git a/termite.cc b/termite.cc index 08b8792..ba9acc2 100644 --- a/termite.cc +++ b/termite.cc @@ -31,7 +31,6 @@ #include #include #include -#include #include "url_regex.hh" #include "util/clamp.hh" @@ -116,7 +115,7 @@ static gboolean key_press_cb(VteTerminal *vte, GdkEventKey *event, keybind_info static gboolean entry_key_press_cb(GtkEntry *entry, GdkEventKey *event, keybind_info *info); static gboolean position_overlay_cb(GtkBin *overlay, GtkWidget *widget, GdkRectangle *alloc); static gboolean button_press_cb(VteTerminal *vte, GdkEventButton *event, const config_info *info); -static void beep_cb(GtkWidget *vte, gboolean *urgent_on_bell); +static void bell_cb(GtkWidget *vte, gboolean *urgent_on_bell); static gboolean focus_cb(GtkWindow *window); static GtkTreeModel *create_completion_model(VteTerminal *vte); @@ -218,7 +217,7 @@ static void launch_in_directory(VteTerminal *vte) { static void find_urls(VteTerminal *vte, search_panel_info *panel_info) { GRegex *regex = g_regex_new(url_regex, G_REGEX_CASELESS, G_REGEX_MATCH_NOTEMPTY, nullptr); - GArray *attributes = g_array_new(FALSE, FALSE, sizeof (vte_char_attributes)); + GArray *attributes = g_array_new(FALSE, FALSE, sizeof (VteCharAttributes)); auto content = make_unique(vte_terminal_get_text(vte, nullptr, nullptr, attributes), g_free); for (char *s_ptr = content.get(), *saveptr; ; s_ptr = nullptr) { @@ -235,8 +234,8 @@ static void find_urls(VteTerminal *vte, search_panel_info *panel_info) { int pos; g_match_info_fetch_pos(info, 0, &pos, nullptr); - const long first_row = g_array_index(attributes, vte_char_attributes, 0).row; - const auto attr = g_array_index(attributes, vte_char_attributes, token + pos - content.get()); + const long first_row = g_array_index(attributes, VteCharAttributes, 0).row; + const auto attr = g_array_index(attributes, VteCharAttributes, token + pos - content.get()); panel_info->url_list.emplace_back(g_match_info_fetch(info, 0), attr.column, @@ -346,7 +345,7 @@ static gboolean draw_cb(const draw_cb_info *info, cairo_t *cr) { } static void update_selection(VteTerminal *vte, const select_info *select) { - vte_terminal_select_none(vte); + vte_terminal_unselect_all(vte); if (select->mode == vi_mode::command) { return; @@ -394,7 +393,7 @@ static void enter_command_mode(VteTerminal *vte, select_info *select) { static void exit_command_mode(VteTerminal *vte, select_info *select) { vte_terminal_set_cursor_position(vte, select->origin_col, select->origin_row); vte_terminal_connect_pty_read(vte); - vte_terminal_select_none(vte); + vte_terminal_unselect_all(vte); select->mode = vi_mode::insert; } @@ -456,10 +455,10 @@ static void move_to_row_start(VteTerminal *vte, select_info *select, long row) { static void open_selection(char *browser, VteTerminal *vte) { if (browser) { - AtkText *text = ATK_TEXT(vte_terminal_accessible_new(vte)); - auto selection = make_unique(atk_text_get_selection(text, 0, nullptr, nullptr), g_free); - if (selection && *selection) + auto selection = make_unique(vte_terminal_get_selection(vte), g_free); + if (selection && *selection) { launch_browser(browser, selection.get()); + } } else { g_printerr("no browser to open url\n"); } @@ -471,6 +470,13 @@ get_text_range(VteTerminal *vte, long start_row, long start_col, long end_row, l nullptr, nullptr, nullptr), g_free}; } +static bool is_word_char(gunichar c) { + static const char *word_char_ascii_punct = "-,.;/?%&#:_=+@~"; + return g_unichar_isgraph(c) && + (g_unichar_isalnum(c) || (g_unichar_ispunct(c) && + (c >= 0x80 || strchr(word_char_ascii_punct, (int)c) != NULL))); +} + template static void move_backward(VteTerminal *vte, select_info *select, F is_word) { long cursor_col, cursor_row; @@ -508,7 +514,7 @@ static void move_backward(VteTerminal *vte, select_info *select, F is_word) { } static void move_backward_word(VteTerminal *vte, select_info *select) { - move_backward(vte, select, std::bind(vte_terminal_is_word_char, vte, _1)); + move_backward(vte, select, is_word_char); } static void move_backward_blank_word(VteTerminal *vte, select_info *select) { @@ -620,7 +626,7 @@ static void move_forward(VteTerminal *vte, select_info *select, F is_word) { } static void move_forward_word(VteTerminal *vte, select_info *select) { - move_forward(vte, select, std::bind(vte_terminal_is_word_char, vte, _1)); + move_forward(vte, select, is_word_char); } static void move_forward_blank_word(VteTerminal *vte, select_info *select) { @@ -998,7 +1004,7 @@ gboolean button_press_cb(VteTerminal *vte, GdkEventButton *event, const config_i return FALSE; } -void beep_cb(GtkWidget *vte, gboolean *urgent_on_bell) { +static void bell_cb(GtkWidget *vte, gboolean *urgent_on_bell) { if (*urgent_on_bell) { gtk_window_set_urgency_hint(GTK_WINDOW(gtk_widget_get_toplevel(vte)), TRUE); } @@ -1048,10 +1054,10 @@ void search(VteTerminal *vte, const char *pattern, bool reverse) { GRegex *regex = vte_terminal_search_get_gregex(vte); if (regex) g_regex_unref(regex); regex = g_regex_new(pattern, (GRegexCompileFlags)0, (GRegexMatchFlags)0, nullptr); - vte_terminal_search_set_gregex(vte, regex); + vte_terminal_search_set_gregex(vte, regex, (GRegexMatchFlags)0); if (!terminal_search(vte)) { - vte_terminal_select_none(vte); + vte_terminal_unselect_all(vte); terminal_search(vte); } @@ -1080,18 +1086,14 @@ void overlay_show(search_panel_info *info, overlay_mode mode, VteTerminal *vte) } void get_vte_padding(VteTerminal *vte, int *left, int *top, int *right, int *bottom) { - GtkBorder *border = nullptr; - gtk_widget_style_get(GTK_WIDGET(vte), "inner-border", &border, nullptr); - if (!border) { - g_warning("VTE's inner-border property unavailable"); - *left = *top = *right = *bottom = 0; - } else { - *left = border->left; - *right = border->right; - *top = border->top; - *bottom = border->bottom; - gtk_border_free(border); - } + GtkBorder border; + gtk_style_context_get_padding(gtk_widget_get_style_context(GTK_WIDGET(vte)), + gtk_widget_get_state_flags(GTK_WIDGET(vte)), + &border); + *left = border.left; + *right = border.right; + *top = border.top; + *bottom = border.bottom; } char *check_match(VteTerminal *vte, int event_x, int event_y) { @@ -1177,26 +1179,23 @@ static void load_theme(GtkWindow *window, VteTerminal *vte, GKeyFile *config, hi } } - vte_terminal_set_colors_rgba(vte, nullptr, nullptr, palette.data(), palette.size()); + vte_terminal_set_colors(vte, nullptr, nullptr, palette.data(), palette.size()); if (auto color = get_config_color(config, "colors", "foreground")) { - vte_terminal_set_color_foreground_rgba(vte, &*color); - vte_terminal_set_color_bold_rgba(vte, &*color); + vte_terminal_set_color_foreground(vte, &*color); + vte_terminal_set_color_bold(vte, &*color); } if (auto color = get_config_color(config, "colors", "foreground_bold")) { - vte_terminal_set_color_bold_rgba(vte, &*color); - } - if (auto color = get_config_color(config, "colors", "foreground_dim")) { - vte_terminal_set_color_dim_rgba(vte, &*color); + vte_terminal_set_color_bold(vte, &*color); } if (auto color = get_config_color(config, "colors", "background")) { - vte_terminal_set_color_background_rgba(vte, &*color); + vte_terminal_set_color_background(vte, &*color); gtk_widget_override_background_color(GTK_WIDGET(window), GTK_STATE_FLAG_NORMAL, &*color); } if (auto color = get_config_color(config, "colors", "cursor")) { - vte_terminal_set_color_cursor_rgba(vte, &*color); + vte_terminal_set_color_cursor(vte, &*color); } if (auto color = get_config_color(config, "colors", "highlight")) { - vte_terminal_set_color_highlight_rgba(vte, &*color); + vte_terminal_set_color_highlight(vte, &*color); } if (auto s = get_config_string(config, "hints", "font")) { @@ -1262,7 +1261,7 @@ static void set_config(GtkWindow *window, VteTerminal *vte, config_info *info, vte_terminal_set_scroll_on_output(vte, cfg_bool("scroll_on_output", FALSE)); vte_terminal_set_scroll_on_keystroke(vte, cfg_bool("scroll_on_keystroke", TRUE)); vte_terminal_set_audible_bell(vte, cfg_bool("audible_bell", FALSE)); - vte_terminal_set_visible_bell(vte, cfg_bool("visual_bell", FALSE)); + //vte_terminal_set_visible_bell(vte, cfg_bool("visual_bell", FALSE)); vte_terminal_set_mouse_autohide(vte, cfg_bool("mouse_autohide", FALSE)); vte_terminal_set_allow_bold(vte, cfg_bool("allow_bold", TRUE)); vte_terminal_search_set_wrap_around(vte, cfg_bool("search_wrap", TRUE)); @@ -1302,12 +1301,9 @@ static void set_config(GtkWindow *window, VteTerminal *vte, config_info *info, } if (auto s = get_config_string(config, "options", "font")) { - vte_terminal_set_font_from_string(vte, *s); - g_free(*s); - } - - if (auto s = get_config_string(config, "options", "word_chars")) { - vte_terminal_set_word_chars(vte, *s); + PangoFontDescription *font = pango_font_description_from_string(*s); + vte_terminal_set_font(vte, font); + pango_font_description_free(font); g_free(*s); } @@ -1350,8 +1346,7 @@ static void set_config(GtkWindow *window, VteTerminal *vte, config_info *info, load_theme(window, vte, config, info->hints); }/*}}}*/ -static void exit_with_status(VteTerminal *vte) { - int status = vte_terminal_get_child_exit_status(vte); +static void exit_with_status(VteTerminal *, int status) { gtk_main_quit(); exit(WIFEXITED(status) ? WEXITSTATUS(status) : EXIT_FAILURE); } @@ -1361,6 +1356,17 @@ static void exit_with_success(VteTerminal *) { exit(EXIT_SUCCESS); } +static char *get_user_shell_with_fallback() { + if (char *command = vte_get_user_shell()) + return command; + + if (const char *env = g_getenv("SHELL")) + return g_strdup(env); + + return g_strdup("/bin/sh"); +} + + int main(int argc, char **argv) { GError *error = nullptr; const char *const term = "xterm-termite"; @@ -1428,11 +1434,11 @@ int main(int argc, char **argv) { } command_argv = argvp; } else { - default_argv[0] = vte_terminal_get_user_shell_with_fallback(); + default_argv[0] = get_user_shell_with_fallback(); command_argv = default_argv; } - VtePty *pty = vte_terminal_pty_new(vte, VTE_PTY_DEFAULT, &error); + VtePty *pty = vte_terminal_pty_new_sync(vte, VTE_PTY_DEFAULT, NULL, &error); if (!pty) { g_printerr("failed to create pty: %s\n", error->message); @@ -1460,8 +1466,7 @@ int main(int argc, char **argv) { }; signal(SIGUSR1, [](int){ reload_config(); }); - vte_terminal_set_pty_object(vte, pty); - vte_pty_set_term(pty, term); + vte_terminal_set_pty(vte, pty); GdkRGBA transparent {0, 0, 0, 0}; @@ -1491,7 +1496,7 @@ int main(int argc, char **argv) { g_signal_connect(info.panel.entry, "key-press-event", G_CALLBACK(entry_key_press_cb), &info); g_signal_connect(panel_overlay, "get-child-position", G_CALLBACK(position_overlay_cb), nullptr); g_signal_connect(vte, "button-press-event", G_CALLBACK(button_press_cb), &info.config); - g_signal_connect(vte, "beep", G_CALLBACK(beep_cb), &info.config.urgent_on_bell); + g_signal_connect(vte, "bell", G_CALLBACK(bell_cb), &info.config.urgent_on_bell); draw_cb_info draw_cb_info{vte, &info.panel, &info.config.hints}; g_signal_connect_swapped(info.panel.da, "draw", G_CALLBACK(draw_cb), &draw_cb_info);