hur.st's bl.aagh

BSD, Ruby, Rust, Rambling

Compactor

A friendly user interface to Windows 10 filesystem compression

[rust] [windows]

One of the more notable features that shipped with Windows 10 is a new filesystem compression system based on the Windows Overlay Filesystem architecture, originally developed for transparent handling of disk images.

It’s intended for use in applications, in particular the base OS (in a feature referred to as CompactOS), but sadly this is only exposed to users via a command line program — compact.exe — and most users fail to take advantage of it.

Compactor offers this as an alternative:

Pretend there's a nice GUI here.

Compactor makes it easy for users to compact arbitrary applications — just select a folder, click Compress, and watch as the size shrinks before your eyes.

Unlike compact.exe, Compactor makes some effort to avoid compacting files that are unlikely to benefit — as well as a simple curated list of file extensions that rarely compress, it also includes a compression estimator (the above-linked “compresstimator”), which can quite accurately determine if a file will benefit from compression by reading just a few dozen small fragments.

Compactor is primarily written in Rust, using custom FFI interfaces via the winapi crate. The front-end is driven by web-view and a small amount of JavaScript.

In future I plan to decouple the UI further, extracting the compressor into a background service which runs when the system is idle, maintaining the compression of selected folders automatically.

I’m also tempted to make a release on Steam, which would offer users an easy way to provide donations to support development.