id = "ulauncher" name = "Ulauncher" homepage = "https://ulauncher.io" description = "Application launcher for Linux with fuzzy search, custom themes and an extension API." # The project's own logo, from its homepage. icon = "https://ulauncher.io/assets/images/ulauncher-logo.png" executables = ["ulauncher"] platforms = ["linux"] [dotfiles] # ulauncher/paths.py names every directory the app uses, each built from the # XDG variable with the spec's fallback rather than a hard-coded path: # CONFIG = os.path.join(os.environ.get("XDG_CONFIG_HOME") or f"{HOME}/.config", "ulauncher") # DATA = os.path.join(os.environ.get("XDG_DATA_HOME") or f"{HOME}/.local/share", "ulauncher") # CACHE = os.path.join(os.environ.get("XDG_CACHE_HOME") or f"{HOME}/.cache", "ulauncher") # STATE = os.path.join(os.environ.get("XDG_STATE_HOME") or f"{HOME}/.local/state", "ulauncher") # and, under CONFIG: # _settings_file = f"{paths.CONFIG}/settings.json" (ulauncher/utils/settings.py) # EXTENSIONS_CONFIG = os.path.join(CONFIG, "ext_preferences") # USER_THEMES = os.path.join(CONFIG, "user-themes") # The config directory is therefore the whole of the user's configuration, and # it is listed as one path. It reads $XDG_CONFIG_HOME, so [configHome] is the # right root. # # Everything else is left out on purpose: USER_EXTENSIONS is DATA/extensions, # a directory of downloaded extension checkouts (with .staging and .repo-cache # beside it, described in that file as "Disposable"), EXTENSIONS_STATE and the # log files are under STATE, and CACHE is cache. None of them is under the path # above, so there is nothing to carve out. paths = ["[configHome]/ulauncher/"] # settings.json is preferences (theme_name, terminal_command, jump_keys, # base_width, show_tray_icon…), user-themes/ is CSS and a manifest, and # ext_preferences/ is the values a user typed into an extension's preferences # form. No file here is a credential end to end. An extension that asks for an # API key would keep it in its ext_preferences file, which is a field this # entry cannot name — the file's shape is the extension's, not Ulauncher's. secret = [] # No machine_lines: theme, hotkey aliases, jump keys and window width are the # settings a user wants on their other Linux machine. terminal_command names a # binary rather than a machine.