From dcbcbf9c0ea69a2b63e2b79cbe2ba3efd4a0163d Mon Sep 17 00:00:00 2001 From: vilez Date: Sat, 1 Jun 2024 21:05:21 +0300 Subject: [PATCH 1/2] feat: use gnome's nightlight api on gnome desktop (This will make pardus-nightlight work on Gnome wayland as well) --- src/MainWindow.py | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/MainWindow.py b/src/MainWindow.py index ce3057c..078d2ea 100644 --- a/src/MainWindow.py +++ b/src/MainWindow.py @@ -82,9 +82,7 @@ def __init__(self, application): # With the others GTK_STYLE_PROVIDER_PRIORITY values get the same result. def sighandler(signum, frame): - subprocess.run(["redshift", "-x"]) - if self.about_dialog.is_visible(): - self.about_dialog.hide() + self.reset_temp() self.main_window.get_application().quit() signal.signal(signal.SIGINT, sighandler) @@ -123,7 +121,7 @@ def init_ui(self): self.temp_adjusment.set_value(self.UserSettings.config_temp) self.autostart_switch.set_state(self.UserSettings.config_autostart) if not self.UserSettings.config_status: - subprocess.run(["redshift", "-x"]) + self.reset_temp() system_wide = "usr/share" in os.path.dirname(os.path.abspath(__file__)) if not system_wide: @@ -183,9 +181,7 @@ def on_menu_show_app(self, *args): self.main_window.present() def on_menu_quit_app(self, *args): - subprocess.run(["redshift", "-x"]) - if self.about_dialog.is_visible(): - self.about_dialog.hide() + self.reset_temp() self.main_window.get_application().quit() def on_ui_temp_adjusment_value_changed(self, adjusment): @@ -193,7 +189,8 @@ def on_ui_temp_adjusment_value_changed(self, adjusment): print("on_ui_temp_adjusment_value_changed", value) if self.UserSettings.config_status: - subprocess.run(["redshift", "-P", "-O", value]) + self.reset_temp() + self.change_temp(value) user_temp = self.UserSettings.config_temp if value != user_temp: @@ -206,12 +203,12 @@ def on_ui_night_switch_state_set(self, switch, state): if "tray" in self.Application.args.keys() and self.make_first_sleep: self.make_first_sleep = False time.sleep(5) - subprocess.run(["redshift", "-P", "-O", "{:0.0f}".format(self.UserSettings.config_temp)]) + self.change_temp("{:0.0f}".format(self.UserSettings.config_temp)) self.temp_adjusment.set_value(self.UserSettings.config_temp) self.item_action.set_label(_("Disable")) self.indicator.set_icon(self.icon_active) else: - subprocess.run(["redshift", "-x"]) + self.reset_temp() self.item_action.set_label(_("Enable")) self.indicator.set_icon(self.icon_passive) @@ -238,7 +235,20 @@ def on_ui_main_window_delete_event(self, widget, event): return True def on_ui_main_window_destroy(self, widget, event): - subprocess.run(["redshift", "-x"]) - if self.about_dialog.is_visible(): - self.about_dialog.hide() + self.reset_temp() self.main_window.get_application().quit() + + def change_temp(self,value): + self.desktop= os.environ['XDG_CURRENT_DESKTOP'] or "unknown" + if self.desktop == "GNOME": + subprocess.run(["gsettings", "set", "org.gnome.settings-daemon.plugins.color", "night-light-temperature",value]) + else: + subprocess.run(["redshift", "-P", "-O",value]) + + def reset_temp(self): + self.desktop= os.environ['XDG_CURRENT_DESKTOP'] or "unknown" + if self.desktop == "GNOME": + subprocess.run(["gsettings", "set", "org.gnome.settings-daemon.plugins.color", "night-light-enabled","true"]) + self.change_temp("6500") + else: + subprocess.run(["redshift", "-x"]) \ No newline at end of file From 7d04cd7a46312610a8e0bdc511894b648881bf0e Mon Sep 17 00:00:00 2001 From: vilez Date: Mon, 8 Jul 2024 17:42:20 +0300 Subject: [PATCH 2/2] fix: switch night-light on/off with gsettings depending on the state of ui_night_switch --- src/MainWindow.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/MainWindow.py b/src/MainWindow.py index 078d2ea..cf23b91 100644 --- a/src/MainWindow.py +++ b/src/MainWindow.py @@ -82,7 +82,7 @@ def __init__(self, application): # With the others GTK_STYLE_PROVIDER_PRIORITY values get the same result. def sighandler(signum, frame): - self.reset_temp() + self.reset_temp(False) self.main_window.get_application().quit() signal.signal(signal.SIGINT, sighandler) @@ -121,7 +121,7 @@ def init_ui(self): self.temp_adjusment.set_value(self.UserSettings.config_temp) self.autostart_switch.set_state(self.UserSettings.config_autostart) if not self.UserSettings.config_status: - self.reset_temp() + self.reset_temp(False) system_wide = "usr/share" in os.path.dirname(os.path.abspath(__file__)) if not system_wide: @@ -181,7 +181,7 @@ def on_menu_show_app(self, *args): self.main_window.present() def on_menu_quit_app(self, *args): - self.reset_temp() + self.reset_temp(False) self.main_window.get_application().quit() def on_ui_temp_adjusment_value_changed(self, adjusment): @@ -189,7 +189,7 @@ def on_ui_temp_adjusment_value_changed(self, adjusment): print("on_ui_temp_adjusment_value_changed", value) if self.UserSettings.config_status: - self.reset_temp() + self.reset_temp(True) self.change_temp(value) user_temp = self.UserSettings.config_temp @@ -203,12 +203,13 @@ def on_ui_night_switch_state_set(self, switch, state): if "tray" in self.Application.args.keys() and self.make_first_sleep: self.make_first_sleep = False time.sleep(5) + self.reset_temp(True) self.change_temp("{:0.0f}".format(self.UserSettings.config_temp)) self.temp_adjusment.set_value(self.UserSettings.config_temp) self.item_action.set_label(_("Disable")) self.indicator.set_icon(self.icon_active) else: - self.reset_temp() + self.reset_temp(False) self.item_action.set_label(_("Enable")) self.indicator.set_icon(self.icon_passive) @@ -235,7 +236,7 @@ def on_ui_main_window_delete_event(self, widget, event): return True def on_ui_main_window_destroy(self, widget, event): - self.reset_temp() + self.reset_temp(False) self.main_window.get_application().quit() def change_temp(self,value): @@ -245,10 +246,11 @@ def change_temp(self,value): else: subprocess.run(["redshift", "-P", "-O",value]) - def reset_temp(self): + def reset_temp(self, set_night_light_enabled: bool): self.desktop= os.environ['XDG_CURRENT_DESKTOP'] or "unknown" if self.desktop == "GNOME": - subprocess.run(["gsettings", "set", "org.gnome.settings-daemon.plugins.color", "night-light-enabled","true"]) - self.change_temp("6500") + subprocess.run(["gsettings", "set", "org.gnome.settings-daemon.plugins.color", "night-light-enabled", str(set_night_light_enabled).lower()]) + if set_night_light_enabled: + self.change_temp("6500") else: subprocess.run(["redshift", "-x"]) \ No newline at end of file