diff --git a/src/window.py b/src/window.py index a7b3e63..eae756a 100644 --- a/src/window.py +++ b/src/window.py @@ -110,6 +110,7 @@ class AlpacaWindow(Adw.ApplicationWindow): instance_idle_timer = Gtk.Template.Child() background_switch = Gtk.Template.Child() + powersaver_warning_switch = Gtk.Template.Child() remote_connection_switch = Gtk.Template.Child() remote_connection_entry = Gtk.Template.Child() remote_bearer_token_entry = Gtk.Template.Child() @@ -253,6 +254,15 @@ class AlpacaWindow(Adw.ApplicationWindow): logger.debug("Switching run on background") self.set_hide_on_close(switch.get_active()) self.save_server_config() + + @Gtk.Template.Callback() + def switch_powersaver_warning(self, switch, user_data): + logger.debug("Switching powersaver warning banner") + if switch.get_active(): + self.banner.set_revealed(Gio.PowerProfileMonitor.dup_default().get_power_saver_enabled()) + else: + self.banner.set_revealed(False) + self.save_server_config() @Gtk.Template.Callback() def closing_app(self, user_data): @@ -493,6 +503,7 @@ Generate a title following these rules: 'run_remote': self.ollama_instance.remote, 'local_port': self.ollama_instance.local_port, 'run_on_background': self.background_switch.get_active(), + 'powersaver_warning': self.powersaver_warning_switch.get_active(), 'model_tweaks': self.ollama_instance.tweaks, 'ollama_overrides': self.ollama_instance.overrides, 'idle_timer': self.ollama_instance.idle_timer_delay @@ -772,6 +783,9 @@ Generate a title following these rules: elif extension == 'pdf': self.attach_file(file.get_path(), 'pdf') + def power_saver_toggled(self, monitor): + self.banner.set_revealed(monitor.get_power_saver_enabled() and self.powersaver_warning_switch.get_active()) + def prepare_alpaca(self, local_port:int, remote_url:str, remote:bool, tweaks:dict, overrides:dict, bearer_token:str, idle_timer_delay:int, save:bool, show_launch_dialog:bool): #Show launch dialog if show_launch_dialog: @@ -828,10 +842,7 @@ Generate a title following these rules: def __init__(self, **kwargs): super().__init__(**kwargs) - self.banner.set_revealed(Gio.PowerProfileMonitor.dup_default().get_power_saver_enabled()) - Gio.PowerProfileMonitor.dup_default().connect("notify::power-saver-enabled", lambda monitor, *_: self.banner.set_revealed(monitor.get_power_saver_enabled())) - self.banner.connect('button-clicked', lambda *_: self.banner.set_revealed(False)) - + message_widget.window = self chat_widget.window = self model_widget.window = self @@ -883,13 +894,24 @@ Generate a title following these rules: try: with open(os.path.join(config_dir, "server.json"), "r", encoding="utf-8") as f: data = json.load(f) - self.background_switch.set_active(data['run_on_background']) + self.background_switch.set_active(data['run_on_background']) if 'idle_timer' not in data: data['idle_timer'] = 0 + if 'powersaver_warning' not in data: + data['powersaver_warning'] = True + self.powersaver_warning_switch.set_active(data['powersaver_warning']) threading.Thread(target=self.prepare_alpaca, args=(data['local_port'], data['remote_url'], data['run_remote'], data['model_tweaks'], data['ollama_overrides'], data['remote_bearer_token'], round(data['idle_timer']), False, True)).start() except Exception as e: logger.error(e) threading.Thread(target=self.prepare_alpaca, args=(11435, '', False, {'temperature': 0.7, 'seed': 0, 'keep_alive': 5}, {}, '', 0, True, True)).start() + self.powersaver_warning_switch.set_active(True) else: threading.Thread(target=self.prepare_alpaca, args=(11435, '', False, {'temperature': 0.7, 'seed': 0, 'keep_alive': 5}, {}, '', 0, True, False)).start() + self.powersaver_warning_switch.set_active(True) self.welcome_dialog.present(self) + + if self.powersaver_warning_switch.get_active(): + self.banner.set_revealed(Gio.PowerProfileMonitor.dup_default().get_power_saver_enabled()) + + Gio.PowerProfileMonitor.dup_default().connect("notify::power-saver-enabled", lambda monitor, *_: self.power_saver_toggled(monitor)) + self.banner.connect('button-clicked', lambda *_: self.banner.set_revealed(False)) diff --git a/src/window.ui b/src/window.ui index 7ca7dad..70f2875 100644 --- a/src/window.ui +++ b/src/window.ui @@ -263,6 +263,12 @@ Run Alpaca In Background + + + + Show Power Saver Warning + +