mirror of
https://github.com/julyx10/lap.git
synced 2026-10-02 01:54:57 +08:00
lap-windows
On Linux, WebKitGTK defaults zoomHotkeysEnabled to true, intercepting touchpad pinch as page-level zoom before JS receives the wheel events. Set zoomHotkeysEnabled to false on Linux (main window via new platform config, ImageViewer window via isWin check) so pinch events reach our JS handlers for per-image zoom instead.
English | 简体中文 | 日本語 | 한국어 | Deutsch | Français | Español | Português | Русский
Lap is an open-source, local-first photo manager for browsing family albums, finding old photos quickly, and managing large personal media libraries offline. It is a privacy-focused alternative to cloud photo services: no forced upload, local AI search, folder-first workflow, and free to use.
- Website: https://julyx10.github.io/lap/
- Demo: https://youtu.be/RbKqNKhbVUs
- Privacy: PRIVACY.md
Download Lap
Open the latest release page, then download the file that matches your system:
| Platform | Package | Status |
|---|---|---|
| macOS (Apple Silicon) | aarch64.dmg |
Notarized by Apple |
| macOS (Intel) | x64.dmg |
Notarized by Apple |
| Windows 10/11 (x64) | .msi |
Tested on Windows 11. Currently unsigned (SmartScreen warning may appear) |
| Ubuntu/Debian (amd64) | amd64.deb |
Tested on Linux Mint. For better video playback support, see the Linux note below. |
Linux Video Playback Notes
On Ubuntu/Debian/Linux Mint, install these packages for better video playback support:
sudo apt install gstreamer1.0-libav gstreamer1.0-plugins-good
Screenshots
Screenshot sample images come from Wikimedia Commons.
Why Lap
- No cloud required: keep your library on your own disk instead of uploading it to a hosted service.
- Private by default: processing happens locally, so your photos stay under your control.
- Free to use: no subscription plan or recurring fee.
- Folder-first: work directly with your existing folders, no import step required.
- High performance for large libraries: optimized for smooth browsing and organization across huge media collections (100k+ files per library).
Features
- Browse and filter by date, location, camera, lens, tags, favorites, ratings, and faces (BETA).
- Manage multiple libraries and switch between them quickly.
- Find duplicates and batch move unwanted copies to trash.
- Edit in place with crop, rotate, flip, resize, and basic adjustments.
- Keep folders in sync with filesystem-aware operations and refresh support.
- Use local search tools such as text/image search, similar-image search, face clustering, and smart tags.
- Open modern image formats including WebP, HEIC/HEIF, AVIF, and JXL (JPEG XL).
- View RAW photos with built-in decoding for 20+ camera RAW formats (CR2, NEF, ARW, DNG, etc.).
- Broad video compatibility supporting MP4, MOV, AVI, MKV, and 20+ other formats with cross-platform optimization.
Planned Features
- Support Live Photos and Motion Photos for mixed photo/video workflows.
- Expand metadata support for EXIF, XMP, and IPTC workflows.
Build from Source
Requirements: Node.js 20+, pnpm, Rust stable.
For Linux runtime video playback, see the package note in the download section above.
# macOS system deps
xcode-select --install
brew install nasm pkg-config autoconf automake libtool cmake
# Linux system deps (Ubuntu/Debian)
# sudo apt install libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev \
# patchelf nasm clang pkg-config autoconf automake libtool cmake
# Clone and build
git clone --recursive https://github.com/julyx10/lap.git
cd lap
git submodule update --init --recursive
cargo install tauri-cli --version "^2.0.0" --locked
./scripts/download_models.sh # Windows: .\scripts\download_models.ps1
./scripts/download_ffmpeg_sidecar.sh # Windows: .\scripts\download_ffmpeg_sidecar.ps1
cd src-vite && pnpm install && cd ..
cargo tauri dev
Supported Formats
| Type | Formats |
|---|---|
| Images | JPG/JPEG, PNG, GIF, BMP, TIFF, WebP, HEIC/HEIF, AVIF, JXL |
| RAW photos | CR2, CR3, CRW, NEF, NRW, ARW, SRF, SR2, RAF, RW2, ORF, PEF, DNG, SRW, RWL, MRW, 3FR, MOS, DCR, KDC, ERF, MEF, RAW, MDC |
| Videos | MP4, MOV, M4V, MKV, AVI, FLV, TS/M2TS, WMV, WebM, 3GP/3G2, F4V, VOB, MPG/MPEG, ASF, DIVX and more. H.264 playback is supported on all platforms, with automatic compatibility processing when native playback is unavailable. HEVC/H.265 and VP9 are natively supported on macOS. |
Architecture
- Core: Tauri + Rust
- Frontend: Vue + Vite + Tailwind CSS
- Data: SQLite
Key Libraries
| Library | Purpose |
|---|---|
| LibRaw | RAW image decoding and thumbnail extraction |
| libheif | HEIC/HEIF image decoding and preview generation |
| FFmpeg | Video processing and thumbnail generation |
| ONNX Runtime | Local AI model inference engine |
| CLIP | Image-text similarity search |
| InsightFace | Face detection and recognition |
| Leaflet | Interactive map for geotagged photos |
| daisyUI | UI component library |
License
GPL-3.0-or-later. See LICENSE.
Languages
Vue
51.1%
Rust
39.7%
JavaScript
4.2%
TypeScript
3.4%
C++
0.5%
Other
1%

