Jinx-Vision is a Windows HDR-aware color picker built with Tauri (Rust backend) and Next.js (frontend).
It captures a frozen frame from your primary monitor, samples pixels in HDR space, and shows two outputs side-by-side:
- Traditional picker value (source-style SDR value many normal pickers return)
- HDR-corrected SDR value (what the color visually maps to under HDR-aware processing)
On HDR desktops, traditional pickers often return values that do not match what your eye sees on screen. Jinx-Vision makes that mismatch explicit and gives you both values.
- Windows Graphics Capture (WGC) pipeline in Rust
- Frozen-frame sampling (screen stays static while picking)
- Primary-monitor scoped capture
- Side-by-side comparison UI:
- HDR Source panel (traditional picker-style values)
- SDR Output panel (HDR-corrected values)
- Export formats:
#RRGGBBrgb(r, g, b)hsl(h s% l%)text-[#RRGGBB]bg-[#RRGGBB]
- Global shortcut activation:
Alt+Shift+P Alttoggle while active: pause tracking (free mouse) / resume tracking- Click-to-copy with keyboard shortcuts
- Transparent overlay UI
- Frontend: Next.js (App Router) + TypeScript
- Backend: Rust + Tauri v2
- Color processing:
palette - Windows capture/interop:
windowscrate + D3D11 + WGC
src/- frontend overlay UIsrc/lib/- frontend Tauri API wrappers and shared TS typessrc-tauri/src/capture/- WGC and frame extractionsrc-tauri/src/color/- tone-mapping / format conversionsrc-tauri/src/picker/- pixel samplingsrc-tauri/src/commands/- Tauri commandssrc-tauri/src/state/- app state and payload types
- OS: Windows 10 1903+ or Windows 11
- Node.js: 20+
- pnpm: 10+
- Rust toolchain (
rustup,cargo,rustc) - Microsoft C++ Build Tools (for Rust native builds on Windows)
- WebView2 Runtime (usually already present on modern Windows)
- Clone the repository
git clone <your-repo-url>
cd hdr_colorpicker- Install JavaScript dependencies
pnpm install- Verify Rust toolchain
rustc -V
cargo -V- Run the desktop app (dev)
pnpm dev:tauri- Web build only:
pnpm build:web- Desktop build:
pnpm build:tauri- Start app (
pnpm dev:tauri) - Press
Alt+Shift+Pto activate picker and freeze current frame - Move cursor to sample a pixel
- Left-click overlay to copy selected format
- Press
Altto toggle free-mouse mode (pause/resume tracking) - Press
1..5for quick-copy formats - Press
Enterto copy current selection - Press
Escor right-click to cancel picker
-
HDR Source (traditional picker-style): Values comparable to non-HDR-aware pickers.
-
SDR Output (HDR-corrected): Values produced by Jinx-Vision's HDR-aware pipeline for perceptual SDR equivalence.
pnpm dev- run Next.js dev serverpnpm dev:web- run Next.js dev serverpnpm dev:tauri- run Tauri desktop app in devpnpm build- build frontendpnpm build:web- build frontendpnpm build:tauri- build desktop apppnpm lint- lint frontend code
-
cargo metadata ... program not found- Rust is not installed or not in PATH.
-
Window opens with incorrect size/position
- Jinx-Vision resyncs to primary monitor at setup and on picker activation.
- If behavior is off, restart app after changing display scaling/layout.
-
Traditional value still differs from another picker
- Different pickers use different capture pipelines/color-management paths.
- Compare on same monitor, same scaling, same HDR/SDR settings.
- Fork the repo
- Create a feature branch
- Make your changes
- Run checks:
pnpm lint
pnpm build- Open a pull request
MIT - see LICENSE.
This app reads screen pixels locally to provide color sampling. No network upload is required by design.