Skip to main content

A visual, pipeline-driven file manager that turns file operations into composable, repeatable workflows.

Project description

cascade

cascade is a visual, pipeline-driven desktop file manager.

You select files, add operations in panes from left to right, and only the final pane writes to disk.

Think of it as Unix pipes with a face.

Current State

  • UI: PySide6 (Qt) desktop application.
  • Status: Alpha — approaching first release (Milestone 2).
  • Full standard file-management workflow works end-to-end.

Project details and roadmap live in spec/design.md and spec/roadmap.md.

Quick Start

Linux — AppImage (recommended)

Download cascade-x86_64.AppImage from the releases page, then:

chmod +x cascade-x86_64.AppImage
./cascade-x86_64.AppImage

No Python or installation required. Works on any distro with glibc 2.17+.

Python / uv

pip install cascade-fm   # or: uv tool install cascade-fm
cascade

From source

git clone <repository-url>
cd cascade
uv sync
uv run cascade

For troubleshooting and platform notes, see docs/installation.md.

How cascade works

Pipeline model:

[ Browse Files ] -> [ Filter ] -> [ Transform ] -> [ Save To ]
  • Pane 1 is the filesystem browser.
  • Each next pane applies one operation to the previous pane output.
  • Executing a pane marks panes to the right as stale.
  • Final output is written only by the final write operation.

Built-in Operations

Operation Description
filter_extension / filter_name Browser-side filtering by extension or name glob
rename Plain rename, search & replace, or regex replace with capture groups
save_to Copy files to a target directory (with conflict policy)
move_to Move files to a target directory (with conflict policy)
image_transform Resize, convert format, rotate, compress, strip EXIF
create_archive Create zip / tar / tar.gz / tar.bz2 / tar.xz archives
unarchive Extract archives (with optional single-root flatten)
delete_files Permanently delete files with in-UI confirmation

Features

  • Pipeline model — chain operations left to right; only the final pane writes to disk
  • Session restore — reopen the last pipeline on launch (configurable: ask / auto / off)
  • Workflow save/load — save named pipelines as JSON, reload them later
  • Preferences — start directory, default sort order, hidden-file toggle, bookmarks, language
  • Internationalisation — ships English and German; add custom languages via ~/.cascade/translations/
  • Caching — intermediate results stored in a content-addressable cache for fast re-execution

Known Limitations

  • Workflow/session JSON schema is version 1; use the same app version that wrote the file.
  • Very large directories (100k+ files) and heavy image transforms may slow the UI.
  • Advanced graph editing, branch pipelines, plugins, and remote filesystems are not yet implemented.
  • Language change requires an application restart to take effect.

Development

Setup

uv sync

Test / Lint / Typecheck

# tests
uv run pytest -q

# lint
uv run ruff check src tests

# typecheck
uv run pyright

Optional: task runner (just)

just test
just lint
just format
just typecheck
just build

Build / Publish

uv run python -m build

Upload (maintainers):

uv run twine upload dist/*

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cascade_fm-0.2.0.tar.gz (81.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cascade_fm-0.2.0-py3-none-any.whl (84.9 kB view details)

Uploaded Python 3

File details

Details for the file cascade_fm-0.2.0.tar.gz.

File metadata

  • Download URL: cascade_fm-0.2.0.tar.gz
  • Upload date:
  • Size: 81.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cascade_fm-0.2.0.tar.gz
Algorithm Hash digest
SHA256 66a275f1cffc9f8039d95370c1933d7cd0ee2f539e9b75846d416d3a5e77d8ef
MD5 3e0d9d1c5c600c3e9ad0e4d424cab7c4
BLAKE2b-256 c9b89213832f41ae4b772a480c52681aee1d3a784a373790a17e8dfc5fdb2630

See more details on using hashes here.

File details

Details for the file cascade_fm-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: cascade_fm-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 84.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cascade_fm-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 483d4356901effd590906a96b227cf81341c0e1e64091831857f14ccb6b829bf
MD5 7627486a159dc8ed566bbe99e59c33c8
BLAKE2b-256 70ee6f924042e1e606db798e2fc59e2221cada74a383a2e70d1e809a08a97d6e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page