Wie mache ich das Dock-Symbol stoppen Prellen nach meinem app Wrapper-Skript startet?
Frage
So habe ich kürzlich einen .app
Wrapper für eine zsh Skript, aber wenn ich es laufen, hält das Symbol für die App im Dock-Hopping.
Die App ist im Grunde:
% find Example.app -type f
Example.app/Contents/Info.plist
Example.app/Contents/MacOS/wrapper.sh
% cat Example.app/Contents/Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- tell OSX what the name of the executable is -->
<key>CFBundleExecutable</key>
<string>wrapper.sh</string>
</dict>
</plist>
% cat Example.app/Contents/MacOS/wrapper.sh
#!/usr/bin/env zsh
# not my real script, but something else that hangs for a while
sleep 10
%
Sie können auch es von Github greifen.
Gibt es eine Möglichkeit, den App-Icon bekommen Hopping zu stoppen, und wirkt wie eine normale Anwendung, und einfach dasitzen mit einem Dreieck daneben?
Lösung
Ein Symbol der Anwendung im OS X Dock abprallen wird, bis die App ihre Hauptereignisschleife eintritt und beginnt auf Benutzereingaben reagieren. Als Ihr Skript wahrscheinlich nicht kontinuierlich eine Kohlenstoff- oder Cocoa Ereignisschleife läuft (siehe Dokumentation für Carbon-Event Manager und NSApplication, respectively), wird das Dock wartet, eine regelmäßige Vordergrund GUI-Anwendung erwarten entstehen.
Ein Skript-Wrapping-Tool, das ich Erfolg hatte mit Platypus . Es kann seine eigene Ereignisschleife laufen, während das Skript ausgeführt wird, und eine Reihe von anderen praktischen Dingen tun.
Andere Tipps
Sie wollen DropScript . Das Dock nicht mit Shell-Skripten wie das funktioniert, es erwartet etwas ein bisschen mehr vollwertiges.
Ich denke, wenn Sie LSUIElement auf Ihre Info.plist Datei hinzufügen, sollte es funktionieren.