Die Grenzen zwischen (kompilierten) Mac-Programmen und einer Website verschwimmen. Viele Websites bieten inzwischen einen Funktionsumfang, den man bis vor einigen Jahren nur von "richtigen" Programmen gewohnt war. Google Text & Tabellen ist dafür ein gutes Beispiel. Diese sogenannten Web-Applications können sich inzwischen dank Google Chrome sogar im Mac-Dock einnisten und öffnen die entsprechende Website in Google Chrome, sobald man sie "öffnet".

Doch man möchte vielleicht nicht unbedingt zig Browser-Fenster/-Tabs mit den meist genutzten Web-Anwendungen offen haben, sondern diese als eigenständige Programm-Icons im Dock für den "Zugriff mit einem Klick" platziert haben.

Ich habe bei mir zum Beispiel aus WhatsApp Web, Google Keep und meiner selbstgebastelte Einkaufsliste eigenständige Pseudo-Programme erstellt.

Zwei Lösungen dafür möchte ich nun vorstellen.

Fluid

Fluid ist ein Shareware-Programm, das gratis genutzt werden kann, aber durch die Bezahlung von 5 US$ noch ein paar zusätzliche Features freischaltet.

Web-Adresse der gewünschten Website und einen Namen, den das Programm tragen soll, eingeben und schon hat man ein eigenständiges Programm, welches den Inhalt der spezifizierten Website anzeigt, wenn man es öffnet.
 
Was bekommt man für die 5 Dollar?
Die Möglichkeit, das Programm vom Dock in die Menü-Leiste zu verschieben (dafür in der Fluid-Web-Applikation den Menübefehl Programm-Menü > Pin to Status Bar... wählen; Rückgängig durch einen Ctrl-Klick auf das Menü-Icon). Damit habe ich mir meine selbstgebastelte Einkaufsliste mit einem Klick zugänglich gemacht.
Außerdem kann man nach Bezahlung der Shareware-Gebühr User-Scripts und User-Styles integrieren.

Ergo

  • Einfach zu bedienen
  • nutzt WebKit
  • kann Websites auch in der Menü-Leiste integrieren

GoogleChrome Wrapper

Man kann statt WebKit auch Google Chrome als "Engine" für die "zum Programm gemachte Website" verwenden.
An sich macht man nichts anderes, als den Shell-Befehl

exec "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"  --app="http://www.meinewebsite.de" --user-data-dir="/cache/ordner/" "\$@"

mit einem Icon zu versehen und ein doppelklick-bares Programm daraus zu machen.

Ein kleines und praktisches Skript, das die notwendigen Maßnahmen hierfür automatisiert durchführt, ist hier auf Github zu finden https://gist.github.com/demonbane/1065791

Ich habe das Skript allerdings etwas modifiziert: Einerseits auf Deutsch übersetzt und die Möglichkeit hinzugefügt, einen Wunsch-Speicherort für das erstellte Programm anzugeben.

#!/bin/sh

# Von https://gist.github.com/demonbane/1065791

echo "\n\nWie soll der Name der Applikation lauten?"
read inputline
name="$inputline"

echo "\nWie lautet die URL der Seite, aus der Sie eine Applikation erstellen wollen?\n(z.B. https://www.google.com/calendar/render)"
read inputline
url="$inputline"

echo "\nWie lautet der absolute Pfad zum gewünschten PNG-Programm-Icon?\n(z.B. /Users/username/Desktop/icon.png)"
read inputline
icon="$inputline"

chromePath=""
while [[ $chromePath == "" ]]
do
        echo "\nWie lautet die absolute Pfad-Angabe zu Google Chrome?\n(nur mit Enter bestätigen für Standard-Pfad /Applications)"
        read inputline
        if [[ $inputline == "" ]]; then
                chromePath="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
        else
                chromePath="$inputline/Google Chrome.app/Contents/MacOS/Google Chrome"
        fi
        if [ ! -f "$chromePath" ]; then
                echo "$inputline/Google Chrome konnte nicht gefunden werden."
                chromePath="";
        fi
done

appRoot=""
while [[ $appRoot == "" ]]
do
        echo "\nWo möchten Sie das neue Programm platziert haben?\n(nur mit Enter bestätigen für Standard-Pfad /Applications - bitte nur absolute Pfad-Angaben!)"
        read inputline
        if [[ $inputline == "" ]]; then
                appRoot="/Applications"
        else
                appRoot="$inputline"
        fi
        if [ ! -d "$appRoot" ]; then
                echo "$appRoot konnte nicht gefunden werden."
                appRoot="";
        fi
done

# various paths used when creating the app
resourcePath="$appRoot/$name.app/Contents/Resources"
execPath="$appRoot/$name.app/Contents/MacOS"
profilePath="$appRoot/$name.app/Contents/Profile"
plistPath="$appRoot/$name.app/Contents/Info.plist"

# make the directories
mkdir -p  "$resourcePath" "$execPath" "$profilePath"

# convert the icon and copy into Resources
if [ -f "$icon" ] ; then
    sips -s format tiff "$icon" --out "$resourcePath/icon.tiff" --resampleHeightWidth 128 128 >& /dev/null
    tiff2icns -noLarge "$resourcePath/icon.tiff" >& /dev/null
fi

# create the executable
cat >"$execPath/$name" <<EOF
#!/bin/sh
exec "$chromePath"  --app="$url" --user-data-dir="$profilePath" "\$@"
EOF

chmod +x "$execPath/$name"

# create the Info.plist
cat > "$plistPath" <<EOF
<?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>$name</string>
<key>CFBundleIconFile</key>
<string>icon</string>
</dict>
</plist>
EOF


# Fertig
echo "\nProgramm wurde erfolgreich erstellt.\n\n"
open $appRoot

Ihr könnt das Skript hier herunterladen, entpacken, ausführbar machen

chmod +x makeapp.sh
und dann ausführen
./makeapp.sh

Voraussetzungen

  • Google Chrome muss installiert sein
  • Ein Programm-Icon als PNG-Datei muss vorliegen

Ergo
  • Keine Angst vor dem Umgang mit der Kommandozeile
  • nutzt Google Chrome
  • Simple Sache