Ledge

How to send a file to the right app every time

Sending a file to another app on a Mac sounds like one action, but it is really two decisions stacked on top of each other. First you decide which app the file is going to. Then, without quite noticing, you decide what form the file should arrive in. A command line wants a path. A chat window wants the file uploaded. A note wants text. Most of the friction in moving files around comes from the second decision, because macOS makes you handle it by hand.

Here is how to think about sending a file to the right app, why it goes wrong so often, and how to make the right form happen automatically.

The two things “send a file” really means

When you drag a document out of Downloads, you have a picture of where it is going. What you rarely think about is the shape it needs to take when it gets there. The same PDF can be four different things depending on the destination.

Dropped on a folder, it is a file that should move. Dropped on a terminal, it is a path string that a command can read. Dropped on a chat app, it is an upload that the other people in the channel can open. Dropped on a note or a text field, it might just be its name or its location as plain text. It is one document, but each destination speaks a slightly different language, and the file has to arrive in that language or it does not work.

When the form is wrong, you get the small failures everyone knows. You paste into a terminal and get nothing useful, because the terminal wanted the path and got a file reference it cannot render. You drop into a chat box and it posts a link to a place only you can reach, instead of the file itself. None of these are big problems on their own. Together they are a steady tax on every file you move.

Why the wrong form is so easy to get

macOS does have a system for this. When you drag something, the source app offers the file in several representations at once, and the destination picks the one it can handle. In theory you never think about it. In practice the source often offers only one or two forms, and the destination takes whatever is on top, so you get a link where you wanted a file, or a file reference where you wanted a path.

The workarounds are all manual. To get a path into a terminal, people right-click the file, hold Option, copy it as a pathname, then switch windows and paste. To get a file into a chat, they save it to the desktop first so they have something concrete to drag. To turn a link into plain text, they paste it and then paste again as plain text to strip the formatting. Every one of these is a tiny detour, and you take dozens of them a day without counting.

The deeper issue is that you are doing the translation, not the computer. You know the terminal wants a path and the chat wants an upload, so you prepare the file to match before you send it. That knowledge should live in the tool, not in your habits.

Deciding the destination once, and letting the form follow

This is the idea behind Ledge. You drag a file up to a shelf at the top of the screen and let go. It sits there. When you are ready, you drag it off the shelf to wherever it is going, and the form is chosen for you based on where it lands.

Drop it on a terminal and it hands over the path as text. Drop it on a chat app and it uploads the actual file. Drop it on a Finder window and it moves the file itself. Drop a link onto a text field and it becomes plain text; a web address dragged out can become a saved webloc. You make the one decision that matters, which is where the file is going, and the shape it needs to arrive in is handled without a right-click menu or a second paste.

Because the shelf holds things, you can also gather before you send. Pull three files from three different apps onto the shelf, then send each to a different place. One goes to a folder as a moved file, one goes to a chat as an upload, one goes to a terminal as a path, and you never stop to prepare any of them.

Choosing which apps are always ready to receive

There is a practical wrinkle worth setting up once. An app can only be a drop target if it is open, which means the app you send to most often has to be running before you can hand it a file. In Settings you can mark the apps you route to, and they stay on the shelf as destinations even when they are closed, so the send works whether or not the app happens to be open at that moment.

Opening the shelf itself needs no setup. Press Option and Space, or click the strip at the top of the screen, and it drops down. The first time you send a path into a terminal, macOS asks once for Accessibility permission so the paste can happen, and never asks again. The keyboard shortcut needs no permission at all. There is no account and nothing leaves the Mac.

Sending a file to the right app every time is less about aiming and more about not having to convert. Decide the destination, let the form follow, and the dozen small detours you used to take, the copy-as-pathname, the save-to-desktop, the paste-and-paste-again, quietly disappear.