Skip to content

roaldarbol/croppy

Repository files navigation

Croppy logo

Croppy

Common video chores — cropping, trimming, joining, and compressing — in one window.

Tests Python 3.12+ Ruff License: MIT


Croppy is a desktop app for everyday video chores — cropping, trimming, joining, and compressing — turning the ffmpeg flags nobody wants to type into a point-and-click window: draw on a frame, pick a quality, and click Add Job to Queue.

The Clip tab The Clip tab

Tip

Full documentation: roald-arboel.com/croppy

What's in the window

Croppy is organised into a few tabs that share one Encoding panel design and one progress strip along the bottom you can watch and cancel from:

  • 🎬 Clip — draw crop boxes and/or set time ranges (trims) on a video and get one file per combination.
  • 🗜️ Compress — re-encode any number of videos smaller in one go.
  • 🔗 Combine — join videos, in the order you choose, into one file.
  • ▶️ Jobs — everything you've staged from any tab; start, cancel, and clear from here.
  • ⚙️ Settings — the default encoding every tab starts from.

The ideas that run through it

  • 📥 Stage, then run. Each tab's Add Job to Queue button stages work on the Jobs tab; you assemble a batch and fire it off when you're ready. A slim strip at the bottom always shows what's happening, from whichever tab you're on.
  • 🎛️ Encoding is per item. The Settings tab holds the default; everything you queue carries its own copy, so you can queue the same video twice with small differences and compare. By default Croppy encodes on your graphics card when it can — which is much faster — and on the CPU otherwise.
  • Apply only what you mean to. Every encoding setting can be applied or left to inherit from the source instead of being forced.
  • 🏷️ You name the output. Every tab shows a sensible default name and lets you change it.

Install

Croppy is on conda-forge, so install it as a global command-line app with Pixi in one line:

pixi global install croppy

Note

Don't have Pixi? Install it first — it's a one-liner.

Once installed, launch Croppy from your Start menu / Applications folder / app menu, or run it from a terminal:

croppy                    # opens on the Clip tab — drop a video or click to browse
croppy path/to/clip.mp4   # opens straight into the Clip editor with that clip

Update with pixi global update croppy, or remove it with pixi global uninstall croppy.

Contributing

The codebase is small and meant to stay readable. Layout:

src/croppy/ffmpeg/   # subprocess wrappers around ffmpeg / ffprobe (no Qt here):
                     #   encoder.py (GPU/CPU args), clip.py, compress.py, combine.py
src/croppy/gui/      # PySide6 widgets: one tab per operation + shared
                     #   CompressionPanel, VideoList, OutputFolderPicker, StatusStrip
src/croppy/jobs/     # job queue + per-job QProcess worker; Job has clip/compress/combine variants
src/croppy/models.py # CropRegion, Trim, EncodeSettings — plain dataclasses

To set up a working copy — Pixi handles everything, including ffmpeg:

git clone https://github.com/roaldarbol/croppy
cd croppy
pixi run croppy                # launch the app from source

pixi run -e dev install-hooks  # one-time: wire lefthook pre-commit hooks
pixi run -e dev test
pixi run -e dev lint
pixi run -e dev format

Pre-commit hooks (via lefthook) run ruff check --fix and ruff format on staged Python files automatically.

License

MIT — see LICENSE.

About

Common video chores — cropping, trimming, joining, and compressing — in one window.

Topics

Resources

License

Stars

3 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages