def setup(self, _): self.hold() # Keep the app running even without a window self.window = window = UlauncherWindow.get_instance() window.set_application(self) window.set_keep_above(True) window.position_window() window.init_theme() # this will trigger to show frequent apps if necessary window.show_results([]) if self.settings.get_property('show-indicator-icon'): self.appindicator = AppIndicator(self) self.appindicator.switch(True) if IS_X11: # bind hotkey Keybinder.init() accel_name = self.settings.get_property('hotkey-show-app') # bind in the main thread GLib.idle_add(self.bind_hotkey, accel_name) ExtensionServer.get_instance().start() time.sleep(0.01) ExtensionRunner.get_instance().run_all()
def prefs_extension_add(self, query): url = query['url'] logger.info('Add extension: %s', url) downloader = ExtensionDownloader.get_instance() ext_id = downloader.download(url) ExtensionRunner.get_instance().run(ext_id) return self._get_all_extensions()
def finish_initializing(self, ui): # pylint: disable=attribute-defined-outside-init self.ui = ui self.preferences = None # instance self.results_nav = None self.window_body = self.ui['body'] self.input = self.ui['input'] self.prefs_btn = self.ui['prefs_btn'] self.result_box = self.ui["result_box"] self.scroll_container = self.ui["result_box_scroll_container"] self.input.connect('changed', self.on_input_changed) self.prefs_btn.connect('clicked', self.on_mnu_preferences_activate) self.set_keep_above(True) self.settings = Settings.get_instance() self.fix_window_width() self.position_window() self.init_theme() # this will trigger to show frequent apps if necessary self.show_results([]) self.connect('button-press-event', self.mouse_down_event) self.connect('button-release-event', self.mouse_up_event) self.connect('motion_notify_event', self.mouse_move_event) if self.settings.get_property('show-indicator-icon'): AppIndicator.get_instance(self).show() if IS_X11: # bind hotkey Keybinder.init() accel_name = self.settings.get_property('hotkey-show-app') # bind in the main thread GLib.idle_add(self.bind_hotkey, accel_name) ExtensionServer.get_instance().start() time.sleep(0.01) ExtensionRunner.get_instance().run_all() if not get_options().no_extensions: ExtensionDownloader.get_instance().download_missing()
def extension_update_ext(self, query): ext_id = query['id'] logger.info('Update extension: %s', ext_id) try: runner = ExtensionRunner.get_instance() runner.stop(ext_id) ExtensionDownloader.get_instance().update(ext_id) runner.run(ext_id) except ExtensionManifestError as e: raise PrefsApiError(e) from e
def get_extension_info(ext_id: str, prefs: ExtensionPreferences, error: ExtError = None) -> ExtensionInfo: controllers = ExtensionServer.get_instance().controllers ext_db = ExtensionDb.get_instance() is_connected = ext_id in controllers ext_runner = ExtensionRunner.get_instance() is_running = is_connected or ext_runner.is_running(ext_id) ext_db_record = ext_db.find(ext_id, {}) # Controller method `get_icon_path` would work, but only running extensions have controllers icon = get_icon_path(prefs.manifest.get_icon(), base_path=f"{EXTENSIONS_DIR}/{ext_id}") return { 'id': ext_id, 'url': ext_db_record.get('url'), 'updated_at': ext_db_record.get('updated_at'), 'last_commit': ext_db_record.get('last_commit'), 'last_commit_time': ext_db_record.get('last_commit_time'), 'name': prefs.manifest.get_name(), 'icon': icon, 'description': prefs.manifest.get_description(), 'developer_name': prefs.manifest.get_developer_name(), 'instructions': prefs.manifest.get_instructions(), 'preferences': prefs.get_items(), 'error': error, 'is_running': is_running, 'runtime_error': ext_runner.get_extension_error(ext_id) if not is_running else None }
def _get_extension_info(self, ext_id: str, prefs: ExtensionPreferences, error: ExtError = None) -> ExtensionInfo: ext_db = ExtensionDb.get_instance() is_connected = ext_id in ExtensionServer.get_instance().controllers ext_runner = ExtensionRunner.get_instance() is_running = is_connected or ext_runner.is_running(ext_id) ext_db_record = ext_db.find(ext_id, {}) return { 'id': ext_id, 'url': ext_db_record.get('url'), 'updated_at': ext_db_record.get('updated_at'), 'last_commit': ext_db_record.get('last_commit'), 'last_commit_time': ext_db_record.get('last_commit_time'), 'name': prefs.manifest.get_name(), 'icon': prefs.manifest.get_icon_path(), 'description': prefs.manifest.get_description(), 'developer_name': prefs.manifest.get_developer_name(), 'preferences': prefs.get_items(), 'error': error, 'is_running': is_running, 'runtime_error': ext_runner.get_extension_error(ext_id) if not is_running else None }
def runner(self, ext_server): thisrunner = ExtensionRunner(ext_server) thisrunner.dont_run_extensions = False return thisrunner
def runner(self): thisrunner = ExtensionRunner() thisrunner.dont_run_extensions = False return thisrunner
def extension_remove(self, query): ext_id = query['id'] logger.info('Remove extension: %s', ext_id) ExtensionRunner.get_instance().stop(ext_id) ExtensionDownloader.get_instance().remove(ext_id)
def get_instance(cls) -> 'ExtensionDownloader': ext_db = ExtensionDb.get_instance() ext_runner = ExtensionRunner.get_instance() return cls(ext_db, ext_runner)