Files
Radu Macocian 58823cb24a
Tag and publish to AUR / tag (push) Successful in 1m20s
Tag and publish to AUR / publish (push) Has been skipped
Moved to module structure to work in embeded qs processes
2026-07-15 15:25:33 +02:00

121 lines
3.6 KiB
Markdown

# omni-launcher
A Wayland application launcher overlay built on [Quickshell](https://quickshell.org). Beyond app search it supports inline calculator, unit/currency conversion, unicode lookup and Giphy search — each picked by a single-character prefix.
## Features
- `query` — fuzzy app search across `.desktop` entries
- `= expr` — calculator + unit conversion (length, mass, volume, time, temperature, area, energy, data, …)
- `= 100 usd to eur` — live currency conversion via [Frankfurter](https://frankfurter.dev)
- `. name` — unicode search by character name (e.g. `. heart`)
- `! query` — animated GIF search via Giphy (requires API key)
- Theme follows `xdg-desktop-portal` appearance (dark/light + accent) and Qt's platform palette/font.
- Optional Hyprland integration: close on workspace switch and focus-grab dismissal.
## Install
From the AUR:
```sh
yay -S omni-launcher
```
Or build from a clone:
```sh
makepkg -si
```
## Usage
omni-launcher can run in two modes: **standalone** (its own quickshell process) or **embedded** (imported as a QML module inside an existing quickshell config, saving a process).
### Standalone mode
Start the daemon once per session (e.g. in `~/.config/hypr/hyprland.conf`):
```
exec-once = omni-launcher
```
Bind a key to toggle the overlay:
```
bind = SUPER, SPACE, exec, omni-launcher-toggle
```
`omni-launcher-toggle` calls the running instance over Quickshell IPC. The launcher closes on `Esc`, click-outside, or workspace switch (Hyprland).
### Embedded mode
Instead of running a separate quickshell process, you can import `OmniLauncher` directly inside your existing quickshell config. The module ships its own `Theme`, `Config`, and `LauncherService` singletons (module-scoped — they won't collide with your config's own singletons).
1. Install `omni-launcher` from the AUR (this places the module on the Qt6 import path at `/usr/lib/qt6/qml/OmniLauncher/`).
2. In your `shell.qml`, import the module and instantiate `Launcher {}`:
```qml
import Quickshell
import Quickshell.Io
import OmniLauncher
ShellRoot {
IpcHandler {
target: "launcher"
function toggle(): void { LauncherService.toggle(); }
function open(): void { LauncherService.open(); }
function close(): void { LauncherService.close(); }
}
Launcher {}
}
```
3. Bind a key to toggle it via your host config's IPC socket:
```
bind = SUPER, SPACE, exec, quickshell ipc call launcher toggle
```
Do **not** run `omni-launcher` (the daemon) in embedded mode — the host quickshell process already owns the launcher.
## Configuration
`~/.config/omni-launcher/config.json` — any missing key falls back to a built-in default, so the file can be omitted entirely:
```json
{
"fontFamily": "JetBrainsMono Nerd Font Propo",
"fontSize": 16,
"giphyApiKey": "",
"panelWidth": 720,
"panelHeight": 520,
"padding": 5,
"spacing": 5,
"radius": 10,
"colors": {
"background": "#101010",
"foreground": "#e6e6e6",
"idle": "#a0a0a0",
"accent": "#5e9eff",
"overlayStrong": "#2b5f96",
"overlayWeak": "#202020",
"border": "#3a3a3a"
}
}
```
Changes take effect on restart (`omni-launcher`).
### Theming
The launcher reads `org.freedesktop.appearance` from `xdg-desktop-portal` for color-scheme and accent, and falls back to Qt's `SystemPalette` (qt6ct / KDE / qgnomeplatform) for everything else. Values under `colors` are optional overrides for users or theme managers that want a fixed palette.
## Dependencies
- `quickshell`, `wl-clipboard`, `curl`, `python`, `glib2`
- Optional: `hyprland` for workspace-switch dismissal and focus grab
## License
GPL-3.0-or-later. See `LICENSE`.