diff --git a/src/files.h b/src/files.h index c80dd12..05c86b5 100644 --- a/src/files.h +++ b/src/files.h @@ -13,7 +13,7 @@ const std::string configjson = " },\n" " \"gtk_theme\": {\n" " \"name_comment\": \"Use \\\"\\\" for default theme, At least these two exist on all systems: Adwaita, Raleigh\",\n" -" \"name\": \"Adwaita\",\n" +" \"name\": \"\",\n" " \"variant_comment\": \"Use \\\"\\\" for default variant, and \\\"dark\\\" for dark theme variant\",\n" " \"variant\": \"\"\n" " },\n" diff --git a/src/window.cc b/src/window.cc index 6c75e86..b29f147 100644 --- a/src/window.cc +++ b/src/window.cc @@ -139,11 +139,17 @@ Window::Window() : notebook(Notebook::get()) { void Window::configure() { Config::get().load(); - auto style_context = Gtk::StyleContext::create(); auto screen = Gdk::Screen::get_default(); - auto css_provider = Gtk::CssProvider::get_named(Config::get().window.theme_name, Config::get().window.theme_variant); + if(css_provider) + Gtk::StyleContext::remove_provider_for_screen(screen, css_provider); + if(Config::get().window.theme_name.empty()) { + css_provider=Gtk::CssProvider::create(); + Gtk::Settings::get_default()->property_gtk_application_prefer_dark_theme()=(Config::get().window.theme_variant=="dark"); + } + else + css_provider=Gtk::CssProvider::get_named(Config::get().window.theme_name, Config::get().window.theme_variant); //TODO: add check if theme exists, or else write error to terminal - style_context->add_provider_for_screen(screen, css_provider, GTK_STYLE_PROVIDER_PRIORITY_SETTINGS); + Gtk::StyleContext::add_provider_for_screen(screen, css_provider, GTK_STYLE_PROVIDER_PRIORITY_SETTINGS); Directories::get().update(); Menu::get().set_keys(); Terminal::get().configure(); diff --git a/src/window.h b/src/window.h index c8ed3ee..34e1a2d 100644 --- a/src/window.h +++ b/src/window.h @@ -28,6 +28,8 @@ private: Gtk::ScrolledWindow terminal_scrolled_window; Gtk::HBox info_and_status_hbox; Gtk::AboutDialog about; + + Glib::RefPtr css_provider; void configure(); void set_menu_actions();