Map

lightroom-cc-on-linux

Toolbox toolboxwinelinuxlightroomadobeai-builtCMIT (scripts/stubs)LGPL-2.1+ (patched wine DLLs) โ†ณ show in map Markdown
title
lightroom-cc-on-linux
type
toolbox
summary
Wine recipe running Adobe Lightroom CC on Linux, debugged and patched autonomously by Claude
tags
wine, linux, lightroom, adobe, ai-built
language
C
license
MIT (scripts/stubs); LGPL-2.1+ (patched wine DLLs)
created
2026-05-21
updated
2026-05-21

A reproducible recipe for running Adobe Lightroom CC (the cloud-syncing photo app, not Classic) on Linux via Wine 11.8 staging. As of 2026-05-16, the full Creative Cloud desktop app signs in, the Lightroom Edit module renders all panels (Light, Color, Effects, Detail, Optics, Geometry), and the Remove/Heal tool works including brush, mask, and apply.

What makes the project interesting beyond the recipe itself is that it was researched, debugged, patched, screenshot-verified, and documented entirely by Claude Opus 4.7 working autonomously via Claude Code. The human contributor (sander110419) set the goal โ€” get Lightroom working, then publish a reproducible recipe โ€” and answered occasional clarification questions. The agent did the rest.

The six non-obvious fixes

  1. DXVK dummy composition swapchain so WebView2 (Adobe's Electron UI shell) can render.
  2. Disable AdobeGrowthSDK.dll โ€” Adobe's A/B testing library calls the unimplemented SetThreadpoolTimerEx and crashes the entire CC process tree.
  3. Patched d2d1.dll registering the CLSID_D2D1ColorManagement builtin effect Lightroom needs. Build instructions in stubs/sources/.
  4. Patched mfplat.dll with a MFCreateSampleCopierMFT forwarder so the Remove/Heal tool stops crashing. The DLL must be dropped into two locations โ€” system32/ and the Adobe-bundled copy at Program Files/Adobe/Adobe Lightroom CC/mfplat.dll, because Adobe ships its own that preempts wine's.
  5. Tiny stub DLLs for NDFAPI.DLL, wkscli.dll, ext-ms-win-uiacore-l1-1-2.dll.
  6. Lowercase symlinks for Adobe-bundled DLLs so wine's case-sensitive PE loader can find them.

The agent's working loop

The README documents how Claude actually worked:

  1. Read crash dumps, wine logs, Adobe binaries (with winedump, objdump, raw PE parsing in Python).
  2. Diff export tables across every relevant mfplat.dll (wine builtin, Proton's, Adobe's bundled) against winegstreamer's delay-loaded imports, narrowing down to the single missing function MFCreateSampleCopierMFT.
  3. Patch the binary directly (scripts/patch_mfplat.py): appended a new PE section with a fresh export directory containing all original exports plus a forwarder to mf.MFCreateSampleCopierMFT.
  4. Verify by screenshotting with ImageMagick's import, locating UI elements algorithmically with Pillow, driving the mouse via xdotool, watching for either the Remove tool's popup or a crash dump in ~/AppData/LocalLow/Adobe/CRLogs/. When clicks missed by a few pixels, the agent re-took the screenshot, re-ran detection, adjusted, retried.
  5. Discover that the patched system32/mfplat.dll wasn't loading because Windows DLL search order prefers the app directory and Adobe ships its own. Copied the patched DLL into Adobe's install directory, re-launched, screenshot-confirmed Remove tool now works.
  6. Document what worked, save memory notes for the next session so the Adobe-bundled-DLL gotcha is a transferable lesson for other Adobe apps.

Method documentation

history_methodology.md (~1750 lines) is the chronological build history โ€” every step, dead end, diff, and screenshot-driven UI verification across multi-day debugging. Part I reconstructs earlier sessions (DXVK, SetThreadpoolTimerEx, D2D effect CLSID scan, three classes of missing-DLL fixes) from live journal docs, screenshots, and wineprefix forensics โ€” the earlier agents are gone but left enough records. Part II is the real-time account of the Remove/Heal fix and the publishing pipeline, written by the agent as it happened.

Quick start

git clone https://github.com/sander110419/lightroom-cc-on-linux.git
cd lightroom-cc-on-linux
./scripts/setup.sh    # ~30 min, mostly downloads
# Then download ACCCx*.zip from Adobe, drop in installers/
./scripts/install-cc.sh
./scripts/install-lightroom.sh
./scripts/run-lightroom.sh

Prereqs: 64-bit Linux on kernel 6.x+, Wine 11.8 staging, winetricks 20240105+, Vulkan-capable GPU, ~10 GB free, mingw-w64, a valid Adobe Lightroom CC subscription.

Why this is interesting

Two things at once: the actual Lightroom-on-Linux recipe, and the artifact of an agent doing multi-day autonomous binary debugging end to end. The patched DLLs in stubs/binaries/ are the bit-for-bit copies the agent verified work โ€” md5s in GUIDE.md match the bytes in the repo. No LLM hand-waving made it into the actual binaries.

The piece sits next to 1password-agentic-refactoring (1Password's case for agent-built deterministic tools) and building-syntaqlite-ai (vibe coding vs. disciplined design with AI). All three point at the same shift โ€” the useful AI agent product is the agent + a verification harness, not the agent producing prose.

Credits

  • PhialsBasement โ€” wine fork that fixes CC installer mshtml/msxml3 issues.
  • Wine project for d2d1, mfplat, mf sources.
  • Proton GE for the mfplat baseline.
  • sander110419 โ€” set the goal, supplied the Adobe subscription, hosts the repo.
  • Claude Opus 4.7 โ€” did the debugging, wrote the patches, ran screenshot-driven verification, authored every file.

Repo: github.com/sander110419/lightroom-cc-on-linux โ€” 138 stars, MIT