Routing the same file to different apps differently
A file is not one thing. To Finder it is an item to move. To a terminal it is a path you type into a command. To a chat app it is an attachment to upload. To a notes field it might be nothing more than its name in plain text. The file on disk is the same, but each app wants a different representation of it, and moving between those forms by hand is a surprising amount of the fiddly work in a normal day on a Mac.
This is about that translation problem: how the same file ends up needing to be a path in one place, an upload in another, and plain text in a third, and how to stop doing the conversion yourself every time.
The same file, four different needs
Take one screenshot and follow it through an afternoon.
You want to run an image tool over it, so the terminal needs the path: something like a long string starting with slash Users. You copy the file, then realise you needed its path, not the file, so you dig for the right menu or hold a modifier while copying, and paste the path in.
Then you want to show it to a colleague, so the chat app needs the actual file uploaded. Now you drag the file itself, not its path, into the message.
Then you file it away, so Finder needs the file moved into a folder. That is the file again, but this time going to a location rather than into an app.
Then you jot a note about it, and the note only needs the file name as text, because a note cannot hold an image the way a chat can, or you do not want it to.
Four destinations, four different forms of one screenshot. Every switch between forms is a small manual step: copy as this, drag as that, grab the path, retype the name. Individually each is trivial. Added up across a day, this is real friction, and it is easy to get wrong, like pasting a file into a field that wanted text and watching nothing appear.
Why apps disagree about files
The reason is that apps accept different kinds of data on a drop, and a file can be offered in several of them at once. A single drag can carry the file reference, the text of its path, a URL, and an image preview, all bundled together. Each app reaches into that bundle and takes the type it knows how to handle.
A terminal takes the path text. Finder takes the file reference. A chat app takes the file and uploads it. A plain text field takes the string. When you drag directly from the source, you are relying on the source app to have offered the exact type the destination wants, and the two do not always match. That mismatch is why a drop sometimes lands and does nothing, or pastes something odd.
Knowing this is half the battle: the file is not changing, only which slice of it each app grabs. What you want is something that always offers the right slice.
Let the hand-off do the translating
This is the core idea behind Ledge. You drag a file, folder, image, or link up to the notch at the top centre of the screen and let go, and it lands on a shelf that drops down and stays. The interesting part is what happens when you drag it back off.
Ledge rewrites the hand-off for each destination. Drop the shelved file on a terminal and it hands over the path as text. Drop it on a chat app and it uploads the file. Drop it on Finder and it moves the file itself. Drop it into a text field and it can give plain text. Drop a link and it becomes a webloc where that fits. You throw the same thing at each app, and each one receives the version it can use, with no copying as path, no separate export, no retyping the name.
So the afternoon with the screenshot collapses. Park the screenshot on the shelf once. Pull it onto the terminal and you get the path. Pull the same shelved item onto the chat app and it uploads. Pull it into Finder and the file moves. Pull it into the note and you get text. One source, one gesture each time, and the translation happens on the way out instead of in your head.
Where routing like this earns its keep
The gain grows with how many tools a file touches. A designer moving one asset between a browser, an editor, a folder, and a review chat is doing the same four-form dance as the screenshot. A developer grabbing a log file to open in an editor, reference by path in a terminal, and attach to a ticket is doing it too. Anyone who lives across several apps at once hits this constantly.
It also removes a class of quiet mistakes. You stop pasting a file where text was wanted, stop dragging a path where a file was wanted, and stop discovering ten minutes later that the attachment never went through. Because the destination decides the form, the form is right by construction.
You choose which apps are routing destinations in settings, so the places you send files to often stay on the shelf as targets even when they are closed. That means the terminal, the chat app, and the folder you always use are ready to receive the correct form of a file without you launching them first.
The takeaway
The same file genuinely means different things to different apps, and the daily cost of that is the manual conversion between path, upload, file, and text. You can keep doing that translation by hand, or you can let the drop point decide. Set the file down once at the top of the screen, then send it out, and each app takes the representation it understands. Ledge does the whole thing locally on your Mac, with no account and no cloud, so routing a file to four apps never means sending it to anyone.