A keyboard-first, local-first launcher for macOS, Windows, and Linux. Open apps, files, folders, clipboard history, and quick commands without leaving the keyboard.
📘 Docs · 🎬 Demo video · 📖 User guide
looknew.mov
Results land as fast as you can type. A Rust core under a native SwiftUI app on macOS, and Tauri on Windows and Linux, riding the system WebView instead of shipping a browser like Electron does. No background daemons. Your index, clipboard, and history stay on your machine; no telemetry.
How it compares
| look | Spotlight | Raycast | Alfred | ulauncher | rofi | |
|---|---|---|---|---|---|---|
| Platform | macOS · Windows · Linux | macOS only | macOS · Win (beta) | macOS only | Linux only | Linux only |
| Open source | ✅ GPLv3 | ❌ | ❌ | ❌ | ✅ | ✅ |
| Local-first | ✅ | ✅ | ❌ cloud sync | ✅ | ✅ | ✅ |
| No Electron | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| No plugin store | ✅ | ✅ | ❌ | ❌ Powerpack | ✅ | ✅ |
If this is useful, ⭐ star the repo - it's the single biggest signal that helps the project keep shipping.
brew install --cask kunkka19xx/tap/lookThen bind Cmd+Space to Look (disable Spotlight's shortcut in System Settings > Keyboard > Keyboard Shortcuts > Spotlight). Release builds are signed and notarized - no Gatekeeper bypass needed.
Released artifacts are x86_64 only. ARM builds aren't published; if you need one, please open an issue.
Arch Linux (AUR):
yay -S look-bin
# or
paru -S look-binOr without an AUR helper:
git clone https://aur.archlinux.org/look-bin.git
cd look-bin
makepkg -siUbuntu/Debian:
curl -fsSL https://raw.githubusercontent.com/kunkka19xx/look/main/scripts/linux/install-look.sh | bashOr download the .deb manually from Releases and run sudo dpkg -i Look_*.deb.
Any distro (AppImage):
chmod +x Look_*.AppImage
./Look_*.AppImageAfter installing, launch with lookapp from a terminal, or search "Look" in your app launcher. Press Alt+Space to toggle the window at any time. Look autostarts on login by default (on full DEs like GNOME/KDE).
Uninstall:
# Arch
yay -R look-bin
# Ubuntu/Debian
sudo dpkg -r look
# AppImage - just delete the file
rm Look_*.AppImageNixOS (flake):
# Run directly
nix run 'github:kunkka19xx/look?dir=apps/linows'
# Install to profile
nix profile install 'github:kunkka19xx/look?dir=apps/linows'Declarative (NixOS):
# flake.nix - add input and cachix config
{
nixConfig = {
extra-substituters = [ "https://look.cachix.org" ];
extra-trusted-public-keys = [ "look.cachix.org-1:8elPCeSVBzlDZXqIRKBK9GyLIK/Hoe1xiWZF0ir7uX4=" ];
};
inputs.look.url = "github:kunkka19xx/look?dir=apps/linows";
# ... your other inputs
}
# configuration.nix - add package
{ pkgs, inputs, ... }:
{
environment.systemPackages = [
inputs.look.packages.${pkgs.system}.default
];
}Pre-built binaries are served via Cachix. On first rebuild, nix will ask to trust the cache - say yes. No source compilation needed.
Update to latest release:
nix flake update look --flake /path/to/your/flake
sudo nixos-rebuild switch --flake /path/to/your/flake#hostnameNote: On GNOME desktops, log out and log back in after the first install so the GNOME Shell extension (used for window focusing and hotkey on Wayland) can load.
Window manager users (i3, sway, Hyprland, niri, etc.): Autostart via .desktop files only works on full DEs (GNOME, KDE). On standalone WMs, add Look to your config manually. On i3, sway, and Hyprland the Alt+Space hotkey and window rules (float, no border) are registered automatically at runtime, so you only need the autostart line; niri needs the bind added by hand (see below):
# i3: ~/.config/i3/config
exec --no-startup-id lookapp
# (Alt+Space works via X11 global shortcut plugin)
# sway: ~/.config/sway/config
exec lookapp
# (Alt+Space, float, and border rules are injected automatically via swaymsg)
# Hyprland: ~/.config/hypr/hyprland.conf
exec-once = lookapp
# (Alt+Space, float, and border rules are injected automatically via hyprctl)niri has no API to add binds at runtime, so Alt+Space has to go in ~/.config/niri/config.kdl yourself, or in any file that config includes. Look shows the exact stanza for your system (the gdbus path differs on NixOS) in its setup notice on first run:
spawn-at-startup "lookapp"
binds {
Alt+Space allow-inhibiting=false { spawn "gdbus" "call" "--session" "--dest" "com.look.Desktop" "--object-path" "/com/look/Desktop" "--method" "com.look.Desktop.Toggle"; }
}allow-inhibiting=false matters: without it niri passes the key to a window holding a keyboard-shortcuts inhibitor, which fullscreen games, browsers and virtual machines all take, and Look never opens over them.
Any key works, it is the same spawn line: Look only ever sees the D-Bus call. Bind a key niri already uses (Mod+D spawns fuzzel in the default config) and niri rejects the whole config as a duplicate keybind, keeping the last good one, so drop the existing bind first and check with niri validate, or niri --config <path> validate if you start niri with -c. The setup notice names the file Look actually read, which is that -c path, then NIRI_CONFIG, then ~/.config/niri/config.kdl, then /etc/niri/config.kdl - niri loads one of them and never merges.
Floating is applied at runtime over niri's IPC; add a rule only if you also want the focus ring and shadow off:
window-rule {
match app-id="^lookapp$"
open-floating true
focus-ring { off; }
shadow { off; }
}Hyprland 0.55+ only. Focus-existing-window uses the
wlr-foreign-toplevel-managementprotocol. Older Hyprland versions relied on the legacyhyprctl dispatch focuswindowsyntax which was deprecated in 0.55; selecting an already-running app on <0.55 may launch a second instance instead of focusing. Upgrade to 0.55+ for correct behavior.
To build from source, see apps/linows/BUILDING.md.
Released artifacts are x86_64 only. Windows on ARM (Surface Pro X / Snapdragon X) can run the x64 build under emulation; native ARM builds aren't published - open an issue if you need one.
One PowerShell line, no admin required:
iex "& { $(irm https://raw.githubusercontent.com/kunkka19xx/look/main/scripts/windows/install-look.ps1) }"Or with Scoop (if you already have it installed):
scoop bucket add extras
scoop install extras/lookThe script resolves the latest release, downloads the NSIS installer, verifies its SHA256 against the published checksums, and runs it silently into %LOCALAPPDATA%\Programs\Look. SmartScreen will warn on the first download while reputation builds - click "More info → Run anyway" if Windows blocks the script itself.
Uninstall:
# Scoop
scoop uninstall look
# Installer script
iex "& { $(irm https://raw.githubusercontent.com/kunkka19xx/look/main/scripts/windows/install-look.ps1) } -Uninstall"
# Optional: wipe user data
Remove-Item -Recurse "$env:LOCALAPPDATA\look"The launcher's global hotkey is Alt+Space (not user-configurable yet - if it conflicts with another app you use, remap that one). For a manual install: download Look_<version>_x64-setup.exe from Releases, verify the SHA256 against the published Look-<version>-windows-checksums.txt, then run. Uninstall via Settings → Apps or %LOCALAPPDATA%\Programs\Look\uninstall.exe. To wipe user data: Remove-Item -Recurse "$env:LOCALAPPDATA\look".
Other install options (curl, pin version, update/uninstall)
macOS - Homebrew update / uninstall:
# update
brew upgrade --cask kunkka19xx/tap/look
# uninstall
brew uninstall --cask lookmacOS - curl installer:
curl -fsSL https://raw.githubusercontent.com/kunkka19xx/look/main/scripts/install-look.sh | bashPin a specific version or repo fork:
curl -fsSL https://raw.githubusercontent.com/kunkka19xx/look/main/scripts/install-look.sh | bash -s -- --version <version> --repo kunkka19xx/lookDirect URL:
curl -fsSL https://raw.githubusercontent.com/kunkka19xx/look/main/scripts/install-look.sh | bash -s -- --url "https://github.com/kunkka19xx/look/releases/download/v<version>/Look-<version>-macOS.zip"CLI naming note: macOS ships /usr/bin/look, so terminal command examples use lookapp.
If Look is fully quit and Spotlight is still unbound, relaunch from Launchpad, or via:
open "/Applications/Look.app"| Action | macOS | Windows | Linux |
|---|---|---|---|
| Toggle launcher | Cmd+Space |
Alt+Space |
Alt+Space |
| Open / run | Enter |
Enter |
Enter |
| Web search | Cmd+Enter |
Ctrl+Enter |
Ctrl+Enter |
| Reveal in file manager | Cmd+F (Finder) |
Ctrl+F (Explorer) |
Ctrl+F (Files) |
| Edit selected file/folder in your editor | Cmd+E |
Ctrl+E |
Ctrl+E |
| Open a terminal there | Cmd+T |
Ctrl+T |
Ctrl+T |
| Action menu for the selected row | Cmd+K |
Ctrl+K |
Ctrl+K |
| Move to Trash (or empty the Trash folder) | Cmd+D |
n/a | n/a |
Command mode (calc, pomo, todo, speed, kill, shell, sys) |
Cmd+/ |
Ctrl+/ |
Ctrl+/ |
| Settings | Cmd+Shift+, |
Ctrl+Shift+, |
Ctrl+Shift+, |
| Back / hide | Escape |
Escape |
Escape |
| Switch to running app N (home screen) | Cmd+1..Cmd+9 |
Alt+1..Alt+9 |
Alt+1..Alt+9 |
| Hide selected app from Look | Cmd+Shift+H |
Ctrl+Shift+H |
Ctrl+Shift+H |
| Run selected app as admin | n/a | Ctrl+Shift+Enter |
n/a |
| Fire a super action (empty home screen) | Cmd+<letter> |
Alt+<letter> |
Alt+<letter> |
(Throughout the rest of the docs, Cmd+X on macOS maps to Ctrl+X on Windows and Linux; the launcher-toggle hotkey uses Alt+Space on Windows/Linux instead of Cmd+Space because Win+Space / Super+Space are typically reserved by the OS or desktop environment.)
Cmd+E and Cmd+T need a tool named in ~/.look/config (text_editor, code_editor, terminal), and file_manager retargets Cmd+F. Declare nothing and each falls back to the system default: see Preferred tools.
Which super actions are on the strip, where they sit, and any tiles of your own is a drawing in ~/.look/super-actions.toml, seeded on first run: see Super actions.
Full reference: docs/user-guide.md.
Built-in: Catppuccin, Tokyo Night, Rose Pine, Gruvbox, Dracula, Kanagawa, Kindle, Liquid, plus Custom.
Kindle is the one light preset - paper, ink, and a serif face.
Liquid renders on macOS 26's Liquid Glass and is hidden on older releases; on Linux and Windows it ships as clear glass - same palette and geometry, a specular rim instead of refraction, plus real behind-window blur wherever the compositor grants it (KDE, Hyprland 0.56+, Niri).
Switch in Settings > Appearance.
- 📘 Docs site - hosted, searchable user guide and reference
- User guide (in-repo) - full feature reference, shortcuts, configuration, permissions, troubleshooting
- Architecture - how the Swift app + Rust core fit together
- Features - what's shipped, what's planned
- Contributing - how to contribute
- Your own sources - declare custom rows from directories, files, and commands
- lookbook - ready-made sources to copy: git, ssh, docker, projects
- Writing a control - add a Quick Action toggle/button to the panel
- Development - building locally, repo layout, release process
Copyright (C) 2026 kunkka19xx
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See LICENSE for the full text.
Thanks to everyone who has contributed - see the contributor graph.