# Platypus 4.7

Feb 27th, 2012
Sveinbjorn Thordarson - <sveinbjornt@gmail.com>

### What is Platypus?

Platypus is a developer tool for creating application wrappers around scripts. In other words, it creates Mac OS X applications that execute a bundled script. Command line scripts can thus be run transparently from the graphical window environment, integrating seamlessly with the user interface.

Platypus is written in Objective-C / Cocoa and is free, open source software distributed under the terms and conditions of the Free Software Foundation's GNU General Public License v2. The source code is available as a separate download on the Platypus website and on GitHub.

While Platypus is free, it is the product of hundreds of hours of work over the span of several years. If you find Platypus a useful, please consider making a donation to support further development. I rely on donations to encourage me in continuing development of Platypus.

### How do I use Platypus?

Using Platypus is simple enough. You type in the name you want to assign to the application in the "App Name" field and then locate your script via a navigation dialog by pressing the "Select" button (or alternatively, drag the script or type in the path manually). You can then create the application by pressing the Create button.

Platypus sports a number of advanced features that are explained in detail in the documentation. You can view it by opening Platypus and selecting Platypus Documentation from the Help menu. The documentation is quite detailed and includes step by step tutorials, examples and in-depth explanations of advanced features.

Platypus has a command-line interface counterpart, `platypus`. You can install this command line tool from the Preferences into the default installation location `/usr/local/bin/platypus`. The man page for the command line tool is available both from the terminal and as an HTML document accessible from the Platypus application's Help menu.

### How does Platypus work?

Platypus creates a Mac OS X application bundle (.app) which contains an executable file and your script. When this application is launched, the executable file gets the script interpreter and other settings (authentication requirements, output type etc.) from configuration files in the Resources folder within the bundle and then executes the script according to those parameters. Script output can then be presented to the end-user in a variety of ways.

Platypus and Platypus-generated applications require Mac OS X 10.5 or later and are provided as fat 32-bit/64-bit Intel binaries. In order to create Platypus apps that run on PowerPC or previous incarnations of Mac OS X, you must use Platypus 4.4 or older.

### Version History

#### 27/02/2012 - Version 4.7

- New "Uninstall" menu option, which removes all traces of Platypus on a system
- New update mechanism using the Sparkle framework and appcasting
- Command line tool now supports reading script from STDIN
- Command line tool now supports XML plist option
- Migrated away from all deprecated Mac OS X API calls
- Minor interface tweaks
- Fixed bug where script permissions could be erroneously set, resulting in execution failure
- Fixed bug which caused Platypus to crash when creating Droplets
- Fixed bug with icon missing on "New Script" if CLI tool wasn't installed
- Fixed bug with enabled an empty menu item when no profiles were in Profiles list

#### 26/01/2012 - Version 4.6

- "Open" and "Save" menu item option for Platypus-created apps
- Applications can now be set as Services for text or file handling via Services menu
- Configurable document icon for Platypus apps
- New option to set custom arguments for script, not just interpreter, under "Args" (previously "Params")
- Command line tool now supports dumping profile property lists to stdout (see man page)
- Additional interpreter presets: zsh and tcsh
- Extended documentation and FAQ
- New "Edit" button and contextual menu item for Bundled Files List.
- New FastDMGMounter example
- Platypus now defaults to using binary-format property lists. This can be set to XML in create panel.
- Status Bar apps now gracefully remove their status bar item before exiting
- Removed app path as first arg option, it's unnecessary and confusing. App path == $CWD/../..
- Various interface refinements
- Migrated all images to optimized PNGs for smaller file sizes
- Now using LLVM for builds instead of GCC, which makes for smaller code size
- Changed "New Script" preset contents to be a "Hello, World" example in the selected language
- Fixed bug with script path text field tab autocomplete
- Fixed bug in shell command generator which errenously inversed the logic of the -R flag
- Fixed bug which caused crash when editing file in Bundled Files list using built-in editor.
- Fixed bug where text font settings would not be applied
- Fixed bug with contextual menus in Arguments window
- Fixed bug where custom image data application icons failed to be created
- Fixed bug where "Icon" display mode status item would erroneously display a default title
- "Run in background" applications no longer set themselves as front process with output mode "None"

#### 11/12/2011 - Version 4.5

- Upgraded to XCode 4 for builds. Platypus and generated applications now require Mac OS X 10.5 or later
- Dropped PowerPC support. All binaries are now 32-bit/64-bit Intel only
- New Examples menu with a number example profiles, scripts and presets demonstrating Platypus features
- Support for accepting dragged text snippets as arguments to script
- Platypus now displays a progress bar with status messages while creating applications
- New "Create app on script file change" option, which automatically creates and launches a Platypus application when you save changes to script.
- Due to popular demand, "droppable" apps now run script on launch, not just when files are dropped
- "Open in Editor" option for bundled files
- Interface refactored to be always in what was previously "Advanced mode"
- Better handling of icons for apps
- More accurate estimated final app size
- New "Launch app on creation" option in Platypus, to facilitate development workflow
- "Runs in background" windows now come to the front on launch
- Improved application icon and preset icons (512x512px representations)
- Updated man page for command line tool
- Open Recent menu uses Apple's API
- Main window no longer accepts locally dragged and dropped icon files
- Icon view no longer erroneously recognizes locally originating drags as valid
- Revised and extended documentation
- Fixed a text encoding bug with "Secure" scripts
- Fixed text encoding bug in built-in text editor
- Fixed bug in drag and drop handling in Platypus application
- Removed environment editing and signature settings [redundant and obsolete, respectively]
- Removed English.lproj from created apps. It's not need with current lack of localization support.
- Fixed bug in drag and drop on Web View
- Updated to IconFamily 0.9.4
- New FAQ section in the documentation which addresses common questions and issues
- Fixed a bug where droplet apps would lock up on cancelled authentication
- Fixed bug in command line tool where nib parameter was ignored
- Platypus no longer embeds icon data in profiles, which results in smaller file sizes
- A variety of other small bug fixes all over the codebase
- Platypus now identifies .command files as shell scripts
- Additional interpreter pre-set options (/usr/bin/env and /bin/bash)
- Command line tool now no longer requires destination path parameter, defaulting to [name-of-script].app as destination package
- Platypus now recognises more script type suffix variants (e.g. rbx, objpy, osacript, etc.)
- Command line tool now defaults to compiling nib file (can be disabled with -l flag)
- Command line tool is now more intelligent about automatically detecting script type, interpreter, autogenerating bundle identifier, etc. Command line tool parameters change from '-c scriptPath [appName]' to 'scriptPath [appName]'
- More intelligent automatic app name generation based on script filename

#### 17/08/2010 - Version 4.4

- New output mode: "Droplet"
- Development mode now also creates symlinks to bundled files, not just the script
- New high-resolution 512x512 icon presets
- New "Default Text Encoding" option in Preferences
- STDOUT and STDERR are no longer captured in output mode "None"
- Platypus apps now use the Apple-recommended, more secure temporary location for secure scripts
- More text encoding options
- Show Shell Command option is now more intelligent about creating a terse, efficient shell command without superfluous parameters
- Various small bug fixes and optimizations in Platypus app binaries
- Updated and improved code for executing script with privileges
- Updated and improved output parsing in Progress Bar output mode
- Fixed documentation so that it uses external images instead of data URLs
- Fixed bug where Platypus would incorrectly claim to be unable to create Platypus application support folder
- Fixed bug where background color from text settings would not be applied to the text view in Progress Bar output mode
- Fixed bug where syntax checking would work incorrectly with Perl scripts
- Fixed bug when interface in a Platypus app would lock up when dropping files in authenticated execution mode
- Fixed various bugs in Progress Bar output mode
- Fixed bug in output mode "None" where app would fail to quit on script termination
- Fixed small memory leak when applications were created

#### 25/07/2010 - Version 4.3

- New output mode: Status Menu
- Generated apps now have editable nib files
- New "Optimize Application" option which strips/compiles nibs and removes unnecessary files from generated application bundle
- Current working directory is now set to .app/Contents/Resources in scripts running with Admin privileges
- Auto-scrolling of output in Web View mode
- Drag and drop now works properly in Web View windows
- Various interface refinements
- Updated sample scripts
- Updated documentation and command line tool man page
- New high resolution app icon, icon presets and improved document icons
- Platypus text output now defaults to UTF8 instead of ASCII
- Command line tool has a plethora of new options
- Fixed bug where command-line generated apps would have black background and foreground in text output
- Fixed bug where apps would fail to register dropped files on launch
- Fixed bug in command line tool install script
- Fixed bug with suffix and file type validation
- Fixed text-encoding bug with secure bundled scripts
- Fixed bug where apps would default to output mode "None" on invalid output settings
- Fixed bug in secure bundled script w. droppable option
- Now warns when attempting to load a profile generated by an older version of Platypus

#### 18/05/2009 - Version 4.2

- Droppable Platypus apps can now execute script again when new files are dropped
- Text settings now available for Progress Bar output mode
- Command line tool now supports setting text output properties such as font, color and encoding
- Command line tool has achieved feature parity with GUI application
- Command line tool now correctly handles relative paths
- Change in profile format to make it more transparent and human-readable/editable
- "Show Shell Command" now shows all parameters for command line app
- Platypus apps now default to remaining open after execution
- Secure bundled script option now correctly excludes Development Version save option
- Fixed bug from 4.1 where text settings failed to be applied
- Fixed memory leak and bugs in privileged execution mode
- Fixed bug in path text field autocompletion
- Updated documentation to reflect recent features
- Minor interface tweaks and fixes

#### 15/05/2009 - Version 4.1

- New "Development Mode" option makes Platypus create symlink to script instead of copying it to the application bundle
- Platypus now tracks and warns of location change of bundled files and script
- Profiles menu now updates profile list when displayed
- Path autocomplete feature in script path text field
- Now parses entire shebang line for arguments to interpreter
- Script text output is now directed line by line to the status text field in Progress Bar output mode
- Progress Bar output mode now has a little arrow that shows details (i.e. script output) in a text field
- Tooltips for many more controls
- Additional default external editor presets
- Minor user interface tweaks and fixes
- Minor optimizations in app size
- Command line program can now create profiles
- Command line program can now operate in "Force" mode, overwriting files
- Fixed bug where secure bundled scripts failed to work on PowerPC-based machines
- Fixed memory leak in text output
- Fixed bug where command line program failed to create icons from images
- Fixed bug where command line program failed to parse arguments correctly
- Fixed bug where script type was not identified when a script was dropped on Platypus to launch the program
- Fixed bug which prevented File Types and App Role from being set in Info.plist
- Fixed bug where Platypus would insist on at least one File Type being set in file types and suffixes settings

#### 22/6/2008 - Version 4.0

- Now both Platypus and Platypus-generated apps require Mac OS X 10.4 or later.
- Interface streamlined and improved
- Overhauled entire source code backend.
- Optimized binaries of Platypus and Platypus-generated apps. Both are now leaner, meaner and slimmer than before.
- New file-based Profiles feature
- New application icon and new icon presets for generated apps
- New Web Output mode. Scripts can generate HTML which is rendered in a WebKit view in the Platypus-generated application
- New option to configure text size, font and color for Text Output mode
- New option to send arguments to script interpreter
- New option to disable passing path to app as first argument to script
- New "Secure script" encryption method
- Command line tool now has complete feature parity with the Platypus app
- Command line tool can now load Platypus profiles
- Command line tool now installed/uninstalled through Platypus Preferences
- New "Estimated final app size" reporting feature
- "Show Shell Command" option now correctly adds icon parameters
- Fixed bug where "Run Script in Terminal" option failed to escape script path
- Fixed bug with reversed LSMinimumSystemVersion property in Info.plist of generated applications
- Fixed bug where the same file could be added multiple times to Bundled Files list
- Fixed memory leak in Platypus-generated apps where a large amount of text output would cause the application to crash
- New and better man page for command line tool
- Updated and improved documentation
- Updated to latest IconFamily class code for icon generation

#### 25/07/2006 - Version 3.4

- The Platypus transition to Universal binaries is now complete. Both the Platypus application and the 'platypus' command line tool (and applications generated using these tools) now require Mac OS X 10.3.9 or later to run on PowerPC processors, and Mac OS X 10.4 or later to run on Intel processors. To create applications that run on versions prior to 10.3.9, you must use older versions of Platypus.
- Fixed problem where Platypus refused to launch on certain Mac OS X 10.3.x systems
- New options for command line tool: file bundling, verbose mode, suffix and file types support, updated man page.
- Updated documentation
- A great deal of bug fixes, error checks, tweaks and improvements

#### 24/02/2006 - Version 3.3

- Platypus and Platypus-generated apps are now Universal binaries that run natively on both PowerPC and x86 processors
- Fixed bug which made the Platypus command line utility generate non-functioning applications

#### 06/05/2005 - Version 3.2

- Editing of environmental variables via an interface pane
- Platypus apps can now be "loaded" with Platypus, i.e. configuration and script from the app are loaded
- Python syntax checking
- Icon can be set to a given .icns file so that smaller representations are not lost
- Command line tool bug fixed -- it now creates operational applications
- Command line tool now supports file bundling
- Info.plists in application bundles now contain LSHasLocalizedDisplayName, NSAppleScriptEnabled,CFBundleDisplayName, NSHumanReadableCopyright
- English.lproj is en.lproj in accordance with Apple's specifications
- Sliding animation when advanced options are revealed
- Fixed two small memory leaks

#### 06/05/2005 - Version 3.1

- New minimal, non-intrusive built-in text editor for those who prefer working in one application
- It is now possible to set app author name manually
- Invalid configuration fields now highlight red as you type
- New Dock menu
- New "Show Shell Command" menu item
- Fixed bug where "Secure" Platypus apps failed to work on read-only volumes
- New option to set default bundle identifier prefix in the preferences
- New option to set default author name in the preferences
- Profiles now correctly register bundle identifier and author name
- "Run script in Terminal" command now brings Terminal.app to the front
- Fixed bug where window title was not restored after a dialog
- Fixed a bug in the command line utility installer
- Updated man page for command line utility
- Updated Help documentation
- More sample scripts
- Platypus apps now register their creator in AppSettings.plist
- Help now opens with default app for http: protocol, not .html suffix

#### 13/01/2005 - Version 3.0

- New "Secure bundled script" option, which checksums, encrypts and hides script
- New "Check Script Syntax" feature for shell, Perl, Ruby and PHP scripts
- New "Edit Profiles" window for easier Profiles management
- New "platypus" command line tool
- Fixed a bug where PkgInfo file would not contain application signature
- Scripts created with the "New" button list bundled file paths in comment
- More complete Info.plist property list in Platypus-generated apps
- Several user interface refinements
- Several minor speed optimizations
- Updated documentation, tutorials, sample scripts and source code comments

#### 29/11/2004 - Version 2.8

- New "Import Custom Icon" menu item
- New contextual menus for app icon and file list
- It is now possible to manually edit an app's bundle signature
- Fixed bug where an authorized Platypus app could cause a logout
- Fixed bug with loading profiles created in older versions of Platypus

#### 16/11/2004 - Version 2.7

- Now possible to create applications that run with privileges *and* have Text Output
- Profiles now store custom application icons
- Fixed bug where buttons would not be enabled after a valid profile was loaded
- Custom application icons are now correctly labeled
- There is now a "Select Custom Icon" menu item
- Fixed bug where custom dragged icons would leave the icon image highlighted
- File Types and Suffixes list now displays the appropriate icons for entries
- File Types editor window is now a sheet
- Updated documentation and examples
- Various bug fixes and interface refinements
- All those that made Platypus possible are now rightly credited

#### 11/10/2004 - Version 2.6

- Application configurations can now be saved as "Profiles"
- It is now possible to set application version and 4-character signature
- Updated documentation to reflect the changes introduced in version 2.5
- New "Clear" button for clearing all configuration fields
- New "Run script in Terminal" menu command
- All dialogs in Platypus are now sheets instead of navigation dialogs
- Fixed bug where a non-droppable app's bundle identifier would not be correctly set
- Several minor bugs and inconsistencies fixed
- Several interface tweaks

#### 23/08/2004 - Version 2.5

- This is a major update with many important bug fixes and some powerful new features
- New output type: "Text Window", making it *very* easy to create tool wrappers
- New application option: "Remain running after completion"
- New "Open Recent" menu
- New text fields that display the application bundle identifier and total number and size of bundled files
- It is now possible to register a droppable application as either an Editor or a Viewer in the Types List
- Platypus apps now have a "PkgInfo" file within the application, in accordance with Apple's guidelines
- Any application can now be selected as external editor
- Platypus now remembers "Show Advanced Options" status between launches
- Fixed a bug which caused Platypus apps to behave oddly with the Dock
- Fixed a silly bug where Platypus apps would sometimes crash on dual-processor machines
- Fixed major memory leak in Platypus apps which had been present from Platypus 2.1
- Fixed a minor memory leak introduced in Platypus 2.3

#### 11/08/2004 - Version 2.3

- New "Runs in background" option, for creating applications that don't show up in the Dock
- Every Platypus app now has a unique bundle identifier (f.e. org.johnsmith.myscriptapp)
- New Edit Types window which allows you to set what kind of files your droppable app accepts
- New Help menu for instant access to Platypus documentation
- Platypus no longer accepts dragged folders as valid scripts
- The Bundled Files list is now drag-n-drop aware
- The same file can no longer be added many times to the Bundled Files list
- Bundled Files list buttons are now auto-enabled/disabled according to selection
- Platypus now prompts whether to overwrite when an app by the same name already exists

#### 03/05/2004 - Version 2.2

- "New Script" button/menu item for creating and opening a script from within Platypus
- "Reveal Script" button/menu item for revealing script in the Finder
- Incorporated menu items (and keyboard shortcuts) for almost all Platypus actions/options
- Buttons and menu items correctly disabled when script path is invalid
- Fixed a bug where the last remaining file in the Bundled Files list could not be removed
- Files in the Bundled Files list now appear with their icon
- Tool Tip labels placed on all interface components
- Droplets now identify themselves as Editors instead of Viewers
- Fixed bug where files with file/creator types could not be dropped on Platypus droplets
- Some minor interface adjustments

#### 27/04/2004 - Version 2.1

- Rewrote from scratch the ScriptExec executable that Platypus bundles into apps
- Fixed the dreaded "Is droppable" bug where Platypus would crash
- Platypus now (again) correctly creates droppable applications
- Scripts now properly receive the application bundle's path as first argument $1
- Droppable apps now also receive application bundle path as first argument
- Dropped files are now passed from $2-$*
- Preferences partially implemented - default editor can be changed to presets
- Apps that require authentication now also receive app bundle path and dropped files
- New menu and menu items for Platypus functions
- Two new icon presets, Platypus Plate and Platypus Droplet

#### 17/02/2004 - Version 2.0

- Entire application rewritten from scratch in Objective C and Cocoa
- Images can now be dragged on "App Icon" to create custom icons for apps
- Added Expect and PHP to list of preset interpreters
- Added "Edit" button, to edit selected script in TextEdit
- An editable file list for bundling files with script into Resources folder of app bundle
- Some settings delegated to "Advanced Options", revealed by expanding window

#### 21/11/2003 - Version 1.8

- Platypus applications that don't aren't marked 'Is Droppable' now get the path of the app's enclosing folder as first argument ($1, $ARGV[0] etc.). This can be very handy for installers or working with files relative to the app. A sample script that utilises this is included ("AppThatMovesToHomeFolder.sh")

#### 17/11/2003 - Version 1.7

- Platypus no longer has problems with spaces in certain paths
- Fixed an interface bug where Platypus window would close after Create, although cancelled
- Platypus apps with progress bar now really do have a functioning "Cancel" button
- Fixed bug where new platypus windows retained former Droppable setting
- Some cool sample scripts bundled with Platypus

#### 14/08/2003 - Version 1.6

- New option to create droppable apps that pass files as arguments to script (like DropScript)
- Fixed a nasty bug where Platypus apps would freeze up after failed authentication
- Platypus apps with progress bar now have a "Cancel" button
- Minor user interface enhancements in both Platypus and Platypus-generated apps

#### 29/07/2003 - Version 1.5 released

- Platypus apps now remain running while root-privileged scripts finish executing
- Invisible files and folders are now shown in Navigation dialogs
- Navigation dialogs use newer API calls, support app names longer than 31 characters and are non-modal
- Platypus apps can now be set to display a progress bar while running
- Platypus apps are now threaded, which means that the interface is responsive while they're running
- Some interface tweaks and bug fixes

#### 18/06/2003 - Version 1.4 released

- It is now possible to create script applications that require root privileges
- Optimized performance and improved error handling for apps created with Platypus
- Platypus now launches faster
- Fixed bug where window proxy icon remained unchanged when a custom icon was set
- Fixed bug where apps with spaces in their names failed to function
- Platypus apps now remain running while script is executing

#### 15/06/2003 - Version 1.3 released

- Script interpreter can now be defined
- Shebang line (#!) is now parsed for interpreter
- "Open" menu item now works
- New windows center correctly on screen
- Code optimized and trimmed
- Minor interface tweaks

#### 13/06/2003 - Version 1.2 released

- Support for Ruby, AppleScript and Tcl
- Drag'n drop support for script path
- Now gracefully handles files dropped on Platypus application icon
- Better icons - specialized default icons for each script type
- Fixed bug where application placement name in Navigation dialog was ignored when creating app

#### 11/06/2003 - Version 1.1 released

- Platypus no longer uses huge amounts of CPU power for window redraws
- Text fields are now Unicode and displayed in correct font
- Support for Perl and Python scripts
- Drag'n drop support for script path
- Drag'n drop support for custom app icon
- Scripts can now be dragged on Platypus to automatically create an app in the same directory
- Now warns about inappropriate script suffixes

#### 09/06/2003 - Version 1.0 released

Sveinbjorn Thordarson
http://sveinbjorn.org/software
sveinbjornt@gmail.com