Waller is a Windows 10/11 desktop application built with Tauri 2, Rust, React 19, TypeScript 6, Vite 8, Tailwind 4, and Bun. It manages one Wallpaper Session per app run, supports reusable Profiles, resolves Previews on demand, includes a lightweight image editor, and keeps a persistent diagnostic trail through backend logs.
- Detects active monitors through
IDesktopWallpaper, with GDI geometry support for layout and fallback visualization. - Lets each Monitor use one Wallpaper Source:
- Local image
- Solid colour marker (
__SOLID__:#RRGGBB) - No wallpaper marker (
__NONE__)
- Supports fit modes:
Center,Tile,Stretch,Fit,Fill, andSpan. - Saves, loads, lists, and deletes JSON Profiles in
%APPDATA%/WallpaperManager/profiles. - Generates and caches image Previews through a dedicated registry.
- Provides an Identify Overlay to map physical screens to display indices.
- Includes a lightweight non-destructive editor for pan/zoom/rotate/filter/tint adjustments before saving a PNG.
- Stores unified frontend/backend logs at
%APPDATA%/WallpaperManager/logs/app.log. - Ships with English and Spanish UI strings.
src/App.tsxcomposes the shell, modal flows, layout overview, and toasts.src/hooks/useWallpaperSession.tsis the React seam that exposes grouped actions (session,monitorDrafts,profiles,editor,previews).src/lib/wallpaperSession.tsowns the command queue, snapshot building, preview warming, editor state, and identify fallback logic.src/lib/profileComposition.ts,previewRegistry.ts,wallpaperSessionState.ts, andwallpaperSource.tskeep the pure frontend domain logic focused.src/lib/tauri.tsis the typed frontend IPC seam over Tauri commands and plugins.src-tauri/src/lib.rsexposes the backend commands and serializes blocking wallpaper work throughrun_blocking.src-tauri/src/wallpaper.rs,profiles.rs,logger.rs, andwallpaper_value.rsimplement native wallpaper control, profile persistence, logging, and shared value validation.
react/react-dom19.2.6typescript6.0.3vite8.0.14@vitejs/plugin-react6.0.2tailwindcss/@tailwindcss/vite4.3.0vitest/@vitest/coverage-istanbul4.1.7jsdom29.1.1oxlint1.66.0@tauri-apps/api2.11.0@tauri-apps/plugin-dialog2.7.1@tauri-apps/plugin-log2.8.0@tauri-apps/cli2.11.2
tauri2.11.2tauri-build2.6.2tauri-plugin-dialog2.7.1tauri-plugin-log2.8.0windows0.62.2
- Windows 10/11
- Bun
1.3.x - Stable Rust toolchain (MSVC target)
- Microsoft Visual C++ Build Tools if the environment is not already configured to build native crates
bun install
bun run devDevelopment uses http://localhost:3000 for the Vite frontend, which Tauri consumes in dev mode.
| Script | Description |
|---|---|
bun run dev |
Full Tauri + Vite development flow |
bun run web:dev |
Frontend-only Vite server |
bun run web:build |
Frontend production build |
bun run typecheck |
Strict TypeScript validation |
bun run lint:frontend |
oxlint with warnings denied |
bun run test:frontend |
Vitest + coverage |
bun run test:rust |
cargo test --lib in src-tauri |
bun run lint:backend |
cargo clippy -- -D warnings |
bun run check:rust |
cargo check |
bun run deps:web:check |
Inspect outdated web dependencies |
bun run deps:web:update |
Refresh web dependencies to latest |
bun run deps:rust:update |
Refresh Cargo lockfile |
bun run deps:tauri:check |
Verify JS/Rust Tauri version alignment |
bun run deps:update |
Run the broad dependency maintenance flow |
bun run verify |
Full repo verification, including Tauri version sync |
bun run build |
Tauri production build |
For meaningful code or dependency changes, run:
bun run verifyFor packaging-sensitive work, add:
bun run buildCI and release workflows live in .github/workflows/ and run on windows-latest.
This repository now includes shared agent/project guidance in:
.github/copilot-instructions.md.github/instructions/.github/skills/waller-maintenance/.github/skills/waller-wallpaper-session/
These files encode the repo vocabulary, seam boundaries, maintenance workflow, and verification expectations.
- Hardened CSP in
src-tauri/tauri.conf.json withGlobalTauri = false- Minimal capabilities in
src-tauri/capabilities/default.json - Unified logging with
tauri-plugin-log - Log rotation at
2 MiBwithapp.log.bak - Explicit Tauri JS/Rust version-alignment check in
scripts/check-tauri-version-sync.mjs
docs/INDEX.md— entry point for architecture, implementation, testing, UI, roadmap, and maintenance notessrc/CONTEXT.md— domain vocabulary used across the codebase
MIT