A Tauri desktop application that displays local images in a weighted random slideshow with a 1-5 star voting system. Higher-rated images appear more frequently.
- Scans directories for images:
data/,pics/,pictures/,images/,photos/ - Weighted random selection - higher votes = more likely to appear
- SQLite database stored in working directory (
slideshow.db) - Portable - run from different directories for separate image collections
- Dark theme UI with minimal distractions
| Key | Action |
|---|---|
Space / ← / → |
Next image immediately |
1-5 |
Vote current image (1-5 stars) |
↓ / - |
Decrease delay (min 1s) |
↑ / = / + |
Increase delay (max 30s) |
D |
Delete current image (file and database entry) |
? |
Toggle help overlay |
Esc / Q |
Close app |
- Bun (or Node.js with npm)
- Rust
- Tauri v2 prerequisites (see Tauri docs)
bun installbun run devbun run buildThe built application will be in src-tauri/target/release/.
- On startup, the app scans for images in supported directories
- Images are stored in a local SQLite database with their vote counts
- The slideshow uses weighted random selection:
- Unvoted images: weight 1
- Voted images: weight = 1 + vote (so vote 5 = weight 6)
- Votes persist across sessions in
slideshow.db
slideshow-rated/
├── src/ # Frontend (TypeScript + HTML + CSS)
│ ├── index.html
│ ├── main.ts
│ └── style.css
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── main.rs # Entry point
│ │ ├── db.rs # SQLite operations
│ │ ├── scanner.rs # Image discovery
│ │ └── commands.rs # Tauri IPC commands
│ └── Cargo.toml
└── package.json
- JPEG (.jpg, .jpeg)
- PNG (.png)
- GIF (.gif)
- WebP (.webp)
- BMP (.bmp)
MIT