Skip to content

gyng/seecull

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

178 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

seecull

Cross-platform photo culling for Windows, macOS, and Linux. Ratings, labels, and keywords write directly to Adobe-compatible XMP sidecars next to each photo. No catalog, no import step.

Hobby project. Provided as-is, no warranty, no support promise. Issues and PRs are appreciated but I work on this when I feel like it. If you need a polished pro tool with vendor support, use Lightroom or Photo Mechanic. This is a free thing that mostly works for basic culling and has very limited RAW support (DCPs and MakerNotes databases are difficult!).

Download the latest release · What it does · Limitations

Grid view with a selected RAW showing the metadata panel preview, ratings, RAW+JPEG stacks, and keyword tags

Download

Releases:

  • Windows x64.exe NSIS installer. Unsigned, so SmartScreen will warn "Unknown publisher" on first run.
  • macOS arm64.dmg (Apple Silicon only; no Intel build yet). Unsigned, so first launch needs right-click → Open to bypass Gatekeeper.
  • Linux x64.AppImage. chmod +x and run; no installer.

This is a preview build — see Limitations before shipping with it.

What it does

  • Filesystem-as-truth. All ratings, labels, keywords, GPS, and edit-slider values round-trip through XMP sidecars in the same format Lightroom and Adobe Bridge use. Rename, move, or copy files outside seecull; the cache rebuilds on next folder open.
  • RAW + JPEG + video in one grid. Decodes Fuji RAF, Sony ARW, Nikon NEF/NRW, Canon CR2/CR3, Adobe DNG, Olympus ORF, Panasonic RW2, Pentax PEF, Samsung SRW via bundled libraw. Grid thumbs use the camera-embedded JPEG for instant paint.
  • Basic edit mode works for both stills and video. The same crs:* sliders (exposure, contrast, highlights/shadows, curve, HSL, B&W, split tone, sharpen, vignette, crop) apply to photos and video clips alike, and write to the same XMP sidecar shape Adobe uses for video. The on-screen preview runs against a poster frame for video — fine for shot selection and grade direction, not a substitute for a colour-graded final.
  • Keyboard-first culling. 15 rate, X reject, 69 colour-label, Space loupe, arrows navigate, D edit. Bulk operations work over multi-select.
  • GPU loupe. WebGPU 1:1 view with click-to-zoom, scroll-wheel zoom, drag-pan. Shift+Space swaps the embedded preview for a full libraw decode in your chosen working space (ProPhoto / AdobeRGB / sRGB / linear).
  • Edit mode writes ACR-compatible XMP. Exposure / contrast / highlights / shadows / whites / blacks / tone curve / HSL / B&W mix / split tone / sharpen / vignette / crop land in the same crs:* XMP fields Lightroom reads. Open the same file in Lightroom and the sliders are already there.
  • Stacks. RAW+JPEG pairs collapse automatically; time-proximity grouping for derivatives (PSDs, exports). Selection-aware: rating a collapsed stack head rates every member.
  • GPS / GPX. Geotag from a GPX/TCX/FIT/KML track via time matching; reverse-geocode to nearest named place via the bundled GeoNames dataset (no network).
  • Map view. Plots every GPS-tagged photo on a tile map with cluster bubbles.
  • External tools. Right-click → Open with… surfaces the OS-native picker (Windows native, file-dialog on macOS/Linux). Double-click opens in the OS default app.

Limitations

Not a Lightroom replacement. The intended flow is cull and rough-edit in seecull, then finish in Lightroom or Adobe Camera Raw if you need full RAW develop fidelity.

  • Limited RAW camera-profile support. Edit-slider preview applies adjustments on top of a generic libraw decode rather than a per-camera DCP profile. The XMP values written are Lightroom-correct; the in-app preview just won't match Lightroom's renderer pixel-for-pixel until camera-profile coverage lands.
  • No noise reduction, no lens corrections, no perspective transforms, no AI masking. Out of scope for v0.x.
  • Edit mode is early. Crop UI works; histograms work; sliders write correct XMP; the preview pipeline is still being tuned. Expect rough edges and the occasional re-render delay.
  • No catalog features. No collections, smart collections, virtual copies, or stacks-across-folders. The folder you opened is the working set.

Screenshots

Selection Loupe Edit mode
Selection — bulk rate / label / keyword Loupe — WebGPU 1:1 with click-to-zoom Edit — tone / colour / curve → crs:* XMP
Settings
Settings — colour pipeline, libraw, ExifTool

FAQ

My camera? If libraw decodes it, seecull decodes it. Settings → Tools → libraw → Show camera list shows the full ~1300-body list. Fuji X-Trans, Sony A7/A9, Nikon Z, Canon R, Pentax K all work.

Round-trip with Lightroom? Yes — the XMP fields seecull writes are the same fields Lightroom reads. Open the folder in Lightroom and your ratings/labels/keywords/edits are there.

Network share / NAS? Works. UNC paths, mapped drives, SMB, NFS detected automatically. Concurrent reads throttled to avoid swamping the share.

Why no catalog? Catalogs drift the moment a file moves outside the app. The filesystem already is the source of truth; we treat it that way.

Why does my edit look different in Lightroom? The XMP is identical — the renderer isn't. seecull's preview runs on the cached JPEG; Lightroom runs on the RAW with its own demosaic and tone-curve pipeline. Final RAW output should be done in Lightroom or ACR.

Develop

rustup default stable
corepack enable && corepack prepare pnpm@11 --activate
pnpm install
cargo build --release -p sc-headless
pnpm dev

Tests: cargo test --workspace and pnpm -r test. Lint: pnpm lint. Re-capture README screenshots: pnpm screenshots.

Layout

  • crates/ — Rust workspace. Subsystem crates stay pure Rust; sc-core wraps them; sc-headless is the NDJSON RPC server.
  • apps/desktop/ — Electron app. Renderer follows atomic design.
  • packages/ipc-types/ — typed IPC contract; drift between Rust and TS fails CI.
  • docs/decisions/ — ADRs. PLAN.md is the product spec, AGENTS.md is the engineering rulebook.

License

Dual-licensed MIT or Apache-2.0, your choice. Bundled libraw + ffmpeg stay LGPL-2.1 (dynamic-link only). Full attribution in THIRD_PARTY_NOTICES.md.

seecull project icon — a stylised gull