Files
Find, browse and act on files, recent ones before you type
palupdated 2026-10-27ProductivityComes with pal
Comes with pal, so a new install already has it; the button finds it in pal again if you removed it. This page can't see what your pal has installed.






What it does
Find files by name or contents through the system's search index, browse folders, and act on files: open, reveal, Quick Look, rename, move, compress or trash. Recent files show before you type, and on macOS what you selected in Finder.
- Search by name through Spotlight on macOS or
fd/locateon Linux; by contents with a'prefix - Recent files and the Finder selection before you type anything
enteron a folder browses it, sorted by name, date or size- Open with, reveal, Quick Look, copy the path or file, open in a terminal
- Rename, move, copy, compress or trash, one file or several at once
- Copy the text out of an image or PDF (
cmd+shift+t)
Palettes 4
-
Files
filesinputinlinefallback row: Search Files for “…”Type part of a file name; rows are the matches under the configured folders. Before you type: the recently used files. A path (`~/Down`, `/usr/local`) lists the file or its completions, at the root too, and a path ending in `/` lists that folder whole; Enter on a folder browses it. A root query nothing matched gets a Search Files fallback row.
- ↵Open the file, browse a folder
- →Browse a folder
- ⌘↵Reveal in Finder
- ⌘YQuick Look (macOS)
- ⌘OOpen with another app
- ⌘CCopy path
- ⌘⇧CCopy the file
- ⌘TOpen in a terminal
- ⌘⇧RRename to the name typed in the bar
- ⌘MMove to a folder
- ⌘⌥CCopy to a folder
- ⌘⇧ZCompress to a zip
- ⌘DMove to Trash
-
Browse Folder
browseinputA folder's contents, pushed by Browse on a folder row (or by typing a path ending in `/`): a `..` row first, then the entries under the dropdown's sort (name, date, size), hidden ones with `show_hidden`, at most 500. The crumb is the folder; typing filters by name.
- ↵Browse a folder, open a file
- →Browse the folder under the cursor
- ←or⌫Go up (while nothing is typed)
- ⇥Cycle the sort: name, date, size
- ⌘.Show or hide hidden files
- ⌘↵Reveal in Finder
- ⌘OOpen with another app
- ⌘CCopy path
- ⌘⇧CCopy the file
- ⌘TOpen in a terminal
- ⌘⇧RRename to the name typed in the bar
- ⌘MMove to a folder
- ⌘⌥CCopy to a folder
- ⌘⇧ZCompress to a zip
- ⌘DMove to Trash
-
Finder Selection
selectioninputThe files selected in Finder (the front window's, or the Desktop's), each with the file actions; several are led by an "N items" row whose actions run on all of them. The same rows lead the empty root under "Selected in Finder" whenever pal opens over Finder with something marked. macOS only; the palette says why when Finder is not in front or nothing is selected.
- ↵Open the file, browse a folder
- ⌘↵Reveal in Finder
- ⌘YQuick Look (macOS)
- ⌘OOpen with another app
- ⌘CCopy path
- ⌘⇧CCopy the file
- ⌘TOpen in a terminal
- ⌘⇧RRename to the name typed in the bar
- ⌘MMove to a folder
- ⌘⌥CCopy to a folder
- ⌘⇧ZCompress to a zip
- ⌘DMove to Trash
-
Recent Files
recentliverefreshes every 1 minFiles used in the last seven days under the configured folders, newest first.
- ↵Open the file
- ⌘↵Reveal in Finder
- ⌘YQuick Look (macOS)
- ⌘OOpen with another app
- ⌘CCopy path
- ⌘⇧CCopy the file
- ⌘TOpen in a terminal
- ⌘⇧RRename to the name typed in the bar
- ⌘MMove to a folder
- ⌘⌥CCopy to a folder
- ⌘⇧ZCompress to a zip
- ⌘DMove to Trash
Actions
- OpenThe system opener.↵
- BrowseOn a folder: its contents as a level,
→too.←or Backspace goes up.↵or→ - Reveal in FinderShow in file manager on Linux.⌘↵
- Quick LookmacOS only; every marked row at once, arrows between them.⌘Y
- Open with…A level of the apps registered for the file.⌘O
- Copy path⌘C
- Copy fileThe file itself onto the clipboard: a paste in Finder copies it.⌘⇧C
- Open in TerminalA terminal window in the folder (a file's folder), the app the
terminalsetting names.⌘T - RenameThe name typed in the bar, in the same folder; a form with the current name when blank.⌘⇧R
- Move to…A form; the folder it goes to, made when missing.⌘M
- Copy to…A form; a copy under the same name in that folder.⌘⌥C
- CompressA zip next to the file, or one zip of every marked row, named after the first.⌘⇧Z
- Move to TrashAsks first.⌘D
- Show hidden filesIn a browsed folder: flips the
show_hiddensetting.⌘.
Settings
Extension, [extensions.files]
foldersWhere to search. `~` is expanded.
limitAt most this many rows per query.
show_hiddencontent_searchocr_concealedexcludeFolders skipped below the search folders, by name (`node_modules`) or a short path (`Library/Caches`).
terminalWhat Open in Terminal opens: `Terminal` (default), `iTerm`, `kitty`, `Alacritty`, `WezTerm`, `Ghostty`, or any app name (`open -na <name> --args -e ...`); on Linux a command name (`kitty`, `foot`, `alacritty`, `wezterm`, `ghostty`, ...), else `$TERMINAL`, else the first of those installed.
Defaults shown. Change them in pal's settings window or in the config file.
The README
Everything Files does, key by key, from the extension's own README.md
Files
Four palettes: two over the operating system's own file index, never a walk pal indexes itself, one that browses a folder, and one that lists what is selected in Finder.
Files is an input palette: what you type is a name search on every
keystroke. The row is the file name; the parent folder is the subtitle
(home shortened to ~); the size and the modification date are
accessories. .app bundles get their own icon, everything else a glyph by
kind (folder, image, document, code, archive). Exact and prefix name
matches come first, the rest in the backend's order, at most limit rows.
Files whose text holds the query follow in an In files section; the
name matches show as soon as they are ranked, and those rows join below
them as their matching lines are read.
Before you type, the palette lists the recently used files (a
Recently used section) instead of hints.
Recent Files lists those same rows as a palette of its own: the files
used in the last seven days within the configured folders, newest first
(on macOS Spotlight's kMDItemLastUsedDate, on Linux GTK's
~/.local/share/recently-used.xbel), listed again on a show once the
listing is a minute old, with the same actions and detail pane. Folders,
hidden and excluded paths and files that are gone are left out.
Browse Folder is where Enter (or →) on any folder row leads: a level
whose crumb is the folder, a .. row first (Enter, ← or Backspace on it,
or ←/Backspace from anywhere in the level while nothing is typed, goes
up), then the entries under the dropdown's sort: Name (folders first,
then files, case-insensitive), Date (newest first, mixed) or Size
(largest first, folders last); typing filters by name. Pictures draw their
own thumbnail, cmd+. shows or hides dot entries (it flips the
show_hidden setting), and a folder over 500 entries shows that many and
a row counting the rest. File rows have the same actions as search rows.
Inside Files a typed path ending in / (~/, /usr/local/) lists that
folder the same way; without the slash it completes the last segment.
Finder Selection (macOS) is what is marked in Finder, the front
window's items or the Desktop's, as file rows with the same actions; with
two or more, an N items row leads (the names, the total size) whose
actions run on all of them at once: Open all, Reveal all, Quick Look all,
Copy paths, Copy files, Compress together, Move all to Trash. The same
rows lead the empty root under Selected in Finder the moment pal opens
over Finder with something marked (four item rows at most there; the
N items row's Enter opens the palette with the whole selection). With
nothing to list the palette says why: nothing is selected, Finder is not
in front, or Linux (no file manager exposes its selection). The selection
is the core's selection.files(): read once per panel show, so it is what
was marked when the panel came up, and only while Finder is the app in
front.
Backends
Picked once when the extension loads and logged ([files] backend: fd):
| platform | backend | how |
|---|---|---|
| macOS | Spotlight | mdfind -name <query> -onlyin <folder>...; case-insensitive substring of the display name, so kitty finds kitty.app |
| Linux | fd |
fd --absolute-path --fixed-strings --max-results <limit> --max-depth 8 --exclude <x>... <query> <folders>; respects .gitignore like fd does everywhere |
| Linux, no fd | locate |
locate -i <query>, filtered to the folders (updatedb decides how fresh it is) |
| Linux, neither | find |
find <folders> -iname '*<query>*'; walks the folders on every keystroke, and a second hint row says so |
Every search is one process: killed after 3 s, killed as soon as limit
paths have been read, and killed when the next keystroke starts a new one.
The exclude folders are pruned from the walk (fd, find) or dropped from
the answer (Spotlight, locate).
Keyboard
| keys | action |
|---|---|
enter |
Open with the system opener; on a folder, browse it |
right |
Browse the folder under the cursor (while nothing is typed) |
left, backspace |
In a browsed folder: go up (while nothing is typed) |
tab |
In a browsed folder: cycle the sort (name, date, size) |
cmd+. |
In a browsed folder: show or hide hidden files |
cmd+enter |
Reveal in Finder (open -R), Show in file manager on Linux (xdg-open on the parent folder) |
cmd+y |
Quick Look (qlmanage -p), macOS only; every marked row in one panel, arrows between them |
cmd+o |
Open with…: a level listing the apps registered for the file, the default first with a Default tag; typing narrows them, Enter opens the file with that app |
cmd+c |
Copy path |
cmd+shift+c |
Copy file: the file itself onto the clipboard; a paste in Finder or a file manager copies it, a paste in a text field gets its path |
cmd+t |
Open in Terminal: a terminal window in the folder (a file's folder), the app the terminal setting names (Terminal, iTerm, kitty, Alacritty, WezTerm, Ghostty; Linux $TERMINAL or the first installed) |
cmd+shift+r |
Rename: argument name typed in the bar, the same folder, a taken name refused; blank (or a pick without the field) opens the form with the current name filled |
cmd+m |
Move to…: a form with the folder (~ expanded, made when missing); across volumes mv does it |
cmd+alt+c |
Copy to…: the same form, a copy under the same name (a folder whole) |
cmd+shift+z |
Compress: a zip next to the file named after it (-2 when taken); with rows marked, one zip of them all named after the first (ditto -c -k --sequesterRsrc --keepParent on macOS, zip -r on Linux) |
cmd+d |
Move to Trash: asks first; Finder's delete on macOS, gio trash on Linux; the palette stays open with a toast |
cmd+i |
The detail pane: the folder over the name, the kind and Finder's tags as chips, the size and an image's pixels large (Spotlight's mdls on macOS), when it changed; for a text file under 64 KB the first 40 lines in a code block |
Open with… lists Launch Services' apps on macOS (NSWorkspace, every
role); on Linux the file's MIME type is looked up in the mimeapps.list
files and every data dir's mimeinfo.cache, the default from
xdg-mime query default.
Setup
macOS needs nothing: Spotlight is always there. On Linux install fd
(else locate; with neither, find works but is slow). Move to Trash on
macOS goes through Finder, so the first one shows the Automation prompt.
Settings, [extensions.files]:
| key | type | default | what |
|---|---|---|---|
folders |
list of paths | ["~"] |
Where to search. ~ is expanded. |
limit |
number, 1 to 500 | 50 |
At most this many rows per query. |
show_hidden |
bool | false |
List files and folders whose name starts with a dot (below the configured folder; ~/.config as a folder is fine either way). |
exclude |
list of names | ["node_modules", ".cache", "Library/Caches", "target"] |
Folders skipped below the search folders, by name or a short path. |
terminal |
string | "" |
What Open in Terminal opens: Terminal (the default), iTerm, kitty, Alacritty, WezTerm, Ghostty, or any app name; on Linux a command name, else $TERMINAL, else the first installed terminal. |
What it does not do
- Preview images: the app's
icon://scheme serves app icons, favicons and clipboard images only, so the pane shows text files and metadata. - Unzip: Compress makes archives; the Archive Utility or
unzipopens them. - Index anything itself: no fd, locate or Spotlight means no results (one hint row says which tool is missing), and fd stops eight levels down.
Platforms
macOS (Spotlight, Quick Look, Finder, mdls, ditto) and Linux (fd,
locate or find; GTK's recently-used list; gio trash, xdg-open, zip;
a PNG's size off its header, no tags).
The rename, move and copy forms are @zcag/pal's files helpers, shared
with the Downloads extension; Rename takes its name from the bar first
and falls back to the form when that is blank.