示例#1
0
    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()
示例#2
0
    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()
示例#3
0
    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()
示例#4
0
 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
示例#5
0
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
    }
示例#6
0
 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
     }
示例#7
0
 def runner(self, ext_server):
     thisrunner = ExtensionRunner(ext_server)
     thisrunner.dont_run_extensions = False
     return thisrunner
示例#8
0
 def runner(self):
     thisrunner = ExtensionRunner()
     thisrunner.dont_run_extensions = False
     return thisrunner
示例#9
0
 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)
示例#10
0
 def get_instance(cls) -> 'ExtensionDownloader':
     ext_db = ExtensionDb.get_instance()
     ext_runner = ExtensionRunner.get_instance()
     return cls(ext_db, ext_runner)