This document tracks what look supports today and what is planned next.
- keyboard-first launcher UX
- low-latency local search
- practical ranking and personalization
- focused built-in tools (not plugin-first)
- predictable behavior with clear controls
- app/file/folder search from one input
- scoped query prefixes:
a",f",d",r", andrc"(recent files/folders, newest first - blends opened-through-Look with recently added/changed on disk; macOS for now) - path-fragment friendly matching (slash-biased queries)
- URL-like queries (no prefix): typing a URL offers an Open in browser row (structural URLs rank first, a bare
host.tldafter local results); opened URLs return as frecency-ranked Recently opened rows - open with
Enter, reveal in Finder withCmd+F - copy selected file/folder path/content handle with
Cmd+C - multi-pick files/folders with
Cmd+P(toggle); picked set is mirrored to the system pasteboard for paste anywhere.Cmd+Shift+Pclears the set - move selected file/folder (or all picked items) to the Trash with
Cmd+D- recoverable, no confirmation (macOS only for now) - pinned Trash quick folder (type
trash):Enteropens it in Finder, its preview shows the item count, andCmd+Dempties it via Finder (confirmed, since it's permanent) - preview pane: text/image file previews, plus folder previews listing the immediate children (folders first, capped at 30, click to open)
- clipboard history mode with
c"prefix - in-memory clipboard history (recent text clips, size set by
clipboard_history_limit, default 10, range 10 to 100); file/folder copies are excluded - quick translation with
t"... - dictionary lookup panel with
tw"...
- optional, on by default; toggle with
ai_enabledin~/.look.configor the Settings panel - answer card: a question, an entity with no local match (e.g.
sir alex ferguson), or an instant-answer pattern (weather/currency/crypto) shows a Spotlight-style card. Sources resolve concurrently and render as they arrive - local Calculator, then DuckDuckGo and Wikipedia. On macOS it falls back to a streaming on-device Apple Intelligence answer when no web source hits. In the knowledge-lookup view the card sits in a two-column layout with the suggestion list - search suggestions: Google autocomplete rows appear under the results for plain text queries (2+ chars);
Enteron one runs a web search, as doesCmd+Enteron the query - query rewrite (macOS): when a natural-language query finds nothing locally, the on-device model rewrites it into Look's prefix grammar and re-searches - never overriding results already on screen
- platform note: the web answer card and Google suggestions run on macOS, Linux, and Windows (the latter two via the Tauri
apps/linows/app), sharing thelook-answerscore engine. The on-device LLM (query rewrite + the Apple Intelligence answer fallback) is macOS-only - there is no on-device model on Linux/Windows. Theai_enabledkey is shared so the same toggle gates web answers on Linux/Windows and both web + on-device features on macOS - network note: while AI is on, the answer card's web sources and the Google suggestions send the typed query to those services; the on-device model itself makes no network calls. All of it is off when
ai_enabled = false
Cmd+/command mode entry, or inline:cmdidshortcut from the home screen (e.g.:calc 2+2,:kill chrome,:pomo); space after a known command id triggers a live switch with args pre-filled- built-in commands:
calc,pomo,todo,kill,shell,sys pomo: pomodoro focus timer with editable session list, three timer styles (Modern Ring / Vintage Dial / Minimal Text), shuffled background-music folder, menu-bar mini-timer, 5s standby fade, "ending soon" alert at 10s remainingtodo: daily tasks grouped by date (3 unfinished per day, 3 upcoming groups, OVERDUE badges on past days, fuzzy search over tasks and dates, manual save) plus a Stats page: weekly/monthly completion donuts, streak, 30-day trend, GitHub-style year heatmap. Today's done/total shows as a clickable stat in the home hint bar. Stored in the sharedlook.db(core/todo), one-year retention- calc parser supports exponent (
^), factorial (!), constants (pi,e), math functions (sqrt,abs,round,floor,ceil), and%shorthand while keeping modulo - kill flow with explicit confirmation and process-by-port lookup (
:3000/port 3000) - warning cue when shell input contains
sudo
- an icon row rendered on the right half of the search bar: when enabled, the search field takes the left half and the running-app icons occupy the right (right-aligned, growing leftward as more apps open). Apps are capped at 9, sorted alphabetically and stable - positions don't shuffle when you switch apps
- macOS: from
NSWorkspace.shared.runningApplications, filtered to regular apps - Linux: from
/procscan, filtered by what GNOME Shell'sShell.AppSystem.get_running()considers a windowed app (via Look's GNOME extension on Wayland) or bywlr-foreign-toplevel/ X11 client-list / desktop-hints on other compositors - Windows: from running-window enumeration via Win32
- macOS: from
- on the home screen, activation:
Cmd+badge digit (macOS) /Alt+badge digit (Linux, Windows). In command mode,Cmd+1..Cmd+5/Ctrl+1..Ctrl+5keep their existing command-catalog semantics - badge labels follow an ergonomic outer-first layout: with N running apps we consume the easiest-to-reach keys first (
1, 2, 3, 9, 8before4, then7, then6, then5). 5 running apps → badges1, 2, 3, 8, 9; 9 running apps → all of1..9 - focus paths: macOS =
NSRunningApplication.activate()with Dock-style reopen for windowless apps; Linux = GNOME Shell extension D-Bus on GNOME Wayland,wlr-foreign-toplevel-managementon sway/Hyprland,i3-msgon i3,_NET_ACTIVE_WINDOW(x11rb) on other X11 WMs; Windows =SetForegroundWindowvia window handle - click on an icon also switches; hover shows app name + shortcut tooltip; active app has an accent ring
- toggled on/off via
Settings > Appearance > Running Apps. Persisted asrunning_apps_placementin~/.look.config(none= off, any other value = on; legacytop/right/bottomstill load as "on"). The window is a single fixed size and never resizes for the row - off hides the row and disables the activation shortcut
- in-app settings panel (
Cmd+Shift+,) - local config file
~/.look.config - runtime reload (
Cmd+Shift+;) - 7 built-in theme presets (Catppuccin, Tokyo Night, Rose Pine, Gruvbox, Dracula, Kanagawa, Custom)
- query alias presets in
~/.look.configfor app + System Settings intent expansion (alias_note,alias_code,alias_term,alias_chat,alias_music,alias_brow) - in-app config reset (
Settings > Advanced > Create Fresh Config) with confirmation popup - semantic color system with auto-derived text colors in Custom mode
- indexing, UI, privacy/logging, launch-at-login controls
- immediate validation feedback for invalid settings input
- advanced extra scan directory controls (
file_scan_extra_roots) with overlap/risky-root validation
- SQLite-backed candidate + usage storage
- startup/index refresh pipeline for apps/files/settings
- dirty-aware incremental indexing via file-system events (
Cmd+Spacerefresh-on-dirty) - usage-event feedback loop for ranking updates
- Rust core + FFI bridge to Swift app shell
- better coverage for deeper System Settings pages
- safer shell policy controls (more explicit execution guardrails)
- richer benchmark reporting (p50/p95/p99) for query/index paths
- tighter ranking calibration across title/subtitle/path signals
- optional extension/plugin injection model (without bloating base UX)
- broader platform support after macOS quality stabilizes (Windows first)
- cloud-first workflows
- semantic/vector retrieval
- full content indexing of file bodies
- mandatory plugin ecosystem for core workflow