{"id":30202918,"url":"https://github.com/electerious/lightroom-controller","last_synced_at":"2025-08-13T11:09:27.894Z","repository":{"id":306930789,"uuid":"1020862750","full_name":"electerious/lightroom-controller","owner":"electerious","description":"Control Adobe Lightroom CC using HTTP requests by using the Lightroom External Controller API.","archived":false,"fork":false,"pushed_at":"2025-08-05T14:15:17.000Z","size":36,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-09T09:54:45.821Z","etag":null,"topics":["adobe","controller","keyboard","lightroom"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/electerious.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-16T14:03:41.000Z","updated_at":"2025-08-05T14:15:21.000Z","dependencies_parsed_at":"2025-07-28T14:45:11.622Z","dependency_job_id":"e87e9ea6-81d4-4213-9bab-b4159744f570","html_url":"https://github.com/electerious/lightroom-controller","commit_stats":null,"previous_names":["electerious/lightroom-controller"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/electerious/lightroom-controller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/electerious%2Flightroom-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/electerious%2Flightroom-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/electerious%2Flightroom-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/electerious%2Flightroom-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/electerious","download_url":"https://codeload.github.com/electerious/lightroom-controller/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/electerious%2Flightroom-controller/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270228408,"owners_count":24548821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adobe","controller","keyboard","lightroom"],"created_at":"2025-08-13T11:09:26.091Z","updated_at":"2025-08-13T11:09:27.847Z","avatar_url":"https://github.com/electerious.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# lightroom-controller\n\n![Build](https://github.com/electerious/lightroom-controller/workflows/Build/badge.svg)\n\nControl Adobe Lightroom CC using HTTP requests by using the Lightroom External Controller API.\n\n![lightroom-controller](https://github.com/user-attachments/assets/a0fdfe43-35a3-413e-8f77-d0616fcf923d)\n\n\u003e ⚠️ This project is still in development and may not work as expected. Use at your own risk!\n\n\u003e 💡 This project is not affiliated with Adobe Systems Incorporated in any way. It is an independent tool that utilizes the Lightroom External Controller API to provide a simple interface for controlling Lightroom CC.\n\n## Contents\n\n- [Description](#description)\n- [Requirements](#requirements)\n- [Usage](#usage)\n- [API](#api)\n- [Options](#options)\n- [Examples](#examples)\n  - [Karabiner-Elements](#karabiner-elements)\n\n## Description\n\n`lightroom-controller` is a simple CLI that acts as a bridge between external tools and Adobe Lightroom CC. It allows you to control Lightroom's sliders and settings using simple HTTP requests, making it compatible with various tools like Karabiner-Elements, Automator, or custom scripts.\n\nThe tool listens for incoming HTTP requests and translates them into actions within Lightroom. This happens through the Lightroom External Controller API, which must be enabled in Lightroom CC.\n\nUsing the External Controller API without `lightroom-controller` would require a more complex setup, as it involves handling WebSocket connections and parsing the API's JSON responses, making it hard to combine with other tools.\n\n## Requirements\n\n- Adobe Lightroom CC (v8.4 or newer)\n- [Node.js](https://nodejs.org/en/) (v22 or newer)\n- [npm](https://npmjs.com) (v10 or newer)\n\n## Usage\n\n### 1. Start Lightroom CC\n\nLaunch Adobe Lightroom CC on your computer.\n\n### 2. Enable the External Controller API\n\nEnable the External Controller API in Lightroom CC by going to `Preferences \u003e Interface` and checking the box for \"Enable external controllers\".\n\n### 3. Start the controller\n\nStart the controller by running the following command in your terminal:\n\n```bash\nnpx lightroom-controller\n```\n\nYou should now see a Lightroom dialog asking you to allow the connection from the external controller. Click \"Pair\" to grant access.\n\n### 4. Send requests\n\nYou can now send HTTP requests to control Lightroom. For example, to increment the exposure:\n\n```bash\ncurl http://localhost:3000/Exposure2012/increment\n```\n\nTo increment the exposure by a specific amount:\n\n```bash\ncurl http://localhost:3000/Exposure2012/increment?amount=0.5\n```\n\nTo reduce the contrast:\n\n```bash\ncurl http://localhost:3000/Contrast2012/decrement\n```\n\n## API\n\n```\nGET /{command}/{action}\nGET /{command}/{action}?amount={value}\n```\n\n### Commands\n\nCommands for controlling Lightroom. The names are based on the weird names used by the Lightroom External Controller API, which are not very intuitive tbh. Not all commands are tested, but most of them should work as expected. The name of the command is passed to Lightroom no matter if known or unknown.\n\n`AutoGrayscaleMix`, `AutoLateralCA`, `Blacks2012`, `BlueHue`, `BlueSaturation`, `CameraProfile`, `Clarity2012`, `ColorGradeBlending`, `ColorNoiseReduction`, `ColorNoiseReductionDetail`, `ColorNoiseReductionSmoothness`, `Contrast2012`, `CorrectionAmount`, `CurveRefineSaturation`, `DefringeGreenAmount`, `DefringePurpleAmount`, `Dehaze`, `DepthCorrectionAmount`, `DepthSource`, `EnhanceDenoise`, `EnhanceDenoiseAmount`, `EnhanceRawDetails`, `EnhanceSuperResolution`, `Exposure2012`, `GrainAmount`, `GrainFrequency`, `GrainSize`, `GrayMixerAqua`, `GrayMixerBlue`, `GrayMixerGreen`, `GrayMixerMagenta`, `GrayMixerOrange`, `GrayMixerPurple`, `GrayMixerRed`, `GrayMixerYellow`, `GreenHue`, `GreenSaturation`, `HDREditMode`, `HDRMaxValue`, `Highlights2012`, `HueAdjustmentAqua`, `HueAdjustmentBlue`, `HueAdjustmentGreen`, `HueAdjustmentMagenta`, `HueAdjustmentOrange`, `HueAdjustmentPurple`, `HueAdjustmentRed`, `HueAdjustmentYellow`, `LensBlur.Active`, `LensBlur.BlurAmount`, `LensBlur.CatEyeAmount`, `LensBlur.HighlightsBoost`, `LensBlur.ShowOverlay`, `LensProfileDistortionScale`, `LensProfileEnable`, `LensProfileVignettingScale`, `LocalBlacks2012`, `LocalClarity2012`, `LocalContrast2012`, `LocalCurveRefineSaturation`, `LocalDefringe`, `LocalDehaze`, `LocalExposure2012`, `LocalGrain`, `LocalHighlights2012`, `LocalLuminanceNoise`, `LocalMoire`, `LocalSaturation`, `LocalShadows2012`, `LocalSharpness`, `LocalTemperature`, `LocalTexture`, `LocalTint`, `LocalWhites2012`, `Look.Amount`, `LuminanceAdjustmentAqua`, `LuminanceAdjustmentBlue`, `LuminanceAdjustmentGreen`, `LuminanceAdjustmentMagenta`, `LuminanceAdjustmentOrange`, `LuminanceAdjustmentPurple`, `LuminanceAdjustmentRed`, `LuminanceAdjustmentYellow`, `LuminanceNoiseReductionContrast`, `LuminanceNoiseReductionDetail`, `LuminanceSmoothing`, `OverrideLookVignette`, `PerspectiveUpright`, `PointColorHueShift`, `PointColorLumScale`, `PointColorRangeAmount`, `PointColorSatScale`, `PointColorVisualizeRange`, `PostCropVignetteAmount`, `PostCropVignetteFeather`, `PostCropVignetteHighlightContrast`, `PostCropVignetteMidpoint`, `PostCropVignetteRoundness`, `RedHue`, `RedSaturation`, `SDRBlend`, `SDRBrightness`, `SDRClarity`, `SDRContrast`, `SDRHighlights`, `SDRShadows`, `SDRWhites`, `Saturation`, `SaturationAdjustmentAqua`, `SaturationAdjustmentBlue`, `SaturationAdjustmentGreen`, `SaturationAdjustmentMagenta`, `SaturationAdjustmentOrange`, `SaturationAdjustmentPurple`, `SaturationAdjustmentRed`, `SaturationAdjustmentYellow`, `ShadowTint`, `Shadows2012`, `SharpenDetail`, `SharpenEdgeMasking`, `SharpenRadius`, `Sharpness`, `SplitToningBalance`, `Temperature`, `Texture`, `Tint`, `Vibrance`, `WhiteBalance`, `Whites2012`, `cropBottom`, `cropLeft`, `cropRight`, `cropTop`, `previewForSDRDisplay`, `straightenAngle`, `visualizeHDRRanges`\n\n### Actions\n\nAvailable actions for each command. The name of the action is passed to Lightroom no matter if known or unknown.\n\n- `increment`: Increases the value of the command by a small amount.\n- `decrement`: Decreases the value of the command by a small amount.\n\n### Parameters\n\nFor `increment` and `decrement` actions, you can optionally specify an `amount` parameter to control the adjustment value:\n\n- `amount` (optional): A numeric value to specify the increment/decrement amount. If omitted, Lightroom uses its default increment value.\n\n## Options\n\n`lightroom-controller` can be configured using environment variables.\n\n### Port\n\nThe port to run the server on. Defaults to `3000`.\n\n```bash\nPORT=3000 npx lightroom-controller\n```\n\n### Lightroom WS URL\n\nThe WebSocket URL of your Lightroom instance. Defaults to `ws://127.0.0.1:7682`.\n\nIf the port is not available, Lightroom falls back to a different port. The port that it uses will be saved into a `connections.json` file by Lightroom.\n\nMac: `~/Library/Application Support/Adobe/Lightroom CC/Connections`\nWindows: `AppData\\Local\\Adobe\\Lightroom CC\\Connections`\n\n```bash\nLIGHTROOM_WS_URL=ws://127.0.0.1:7682 npx lightroom-controller\n```\n\n## Examples\n\n### Karabiner-Elements\n\nYou can use `lightroom-controller` with [Karabiner-Elements](https://karabiner-elements.pqrs.org/) to control Lightroom using keyboard shortcuts. Here's an example configuration that maps the `F1` key to increase the exposure and the `F2` key to decrease it:\n\n```json\n{\n  \"title\": \"Lightroom Controller\",\n  \"rules\": [\n    {\n      \"description\": \"Control Lightroom Exposure\",\n      \"manipulators\": [\n        {\n          \"type\": \"basic\",\n          \"from\": {\n            \"key_code\": \"f1\"\n          },\n          \"to\": [\n            {\n              \"shell_command\": \"curl http://localhost:3000/Exposure2012/increment\"\n            }\n          ]\n        },\n        {\n          \"type\": \"basic\",\n          \"from\": {\n            \"key_code\": \"f2\"\n          },\n          \"to\": [\n            {\n              \"shell_command\": \"curl http://localhost:3000/Exposure2012/decrement\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felecterious%2Flightroom-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felecterious%2Flightroom-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felecterious%2Flightroom-controller/lists"}