Wie mache ich das Klicken auf das Symbol im Dock? == Neue Instanz öffnen

16

Mein Dock enthält mehrere Anwendungen, in denen mehrere Instanzen geöffnet sein können (z. B. Chrome, iTerm, Sublime usw.).

Wenn ich auf eines der Symbole klicke, soll ein neues Fenster geöffnet werden (dies passiert, wenn derzeit keine Fenster geöffnet sind). Wenn jedoch eine Instanz bereits geöffnet ist, gehe ich nur zu dieser Instanz.

Dies ist besonders ärgerlich, wenn sich die Instanz auf einer anderen Desktop-Instanz befindet und sich mein Desktop ändert.

Gibt es eine Einstellung, die Sie festlegen können, damit beim Klicken auf das Symbol ein neues Fenster geöffnet wird, anstatt Sie zu einem bereits geöffneten Fenster umzuleiten?

JD Isaacks
quelle
2
Ich könnte Ihnen zeigen, wie das mit ein bisschen AppleScript geht, das Sie im Dock behalten können.
Ian C.
Oder Sie drücken einfach Strg + N.
CoffeeRain
3
@CoffeeRain Strg-N? Was ist das? Tut nichts in iTerm und Chrome. Ich denke, Sie meinten Cmd-N - aber das funktioniert nur, wenn die App im Vordergrund steht.
Ian C.
@ IanC. Entschuldigung, ja, ich habe Cmd-N gemeint.
CoffeeRain

Antworten:

17

Sie können etwas zusammen mit etwas AppleScript und etwas cleverem Einfügen von Symbolen kludern. So würden Sie es für iTerm / iTerm2 machen.

Öffnen Sie den AppleScript-Editor und fügen Sie folgendes AppleScript ein:

set myapp to "iTerm"
on appIsRunning(appName)
    tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
    # What you do here will depend on the program. This works for
    # iTerm but you'll need to look up the actions for other programs
    # since this bit is iTerm-specific.
    tell application "iTerm"
        set myterm to (make new terminal)
        tell myterm
            launch session "Default"
        end tell
    end tell
else
    tell application myapp
        activate
    end tell
end if

Sie können die Schaltfläche Ausführen im Editor verwenden, um zu testen, ob sie funktioniert. Wenn Sie ein anderes Profil öffnen möchten, ändern Sie "Standard" in Zeile 12 in den Namen des Profils, das Sie öffnen möchten.

Speichern Sie nun dieses AppleScript. Wählen Sie im Dialogfeld "Speichern" unter "Dateiformat" die Option "Anwendung" aus der Liste aus.

Ich habe meine als "New iTerm.app" auf meinem Desktop gespeichert.

Jetzt bekomme ich jedes Mal, wenn ich auf meinem Desktop auf "New iTerm.app" klicke, ein neues iTerm-Fenster. Ich kann "New iTerm.app" auf mein Dock ziehen und es ist ein Dock-Symbol, auf das ich jederzeit klicken kann, um ein neues iTerm-Fenster zu öffnen. Das Symbol ist jedoch das allgemeine AppleScript-Symbol.

Lassen Sie es uns auf das iTerm-Symbol ändern. Wählen Sie "New iTerm.app" auf dem Desktop und klicken Sie auf "Cmd-I", um den Eigenschaftenbildschirm für die Anwendung aufzurufen.

Navigieren Sie nun /Applicationsin einem Finder-Fenster zu, suchen Sie iTerm in der Liste der installierten Anwendungen, wählen Sie es aus und klicken Sie auf Cmd-I, um den Eigenschaftenbildschirm für die iTerm-Anwendung zu öffnen.

Klicken Sie auf das Symbol im iTerm-Infofenster, um einen weichen blauen Schatten zu erhalten. Drücken Sie Cmd-C, um das Symbol in die Zwischenablage zu kopieren.

Klicken Sie nun auf das Symbol im Infofenster "New iTerm.app" und drücken Sie Cmd-V, um das iTerm-Symbol in die Anwendung "New iTerm.app" einzufügen.

Kopieren des Symbols von iTerm nach New iTerm

Es sollte jetzt ein iTerm-Symbol haben.

Sie können die "New iTerm.app" in Ihren /ApplicationsOrdner verschieben, wenn Sie möchten . Ziehen Sie es aus dem Ordner, in dem Sie es behalten möchten, zurück in Ihr Dock, und klicken Sie im Dock darauf, um mit jedem Klick ein neues iTerm-Fenster zu öffnen.

Wenn Sie es vom aktiven iTerm.app Dock-Symbol unterscheiden möchten, können Sie es in einen Bildeditor wie Pixelmator einfügen und mit einem großen Rot versehen +, damit es eindeutig als Symbol für ein neues iTerm gekennzeichnet ist Fenster anstelle des Symbols, auf das Sie drücken müssen, um die bestehende, geöffnete iTerm-Anwendung anzuzeigen.

Im Folgenden finden Sie einige weitere Skripts für einige andere Anwendungen, mit denen Sie das Anpassen beginnen können:

Google Chrome (Neues Fenster)

set myapp to "Google Chrome"
on appIsRunning(appName)
    tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
    tell application "Google Chrome"
        make new window
    end tell
else
    tell application myapp
        activate
    end tell
end if

Google Chrome (neuer Tab)

set myapp to "Google Chrome"
on appIsRunning(appName)
    tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
    tell application "Google Chrome"
        make new tab at end of tabs of window 1
    end tell
else
    tell application myapp
        activate
    end tell
end if

Erhabener Text 2

Leider verfügt ST2 anscheinend nicht über eine mit AppleScript zugängliche Erweiterung. Sie können sich immer das OS X-Befehlszeilentool ansehen, mit dem ST2 ausgeliefert wird . Sie können dies über ein einfaches Skript im Dock aufrufen, um ein neues Fenster in ST2 zu öffnen. So:

set myapp to "Sublime Text 2"
on appIsRunning(appName)
    tell application "System Events" to (name of processes) contains appName
end appIsRunning
if appIsRunning(myapp) then
    # Assumes you've installed the subl command line tool for ST2
    # in to /usr/local/bin. Adjust accordingly.
    do shell script "/usr/local/bin/subl --new-window"
else
    tell application myapp
        activate
    end tell
end if
Ian C.
quelle
2
Tolle Antwort mit klaren Beispielen für verschiedene Anwendungsfälle und Details! Vielen Dank!
Adam Davis
@AdamDavis Ich fange gerade mit AppleScript an, es war also eine schöne Übung, um zu testen, was ich gelernt habe.
Ian C.
Könnte dies verwendet werden, um den Namen der aktuell ausgeführten Anwendung abzurufen?
William
Kann ich überprüfen, ob die App ausgeführt wird UND NICHT auf dem aktuellen Desktop? Ich würde ein neues Fenster nur dann lieben, wenn sich das vorhandene Fenster auf einem anderen Desktop befindet.
Adamdport