2012-06-28 16 views
6

Cuando se inicia un proceso de GUI desde el terminal OS X, la ventana aparece en segundo plano, y debe usar comando- pestaña para darle enfoque.Mac OS X: trae aplicaciones GUI (sin paquete) a primer plano cuando se inicia desde la línea de comando

¿Hay alguna manera de hacer que el terminal otorgue automáticamente ese enfoque a las GUI después de su lanzamiento? Por ejemplo (asumiendo gitk está instalado):

% gitk

debe iniciar la GUI y luego cambiar a ella.

Nota: por varias razones, el uso de open como this answer sugiere que no es una solución general.

Actualización: Para explicar mejor por qué el método open no es satisfactorio, aquí hay una sesión de muestra de bash (con comentarios ingeniosos).

% cd /my_repo 
% gitk 

Esperando a que aparezca la GUI ... en cualquier momento ... oh, espera - ya está abierta. Simplemente no me di cuenta porque abrió una ventana DETRÁS de mi terminal. Me pregunto cuánto tiempo me iba a sentar aquí esperando ....

% open gitk 
The file /my_repo/gitk does not exist. 

Ah, por supuesto.

% which gitk 
/usr/bin/gitk 
% open /usr/bin/gitk 

qué ... Se abrió una nueva ventana de terminal para ejecutar gitk, y lo hizo en mi directorio, no/my_repo, por lo gitk se queja de que el directorio actual no es en realidad un repositorio ..

+0

Podría ayudar si usted explicó más acerca de por qué es necesario invocar una aplicación en ventana de forma síncrona desde la línea de comandos (en lugar de abrirla de forma asíncrona con 'abrir'). –

+0

No todas las aplicaciones se pueden abrir a través de 'abrir' (gitk, por ejemplo). Además, los que se pueden abrir de esa manera se abrirán a través de un terminal separado, lo que puede ser inconveniente. –

+0

'No todas las aplicaciones se pueden abrir a través de' ¿Por qué no? No puedo pensar en una razón por la que sea cierto: las aplicaciones normales/con ventana por definición deberían ser algo que puedas abrir desde el Finder o el Dock. 'se abrirá a través de un terminal separado' No entiendo lo que quiere decir con 'terminal separado'. ¿Quiere decir que, incluso si tiene un terminal abierto, no puede usar 'abrir ...' desde ese terminal? Si es así, ¿por qué no? –

Respuesta

3

¿Necesita invocarlo sincrónicamente? De lo contrario, puede iniciarlo de forma asíncrona con & y luego activarlo con osascript -e 'tell application "gitk" to activate'.

1

Puede envolver la respuesta de @ Chris página en una función de bash y soltarlo en su .bashrc

function gitk() { 
    command gitk "[email protected]"& 
    command osascript -e "delay .5" -e "tell application \"wish\" to activate" 
} 

Debe haber una manera de deshacerse de la demora por parte de bucle y en busca de 'deseo' con un tiempo de espera

NOTA: 'Wish' es el título de la ventana que aparece en mi Mac para gitk.

2

Si se trata de gitk específicamente se puede editar el archivo gitk para lograr esto, he publicado una respuesta en la bolsa de manzana pila: https://apple.stackexchange.com/a/74917/35956

puede encontrar el archivo gitk con el siguiente comando desde la terminal

which gitk 

En mi archivo gitk encontré una línea similar a la siguiente cerca de la parte superior (línea 3)

exec wish "$0" -- "[email protected]" 

cambié a este

exec wish "$0" -- "[email protected]" & exec osascript -e "tell application \"Wish\" to activate" 

Cuando ejecuto gitk desde la línea de comandos de la ventana gitk viene al primer plano, otro efecto secundario de esto es que se ejecuta de forma asíncrona

Cuestiones relacionadas