Skip to content

datell1357/LazyCopy

Repository files navigation

LazyCopy

Stop pasting walls of context. Send Codex the window or clipboard you already have.

Windows-first AppShot + dd for Codex: press one hotkey to paste the current window into Codex Desktop, or type one short dd message to hand over the latest clipboard text or image.

OS Windows Platform Codex Desktop and CLI License MIT GitHub stars

AppShot Shift+Space dd commands

LazyCopy AppShot preview

Install · Start here · What gets installed · Commands · Troubleshooting · License

Install

Run this in PowerShell:

$repo = "https://github.com/datell1357/LazyCopy.git"
$dir = "$HOME\.codex\skills\dd"

New-Item -ItemType Directory -Force "$HOME\.codex\skills" | Out-Null

if (Test-Path "$dir\.git") {
  git -C $dir pull --ff-only
} else {
  git clone $repo $dir
}

npm --prefix $dir run install-user

After install, start a fresh Codex thread so the installed skill and prompts are reloaded.

Install From Codex Desktop

Open Codex Desktop and paste this message:

Install LazyCopy from https://github.com/datell1357/LazyCopy.git for Windows.
Clone or update it at ~/.codex/skills/dd, run npm --prefix ~/.codex/skills/dd run install-user, then verify dd --help, ~/.codex/prompts/dd.md, ~/.codex/prompts/ㅇㅇ.md, ~/.claude/commands/dd.md, and ~/.claude/commands/ㅇㅇ.md.
After install, Shift+Space should be the AppShot hotkey and dd should be available as Codex /dd, $dd, /ㅇㅇ, $ㅇㅇ; Claude Code /dd, /ㅇㅇ; and terminal dd, ㅇㅇ.

Install From Codex CLI

codex exec -C $HOME --skip-git-repo-check 'Install LazyCopy from https://github.com/datell1357/LazyCopy.git for Windows. Clone or update it at ~/.codex/skills/dd, run npm --prefix ~/.codex/skills/dd run install-user, then verify dd --help, ~/.codex/prompts/dd.md, ~/.codex/prompts/ㅇㅇ.md, ~/.claude/commands/dd.md, and ~/.claude/commands/ㅇㅇ.md. After install, Shift+Space should be the AppShot hotkey and dd should be available as Codex /dd, $dd, /ㅇㅇ, $ㅇㅇ; Claude Code /dd, /ㅇㅇ; and terminal dd, ㅇㅇ.'

Start Here

LazyCopy has two separate handoff paths.

Surface What you do What LazyCopy does
AppShot Press Shift+Space Captures the active Windows window and pastes the PNG into Codex Desktop.
dd Type /dd ..., $dd ..., dd ..., or ㅇㅇ ... Reads the latest clipboard image or text and sends it to the selected AI agent.

These two paths are intentionally separate. AppShot is a hotkey, not a chat command. dd is the clipboard command, not the screenshot hotkey.

AppShot

Press:

Shift+Space

Expected behavior:

  • LazyCopy captures the active Windows window.
  • LazyCopy briefly flashes the captured area so you can tell the hotkey fired.
  • LazyCopy copies the capture as a PNG.
  • LazyCopy focuses Codex Desktop.
  • LazyCopy pastes the image into the Codex input.
  • LazyCopy does not submit the message.

AppShot is only active while Codex Desktop has a visible window. The installer writes a hidden Windows Startup launcher for a small watcher. The watcher keeps running in the background, starts the hotkey listener when Codex is visible, and stops only that listener when Codex disappears. When Codex becomes visible, the watcher also starts a hidden self-update check for the installed Git checkout.

This means:

  • Codex visible: Shift+Space should capture and paste into Codex.
  • Codex closed or not visible: the listener should not hold the hotkey for AppShot.
  • Reopening Codex should make the watcher start the listener again within a short polling window.
  • If the installed checkout has a Git upstream, opening Codex can fast-forward LazyCopy and refresh the installed prompts, skills, commands, and wrappers in the background.

dd

Use any of these in Codex Desktop or Codex CLI message input:

/dd 이 클립보드 내용을 보고 이어서 작업해줘
$dd 이 클립보드 내용을 보고 이어서 작업해줘
/ㅇㅇ 이 클립보드 내용을 보고 이어서 작업해줘
$ㅇㅇ 이 클립보드 내용을 보고 이어서 작업해줘
dd 이 클립보드 내용을 보고 이어서 작업해줘
ㅇㅇ 이 클립보드 내용을 보고 이어서 작업해줘

Expected behavior:

  • LazyCopy reads the latest clipboard image first.
  • If no clipboard image is available, LazyCopy falls back to clipboard text.
  • Codex is the default agent.
  • Claude Code is used only when you explicitly choose Claude or use the installed Claude Code slash command.
  • You normally do not need --agent, --prompt, --prefer, or other flags.

In Claude Code CLI, use:

/dd 이 클립보드 내용을 보고 이어서 작업해줘
/ㅇㅇ 이 클립보드 내용을 보고 이어서 작업해줘

Claude Code commands capture the clipboard into the current Claude session. They do not require --agent claude.


What Gets Installed

The installer creates or updates these local surfaces:

Installed surface Location Purpose
Codex skill %USERPROFILE%\.codex\skills\dd Makes $dd, $ㅇㅇ, and natural dd/ㅇㅇ use available to Codex skill discovery.
Codex prompts %USERPROFILE%\.codex\prompts\dd.md, %USERPROFILE%\.codex\prompts\ㅇㅇ.md Makes /dd and /ㅇㅇ available in Codex prompt surfaces.
Claude commands %USERPROFILE%\.claude\commands\dd.md, %USERPROFILE%\.claude\commands\ㅇㅇ.md Makes /dd and /ㅇㅇ available in Claude Code.
Terminal commands dd, ㅇㅇ, lazycopy through npm link and %USERPROFILE%\bin wrappers Allows direct CLI use from PowerShell, cmd, and Git Bash when the user bin is first on PATH.
AppShot watcher Windows Startup launcher Keeps AppShot listener aligned with the Codex Desktop lifecycle.

No separate AppShot skill command is installed. Normal AppShot use is always the installed Shift+Space hotkey.


Requirements

LazyCopy is built for Windows 10 or Windows 11.

Required:

  • Git
  • Node.js and npm
  • PowerShell
  • Codex CLI
  • Codex Desktop for AppShot

Optional:

  • Claude Code CLI, only if you want Claude Code /dd or /ㅇㅇ support.

Not required:

  • Windows admin permission
  • Windows scheduled-task setup
  • Windows service installation
  • Registry Run key setup
  • A separate AppShot chat command
  • Any bundled plugin runtime dependency

The Windows helper scripts run locally through PowerShell. The installer uses PowerShell with -ExecutionPolicy Bypass for LazyCopy's local helper scripts.


Commands

Update

Installed Windows checkouts update automatically when Codex Desktop becomes visible and the LazyCopy Git checkout has an upstream branch. The background update uses git fetch, git merge --ff-only @{u}, and then refreshes the installed LazyCopy surfaces and Startup launcher without starting a second watcher.

Manual update is still available:

git -C "$HOME\.codex\skills\dd" pull --ff-only
npm --prefix "$HOME\.codex\skills\dd" run install-user

Direct CLI Usage

In a Windows terminal, use the short commands directly:

dd "이 클립보드 내용을 보고 이어서 작업해줘"
ㅇㅇ "이 클립보드 내용을 보고 이어서 작업해줘"

Dry-run without launching an agent:

Set-Clipboard "LazyCopy dd smoke test"
dd "Use this context" --dry-run --prefer text --json

Launch Claude Code only when explicitly wanted:

dd "Use this context in Claude Code" --agent claude

Reinstall the AppShot watcher:

dd appshot hotkey install --key shift+space --app Codex

Run the hotkey listener directly in the foreground for diagnosis:

dd appshot hotkey run --key shift+space --app Codex

Smoke Test

dd --help
npm --prefix "$HOME\.codex\skills\dd" test
Test-Path "$HOME\.codex\prompts\dd.md"
Test-Path "$HOME\.codex\prompts\ㅇㅇ.md"
Test-Path "$HOME\.claude\commands\dd.md"
Test-Path "$HOME\.claude\commands\ㅇㅇ.md"
Test-Path "$HOME\bin\dd.cmd"
Test-Path "$HOME\bin\ㅇㅇ.cmd"

Then verify dd privacy behavior:

Set-Clipboard "LazyCopy private clipboard smoke test"
dd "Use this context" --dry-run --prefer text --json

Expected dry-run behavior:

  • dd.args contains <prompt-with-clipboard-text:redacted>.
  • JSON output and manifest.json do not contain raw clipboard text.
  • The artifact clipboard.txt keeps raw clipboard text so the selected agent can read it.

Troubleshooting

Shift+Space Does Nothing

First confirm Codex Desktop is open and has a visible window. The AppShot listener is intentionally active only while Codex is visible.

Then check the log:

%LOCALAPPDATA%\LazyCopy\appshot-hotkey.log

Useful markers:

Marker Meaning
watcher-start Startup watcher launched.
codex-visible Watcher detected a visible Codex window.
update-check-started Watcher started a hidden self-update check.
update-current Installed Git checkout is already at its upstream version.
update-applied A fast-forward update was applied and local LazyCopy surfaces were refreshed.
update-skipped Auto-update was skipped because the checkout has no Git upstream or is not a Git worktree.
update-failed Auto-update could not complete; AppShot continues with the installed version.
listener-started Hotkey listener started.
hotkey-fired Shift+Space was received.
command-launched Capture/paste command was launched.
codex-hidden Codex is no longer visible.
listener-stop-requested Watcher stopped its own listener child.
listener-restart Watcher is restarting a listener that exited unexpectedly.
watcher-failed The watcher failed before or while managing the listener.
listener-failed The hotkey listener failed.
command-launch-failed The capture/paste helper could not be started.

If the log looks stale or an old listener is still holding the hotkey, reinstall:

dd appshot hotkey install --key shift+space --app Codex

The Terminal dd Command Is Not LazyCopy

Codex and Claude slash commands are different from your shell command lookup. If dd --help does not show LazyCopy, run the installer again, then open a new PowerShell window:

npm --prefix "$HOME\.codex\skills\dd" run install-user
dd --help

On Git Bash, dd may resolve to Git's coreutils dd.exe if Git's usr\bin appears before %USERPROFILE%\bin on PATH. The installer writes %USERPROFILE%\bin\dd, %USERPROFILE%\bin\ㅇㅇ, and matching .cmd wrappers; make sure that user bin directory appears before Git's usr\bin, then reopen the terminal.

Codex Gets Text But Not an Image

dd checks for a clipboard image first and falls back to clipboard text. If you expected image behavior, copy an actual image to the Windows clipboard and run:

dd "이미지를 읽고 설명해줘" --dry-run --json

The dry-run JSON should report an image artifact and a capture.png path.

More detail:


Boundaries

LazyCopy explicitly does not claim these things:

  • It does not install a Windows service.
  • It does not use Windows scheduled-task setup.
  • It does not require admin elevation.
  • It does not submit the Codex message after AppShot paste.
  • It does not keep the AppShot listener active while Codex Desktop is closed.
  • It does not make Codex Desktop required for dd.
  • It does not send clipboard artifacts to a remote server by itself.
  • It does not replace Codex or Claude Code agent behavior; it packages local clipboard/window context for them.

License And Attribution

LazyCopy is distributed under the MIT License. See LICENSE.

The dd clipboard workflow is adapted from fivetaku's dd, distributed through the fivetaku/gptaku_plugins collection.

The upstream MIT notice is preserved in THIRD_PARTY_NOTICES.md. LazyCopy is an independent project and is not endorsed by, sponsored by, or affiliated with fivetaku unless explicitly stated by that upstream project.

About

appshot과 dd를 Windows와 Codex에서도 가능하게!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors