Skip to content
superuser-miguelPublic

About

A GNOME-native GTK4 front-end for 7-Zip ZS — modern-codec archiving (Zstandard, Brotli, Fast-LZMA2) with a real compression-tuning UI.

Topics

Resources

Stars

10 stars

Watchers

0 watching

Forks

Repository files navigation

Septima icon

Septima

The archive tool that actually speaks modern-codec 7z — with a real compression-tuning UI.

Septima is a GTK4 / libadwaita front-end for 7-Zip ZS (7zz) on Linux. It is a GNOME-native app built specifically around modern compression codecs — Zstandard, Brotli, Fast-LZMA2 — with the kind of codec-tuning controls no other Linux archive manager exposes.

It is an archive tool, not a file manager. It never links or vendors 7-Zip code: a UI-free engine crate supervises the 7zz binary as a subprocess.

Status: v0.5.1, and past the awkward stage. Browse, extract, create with full tuning, batch operations and in-place editing all work today in a sandboxed Flatpak, with 1:1 coverage of what the bundled 7zz can create on Linux — plus batch encryption with a portable passwords file. See the roadmap.

Septima's Add-to-Archive dialog with the modern-codec method menu open — LZMA2, Zstandard, Brotli, Fast-LZMA2, LZ4, LZ5, Lizard and more


Why Septima?

Modern-codec 7z with a tuning UI, in a GNOME-native app, is a gap nothing else fills:

Modern codecs (zstd/brotli/flzma2) Real compression tuning GNOME-native GUI One-gesture .tar.zst
File Roller / Ark ✗ ✗ ✓ / KDE ✗
PeaZip partial ✓ ✗ (Qt) partial
7-Zip CLI / 7zz ✓ ✓ (flags) ✗ ✗ (two-step)
Septima ✓ ✓ ✓ ✓

Where Septima aims to win, not just match:

  • A real Add-to-Archive dialog — format × codec × level, with the level range reacting to the codec (zstd 1–22, brotli 0–11, …), dictionary size, solid mode, threads, and a live memory estimate so you can see the cost before you commit.
  • "Optimize for executables" — one switch for the BCJ filter, instead of the -m0=bcj folklore the Windows tool makes you learn.
  • Transparent modern tarballs — create, browse, and extract a real .tar.zst / .tar.xz in one gesture, both ways.
  • Batch encryption you can actually manage — a pile of folders, each in its own archive under its own generated password, with a portable passwords file that hands the whole set back to you later. No vault API, no lock-in: it's just a file.

Features

  • Browse any archive 7zz can read (7z, zip, tar, xz, gzip, bzip2, zstd, rar…) in a details view: Name / Size / Packed / Method / Modified / CRC.
  • Open an archive from the file chooser, your file manager ("Open With"), or by dropping it onto the window.
  • Extract with live progress, cancel, and password support.
  • Transparent nested browse + extract — open a .tar.zst / .tgz / .tar.br and see the files inside, not the intermediate .tar.
  • Create / Add to Archive with full tuning:
    • Formats: 7z, zip, tar (+ tar → zstd / xz / gzip / bzip2 / brotli / LZ4 / LZ5 / Lizard), and raw single-file streams — write a bare .zst, .br, .lz4, .lz5, .xz, .gz or .bz2.
    • Codecs: LZMA2, LZMA, PPMd, Zstandard, Brotli, Fast-LZMA2, LZ4, LZ5, Lizard, BZip2, Deflate, Deflate64, XZ, Store.
    • Level, dictionary size, solid mode, CPU threads, live memory estimate.
    • Architecture / filter picker — Delta, ARM64, ARM/ARMT, PPC, SPARC, RISC-V and BCJ2, alongside x86 BCJ.
    • Lizard family × level — pick among the four method families (fastLZ4 / LIZv1, ± Huffman) instead of one flat 10–49 slider.
    • Encryption — AES-256 with optional encrypted file names (7z), and AES-256 instead of the weak ZipCrypto default for zip.
    • Split into volumes (.001, .002, …), free-text advanced parameters.
  • Batch extract — select or drop several archives and each unpacks into its own folder, with one shared password for encrypted sets.
  • Batch compress — stage several items and create a separate archive for each, saved next to it.
  • Batch encrypt with a passwords file — flip Unique password per archive in batch mode and every archive gets its own random 64-character password, recorded in a passwords file (JSON) you save wherever you keep secrets. Protect it with a password of its own (gpg -c, standard OpenPGP) or leave it plain — chosen before the run, so a protected run never writes plaintext to disk. Open that file in Septima later and it offers to extract the whole set, each archive with its recorded password, with a per-entry picker.
  • Drag entries out to extract — select rows in an open archive and drag them into Files (or anywhere that takes files); they arrive extracted, folders included with their subtree.
  • Edit an archive in place — delete or rename entries, plus a one-click Test Archive with the same live progress as extract.
  • Post-extract actions — "Show in Files", and an optional delete-the-archive-afterwards toggle that understands split volumes.
  • Checksum calculator — 13 digests: CRC-32/64, MD5, SHA-1, SHA-256/384/512, SHA3-256/512, BLAKE3, BLAKE2sp, XXH32/64 — with copy and verify-against-a-checksum-file.
  • Generate a checksum file — optionally write a .sha256 next to a new archive, one line per volume part.
  • Named compression presets — save your tuning as a reusable preset.
  • Staged input list — Add Files / Add Folder across locations, with per-item remove, drag-and-drop, and a live count + total size of what's staged.
  • Ships as a Flatpak with 7zz bundled — portals only, no host filesystem access by design.
Create dialog with reactive level range and a live memory estimate
Reactive tuning — level ranges follow the codec, with a live memory estimate.
Executable optimization, split volumes, advanced switches, and encryption
Executable optimization, split volumes, advanced switches, and encryption.

Power-user switches

The create dialog's Advanced → parameters field is a free-text escape hatch: whatever you type is passed straight to 7zz a. It's for the long tail of 7-Zip's -m (method) and -s (store) switches that don't each earn a control. A few of the useful ones:

Codec fine-tuning

Switch What it does
-mfb=273 Fast bytes / word size (LZMA/LZMA2, 5–273) — the biggest ratio knob after level
-mmf=bt4 Match finder (hc4 / bt2 / bt3 / bt4) — speed vs ratio
-mo=32 -mmem=256m PPMd model order / memory
-mlc= -mlp= -mpb= LZMA literal-context / position bits (rarely needed)

Filters / architecture (beyond the "Optimize for executables" switch)

  • -m0=ARM64 -m1=lzma2 — arch-specific executable filter (also ARM / ARMT / PPC / SPARC / IA64).
  • -m0=Delta:4 -m1=lzma2 — fixed-stride data (audio, tables, bitmaps).

Metadata / storage

  • -snl — store symlinks as links (otherwise 7-Zip follows them). Handy on Linux.
  • -mtc=on -mta=on / -mtm=off — store creation/access times, or drop mtime.
  • -ms=e / -ms=100m — solid by extension / solid block size.
  • -mem=xchacha20poly1305 — new encryption methods, where the bundled 7zz supports them.

Behavior: -w<dir> (working dir) · -slp (large pages) · -u… (update rules).

Switches here are appended after the dialog's own options, so they override them. Params are split on spaces, so avoid switches containing spaces for now. Full list: 7-Zip command-line switches.

Install

Recommended — signed repo, automatic updates

Install from the project's own signed Flatpak repo, and new releases arrive with flatpak update:

flatpak install --user https://superuser-miguel.github.io/septima-repo/septima.flatpakref
flatpak run io.github.superuser_miguel.Septima

This subscribes you to the repo (like Flathub does), so flatpak update — or GNOME Software — pulls new versions automatically. Every release is signed with the project's GPG key.

Alternative — one-off bundle

Prefer a single file with no remote? Download Septima.flatpak from the latest release:

flatpak install --user ./Septima.flatpak
flatpak run io.github.superuser_miguel.Septima

The bundle has no update path — to move to a newer version, download it and reinstall (or switch to the signed repo above, which updates itself).

Build from source

Septima builds and runs entirely inside the GNOME Flatpak sandbox.

flatpak install flathub org.gnome.Platform//50 org.gnome.Sdk//50 \
    org.freedesktop.Sdk.Extension.rust-stable//25.08
flatpak-builder --user --install --force-clean build-dir \
    build-aux/io.github.superuser_miguel.Septima.Devel.json
flatpak run io.github.superuser_miguel.Septima.Devel

For host development (needs gtk4-devel, libadwaita-devel, blueprint-compiler, Meson, and 7zz on PATH):

meson setup builddir -Dprofile=development
meson compile -C builddir

Roadmap

Shipped (through v0.5.1)

  • Browse & extract — any archive 7zz reads, with live progress, cancel and password support.
  • Create with full tuning — format × codec × level, dictionary, solid, threads, live memory estimate, BCJ, volumes, encryption, advanced switches.
  • Transparent nested browse + extract — open, browse and extract a .tar.zst / .tgz / .tar.xz in one gesture, both ways.
  • Named compression presets — save and reuse tuning profiles.
  • Staged input list — Add Files / Add Folder across locations, per-item remove, and drag-and-drop from the file manager.
  • Drop-to-open — drag an archive onto the window to open it.
  • Hash calculator — CRC-32, SHA-256/512, SHA3-256, BLAKE3, xxHash, with copy and verify-against-a-checksum.
  • Honest progress on big jobs — an indeterminate "Scanning…" state while 7zz enumerates the input, so a large selection no longer sits at 0% looking frozen.
  • Selection totals — the staged file count and total size are measured in the background and shown under Files, with a nudge when a selection is big enough to take a while.
  • Responsive cancel — Cancel takes effect in well under a second even while 7zz is silent, and the half-written archive is deleted rather than left behind looking complete.
  • Self-hosted Flatpak repo — a signed OSTree repo + .flatpakref so flatpak update pulls new releases directly, no re-download needed.
  • Post-extract actions — a "Show in Files" action and an optional "delete the archive afterwards" toggle, including split-volume archives.
  • Generate a checksum file — optionally write a .sha256 file next to a newly created archive (one line per volume part, for split archives).
  • In-archive edit — delete / rename entries (multi-select for delete), plus a "Test Archive" action with the same live progress as extract.
  • Batch extract — select or drop several archives at once and each extracts into its own new folder next to itself, no per-archive prompts.
  • Batch compress — stage several files/folders, flip "Create a separate archive for each item," and each one is compressed into its own archive saved next to it, instead of combining them into one.

Full 7zz CLI parity, completed in v0.4.0 — genuine 1:1 coverage of what the bundled 7zz can create on Linux:

  • Complete hash calculator — CRC-64, MD5, SHA-1, SHA-384, SHA3-512 and BLAKE2sp added, and xxHash split into XXH32 / XXH64 (13 digests in all). (v0.3.0)
  • Zip encryption method — choose AES-256 for zip instead of the weak ZipCrypto default. (v0.3.0)
  • More format × codec combinations — XZ and Deflate64 inside zip, and Brotli / LZ4 / LZ5 / Lizard as tar post-compressors. (v0.3.0)
  • Architecture / filter picker — a real control for the filter family: Delta, ARM64, ARM/ARMT, PPC, SPARC, RISC-V and BCJ2, alongside x86 BCJ.
  • Lizard family × level picker — surface the four method families (fastLZ4 / LIZv1, ± Huffman) instead of one flat 10–49 slider.
  • Standalone single-stream creation — write a raw .zst / .br / .lz4 / .lz5 / .xz / .gz / .bz2 stream, not only tar + a compressor.

v0.4.0 also repairs Brotli creation. Every .br and .tar.br written by v0.3.0 was corrupt — it failed its own integrity test — because Septima always passed -mmt, and that flag silently switches 7zz between two incompatible brotli stream formats. Fixed on the write and read side; existing broken files can't be repaired, so recreate them. Also reported upstream (#352, and the detection design in #538) — see the write-up. .tar.br / .tar.lz5 / .tar.liz are transparently browsable again too.

New in v0.5.0 — batch encryption with a portable passwords file

The headline feature: encrypt a pile of things without inventing a password per item or reusing one across all of them.

  • Unique password per archive — in batch mode ("create a separate archive for each item"), every archive gets its own 64-character password drawn from the kernel CSPRNG, and the set is recorded in a passwords file you save where you like.
  • The passwords file is just a file — readable JSON with one entry per archive: name, what it was made from, the password, its SHA-256, when it was written, and the cipher in plain words ("7z, AES-256, encrypted headers") — the thing nobody remembers six months later. Keep it in KeePassXC, Bitwarden, pass, a vault, or a drawer. Septima never talks to a password manager's API, so every one of them works by default.
  • Optional password protection for the file itself — standard symmetric OpenPGP via the runtime's gpg -c: no keys, no keyring, no host access, and any gpg anywhere opens it. Chosen before the run, so a protected run never leaves a plaintext moment on disk; declining shows a plain-words warning instead of silently writing secrets next to the archives.
  • Crash-safe ordering — all passwords are written atomically before the first archive is created, and the file is rewritten (temp + rename) after each archive completes. No archive can exist whose password doesn't.
  • The other half: batch decrypt — open a passwords file with the Open button, by dropping it in, or from the command line, and Septima offers to extract every archive it lists with its recorded password. A per-entry picker with select-all/clear (and a filter past ten rows) means you can take just the two you need; missing archives and empty passwords are skipped loudly, and only basenames are trusted, so a hand-edited ../evil can't walk out of the folder.
  • Drag-out to extract — the missing half of drag and drop: select entries in an open archive, drag them into Files, and they arrive extracted. Directories bring their subtree.
  • Presets now capture the encryption method, the checksum-file switch and the batch password choices, instead of dropping them.

Fixed in v0.5.1 — batches that finish quietly

  • One notice per batch, not one per archive — a batch of 50 used to queue 50 notices (100 with checksum files on), still scrolling past long after the work was done. Now a batch ends with one summary — "Extracted 48 archives · 2 failed" — with a Show in Files button.
  • Failures collected, not interrupting — one dialog at the end lists what failed and why, instead of an error pop-up per archive mid-run.
  • One password question for a batch extract — encrypted archives in a batch are held until the rest finish, then Septima asks once for all of them (a wrong password asks again; Cancel skips them).
  • No password box by default — the batch-extract dialog hides the password field behind a "These archives are password-protected" switch, so a batch of ordinary archives no longer looks like it wants one.
  • Same-name items no longer collide — photos.zip + photos.7z in one batch extract to photos/ and photos_2/ instead of overwriting each other; report.txt + report.pdf compress to report.7z and report_2.7z instead of two jobs writing one file.

Later

  • Encrypt the passwords file to a GPG key — a third choice next to plain and password-protected: gpg -e -r <key>, so there's nothing to remember at write time. Only ever touches the public key, so the sandbox stays clean; the design work is the key picker.
  • Archive naming patterns in batch mode — a prefix/suffix (or obfuscated) naming row, with the passwords file keeping the association back to the original item.
  • Promote key Advanced switches to real controls — symlink handling (-snl), word size / fast bytes (-mfb), update modes (-u).
  • Free-space check — show available space at the extract destination before starting.
  • Custom visual styling and app icon.
  • More encryption methods — XChaCha20-Poly1305, AES+XChaCha20 and friends via -mem, blocked until the bundled 7-Zip ZS ships them (mcmilk/7-Zip-zstd#505).
  • Nautilus (Files) integration — right-click "Extract Here" / "Extract to…" / "Compress…", like File Roller's extension. Not a pure app feature: a Nautilus extension loads into Nautilus's own host process, which the Flatpak sandbox can't do from inside Septima — this would need a small separate host-side package (e.g. distro-packaged, talking to Septima over D-Bus or the CLI), not something the Flatpak alone can ship.

Acknowledgements

  • 7-Zip ZS by Tino Reichardt — the 7zz binary Septima bundles and drives, which extends 7-Zip by Igor Pavlov with Zstandard, Brotli, LZ4/LZ5, Lizard and Fast-LZMA2. Septima is not a fork of it; it is bundled unmodified as a separate Flatpak module.
  • Built with gtk4-rs, libadwaita, Blueprint, and Meson — following the conventions of Amberol, Fractal and friends.

License

Septima is GPL-3.0-or-later. The bundled 7-Zip ZS remains its own LGPL-2.1-or-later / BSD-licensed work, built as a separate module.

About

A GNOME-native GTK4 front-end for 7-Zip ZS — modern-codec archiving (Zstandard, Brotli, Fast-LZMA2) with a real compression-tuning UI.

Topics

Resources

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages