Skip to content
dcog989Public

About

A Linux image compressor / converter for all common image formats. Lossless or lossy, individually or in batch.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

ImSlim

A Linux image compressor / converter for all common image formats. Lossless or lossy, individually or in batch.

Inspired by and extends Curtail.

screen-1 screen-2 screen-3 screen-4 screen-5

Features

  • compress common image formats (PNG, JPEG, GIF, WebP, AVIF, JXL, SVG) lossless or lossy.
  • BMP + TIFF are always encoded to WebP.
  • animated GIFs are always compressed losslessly.
  • convert any input format to any supported output format.
  • optionally strip metadata (EXIF/XMP/JUMBF), reset file attributes.
  • save output next to the original, to a custom folder, or backup->overwrite originals.
  • recurse directories for batch compression.
  • configurable timeout for compression / conversion operations.

Installation

AppImage (recommended)

Download latest release AppImage, then run:

bash install_appimage.sh ImSlim-*-linux-x86_64.AppImage

This copies the AppImage to ~/Applications, adds ImSlim to your application menu, and registers it as the handler for the supported image types.

Command line

imslim [FILES...]    # compress the given files and folders
imslim --help        # usage
imslim --version     # version

Paths are handed to an already running ImSlim; without arguments the main window opens.


Technical

ImSlim is built with Python / PySide6. The compression libraries are built from source and statically linked:

Development

See Makefile for details:

make build          # build the wheel + sdist
make check          # runs ruff check + ruff format check + basedpyright + pytest
make clean          # remove all build artifacts
make distclean      # remove build tools - expensive!
make fix            # auto fix lint issues and format
make init           # runs uv sync, installs deps
make install        # install locally (even if version unchanged)
make package-linux  # build the Linux AppImage
make run            # runs the app
make tools          # runs build / update script for image libraries
make translations   # extract strings and rebuild translation catalogs
make uninstall      # remove the uv tool, desktop entry, icon and AppImage
make upgrade        # refresh dependency lockfile to newest versions

UI strings are wrapped in _() from imslim._i18n, which loads gettext catalogs from src/imslim/locale/. Add a language with ./scripts/translations.sh init <lang>, edit its .po, then make translations to regenerate the template and compile the .mo files (requires GNU gettext). Untranslated builds fall back to English.

Note

make install: installs the app into the user's home (via uv tool install), registers it as a handler for supported image types, and refreshes the desktop menu cache with whatever tool the distro provides (kbuildsycoca on KDE, update-desktop-database on freedesktop-based DEs). It runs kbuildsycoca6/kbuildsycoca5 or update-desktop-database when present, so it works across KDE, GNOME, XFCE, and others.


License

GNU General Public License v3

About

A Linux image compressor / converter for all common image formats. Lossless or lossy, individually or in batch.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages