Look - Keyboard-First macOS Launcher#
Look is a keyboard-first launcher for macOS focused on fast local actions. It provides instant access to apps, files, folders, and system settings without leaving the keyboard.
Platform notice (April 2026): The current stable release is macOS-first. A Windows version is now actively in development.
Why Look?#
If you're tired of slow launchers or expensive tools like Raycast, Look offers a free, lightweight alternative that stays out of your way. It's designed for developers and power users who want quick access to everything on their Mac without leaving the keyboard.
Core Concepts#
- Local-first indexing: All search indexing happens locally on your machine
- Swift UI shell + Rust engine: Modern macOS UI powered by efficient Rust search
- Usage-aware ranking: Results improve over time based on your usage patterns
- Customizable themes: Multiple built-in themes with full customization options
Key Features#
- Fast Local Search: Instantly search apps, files, folders, and system settings
- Query Prefixes: Use prefixes like
a",f",d"to narrow search scope - Clipboard History: Access recent clipboard items with
c" - Translation: Quick translation with
t"and dictionary lookup withtw" - Command Mode: Built-in calculator, shell commands, force quit, and system info
- Customizable Themes: Multiple built-in themes including Catppuccin, Tokyo Night, and more
- Privacy-First: No external services required for core features
System Requirements#
- macOS 15.0+
- Keyboard shortcut:
Cmd+Space(conflicts with Spotlight by default)
Installation#
Requirements#
- macOS 15.0+
Windows build status: in active development (not publicly released yet).
Homebrew (Recommended)#
brew tap kunkka19xx/tap
brew install --cask lookUpdate#
brew upgrade --cask kunkka19xx/tap/lookManual Download#
Download the latest release from GitHub Releases.
Uninstall#
brew uninstall --cask lookOr manually remove:
rm -rf ~/Library/Application Support/Look
rm -f ~/.look.configFirst Launch#
Release builds are Developer ID signed and notarized, so normal first launch should open without Gatekeeper bypass.
If Cmd+Space is still opening Spotlight:
- Open
System Settings→Keyboard→Keyboard Shortcuts... - Go to Spotlight section
- Disable "Show Spotlight search" or rebind it to another shortcut

Getting Started#
Basic Usage#
- Open Look: Press
Cmd+Space(or your configured shortcut) - Type to Search: Start typing to search apps, files, folders, or settings
- Navigate: Use
Tab/Shift+Tabor arrow keys to move between results - Open: Press
Enterto open the selected item
Query Prefixes#
Use these prefixes to narrow your search scope:
| Prefix | Mode | Example |
|---|---|---|
a" | Apps only | a"term |
f" | Files only | f"term |
d" | Folders only | d"term |
r" | Regex search (case-insensitive) | r"pattern |
c" | Clipboard history | c"term |
t" | Quick translation panel | t"hello |
tw" | Dictionary lookup panel | tw"word |
Apps only search example#

Directories only search example#

Path-like queries (e.g., git/project/readme) are also supported and bias toward path matches.
Query Aliases#
Define aliases in ~/.look.config to map search terms to related apps:
alias_note=Notion|Obsidian|Notes|Apple Notes|Bear|Logseq
alias_code=Visual Studio Code|VSCode|Cursor|Windsurf|IntelliJ IDEA|PyCharm|WebStorm|Neovim|Xcode|Zed- Aliases apply to app + System Settings search only
- Aliases boost matching apps but don't create synthetic results
- Keep lists short (5-10 targets) for best results
Typical Workflow#
- Press
Cmd+Spaceto open launcher - Type to search apps/files/folders/settings
- Use
Tab/Shift+Tabor arrow keys to navigate - Press
Enterto open
Keyboard Shortcuts#
Global Shortcuts#
| Shortcut | Action |
|---|---|
Cmd+Space | Toggle launcher (default, configurable) |
Cmd+Shift+, | Open/close settings panel |
Cmd+Shift+; | Reload configuration |
Navigation#
| Shortcut | Action |
|---|---|
Tab | Next result |
Shift+Tab | Previous result |
↑ / ↓ | Move selection up/down |
Enter | Open selected result |
Escape | Go back / close (context dependent) |
Shift+Escape | Hide launcher (alternative) |
Actions#
| Shortcut | Action |
|---|---|
Cmd+H | Toggle help/shortcuts screen |
Cmd+Enter | Web search current query (Google) |
Cmd+F | Reveal selected item in Finder |
Cmd+C | Copy selected file/folder path |
Cmd+/ | Enter command mode |
Settings Panel Zoom#
| Shortcut | Action |
|---|---|
Cmd+- | Zoom out (temporary) |
Cmd+= | Zoom in (temporary) |
Cmd+0 | Reset zoom |
Query Prefixes#
| Prefix | Mode |
|---|---|
a" | Apps only |
f" | Files only |
d" | Folders only |
r" | Regex search |
c" | Clipboard history |
t" | Translation |
tw" | Dictionary lookup |
Features#
Clipboard History (`c"`)#
Access recently copied text items:
- Type
c"to enter clipboard mode - Browse recent text clips
- Press
Enterto copy an item back to clipboard
Note: Clipboard history is stored in-memory only and cleared when the app restarts.
Clipboard histories search example#

Translation (`t"` / `tw"`)#
Quick translation without leaving the launcher:
t"hello→ Translate "hello" to Vietnamese/English/Japanesetw"word→ Dictionary lookup with definitions and examples
Translate sentences, words via web#

Search words by MacOS's built-in LookUp#

Translation requires network connectivity.
Command Mode (`Cmd+/`)#
Built-in quick commands:
| Command | Description |
|---|---|
calc | Calculator (e.g., calc 2+2) |
shell | Execute shell commands |
kill | Force quit applications |
sys | System information |

Notes:
shellinput containingsudoshows an orange warning cuekillflow requires explicit confirmation
Background Image#
Add a custom background image:
- Place image in
~/look_bg.png - Adjust opacity and blur in settings
- Choose layout mode: fill, fit, tile, or stretch
Lazy Indexing#
When enabled (default), the app only reindexes when:
- File/app changes are detected
- Manual reload is triggered (
Cmd+Shift+;) - App restarts
Disable for immediate indexing on every launch (slower but fresher results).
Settings Panel#
Open with Cmd+Shift+,. Contains three tabs:
Appearance#
- Theme: 7 built-in presets (Catppuccin, Tokyo Night, Rose Pine, Gruvbox, Dracula, Kanagawa, Custom)
- Tint Color: accent color (RGB + opacity)
- Blur: blur material and opacity
- Font: name and size
- Font Color: text color (RGB + opacity)
- Border: thickness and color
Advanced#
- Background image (path, layout mode, opacity, blur)
- Indexing settings (File Scan Depth: 1-12, File Scan Limit: 500-50000)
- Backend log level
- Launch at login
- Config reset:
Create Fresh Configbutton with confirmation popup
Shortcuts#
- In-app keyboard shortcut documentation
- Toggle help screen with
Cmd+H
Configuration#
Look uses a configuration file at ~/.look.config. Changes take effect immediately after saving, or you can press Cmd+Shift+; to reload.
Configuration File Location#
- Default:
~/.look.config - Custom: Set
LOOK_CONFIG_PATHenvironment variable - Reload:
Cmd+Shift+; - Reset: Settings → Advanced → "Create Fresh Config"
Format#
- One
key=valueper line #starts a comment- Unknown keys ignored
- Invalid values fall back to defaults
Backend Settings#
App Scanning#
app_scan_roots=/Applications,/System/Applications,/System/Applications/Utilities,/System/Library/CoreServices/Applications
app_scan_depth=3
app_exclude_paths=
app_exclude_names=File Scanning#
file_scan_roots=Desktop,Documents,Downloads
file_scan_depth=4
file_scan_limit=4000
file_exclude_paths=Other Backend Options#
lazy_indexing_enabled=true
skip_dir_names=node_modules,target,build,dist,library,applications
backend_log_level=info
launch_at_login=falseBackend Keys Reference#
| Key | Description | Default |
|---|---|---|
app_scan_roots | Directories to scan for apps | (see above) |
app_scan_depth | Max depth for app scanning | 3 |
file_scan_roots | Directories to scan for files | Desktop,Documents,Downloads |
file_scan_depth | Max depth for file scanning (1-12) | 4 |
file_scan_limit | Max files to index (500-50000) | 4000 |
lazy_indexing_enabled | Enable lazy indexing | true |
skip_dir_names | Directories to skip | (see above) |
backend_log_level | Log verbosity | info |
launch_at_login | Start at login | false |
UI Theme Settings#
Theme Preset#
ui_theme=catppuccin
Available: catppuccin, tokyoNight, rosePine, gruvbox, dracula, kanagawa, custom
Appearance#
ui_tint_red=0.08
ui_tint_green=0.10
ui_tint_blue=0.12
ui_tint_opacity=0.55
ui_blur_material=hudWindow
ui_blur_opacity=0.95
ui_font_name=SF Pro Text
ui_font_size=14
ui_font_red=0.96
ui_font_green=0.96
ui_font_blue=0.98
ui_font_opacity=0.96
ui_border_thickness=1.0
ui_border_red=1.0
ui_border_green=1.0
ui_border_blue=1.0
ui_border_opacity=0.12Background Image#
ui_background_image=~/look_bg.png
ui_background_image_mode=fill
ui_background_image_opacity=0.5
ui_background_image_blur=10| Key | Options |
|---|---|
ui_background_image_mode | fill, fit, tile, stretch |
Settings Panel#
settings_blur_multiplier=0.8Search Aliases#
Define aliases to map search terms to related apps:
alias_note=Notion|Obsidian|Notes|Apple Notes|Bear|Logseq
alias_code=Visual Studio Code|VSCode|Cursor|Windsurf|IntelliJ IDEA|PyCharm|WebStorm|Neovim|Xcode|Zed
alias_term=Terminal|iTerm|iTerm2|Ghostty|WezTerm|Alacritty|Kitty|Warp
alias_chat=Slack|Discord|Telegram|Messages
alias_music=Spotify|Apple Music|Music
alias_brow=Safari|Arc|Google Chrome|Chrome|Firefox|BraveAlias behavior:
- Aliases apply to app + System Settings search only
- Aliases boost matching apps but don't create synthetic results
- If an aliased app is not installed, no error is shown
- Keep lists short (5-10 targets) for best results
Troubleshooting#
Hotkey Doesn't Open Launcher#
- Check Spotlight shortcut conflict:
System Settings→Keyboard→Keyboard Shortcuts...→Spotlight- Disable or rebind "Show Spotlight search"
- Relaunch Look and try again
- Check if app is running:
ps aux | grep LookResults Seem Stale or Incomplete#
- Reload configuration:
Cmd+Shift+; - Check scan settings in
~/.look.config:file_scan_rootsfile_scan_depth(range: 1-12)file_scan_limit(range: 500-50000)
- Verify exclude rules aren't too broad
- Keep
lazy_indexing_enabled=trueand useCmd+Shift+;to force refresh
Translation Returns Warnings/No Result#
- Confirm network connectivity
- Check that translation service is accessible
App Doesn't Appear in Search#
- Check
app_scan_rootsincludes the app's location - Verify
app_exclude_namesdoesn't exclude it - Reload config:
Cmd+Shift+;
First Launch Issues#
Current releases are signed and notarized. If you still encounter Gatekeeper issues:
- Confirm you installed a recent release
- Check System Settings → Privacy & Security for any blocks
- Legacy workaround (older builds only):
- Right-click app →
Open→ confirm - Or use
Privacy & Security→Open Anyway
- Right-click app →
Need to Inspect Local DB#
You can query the local SQLite database to inspect indexed candidates:
sqlite3 "$HOME/Library/Application Support/Look/look.db" "SELECT id,title,use_count FROM candidates ORDER BY use_count DESC LIMIT 20;"Reset Configuration#
To reset to default configuration:
- Open Settings (
Cmd+Shift+,) - Go to Advanced → "Create Fresh Config"
- Confirm the action (press
Y)
This replaces your current ~/.look.config with the latest default template.
Development#
Building from Source#
Requirements#
- macOS 15.0+
- Xcode (for app shell)
- Rust stable toolchain (for core engine)
- Node.js (for web components, optional)
Repository Structure#
look/
├── apps/macos/LauncherApp/ # Swift UI shell
├── core/ # Rust engine
│ ├── engine/ # Search & indexing
│ ├── matching/ # Fuzzy matching
│ ├── ranking/ # Result ranking
│ └── storage/ # SQLite storage
├── bridge/ffi/ # Swift-Rust FFI
└── docs/ # DocumentationBuild Commands#
# Check Rust workspace
cd core
cargo check --workspace
# Check FFI bridge
cd bridge/ffi
cargo check
# Run local dev app
make app-runDev App Behavior#
make app-run:
- Builds local app bundle with Xcode (Debug)
- Stops any running Look process
- Launches with
LOOK_CONFIG_PATH=$HOME/.look.dev.config - Shows red
TEST APPbadge for visual distinction
Running Tests#
# Rust tests
cd core
cargo test -p look-engine
# Swift tests (if available)
cd apps/macos/LauncherApp
swift testArchitecture Overview#
Look is built with a hybrid Swift/Rust architecture:
- Swift UI Shell: Modern macOS native interface using SwiftUI
- Rust Engine: Fast search and indexing via FFI
- SQLite Storage: Local database for candidates and usage data
Core Components#
- Search Engine: Handles fuzzy matching and ranking
- Index Manager: Manages file/app indexing
- Storage Layer: SQLite for persistence
- FFI Bridge: Swift-Rust communication
Contributing#
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
See CONTRIBUTING.md for details.