Spotlight AI
⭐ If this saves you time, drop a star — it helps others find it!
A macOS Spotlight-style AI bar for Linux. Press a hotkey, ask anything, get answers inline — without leaving your workflow.
Powered by OpenCode with 200+ free and paid models (DeepSeek, Gemini, Claude, Qwen, Kimi, GLM and more).
Screenshots
Type your question:
Thinking...
Answer inline:
Install
pip install spotlight-ai
spotlight-setup
That's it. spotlight-setup will:
- Install OpenCode CLI automatically
- Install PyQt5 if missing
- Register your hotkey (default
Ctrl+Space, or pick your own)
Usage
| Command | What it does |
|---|---|
spotlight |
Launch the bar |
spotlight --help |
Show help |
spotlight-setup |
First-time setup (install deps + hotkey) |
spotlight-keybind |
Register Ctrl+Space hotkey |
spotlight-keybind "<Super>space" |
Register a custom hotkey |
spotlight-help |
Show all commands |
Custom hotkeys
spotlight-keybind # Ctrl+Space (default)
spotlight-keybind "<Super>space" # Win+Space
spotlight-keybind "<Alt>space" # Alt+Space
spotlight-keybind "<Control><Shift>s" # Ctrl+Shift+S
Slash commands (inside the bar)
| Command | What it does |
|---|---|
/help |
Show slash command menu |
/model |
Show current active model |
/models |
List all available models (fetched live) |
/<alias> |
Switch model — e.g. /gemini-2.5-flash |
/<alias> <prompt> |
Switch + ask in one shot |
Model aliases are auto-derived from model IDs (last segment, lowercase). No hardcoded list — when OpenCode adds new models, they appear automatically.
Examples:
/deepseek-v4-flash-free
/gemini-2.5-flash what is a monad?
/claude-sonnet-4.6 write a regex for email
/kimi-k2-instruct explain async/await in 3 lines
Active model persists in ~/.spotlight/config.json.
How it works
hotkey pressed
└─▶ PyQt5 frameless dark overlay appears (center of screen)
└─▶ you type, press Enter
└─▶ opencode run --format json -m <model> "<prompt>"
└─▶ answer appears in the bar
└─▶ press Esc to close
Slash commands are parsed before sending to OpenCode. Model switches are instant and persistent.
Requirements
- Linux (GNOME for hotkey auto-registration; other DEs work manually)
- Python 3.10+
- OpenCode CLI — installed automatically by
spotlight-setup - PyQt5 — installed automatically by
spotlight-setup
Files
spotlight_ai/
cli.py entry points: spotlight, spotlight-setup, spotlight-keybind, spotlight-help
ui.py PyQt5 frameless window — search bar + result area + animations
opencode.py subprocess wrapper around opencode CLI
slash.py slash command parser — live model list, persistent config
Why not just use the terminal?
hotkey → type → read beats switching windows, typing a long command, and scrolling output. Spotlight stays on top, answers inline, and disappears with Esc. Works from anywhere — full-screen apps, browsers, anything.
Built with OpenCode + PyQt5. Inspired by macOS Spotlight.
PyPI: spotlight-ai · GitHub: santhoshkammari/spotlight-ai
Metadata
Release files for spotlight-ai 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| spotlight_ai-0.1.7.tar.gz | 13.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| spotlight_ai-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.0 kB
Release files / spotlight_ai-0.1.7.tar.gz
| Download URL | spotlight_ai-0.1.7.tar.gz |
|---|---|
| Size | 13.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ce972cca9293edd4bd7d29edfc82c800defd16d4dd5808fa3f449a4a83e02bd7
|
|
BLAKE2b-256 checksum How to use checksums |
f85c25e3f0368291df91739d18f7afad7c914775073ad6c3eacbc379f177d21b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / spotlight_ai-0.1.7-py3-none-any.whl
| Download URL | spotlight_ai-0.1.7-py3-none-any.whl |
|---|---|
| Size | 12.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
da3861d0f752bd2bdc3704ca9730d5c2d35d3c98bb489b190655391fee401835
|
|
BLAKE2b-256 checksum How to use checksums |
639a41874fa79e5d31da5caec2abf365e8dd10ec82eed8a3092379268dd037cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|