Skip to content

Repository files navigation

SlimLuma

CI macOS 14+ License: All Rights Reserved

English · 简体中文 · 繁體中文 · हिन्दी · Español (Latinoamérica) · Español (España) · العربية · Français · বাংলা · Português (Brasil) · Português (Portugal) · Bahasa Indonesia · اردو · Русский · Deutsch · 日本語 · Kiswahili · پنجابی · తెలుగు · Naijá

SlimLuma is a source-visible, local-first macOS app for compressing images, animated images, videos, and PDF files. It provides a safe, configurable workflow while delegating codec work to mature tools such as ImageMagick, FFmpeg, qpdf, and optional Ghostscript.

Media stays on your Mac. Originals are not overwritten.

Quick start

  1. Download the verified Universal DMG.
  2. Open the DMG and move SlimLuma.app to Applications.
  3. Launch SlimLuma, open Engines & Settings, and choose Install Recommended Engines.

The Universal release supports both Apple Silicon and Intel Macs. Published DMGs are Developer ID signed, Apple-notarized, stapled, Gatekeeper-checked, and shipped with SHA256SUMS.

What it compresses

  • Images — JPEG, PNG, WebP, AVIF, HEIC, GIF, TIFF, BMP, JPEG 2000, and other formats supported by the active engine. Configure quality, dimensions, conversion, metadata, ICC handling, lossless modes, and target file size.
  • Animated images — Preserve frame count, frame timing, and loop count when keeping the original format or converting safely to WebP.
  • Video — H.264, HEVC, and capability-detected AV1 with resolution, frame rate, audio bitrate, metadata, hardware acceleration, and two-pass target size for H.264 and HEVC.
  • PDF — Lossless structural optimization, image recompression, configurable DPI and color conversion, encrypted PDF workflows, linearization, and aggressive compression when Ghostscript is available.

Product features

  • Mix images, videos, and PDFs in one queue with 1–6 concurrent jobs.
  • Freeze settings per file or use global and reusable custom presets.
  • Show real progress, ETA, pause, resume, cancel, retry, and persistent history.
  • Drag files or folders, recurse through directories, import from Clipboard, Finder, watched folders, Shortcuts, or the command line.
  • Detect Homebrew, MacPorts, system paths, and paired tools such as ffmpeg/ffprobe.
  • Install one engine or all recommended engines from the app, with automatic continuation after Homebrew becomes available.
  • Keep unique outputs, preserve modification time when requested, avoid naming conflicts, and discard results that are not smaller by default.
  • Compare source and output side by side with Quick Look.
  • Export and import versioned presets with size, count, and range validation.
  • Use a standalone slimluma CLI with presets, target size, password files, JSON output, dry-run, and engine diagnostics.

Safety model

SlimLuma never sends media to a cloud service. Professional engines write only inside a private app-owned temporary workspace. The app reopens the result and applies format-specific integrity checks, then copies an accepted result to a locked 0700 staging directory on the selected destination volume. After syncing and inode checks, it exposes the final unique name with an exclusive same-volume atomic rename.

  • Image results are decoded again and animated output is checked for frames, timing, and loops.
  • Video results are inspected with the paired ffprobe for duration, semantic tracks, chapters, language/default/forced flags, subtitle payloads, and HDR color metadata.
  • PDF results are checked for page count and relevant outlines, links, annotations, forms, signatures, encryption, searchable text, and linearization signals.
  • Passwords for encrypted PDFs are not persisted to history, presets, or application logs. While a job is running, qpdf receives the password through a permission-restricted temporary file that is removed after use.

These checks reduce known corruption risks but are not a semantic proof of every page, link target, form behavior, frame, or pixel.

Engines

Use Engines & Settings in the app, or install engines manually:

brew install imagemagick ffmpeg qpdf ghostscript

ImageMagick, FFmpeg, and qpdf are recommended. Ghostscript is optional and is used for stronger PDF image downsampling. SlimLuma does not bundle these executables. Ghostscript uses AGPL/commercial licensing, and FFmpeg licensing depends on its build configuration. See Third-party notices before redistribution.

When an engine is unavailable, SlimLuma only uses a system fallback when that fallback can honor the selected settings. It reports unsupported combinations instead of silently producing a different result.

Internationalization

SlimLuma ships 20 locales across 18 language layers:

en, zh-Hans, zh-Hant, hi, es-419, es-ES, ar, fr, bn, pt-BR, pt-PT, id, ur, ru, de, ja, sw, pa-Arab, te, and pcm.

Arabic, Urdu, and Shahmukhi Punjabi use right-to-left layouts. GitHub visitor pages use the same reviewed application translation tables, and CI rejects missing, stale, or English-placeholder locale output. Scope, population baseline, system integration, and review boundaries are documented in Localization.

CLI

slimluma compress photo.jpg movie.mov report.pdf
slimluma compress movie.mov --video-codec hevc --target-size-mb 25
slimluma engines

Development

Requirements:

  • macOS 14 or later
  • Xcode 15.3 / Swift 5.10 or later

Open Package.swift in Xcode and run the SlimLumaApp scheme, or use:

swift run SlimLumaApp
swift test

Build and verify a double-clickable Universal app:

chmod +x scripts/package-app.sh
./scripts/package-app.sh
./scripts/verify-packaged-app.sh
open dist/SlimLuma.app

Without SLIMLUMA_CODE_SIGN_IDENTITY, packaging produces a local ad-hoc build. Developer ID signing, hardened runtime, notarization, DMG/ZIP/CLI packaging, Gatekeeper, and checksum requirements are covered in Releasing. The reason for every certificate, permission, signature, notarization, stapling, and verification step—and the failure mode when one is missing—is documented in the release trust chain.

Architecture and validation

SwiftUI
  → typed CompressionSettings
  → bounded task scheduler
  → ImageMagick / FFmpeg / qpdf / Ghostscript adapter
  → hidden temporary output
  → ImageIO / ffprobe / PDFKit source-output validation
  → unique final file + local history

Process paths and arguments are passed separately rather than assembled into shell commands. See Architecture for the design and security boundaries.

Additional project documents:

License

Current development is publicly visible for review but is proprietary: all rights are reserved. Public visibility does not grant open-source rights beyond GitHub's platform terms. Official, unmodified binaries may be used under the limited grant in LICENSE.

SlimLuma 0.2.0 was released under the MIT License. That historical grant is not revoked; later project materials use the terms published with their revision or release. External engines remain under their own licenses. See release verification and identity privacy and third-party notices.

About

Local-first image, video & PDF compression for macOS · Privacy-safe release rebuild in progress · 本地压缩

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages