Service Station – mac

Customize your Finder context menu with applications and scripts.

Set up Rules for different sets of file types. Show custom menus depending on which types of files and folders you right-clicked.


Service Station for macOS

🔶 Customize your Right-Click menu in Finder

🔶 Launch applications and scripts

🔶 Available on the Mac App Store

Support

We’re using GitHub as the Service Station support website.

Please first search the existing Issues to see if there’s an existing page for your problem or suggestion.

Thank you for logging any bugs you may find. We’d also love to hear about feature requests or workflow enhancements.

Email

If you’d prefer to contact us via email, please write to support@servicestation.menu

Twitter

We love hearing about how you use Service Station!

Please send us a tweet at @ServiceStationX


Service Station Scripts

Service Station supports scripting via AppleScript, JavaScript, shell script, and Automator Workflows.

Application Scripts Directory

Click the "Open Application Scripts Directory" button to open Service Station's Application Scripts directory in Finder.

Due to macOS sandboxing restrictions, you must manually place your scripts in this directory.

Service Station cannot execute your script if it is not located in the app's Application Scripts directory.

Sample Scripts

Sample scripts are provided to demonstrate scripting in Service Station.

Click the "Sample Scripts" button to display these scripts in the Finder.

Copy these scripts to the Application Scripts directory to test them out as launched via Service Station.

Finder Sync Variables

Service Station exposes the following variables to scripts:

  • targetedURL – current Finder directory path
  • selectedItemURLs – array of the selected items in Finder
  • menuKind – the type of menu being displayed

These variables correspond to the pieces of information available in the Finder Sync extension FIFinderSyncController class.

The Service Station sample scripts demonstrate how to populate these variables within your script.

AppleScript

If your AppleScript defines a subroutine handler serviceStationDidSelect, that function will be called with the Finder Sync variables as parameters:

on serviceStationDidSelect(targetedURL, selectedItemURLs, menuKind)
    // your AppleScript here
end serviceStationDidSelect

If the AppleScript does not define the Finder Sync variable handler, Service Station will execute the script's default run handler.

JavaScript

Like AppleScript, implement a serviceStationDidSelect function in your JavaScript code to receive the Finder Sync parameters:

function serviceStationDidSelect(targetedURL, selectedItemURLs, menuKind) {
	// your JavaScript here
}

Otherwise, the script's default run handler will be executed.

Automator Workflows

Service Station passes the current Finder selection context as input when executing an Automator workflow.

The workflow's input will be either the selected files and folders or the path of the folder background being right-clicked.

The workflow.workflow sample script demonstrates using an Open Finder Items Automator action that receives the workflow's input from Service Station.

Additionally, if the workflow has implemented named storage variables for the FIFinderSyncController variables, Service Station will set those variable values.

In Automator, select View > Variables. Right click the section and select New variable...

Add any or all of the following variables:

  • targetedURL
  • selectedItemURLs
  • menuKind

When your script is run, Service Station will populate these variables with the Finder Sync values.

In your workflow, use the Automator Action "Get Value of Variable" to get the variable value and use it as needed.

Shell Scripts

Shell scripts are launched using NSUserUnixTask. The Finder Sync variables are passed as a single arguments array of strings. The arguments are formatted using the following flags:

  • -targetedURL
  • -menuKind
  • -selectedItemURLs

The script developer is responsible for correctly parsing the script parameters.

Please see the sample script for an example implementation.

Scroll to Top