def errors(self): try: prop = self._get_proxy().get_cached_property('errors') if prop is not None: return prop.unpack() except GLib.Error as e: logger.error(e) return False
def is_app_in_grid(klass, app_name): app_name = klass.get_app_desktop_name(app_name) try: apps = klass.get_shell_app_store_proxy().ListApplications() return app_name in apps except GLib.Error as e: logger.error(e) return False
def add_app_to_grid(klass, app_name): app_name = klass.get_app_desktop_name(app_name) try: klass.get_shell_app_store_proxy().AddApplication('(s)', app_name) except GLib.Error as e: logger.error(e) return False return True
def set_js_property(self, prop, value): '''Shortcut for calling :meth:`set_object_property()` in Javascript globals. ''' try: self.set_object_property(self.APP_JS_PARAMS, prop, value) except Exception as e: logger.error(e) return False return True
def is_app_in_foreground(klass, app_name): app_name = klass.get_app_desktop_name(app_name) try: prop = klass.get_hack_proxy().get_cached_property('FocusedApp') if prop is not None: return prop.unpack() == app_name except GLib.Error as e: logger.error(e) return False
def launch_app(klass, name): try: klass.get_app_launcher_proxy().Launch('(su)', name, int(time.time())) except GLib.Error as e: logger.error(e) # Fallback, try to use custom launch script if the app launcher is # not working return klass.launch_app_py(name) return True
def minimize_all(klass): """ Minimizes all the windows from the overview. """ try: klass.get_hack_proxy().MinimizeAll() except GLib.Error as e: logger.error(e) return False return True
def get_js_property(self, prop, default_value=None): '''Shortcut for calling :meth:`get_object_property()` in Javascript globals. ''' value = default_value try: value = self.get_object_property(self.APP_JS_PARAMS, prop) except Exception as e: logger.error(e) return value
def launch_gapp(self): '''Launch the GTK application. Note: this works only for GTK applications. See :meth:`launch()` for a generic method. ''' try: self.get_gtk_launch_app_proxy().Activate('(a{sv})', []) except GLib.Error as e: logger.error(e) return False return True
def launch_app_py(klass, name): app_name = f'{name}.desktop' sandbox = get_flatpak_sandbox() # Remove /app launch_script = '/'.join(LAUNCH_SCRIPT_PATH.split('/')[2:]) script_path = f'{sandbox}/{launch_script}' try: subprocess.run( ['/usr/bin/flatpak-spawn', '--host', script_path, app_name], check=True) except Exception as e: logger.error(e) return False return True
def focus_app(klass, app_name, delay=1): app_name = klass.get_app_desktop_name(app_name) try: # workaround to avoid this issue: # https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3388 # FIXME: remove this delay once this issue is fixed and released if delay: klass.get_shell_proxy().ShowApplications() GLib.timeout_add_seconds(delay, klass.focus_app, app_name, 0) return GLib.SOURCE_REMOVE klass.get_shell_proxy().FocusApp('(s)', app_name) except GLib.Error as e: logger.error(e) return GLib.SOURCE_REMOVE
def _get_ekn_id(article_name): search_results = None try: search_results = self.get_ekn_search_provider_proxy().Query( '(aa{sv})', ({ 'search-terms': GLib.Variant('s', article_name) }, )) except GLib.Error as e: logger.error(e) return None results_count = search_results[1][0][0]['upper_bound'] if results_count == 0: return None for elem in search_results[1][0][1]: if elem['title'].lower() == article_name.lower(): return elem['id'] return None
def on_set_error(proxy, error, data=None): logger.error('Error calling set_async on GSS: %s', error.message)
def on_install_error(proxy, error, callback): logger.error('Error installing %s extension: %s', extension, error.message) if callback: callback(False)
def _on_done_callback(proxy, result): try: proxy.call_finish(result) except GLib.Error as e: logger.error('Error installing app: %s', e.message)
def _on_done_callback(proxy, result): try: proxy.call_finish(result) except GLib.Error as e: logger.error('Error showing details of app: %s', e.message)