I wrote a fish function that watches for new macOS screenshots and copies the file path to the clipboard. I use it all the time — take a screenshot, paste the path into Claude Code or Droid. No dragging, no Exposé, no waiting for the desktop to refresh.

I turned it into a CLI utility called shotpath.

What Changed

The fish function worked fine, but it had a couple of annoyances. It needed a terminal window running fish, and it depended on fswatch and terminal-notifier being installed. It was also hard to share with others — telling someone “paste this fish function and install these two dependencies” isn’t great.

shotpath is a single Swift binary. It uses FSEvents directly — no dependencies. Notifications use osascript, which is available on every Mac. And it can run as a background service via Homebrew.

Install

brew tap hboon/tap
brew install shotpath

Usage

Run it manually:

shotpath

Or start it at login so you never have to think about it:

brew services start hboon/tap/shotpath

That’s it. Take a screenshot with cmd+shift+4, and the path is in your clipboard ready to paste into your coding agent.

How It Works

shotpath monitors ~/Desktop using FSEvents with file-level granularity. When a new file appears that matches the macOS screenshot naming pattern (Screenshot ... at ... .png), it copies the absolute path to the clipboard and shows a notification.

The whole thing is about 70 lines of Swift.