MacOS – LaunchBar script that returns the path of a folder “dropped” on it

applescriptlaunchbarmacos

I want to make a LaunchBar script that displays in a dialog the path of a file or folder that's chosen in the first pane and then "dropped" on a script. But I can't make it work.

I've got a couple of working scripts that almost do what I want:

Return contents of first pane (used with a shortcut):

tell application "LaunchBar"
   set x to selection as text
   return x
end tell

Display text written in the first pane and "dropped" on the script:

on handle_string(textFromLaunchbar)
   tell application "LaunchBar"
       display in large type textFromLaunchbar
   end tell
end handle_string

The latter uses the handle_string() handler but I can't quite make the open() handler work for files and folders:

from the LaunchBar manual:

http://www.obdev.at/resources/launchbar/help/index.php?chapter=SendingItems

Sending items to AppleScripts

To pass a selected file, URL or text to an AppleScript, press the Tab key to trigger the “Send to…” action, select the desired AppleScript and press Return. Files will be passed to the script’s open() handler, URLs will be passed to the handle_string() handler.

Best Answer

The open() handler gets passed an alias (which is a kind of a pointer to a file or folder). You can then simply convert the alias to text, but it will show you the path with colons as separators (e.g. "Macintosh HD:Users:Username:Documents:Folder:").

Use POSIX path of to convert it to a UNIX-style path with "/" separators, and if you want to paste it into Terminal, especially if the path has spaces in it, you should use quoted form of to properly enclose it in quotes.

The following script works with both folders and files for me, when an item is passed to it via LaunchBar:

on open (thisItem)
    display dialog (thisItem as text) -- alias
    display dialog quoted form of POSIX path of thisItem -- POSIX path
end open