Open-source project
woelper/oculante avatar
woelper/oculante

Oculante image viewer: installation, formats, editing, and maintenance limits

A fast and simple image viewer / editor for many operating systems

1,704 stars84 forksRustMIT

At a glance

What is it?
Oculante is a Rust-built, hardware-accelerated image viewer with inspection tools, nondestructive editing, and support for Windows, macOS, Linux, FreeBSD, and NetBSD. It remains available in maintenance mode, so its planned rewrite matters when choosing it for a long-lived deployment.
Who is it for?
Oculante suits users who need a lightweight desktop viewer for technical image inspection, format variety, sequence review, and basic nondestructive edits. It is a weaker fit for teams that require ongoing feature development or expect the current architecture to continue evolving before the rewrite.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Oculante's place among image viewers and editors

Oculante addresses a specific gap between a basic image viewer and a full graphics editor. It is aimed at people who need to open images quickly, inspect pixel data, compare files, step through image sequences, and perform limited edits without moving through a larger editing workflow. Its Rust implementation and notan-based interface support hardware-accelerated rendering, while the application presents itself as portable across Windows, macOS, Linux, FreeBSD, and NetBSD.

The supported formats go beyond ordinary PNG and JPEG viewing. The README lists BMP, animated GIF, HDR with tonemapping, ICO, ICNS, JPEG, JPEG 2000, PNG, PNM, TGA, JPEG XL, AVIF, and TIFF. The repository also declares decoders and libraries for formats including PSD and KTX2. This makes Oculante relevant to engineers, digital artists, texture reviewers, and anyone comparing assets produced in different pipelines.

Its privacy position is equally simple: the documentation calls it privacy-respecting, and it does not describe an account system, cloud conversion service, or online processing dependency. The application runs locally and opens files through a desktop interface. It should not be confused with an image analysis package or a replacement for a dedicated color-grading environment. Its useful scope is visual inspection plus small edits.

Oculante also offers features associated with technical image review. The pixel picker reports position and color information, while the color histogram exposes channel distribution. Its compare mode can switch between images while retaining zoom and position. These details matter when judging alignment, visual differences, or composited channel data, although the README does not provide numerical accuracy measurements or a formal comparison protocol.

Rendering, caching, channel inspection, and editing flow

The visible architecture centers on notan, an application framework configured in `Cargo.toml` with drawing, dropped-file handling, clipboard, backend, and `egui` features. The interface dependencies include `egui_plot`, `egui-notify`, and `egui_extras`. Based on the repository layout and feature descriptions, image presentation is separated from the user interface, but the README does not expose enough source detail to describe individual modules or internal pipelines.

Loading is described as threaded, with configurable image caching intended to make reopened images and flipbook sequences faster. A cache is particularly relevant when stepping through frame sets because each transition should avoid repeatedly decoding the entire collection. The README does not state cache granularity, memory limits, eviction rules, or supported sequence containers, so those details would need direct verification for a production workflow.

Color handling is one of Oculante's more specific technical features. It can inspect individual RGBA channels and display unassociated, or unpremultiplied, alpha data. The README explains that ordinary RGB values are commonly multiplied by the alpha channel, which can hide color information. Oculante can display that color information without applying transparency. This differs from simply toggling application opacity, because it targets the stored relationship between color and alpha channels.

Editing is described as SIMD-accelerated, basic, and nondestructive. Listed operations include cropping, resizing, painting, rotating, mirroring, and blurring. The operator stack can be saved as a metafile, allowing edits to be represented without changing the source immediately. Crop, rotate, and mirror are also identified as lossless JPEG operations that do not recompress data. The documentation does not claim that every edit is mathematically lossless, nor does it define which metadata survives each operation.

Installing Oculante on supported package paths

The primary installation route is the releases page, where users download the executable for their operating system. The README says the download is around 25 MB because dependencies are linked statically by default, and packages for ARM Linux are also available. These figures describe the project's release packaging, not performance or installed memory use.

For users with Cargo, the documented installation command is:

sh
cargo install oculante

This asks Cargo to install the package named `oculante`. The README also provides native package-manager commands for several distributions. On Arch Linux, the available package and Git package use different commands:

sh
pacman -S oculante
sh
paru -S oculante-git

NixOS configuration adds Oculante to `environment.systemPackages`:

nix
environment.systemPackages = [
    pkgs.oculante
];

The code block is labeled `nix` because this is Nix syntax rather than a shell command. The README separately lists Flatpak, openSUSE, FreeBSD, NetBSD, and Scoop commands:

sh
zypper install oculante
sh
flatpak install flathub io.github.woelper.Oculante
sh
pkg install oculante
sh
pkgin install oculante
sh
scoop install extras/oculante

The README warns that NetBSD builds currently use `glsl-to-spirv` instead of `shaderc`. On macOS, users should ensure that `libheif` is installed before launching or building the application. Release executables and package-manager installations also have different update paths.

A first use with image sequences, stdin, and network listening

A useful first exercise is to open an image and use the inspection view, since Oculante distinguishes itself through pixel picking and channel inspection. The README does not publish a documented keyboard sequence or command-line syntax for these controls, so the first use should begin by launching the downloaded executable or installed package and selecting a file through its interface. The file manager can browse system directories, bookmark them, and help compare images without leaving the application.

For repeated image review, the next step is Oculante's flipbook mode. With configurable caching enabled, it can step through image sequences. The documentation does not specify how frames are selected or ordered, so users should verify compatibility with their existing frame naming and directory arrangement rather than assuming every sequence format is supported.

Oculante can also receive image data from standard input. The README gives this command:

sh
cat image | oculante -s

This pipes the file named `image` into the application using the `-s` option. It is a concrete fit for shell workflows in which another command emits image data, although the README does not enumerate which formats are accepted through stdin.

For receiving mode, the documented syntax is:

sh
oculante -l port

The README says that this starts Oculante in listen mode on the supplied port. It does not document authentication, transport details, accepted requests, or security behavior, so those points should not be inferred from the existence of this mode. Network exposure should therefore be limited by the surrounding environment until those implementation details are confirmed.

File management, metadata, and practical operating-system constraints

The built-in file manager extends Oculante beyond a single-file viewer. It can access local files, bookmark directories, manage favorites, and support image comparison. Preserving zoom and position while switching images is particularly useful when checking whether two assets align. Oculante also loads EXIF data and can save metafile edit stacks, which gives small edits a shareable representation separate from destructive source replacement.

The UI includes dark, light, and system themes, Zen Mode, Always on Top, a position or scrub bar, and fit-to-view behavior. These options make the application usable for prolonged visual inspection, but the README gives no details about multi-monitor behavior, high-DPI scaling, HiDPI configuration files, or window-state persistence. Those omissions matter for deployment on managed workstations.

Operating-system support also carries build and packaging constraints. The Debian build dependency list is specific:

sh
sudo apt-get install libxcb-shape0-dev libxcb-xfixes0-dev libgtk-3-dev libasound2-dev nasm cmake

This installs development packages and build tools for Debian-based Linux systems. Windows builders are directed to Nasm 2.15.05, while the macOS build instructions list Homebrew dependencies and note a possible `SHADERC_LIB_DIR` setting:

sh
brew install nasm cmake
sh
export SHADERC_LIB_DIR=/opt/homebrew/lib

The README presents that environment variable as potentially necessary rather than universally required. Repository files such as `build_mac.sh`, `build_mac_intel.sh`, and `setup_ext_libs.sh` provide additional build entry points, but the README does not document their complete behavior.

Oculante's maintenance mode and rewrite boundary

The most consequential adoption fact is not the recent push date. Oculante's README explicitly says that the project is in maintenance mode. It will accept bug fixes and minor improvements to existing features until a rewrite is completed. Rewrite progress is assigned to the `oculante-next` branch, and issue 746 contains additional details. Version `0.9.6` in `Cargo.toml` is the current package version represented here, while release history lists versions 0.9.3, 0.9.4, and 0.9.6 in October 2026.

Maintenance mode sharply limits expectations for new format support, architectural changes, and substantial feature requests. It does not mean the current application is abandoned: the repository is not archived, the last push was on 2026-10-17, and recent releases are available. It does mean that feature work on the current implementation is intentionally narrower than the roadmap language might otherwise imply.

Upgrade cost depends on the installation method. The documentation says applications installed through a package manager are updated through that package manager, while release downloads can be replaced with a newer executable or updated through the settings button. Uninstalling removes the executable and a platform-specific data directory. The documented locations are `~/AppData/Local/.oculante` on Windows, `~/Library/Application Support/oculante` on macOS, and `~/.local/share/oculante` on Linux and BSD. Deleting that directory may remove settings, bookmarks, cached state, or metafiles, but the README does not classify each item individually.

The MIT license permits use, modification, and redistribution under its terms. This statement identifies the declared license, not the result of legal review. A distribution should still preserve the required license and notice information.

When Oculante is the wrong image tool

Oculante is the wrong choice when the requirement is a full nondestructive image editor rather than a viewer with basic edits. Cropping, resizing, painting, rotating, blurring, mirroring, JPEG XL, AVIF, TIFF, PSD, HDR, and channel inspection form a broad surface, but the documentation still describes the editing set as basic. It does not advertise layer compositing, masks, adjustment graphs, professional color grading, or destructive export workflows.

It is also unsuitable where predictable automation is the primary requirement. Although the CLI supports stdin and network listening, the README does not document a general scripting API, batch-editing interface, output naming scheme, or headless rendering mode. The operator stack and metafile support are relevant, but they do not amount to a documented automation contract.

The rewrite boundary can rule Oculante out for long-term product embedding. Teams that intend to depend on continued development of the current Rust architecture should account for a transition to `oculante-next`. Teams that only need stable viewing and inspection of a fixed set of file formats may still find the maintenance policy less important, provided the required formats work in their target environment.

Compared with a file browser plus dedicated editor workflow, Oculante reduces context switching by combining local file access, comparison, pixel inspection, channel display, and small edits. Compared with a full editor, it offers a narrower feature set. The decision therefore depends on whether those inspection and browsing capabilities matter more than advanced editing or automation.

Editorial conclusion

Oculante suits users who need a lightweight desktop viewer for technical image inspection, format variety, sequence review, and basic nondestructive edits. It is a weaker fit for teams that require ongoing feature development or expect the current architecture to continue evolving before the rewrite. Before adoption, verify the required formats on the target operating system, install `libheif` on macOS when needed, and account for the project's declared maintenance mode and transition to `oculante-next`.

Frequently asked questions

How do I install Oculante?

Users can download a release executable or use a documented package route such as `cargo install oculante`, `pacman -S oculante`, or `flatpak install flathub io.github.woelper.Oculante`. macOS users must ensure that `libheif` is installed.

What image formats does Oculante support?

The README lists BMP, GIF, HDR, ICO, ICNS, JPEG, JPEG 2000, PNG, PNM, TGA, JPEG XL, AVIF, and TIFF. Repository dependencies also include PSD and KTX2 support, although the displayed format list does not include them.

Is Oculante actively receiving new features?

The README says Oculante is in maintenance mode. Until the rewrite is complete, the project will accept bug fixes and minor improvements to existing features, with rewrite progress reported through `oculante-next`.

Can Oculante inspect pixels and edit alpha channels?

Oculante can report pixel position, color values, and a color histogram. It can also display individual RGBA channels and unassociated or unpremultiplied alpha data.

Does Oculante support command-line image input?

Yes. The README documents `cat image | oculante -s` for image data on standard input and `oculante -l port` for network listen mode.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. woelper/oculante on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/woelper-oculante.svg)](https://hysenlabs.com/projects/woelper-oculante)

Was this useful?