Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chute

A fast, keyboard-driven file sorter for Windows, macOS, and Linux. Open a folder, tag files for a destination with a keypress or a click, then move everything in one batch — no drag-and-drop required.

AI-Generated Status Python PySide6

Status: Prototype. At this stage, this project is substantially AI generated. Expect rough edges. File moves are read and irreversible (in-app) once executed, so be sure to back up anything important before trying it.

Why

Sorting a folder full of downloads, screenshots, or exports by hand means either dragging files one at a time or repeating "Move to folder…" dialogs over and over. Chute splits that into two fast steps: tag, then move. Tag every file with a single keystroke, review the whole batch, then execute all the moves at once.

Features

  • Keyboard-first assignment — each destination folder gets an auto-assigned shortcut key (1–0, Q–Z, …). Select files, hit the key, they're tagged. No mouse required.
  • Batch moves with conflict resolution — nothing touches disk until you click Move assigned files. Filename collisions at the destination open a dialog where you can rename or skip conflicts individually, or bulk-resolve the rest with Auto-rename remaining / Skip remaining without overriding choices you already made by hand.
  • Drag and drop everything — drop a folder onto the file view to open it, drop individual files onto it to add them to the list, and drop folders onto the destination panel to add them as targets.
  • List or grid view, with thumbnails — toggle between a compact list and a thumbnail grid. Image and video files get real thumbnails (a decoded frame, for video); other files fall back to their OS icon. Zoom in/out with the toolbar buttons or Ctrl + scroll wheel.
  • Color-tagged destinations — every destination gets an automatically assigned color, shown as a swatch next to its name and as a translucent highlight on every file assigned to it — even while selected. Double-click a destination to rebind its shortcut key or pick a different color.
  • Click a destination to filter — clicking a destination assigns your current selection to it and filters the file view down to only the files assigned there, so you can immediately see what landed where. Click empty space in the destination list to clear the filter.
  • Sorting — sort the file list by name, date modified, size, or type, ascending or descending.
  • Live counts — the footer tracks total files, how many are assigned, how many are left, and how many are currently selected. Each destination shows its own assigned-file count.
  • Non-destructive list management — press Delete to remove selected files from the view (never from disk). Right-click for "Clear file list," "Unmark all files," "Remove destination," and "Clear all destinations."
  • Configurable selection style — by default, clicking a file adds it to the selection instead of replacing it (no need to hold Ctrl). Prefer the standard file-browser click behavior instead? Switch it in Settings.
  • Persistent settings — window size/position, view mode, zoom level, selection style, sort order, and the default shortcut/color pairing for new destinations are all saved between sessions.
  • Dark theme throughout, designed to be easy on the eyes for long sorting sessions.

How it works

  1. Open a folder. Click "Open folder" or drag one onto the file view. Files inside (not subfolders) are listed.
  2. Add destinations. Click "Add destination" or drag folders onto the destination panel. Each gets a shortcut key and a color automatically.
  3. Tag files. Select one or more files, then either click a destination or press its shortcut key. Selected files get tagged with that destination's color and are ready to move.
  4. Review. The footer and each destination's label show live counts. Click a destination to filter the file view down to exactly what's assigned to it.
  5. Move. Click "Move assigned files." If any filenames collide at their destination, resolve them in the conflict dialog — rename, skip, or bulk-resolve the rest.

Tips

  • Double-click a file to open it in its default application — this never changes your current selection.
  • Double-click a destination to rebind its shortcut key or change its color.
  • Press Escape to clear the file selection, or Delete to remove selected files from the list (the files themselves are untouched).
  • Hold Ctrl and scroll to zoom thumbnails in or out.

Setup

Requires Python 3.14+.

With uv (recommended — this repo ships a uv.lock):

uv sync
uv run app.py

Or with plain pip (create/activate a virtual environment first):

pip install "pyside6>=6.11.1" "tomli-w>=1.2.0"
python app.py

Project layout

app.py                    Entry point — creates the QApplication and shows MainWindow
theme.py                  Dark theme stylesheet and shared color/shortcut palettes
core/models.py            Destination, Assignment, and result data classes
core/mover.py             Conflict detection and file move execution (no Qt dependency)
core/settings.py          TOML-backed persistent settings (~/PhantomLamb/chute/config.toml)
ui/main_window.py         Main window: source and destination panels, assignment, sorting, filtering
ui/conflict_dialog.py     Filename conflict resolution dialog
ui/rebind_dialog.py       Captures a new shortcut key/mouse button or destination color
ui/settings_dialog.py     Preferences dialog (currently: file selection style)
ui/thumbnails.py          Image/video thumbnail generation
test_smoke.py             Headless smoke test (offscreen QPA)

Notes

  • The file view is not recursive — it only lists files directly inside the opened folder, not subfolders.
  • Shortcuts are bound at the window level, so they work regardless of which panel currently has focus.
  • Settings are stored at ~/PhantomLamb/chute/config.toml. Deleting it resets everything to defaults.

About

A fast, keyboard-driven file sorter for Windows, macOS, and Linux. Open a folder, tag files for a destination with a keypress or a click, then move everything in one batch

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages