Cómo hacer clic en el ícono en el dock == abrir una nueva instancia

15

Tengo varias aplicaciones en mi dock que pueden tener varias instancias abiertas (por ejemplo, Chrome, iTerm, Sublime, etc.)

Cuando hago clic en uno de los íconos, quiero que se abra una nueva ventana (esto es lo que sucede si no hay ventanas abiertas actualmente) Sin embargo, si una instancia ya está abierta, solo me lleva a esa instancia.

Esto se vuelve especialmente molesto cuando la instancia está en otra instancia de escritorio y hace que mi escritorio cambie.

¿Hay alguna configuración que pueda configurar para que cuando haga clic en el icono, se abra una nueva ventana en lugar de redirigirlo a una ventana ya abierta?

    
pregunta JD Isaacks 27.03.2012 - 17:17

1 respuesta

16

Puede juntar algo con algo de AppleScript y algún pegado de imagen de icono inteligente. Así es como lo harías para iTerm / iTerm2.

Abra el Editor de AppleScript y pegue el siguiente AppleScript:

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

Puedes usar el botón Ejecutar en el editor para probar que funciona. Si desea abrir un perfil diferente, cambie "Predeterminado" en la línea 12 al nombre del perfil que desea abrir.

Ahora guarda este AppleScript. En el cuadro de diálogo Guardar bajo "Formato de archivo" en la parte inferior, seleccione "Aplicación" de la lista.

Guardé el mío como "Nuevo iTerm.app" en mi escritorio.

Ahora, cada vez que hago clic en "Nuevo iTerm.app" en mi escritorio, aparece una nueva ventana de iTerm. Puedo arrastrar "Nueva iTerm.app" a mi Dock y será un icono de Dock en el que puedo hacer clic cuando quiera que se abra una nueva ventana de iTerm. Pero el icono es el icono genérico de AppleScript.

Cambiemos al icono de iTerm. Seleccione "Nueva iTerm.app" en el escritorio y haga clic en Cmd-I para abrir la pantalla de propiedades de la aplicación.

Ahora navegue a /Applications en una ventana del Finder, busque iTerm en la lista de aplicaciones instaladas, selecciónelo y haga clic en Cmd-I para abrir la pantalla de propiedades de la aplicación iTerm.

Haz clic en el ícono en la ventana de información de iTerm para que aparezca una sombra azul suave a su alrededor. Presione Cmd-C para copiar el ícono al portapapeles.

Ahora haga clic en el icono en la ventana de información "Nuevo iTerm.app" y presione Cmd-V para pegar el icono de iTerm en la aplicación "Nuevo iTerm.app".

AhoradeberíateneruniconodeiTerm.

Silodesea,puedemoverel"Nuevo iTerm.app" a su carpeta /Applications . Arrástrelo desde la carpeta en la que decide mantenerlo, vuelva a su dock, y ahora puede hacer clic en él en el Dock para abrir una nueva ventana de iTerm con cada clic.

Si quisiera poder distinguirlo del icono del Dock iTerm.app en funcionamiento, podría considerar pegar el icono en un editor de imágenes como Pixelmator y agregarle un gran + rojo para que esté claramente identificado como el icono para presionar para obtener una nueva ventana de iTerm en lugar del icono para presionar para ver la aplicación de iTerm que está saliendo.

Aquí hay algunos scripts más para otras aplicaciones para comenzar a personalizar las cosas:

Google Chrome (Nueva ventana)

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 (Nueva pestaña)

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

Texto Sublime 2

Lamentablemente, ST2 no parece tener extensiones accesibles para AppleScript. Siempre puede echar un vistazo a la herramienta de línea de comandos OS X con la que ST2 se envía . Puede llamarlo desde un script simple en el Dock para abrir una nueva ventana en ST2. Entonces:

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
    
respondido por el Ian C. 27.03.2012 - 17:45

Lea otras preguntas en las etiquetas