Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 13 additions & 21 deletions src/Services/Appearance.vala
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,26 @@
*/

public class Monitor.Appearance : Object {
public static void set_prefered_style () {
var granite_settings = Granite.Settings.get_default ();
var gtk_settings = Gtk.Settings.get_default ();
private static Gtk.CssProvider provider;

bool is_dark = granite_settings.prefers_color_scheme == Granite.Settings.ColorScheme.DARK;
gtk_settings.gtk_application_prefer_dark_theme = is_dark;
public static void set_prefered_style () {
provider = new Gtk.CssProvider ();
Gtk.StyleContext.add_provider_for_display (Gdk.Display.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);

var granite_settings = Granite.Settings.get_default ();
update_style_provider (granite_settings.prefers_color_scheme);

var provider = new Gtk.CssProvider ();
// We listen to changes in Granite.Settings and update our app if the user changes their preference
granite_settings.notify["prefers-color-scheme"].connect (() => {
update_style_provider (granite_settings.prefers_color_scheme);
});
}

if (is_dark) {
private static void update_style_provider (Granite.Settings.ColorScheme color_scheme) {
if (color_scheme == DARK) {
provider.load_from_resource ("/io/elementary/monitor/monitor-dark.css");
} else {
provider.load_from_resource ("/io/elementary/monitor/monitor-light.css");
}

Gtk.StyleContext.add_provider_for_display (Gdk.Display.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);

// We listen to changes in Granite.Settings and update our app if the user changes their preference
granite_settings.notify["prefers-color-scheme"].connect (() => {
is_dark = granite_settings.prefers_color_scheme == Granite.Settings.ColorScheme.DARK;
gtk_settings.gtk_application_prefer_dark_theme = is_dark;

if (is_dark) {
provider.load_from_resource ("/io/elementary/monitor/monitor-dark.css");
} else {
provider.load_from_resource ("/io/elementary/monitor/monitor-light.css");
}
});
}
}