镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

Any new updates? Please? Open to fresh ideas? #97

Open

Description

@me-when-the-uh

Ended up partially vibecoding up a similar project to compete with CompactGUI in Python, only to be guided to this project a few months ago. Even the name is similar... Great minds think alike I guess, but I'm kinda heartbroken.

As I see it, some things are sorely missing, both from Compactor and CompactGUI:

  • dry-runs with enthropy analysis to correctly estimate how much free space can be gained with compressing, without actually making any changes to the files (checking file types only is a crutch, and CompactGUI's database can only do so much, and it hardly works outside of select Steam games)
  • picking a compressibility threshold, to only compress files that are compressible by XX% instead of compressing everything, especially if it doesn't compress well, like many gigabytes of Chromium/Electron cache files (the horror)
  • picking and choosing the right algorithm depending on file size (LZX isn't useful for files smaller than 256-512KB, XPRESS16K not useful for files under 64KB and so on)
  • toggling resource-intensive LZX on/off based on how slow the CPU is, so that some beginner users who don't know what to choose don't shoot their already slow CPUs and Windows installations in the foot (best to pair it with the prior point above)
  • HDD fragmentation safeguards
  • a button or at least a tip to compress Windows with compact.exe /compactos:always for the more desperate folks running on small SSDs

Also, internationalisation could be helpful. And a 1-click run to quickly compress certain directories, once dry-runs are implemented (so as not to accidentally compress the Steam directory full of already compressed games).

Activity

  1. wefalltomorrow commented on Sep 7, 2026

    @wefalltomorrow

    I’ve been working on a maintained fork of Compactor here:

    https://github.com/wefalltomorrow/Compactor

    Current release: v0.11.2
    https://github.com/wefalltomorrow/Compactor/releases/latest

    Some of the changes include:

    Sampled compressibility analysis before compression
    Configurable minimum estimated savings threshold
    Estimated post-compression size and savings
    SSD/NVMe-aware multithreaded analysis and compression
    HDD detection with single-thread operation by default
    Reduced-seek HDD analysis
    LZX as the default compression mode
    Removal of blanket file-extension exclusions
    Reuse of valid Analyse results during compression to avoid duplicate sampling
    In-app viewer for folders containing WOF-compressed files
    Improved WOF/Win32 error handling and several correctness/performance fixes

    Hopefully useful for anyone still looking for an updated Compactor build.

  2. me-when-the-uh commented on Sep 7, 2026

    @me-when-the-uh
    Author

    I’ve been working on a maintained fork of Compactor here:

    https://github.com/wefalltomorrow/Compactor

    Current release: v0.11.2 https://github.com/wefalltomorrow/Compactor/releases/latest

    Some of the changes include:

    Sampled compressibility analysis before compression Configurable minimum estimated savings threshold Estimated post-compression size and savings SSD/NVMe-aware multithreaded analysis and compression HDD detection with single-thread operation by default Reduced-seek HDD analysis LZX as the default compression mode Removal of blanket file-extension exclusions Reuse of valid Analyse results during compression to avoid duplicate sampling In-app viewer for folders containing WOF-compressed files Improved WOF/Win32 error handling and several correctness/performance fixes

    Hopefully useful for anyone still looking for an updated Compactor build.

    @wefalltomorrow One of the main problems I've found:

    • Spawns processes with Normal priority, grinding down the system to a halt while compressing
    • Potentially tries to spawn N processes for LZX compression, compounding the first problem, because LZX compression itself is multi-threaded - which means you only have to use 1-2 workers, depending on how many physical cores the user has
    • Compressing everything using just LZX, which makes no sense for small files and is very harmful to underpowered dual-core laptops in the long run and will impact their battery life hard. It should instead decide the specific algorithms to use depending on file size and how powerful the computer is
    • Guesstimates are all over the place:
      Before:
    Image

    After:

    Image

    Seeing how you too have used an LLM to churn out around a dozen new commits in 8 hours, you should point the LLM you've been using to my more mature program instead to take all the good practices and build upon that

  3. wefalltomorrow commented on Sep 8, 2026

    @wefalltomorrow

    @me-when-the-uh Thanks for the feedback — a few of these were fair, and I’ve changed them for 0.11.3.

    Small correction first: Compactor isn’t spawning a separate process per file; it uses worker threads and calls WOF directly. But yeah, running those at Normal priority while also allowing too many LZX workers was a bad combo.

    For 0.11.3:

    • compression priority is now selectable, with Below Normal as the default
    • LZX Auto is capped to 1–2 workers based on physical cores
    • manual thread counts still override that, so people with faster hardware can push it harder if they want
    • estimates have been reworked to account for the selected WOF algorithm and NTFS cluster size

    On “everything using LZX” — LZX is just the default, not forced. All XPRESS modes are still there, and files are sampled first so poorly compressible files can be skipped.

    I agree an automatic per-file algorithm mode could be useful, but I’d rather benchmark that properly before adding size/CPU heuristics.

    I also went through trash-compactor after your comment and picked up a few useful ideas from it, so thanks for pointing me at it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions