Files

Find, browse and act on files, recent ones before you type

palupdated 2026-10-27ProductivityComes with pal

Open in 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.

Files: Part of a file name typed: the matches under the configured folders, size and date on the right
Part of a file name typed: the matches under the configured folders, size and date on the right
Files: The detail pane on a text file: its folder, name and kind, the size, its first lines
The detail pane on a text file: its folder, name and kind, the size, its first lines
Files: Open with…: the apps registered for the file, the default tagged
Open with…: the apps registered for the file, the default tagged
Files: Recent Files: what was used in the last seven days, newest first
Recent Files: what was used in the last seven days, newest first
Files: Browsing ~/proj: the crumb is the folder, .. leads, the dropdown sorts by name, date or size
Browsing ~/proj: the crumb is the folder, .. leads, the dropdown sorts by name, date or size
Files: Rename (cmd+shift+R) is a form over the name, in the same folder; Move to and Copy to open the same way
Rename (cmd+shift+R) is a form over the name, in the same folder; Move to and Copy to open the same way
1 of 6

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/locate on Linux; by contents with a ' prefix
  • Recent files and the Finder selection before you type anything
  • enter on 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

  • Filesfilesinputinlinefallback 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 Folderbrowseinput

    A 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 Selectionselectioninput

    The 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 Filesrecentliverefreshes every 1 min

    Files 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 terminal setting 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_hidden setting.⌘.

Settings

Extension, [extensions.files]

folders
~ list

Where to search. `~` is expanded.

limit
50rows number

At most this many rows per query.

show_hidden
Off boolean
content_search
On boolean
ocr_concealed
Off boolean
exclude
node_modules.cacheLibrary/Cachestarget list

Folders skipped below the search folders, by name (`node_modules`) or a short path (`Library/Caches`).

terminal
empty text

What 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 unzip opens 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.