From dc9948bbd1f6738bb9b4b52e22638b146ee1ef66 Mon Sep 17 00:00:00 2001 From: Simon Gomizelj Date: Wed, 23 Oct 2013 15:07:41 -0400 Subject: [PATCH] Reload config file on SIGUSR1 Refactor config reloading into a lambda stored globally. Closes #131 --- termite.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/termite.cc b/termite.cc index 0999f0a..bcfaf8b 100644 --- a/termite.cc +++ b/termite.cc @@ -126,6 +126,8 @@ static void set_config(GtkWindow *window, VteTerminal *vte, config_info *info, char **geometry, GKeyFile *config); static long first_row(VteTerminal *vte); +static std::function reload_config; + void launch_browser(char *browser, char *url) { char *browser_cmd[3] = {browser, url, nullptr}; g_spawn_async(nullptr, browser_cmd, nullptr, G_SPAWN_SEARCH_PATH, nullptr, nullptr, nullptr, nullptr); @@ -759,8 +761,7 @@ gboolean key_press_cb(VteTerminal *vte, GdkEventKey *event, keybind_info *info) vte_terminal_paste_clipboard(vte); return TRUE; case GDK_KEY_r: - load_config(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(vte))), - vte, &info->config, nullptr); + reload_config(); return TRUE; } } else if (modifiers == GDK_CONTROL_MASK && event->keyval == GDK_KEY_Tab) { @@ -1341,6 +1342,11 @@ int main(int argc, char **argv) { load_config(GTK_WINDOW(window), vte, &info.config, geometry ? nullptr : &geometry); + reload_config = [&]{ + load_config(GTK_WINDOW(window), vte, &info.config, nullptr); + }; + signal(SIGUSR1, [](int){ reload_config(); }); + vte_terminal_set_pty_object(vte, pty); vte_pty_set_term(pty, term);