Cómo hacer clic en el icono en el dock == abrir nueva instancia


16

Tengo varias aplicaciones en mi dock que pueden tener múltiples 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 una instancia de escritorio completamente diferente y hace que mi escritorio cambie.

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


2
Podría mostrarle cómo hacer esto con un poco de AppleScript que podría mantener en el Dock.
Ian C.

O simplemente puede presionar ctrl + n.
CoffeeRain

3
@CoffeeRain Ctrl-N? ¿Que es eso? No hace nada en iTerm y Chrome. Creo que te referías a Cmd-N, pero eso solo funciona si la aplicación está en primer plano.
Ian C.

@IanC. Lo siento, sí, me refería a Cmd-N.
CoffeeRain

Respuestas:


17

Puede mezclar algo junto con un poco de AppleScript y un pegado inteligente de imágenes de iconos. Así es como lo haría para iTerm / iTerm2.

Abra el Editor de AppleScript y pegue en 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

Puede 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 guarde este AppleScript. En el cuadro de diálogo Guardar en "Formato de archivo" en la parte inferior, seleccione "Aplicación" de la lista.

Guarde 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 "New iTerm.app" a mi Dock y será un icono de Dock en el que puedo hacer clic en cualquier momento que desee que se abra una nueva ventana de iTerm. Pero el ícono es el ícono genérico de AppleScript.

Cambiémoslo al ícono iTerm. Seleccione "Nuevo iTerm.app" en el escritorio y haga clic en Cmd-I para que aparezca la pantalla de propiedades de la aplicación.

Ahora navegue a /Applicationsuna 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.

Haga clic en el icono en la ventana de información de iTerm para que aparezca una suave sombra azul a su alrededor. Presione Cmd-C para copiar el icono en el 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".

Copiar el ícono de iTerm a New iTerm

Ahora debería tener un ícono iTerm.

Puede mover el "Nuevo iTerm.app" a su /Applicationscarpeta si lo desea. Arrástrelo desde la carpeta donde decide guardarlo, de vuelta a su base, y ahora puede hacer clic en él en la base para abrir una nueva ventana iTerm con cada clic.

Si desea poder distinguirlo del ícono iTerm.app Dock en ejecución, podría considerar pegar el ícono en un editor de imágenes como Pixelmator y agregarle un gran rojo +para que se identifique claramente como el ícono para presionar por un nuevo iTerm ventana en lugar del ícono para presionar para ver la aplicación iTerm existente, abierta.

Aquí hay algunos scripts más para algunas otras aplicaciones para comenzar a personalizar 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

Sublime Text 2

Desafortunadamente, 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 se incluye ST2 . 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

2
¡Gran respuesta con ejemplos claros que cubren diferentes casos de uso y los detalles! ¡Gracias!
Adam Davis

@AdamDavis Estoy empezando con AppleScript, así que fue un buen ejercicio para probar lo que aprendí.
Ian C.

¿Podría usarse para obtener el nombre de la aplicación que se está ejecutando actualmente?
William

¿Hay alguna manera de verificar si la aplicación se está ejecutando Y NO está en el escritorio actual? Me encantaría una nueva ventana solo si la ventana existente está en otro escritorio.
adamdport
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.