Skip to content

Instantly share code, notes, and snippets.

@mathiasbynens
Forked from subtleGradient/appify
Created November 12, 2010 13:46
Show Gist options
  • Save mathiasbynens/674099 to your computer and use it in GitHub Desktop.
Save mathiasbynens/674099 to your computer and use it in GitHub Desktop.
appify — create the simplest possible Mac app from a shell script
#!/bin/bash
if [ "$1" = "-h" -o "$1" = "--help" -o -z "$1" ]; then cat <<EOF
appify v3.0.1 for Mac OS X - http://mths.be/appify
Creates the simplest possible Mac app from a shell script.
Appify takes a shell script as its first argument:
`basename "$0"` my-script.sh
Note that you cannot rename appified apps. If you want to give your app
a custom name, use the second argument:
`basename "$0"` my-script.sh "My App"
Copyright (c) Thomas Aylott <http://subtlegradient.com/>
Modified by Mathias Bynens <http://mathiasbynens.be/>
EOF
exit; fi
APPNAME=${2:-$(basename "$1" ".sh")}
DIR="$APPNAME.app/Contents/MacOS"
if [ -a "$APPNAME.app" ]; then
echo "$PWD/$APPNAME.app already exists :("
exit 1
fi
mkdir -p "$DIR"
cp "$1" "$DIR/$APPNAME"
chmod +x "$DIR/$APPNAME"
echo "$PWD/$APPNAME.app"
@Geri-Borbas
Copy link

Adding plist and make sure that schell scripts and plist values have the same name as the app made it work fine.

@thedzy
Copy link

thedzy commented Oct 21, 2018

You can grab out of my frameworks and just edit the script continained.
https://github.com/thedzy/Run-script-as-an-Applicaiton

@dlpigpen
Copy link

How to add icon to this mac app generated?

@timelessthee
Copy link

You can grab out of my frameworks and just edit the script continained.
https://github.com/thedzy/Run-script-as-an-Applicaiton

Thank you for this. Much appreciated.

@Inthenew
Copy link

don't do /Users/--------/Desktop/appify.sh: Permission denied
instead do sh /Users/--------/Desktop/appify.sh

@mgdmdz
Copy link

mgdmdz commented Jul 28, 2022

Hi, is there an option to run the app as hidden?

@80N35
Copy link

80N35 commented Aug 3, 2022

This is the only "appify" script that is working on Catalina. Thanks, friend. Do you want to fork Conky-Mac with me. I have great configs but really haven't done serious code since the 90's in LA.

@craigfrancis
Copy link

On an ARM64 Mac, it kept prompting me to install Rosetta; adding the LSArchitecturePriority to the /Contents/Info.plist seems to work (although this is cached somehow, so I had to change the CFBundleIdentifier to get Rosetta to check again):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleExecutable</key>
	<string>run</string>
	<key>CFBundleIdentifier</key>
	<string>com.testing</string>
	<key>LSArchitecturePriority</key>
	<array>
		<string>arm64</string>
	</array>
	<key>LSRequiresNativeExecution</key>
	<true/>
</dict>
</plist>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment