Filing & renaming

Filing is typing, not dragging. One palette moves anything anywhere in a few letters, and one rename engine gives files honest, predictable names on the way.

The quick-move palette m

Press m with anything selected and type a few letters of the destination: fuzzy matching means jap finds Trips/Japan 2025 and gard finds Projects/Garden. Recent destinations rank first — refiling a shoot into the same three folders is two keystrokes each. Mounted sources appear as targets too, below library folders.

Type a path that doesn't exist and the palette offers to create it — new trip, new folder, no detour.

The quick-move palette matching 'jap' to Trips/Japan 2025 with the rename toggle visible
The move palette: fuzzy matches, recents first, rename-on-file toggle.

The same palette opens in go-to mode with g — identical search, but Return navigates instead of moving.

Animation: g, typing 'jap', Return — landing in Japan 2025
Go anywhere: g, three letters, Return.

Rename on file

The palette's rename toggle (default set in config, switchable per move with Tab) renames files by your default pattern as they land — numbering continuing from what's already in the destination. An inbox full of IMG_4407.heic becomes Japan 2025 042.heic, 043, 044… in the same motion that files it.

Cross-volume moves

Moving between disks (a source drive into the library, say) can't be an atomic rename, so Qix does it the paranoid way: copy → verify (size + BLAKE3 hash) → trash the source. The original is never deleted — it goes to the Trash, and only after the destination proves byte-identical. A failed verify leaves both copies intact and tells you.

Batch rename ⌘R

Renames the current selection in place by pattern, with a live preview of every old → new name before anything happens.

Batch rename dialog: pattern field, favorites, live preview
Pattern, favorites on ⌘1⌘9, numbering, and the full preview.

Pattern tokens

TokenRenders as
{yyyy} {yy} {mm} {dd}capture date (EXIF, file-date fallback)
{hh} {mi} {ss}capture time
{orig}the original basename
{model}camera model, slugified (iphone15pro)
{n} {nn} {nnn}sequence number; letter count sets zero-padding
{{ }}literal braces

The extension is never part of the pattern and always survives (lowercased, if configured).

Numbering that behaves

Conflicts — against the disk or within the batch — are highlighted in the preview and block commit, with a one-click "append {nnn}" fix. Files missing EXIF dates are flagged with the file-date fallback they'd use. The commit re-validates everything at the last moment and executes as a single undo entry.

Odds and ends