1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
src/
├── cli/ # User Interface Logic
│ ├── args.rs # CLI argument definitions and shell completion logic.
│ └── list.rs # Formatted table/JSON display and sorting of image metadata.
├── core/ # Pure Data Models & Business Logic
│ ├── config.rs # Merges defaults, config files, and CLI overrides into a single settings state.
│ ├── dimension.rs # Image geometry logic: parsing, validating, and comparing resolutions.
│ ├── fileinfo.rs # Core data structure for image metadata (paths, hashes, sizes, mtime).
│ ├── monitors.rs # Configuration for multi-monitor setups and output-specific settings.
│ ├── orientation.rs # Enums and parsing for horizontal/vertical layouts.
│ └── state.rs # Manages persistent cache and history to prevent visual duplicates.
├── backends/ # OS-Level Side Effects
│ ├── awww.rs # Wayland-specific transitions using the 'awww' daemon.
│ ├── desktop.rs # Detection and identification of the current Desktop Environment.
│ ├── detector.rs # Discovery of active physical outputs (X11, Wayland, or DRM).
│ └── wallpaper.rs # Dispatcher logic to apply wallpapers using external tools (magick, feh).
├── utils/ # Generic Tools & Helpers
│ ├── cmd.rs # Standardized shell command execution, logging, and error handling.
│ ├── colors.rs # ANSI styling traits for colored and formatted terminal output.
│ ├── dependencies.rs # Pre-flight checks to verify required system binaries are installed.
│ ├── random.rs # Seedless randomization and Fisher-Yates shuffling algorithms.
│ └── traits.rs # Reusable extensions for concurrency and numeric operations.
├── sys/ # Low-Level System Integration
│ ├── environment.rs # Safe access to OS environment variables ($HOME, $SESSION).
│ ├── pids.rs # Process management to detect and kill previous program instances.
│ └── walkdir.rs # Recursive filesystem scanner optimized for image filtering.
├── app.rs # Application Heart: Orchestrates the main program flow and run cycles.
├── error.rs # Error Handling: Centralized custom error types and error messages.
├── lib.rs # Library Root: Organizes modules and defines public exports.
└── main.rs # Entry Point: Minimal bootstrap that starts the app and handles fatal exits.
*/
pub use ;