File handling (document/file.rs): - move file operations from app/mod.rs to document/file.rs - add open_file_dialog() for native file picker - add collect_directory_siblings() for navigation context - add open_document_from_path() as main entry point Zoom/View (panels.rs, canvas.rs, model.rs): - fix zoom display using ViewMode enum - ViewMode::Fit shows Fit, ActualSize shows 100%, Custom shows percentage Model/Update cleanup: - adjust model.rs for new file handling - update.rs: use centralized file functions - document/mod.rs: re-exports for file module i18n: BB ctua.ftl with new/changed strings" A - update noctua.ftl with new/changed strings" |
||
|---|---|---|
| i18n/en | ||
| resources | ||
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| i18n.toml | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
| rustfmt.toml | ||
Noctua
An image viewer application for the COSMIC™ desktop
Keyboard Shortcuts
Navigation
| Key | Action | Status |
|---|---|---|
← |
Previous document | working |
→ |
Next document | working |
Transformations
| Key | Action | Status |
|---|---|---|
H |
Flip horizontal | working |
V |
Flip vertical | working |
R |
Rotate clockwise (90°) | working |
Shift + R |
Rotate counter-clockwise (90°) | working |
Zoom
| Key | Action | Status |
|---|---|---|
+ / = |
Zoom in | partial |
- |
Zoom out | partial |
1 |
Reset zoom (100% / actual) | working |
F |
Fit image to window | working |
Note: Zoom is recognized but visual feedback is limited without scrollable viewport.
Pan
| Key | Action | Status |
|---|---|---|
Ctrl + ← |
Pan left | not yet implemented |
Ctrl + → |
Pan right | not yet implemented |
Ctrl + ↑ |
Pan up | not yet implemented |
Ctrl + ↓ |
Pan down | not yet implemented |
0 |
Reset pan (center) | not yet implemented |
Note: Panning requires a scrollable viewport or custom canvas widget.
Modes
| Key | Action | Status |
|---|---|---|
C |
Toggle crop mode | not yet implemented |
S |
Toggle scale mode | not yet implemented |
Installation
A justfile is included by default for the casey/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
Translators
Fluent is used for localization of the software. Fluent's translation files are found in the i18n directory. New translations may copy the English (en) localization of the project, rename en to the desired ISO 639-1 language code, and then translations can be provided for each message identifier. If no translation is necessary, the message may be omitted.
Packaging
If packaging for a Linux distribution, vendor dependencies locally with the vendor rule, and build with the vendored sources using the build-vendored rule. When installing files, use the rootdir and prefix variables to change installation paths.
just vendor
just build-vendored
just rootdir=debian/noctua prefix=/usr install
It is recommended to build a source tarball with the vendored dependencies, which can typically be done by running just vendor on the host system before it enters the build environment.
Developers
Developers should install rustup and configure their editor to use rust-analyzer. To improve compilation times, disable LTO in the release profile, install the mold linker, and configure sccache for use with Rust. The mold linker will only improve link times if LTO is disabled.