No description
- Change PDF_RENDER_QUALITY from 2.0 to 3.0 for higher resolution rendering - Replace PNG round-trip with direct Cairo surface → DynamicImage conversion - Convert ARgb32 to RGBA directly, avoiding PNG encoding/decoding artifacts - Switch image filter from Nearest to Linear for smoother zoom display - Remove unused Cursor and ImageReader imports - Strip release binary to reduce size from 612MB to 36MB |
||
|---|---|---|
| docs | ||
| i18n | ||
| resources | ||
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| i18n.toml | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
| rustfmt.toml | ||
Noctua
An image viewer application for the COSMIC™ desktop
Features
- Multi-format support: Raster images (PNG, JPEG, WebP, etc.), SVG vector graphics, and PDF documents
- Navigation: Browse through folders with keyboard shortcuts
- Transformations: Rotate, flip, and crop images
- Zoom & Pan: Flexible viewing with zoom controls and panning
- Multi-page documents: Navigate PDF pages with thumbnail previews
- Metadata display: View EXIF data and file information
- Wallpaper setting: Set images as desktop wallpaper (multi-DE support)
Architecture
Noctua follows Clean Architecture principles with clear separation of concerns.
Key Patterns:
- MVU (Model-View-Update): Elm architecture via libcosmic
- Command Pattern: Domain operations encapsulated in commands
- Dependency Inversion: Domain has no dependencies on infrastructure
- Type-Erased Documents:
DocumentContentenum for unified handling
Installation
A justfile is included by default for the [casey/just][just] command runner.
justbuilds the application with the defaultjust build-releaserecipejust runbuilds and runs the applicationjust installinstalls the project into the systemjust vendorcreates a vendored tarballjust build-vendoredcompiles with vendored dependencies from that tarballjust checkruns clippy on the project to check for linter warningsjust check-jsoncan be used by IDEs that support LSP
Dependencies
Arch Linux
sudo pacman -S poppler-glib
Debian/Ubuntu
sudo apt install libpoppler-glib-dev
Fedora
sudo dnf install poppler-glib-devel
OpenSUSE
sudo zypper install poppler-glib-devel
Documentation
License
GPL-3.0-or-later
