diff --git a/schemas/com.github.alecaddd.sequeler.gschema.xml.in b/schemas/com.github.alecaddd.sequeler.gschema.xml.in
index 9af96797..55b5f326 100644
--- a/schemas/com.github.alecaddd.sequeler.gschema.xml.in
+++ b/schemas/com.github.alecaddd.sequeler.gschema.xml.in
@@ -54,12 +54,6 @@
Automatically Save a Quick Connections into the Database Library.
-
- false
- Use dark theme
- Switch between Light and Dark theme.
-
-
""
Current Version
diff --git a/src/Application.vala b/src/Application.vala
index 1683646e..40d11491 100644
--- a/src/Application.vala
+++ b/src/Application.vala
@@ -99,6 +99,26 @@ public class Sequeler.Application : Gtk.Application {
return window;
}
+ private static bool granite_color_scheme_to_gtk_dark_theme (Binding binding, Value granite_prop, ref Value gtk_prop) {
+ gtk_prop.set_boolean ((Granite.Settings.ColorScheme) granite_prop == Granite.Settings.ColorScheme.DARK);
+ return true;
+ }
+
+ protected override void startup () {
+ base.startup ();
+
+ // Follow OS-wide dark preference
+ unowned var granite_settings = Granite.Settings.get_default ();
+ unowned var gtk_settings = Gtk.Settings.get_default ();
+
+ granite_settings.bind_property ("prefers-color-scheme", gtk_settings, "gtk-application-prefer-dark-theme",
+ BindingFlags.DEFAULT | BindingFlags.SYNC_CREATE,
+ // FIXME: Using the lambda expression here causes Window not being freed when it's destroyed.
+ // Maybe due to this issue in vala: https://gitlab.gnome.org/GNOME/vala/-/issues/957
+ (BindingTransformFunc) granite_color_scheme_to_gtk_dark_theme
+ );
+ }
+
protected override void activate () {
this.add_new_window ();
}
diff --git a/src/Layouts/HeaderBar.vala b/src/Layouts/HeaderBar.vala
index 0810cb7e..2b110986 100644
--- a/src/Layouts/HeaderBar.vala
+++ b/src/Layouts/HeaderBar.vala
@@ -26,7 +26,6 @@ public class Sequeler.Layouts.HeaderBar : Gtk.HeaderBar {
private Gtk.Button new_db_button;
private Gtk.Button delete_db_button;
private Gtk.Button edit_db_button;
- private Granite.ModeSwitch mode_switch;
private Gtk.Popover menu_popover;
public bool logged_out { get; set; }
@@ -85,19 +84,6 @@ public class Sequeler.Layouts.HeaderBar : Gtk.HeaderBar {
delete_db_button.visible = false;
delete_db_button.no_show_all = true;
- mode_switch = new Granite.ModeSwitch.from_icon_name ("display-brightness-symbolic", "weather-clear-night-symbolic");
- mode_switch.primary_icon_tooltip_text = _("Light background");
- mode_switch.secondary_icon_tooltip_text = _("Dark background");
- mode_switch.valign = Gtk.Align.CENTER;
- mode_switch.bind_property ("active", settings, "dark-theme");
- mode_switch.notify.connect (() => {
- Gtk.Settings.get_default ().gtk_application_prefer_dark_theme = settings.dark_theme;
- });
-
- if (settings.dark_theme) {
- mode_switch.active = true;
- }
-
var new_window_item = new_menuitem (_("New Window"), "n");
new_window_item.action_name = Sequeler.Services.ActionManager.ACTION_PREFIX + Sequeler.Services.ActionManager.ACTION_NEW_WINDOW;
@@ -140,8 +126,6 @@ public class Sequeler.Layouts.HeaderBar : Gtk.HeaderBar {
pack_start (delete_db_button);
pack_end (open_menu);
- pack_end (headerbar_separator ());
- pack_end (mode_switch);
}
private Gtk.ModelButton new_menuitem (string label, string accels) {
diff --git a/src/Services/Settings.vala b/src/Services/Settings.vala
index 51f60f72..79a2c144 100644
--- a/src/Services/Settings.vala
+++ b/src/Services/Settings.vala
@@ -52,10 +52,6 @@ public class Sequeler.Services.Settings : GLib.Settings {
get { return get_int ("limit-results"); }
set { set_int ("limit-results", value); }
}
- public bool dark_theme {
- get { return get_boolean ("dark-theme"); }
- set { set_boolean ("dark-theme", value); }
- }
public bool save_quick {
get { return get_boolean ("save-quick"); }
set { set_boolean ("save-quick", value); }
diff --git a/src/Window.vala b/src/Window.vala
index 5682e872..c51f7475 100644
--- a/src/Window.vala
+++ b/src/Window.vala
@@ -60,8 +60,6 @@ public class Sequeler.Window : Gtk.ApplicationWindow {
}
private void build_ui () {
- Gtk.Settings.get_default ().gtk_application_prefer_dark_theme = settings.dark_theme;
-
var css_provider = new Gtk.CssProvider ();
css_provider.load_from_resource ("/com/github/alecaddd/sequeler/stylesheet.css");