6.3 KiB
6.3 KiB
Noctua Features
This document describes the implemented and planned features of Noctua, a modern image viewer for the COSMIC desktop environment.
Current Features
Document Support
Raster Images (Implemented)
- Formats: PNG, JPEG, GIF, BMP, TIFF, WebP, and all formats supported by
image-rs - Capabilities:
- Full pixel-perfect rendering at 100% zoom
- Lossless transformations (rotate, flip)
- Real-time transformation preview
- EXIF metadata extraction
Vector Graphics (Planned)
- Formats: SVG
- Status: Code structure prepared, but rendering not yet implemented
- Planned capabilities:
- High-quality rendering via
resvg - Scalable display without quality loss
- Metadata extraction
- Transformations (rotate, flip)
- High-quality rendering via
Portable Documents (Planned)
- Formats: PDF
- Status: Code structure prepared, but rendering not yet implemented
- Planned capabilities:
- First page rendering
- Multi-page navigation
- Basic transformations on rendered pages
Navigation
Folder Navigation (Implemented)
- Automatic folder scanning: When opening an image, all supported images in the same folder are indexed
- Quick navigation:
- Arrow keys (Left/Right) to navigate between images
- Footer displays current position (e.g., "3 / 42")
- Seamless transitions between images
File Opening (Implemented)
- Command-line arguments: Open images directly from terminal
- Default directory: Configurable starting location (defaults to XDG Pictures)
- File dialog not yet implemented
View Controls
Zoom (Implemented)
- Mouse wheel: Zoom in/out centered on cursor position
- Keyboard shortcuts:
+or=- Zoom in-- Zoom out1- Reset to 100% (Actual Size)f- Fit to window
- View modes:
- Fit: Automatically scales image to fit window while preserving aspect ratio
- Actual Size: Displays image at 100% (1:1 pixel mapping)
- Custom: Any zoom level from 10% to 2000%
- Footer display: Real-time zoom percentage or "Fit" indicator
Pan (Implemented)
- Mouse drag: Click and drag to pan around zoomed images
- Keyboard shortcuts:
Ctrl + Arrow Keysfor precise panning - Smart boundaries: Pan is automatically limited to image boundaries
- Auto-center: Images smaller than viewport are automatically centered
Bidirectional State Sync (Implemented)
- Mouse interactions update keyboard/button controls
- Keyboard/button controls update mouse interaction state
- No conflicts between input methods
Transformations
Image Manipulation (Implemented)
- Rotate:
r- Rotate 90° clockwiseShift + r- Rotate 90° counter-clockwise- Toolbar buttons available
- Flip:
h- Flip horizontally (mirror)v- Flip vertically- Toolbar buttons available
- Lossless operations: All transformations preserve original image quality
- Real-time preview: Changes are immediately visible
User Interface
COSMIC Integration (Implemented)
- Native COSMIC design: Follows COSMIC desktop design language
- Theme support: Automatically adapts to system light/dark theme
- Header toolbar:
- Navigation controls (Previous/Next)
- Transformation buttons (Rotate, Flip)
- Information panel toggle
- Footer bar:
- Zoom controls with buttons
- Current zoom level display
- Image dimensions
- Navigation position counter
Panels (Implemented)
- Properties panel:
- Image metadata display
- File information
- Toggle with
ikey or toolbar button
- Navigation panel (Left sidebar):
- Toggle with
nkey or toolbar button - Content not yet implemented
- Toggle with
Keyboard Shortcuts (Implemented)
Full keyboard-driven workflow:
- Navigation:
←→ - Zoom:
+-1f - Pan:
Ctrl + ←Ctrl + →Ctrl + ↑Ctrl + ↓ - Transform:
rShift+rhv - Panels:
in
Configuration
Persistent Settings (Implemented)
- Panel states: Remembers which panels were open
- Default directory: Customizable starting location
- Settings location:
~/.config/noctua/config.toml
Technical Features
Architecture (Implemented)
- Clean separation: View layer agnostic to document format
- Polymorphic documents: Single
DocumentContentinterface for all formats - Efficient rendering: Leverages COSMIC's iced renderer
- Type-safe transformations: Compile-time guarantees for image operations
Performance (Implemented)
- Lazy loading: Images loaded on-demand
- Efficient folder scanning: Fast directory traversal
- Minimal memory footprint: Only active document kept in memory
- Smooth zooming: Hardware-accelerated rendering
Planned Features
High Priority
SVG Support
- Implement proper SVG parsing and rendering
- Integration with
resvglibrary - Scalable vector display
- Transformation support
PDF Support
- Implement PDF rendering backend
- First page display
- Multi-page navigation
- Page thumbnails
File Operations
- File dialog integration (OpenPath message prepared)
- Save transformed images
- Copy/Move/Delete operations
- Drag-and-drop support
Error Handling
- User-friendly error messages (ShowError/ClearError prepared)
- Graceful handling of corrupted files
- Recovery suggestions
Medium Priority
Multi-format TIFF Support
- Multi-page TIFF navigation
- Page thumbnails
Enhanced Navigation
- Thumbnail strip
- Grid view for folder contents
- Quick jump to file
Slideshow Mode
- Auto-advance timer
- Configurable intervals
- Fullscreen support
Low Priority
Advanced Editing
- Crop tool (message prepared)
- Scale/Resize tool (message prepared)
- Basic color adjustments
Metadata Editing
- EXIF data modification
- Comment annotations
- Tag management
Feature Status Legend
- Implemented: Fully functional and tested
- Planned: Design complete, implementation pending
- Partial: Basic functionality exists, enhancements needed
- In Progress: Currently being developed
Contributing
Features marked as "Planned" have their message handlers already prepared in the codebase. Look for:
OpenPath,RefreshMetadatainsrc/app/message.rsToggleCropMode,ToggleScaleModein transformation handlers- Comments marked with
TODO:in document implementations