예제 #1
0
 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
예제 #2
0
 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
예제 #3
0
    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
예제 #4
0
    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
예제 #5
0
    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
예제 #6
0
 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
예제 #7
0
 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
예제 #8
0
    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
예제 #9
0
    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
예제 #10
0
 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
예제 #11
0
    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
예제 #12
0
        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
예제 #13
0
 def on_set_error(proxy, error, data=None):
     logger.error('Error calling set_async on GSS: %s', error.message)
예제 #14
0
 def on_install_error(proxy, error, callback):
     logger.error('Error installing %s extension: %s', extension,
                  error.message)
     if callback:
         callback(False)
예제 #15
0
 def _on_done_callback(proxy, result):
     try:
         proxy.call_finish(result)
     except GLib.Error as e:
         logger.error('Error installing app: %s', e.message)
예제 #16
0
 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)