No me imagino que esto está integrado en el sistema, pero ¿es posible hacerlo sin demasiados problemas?
Digamos que abro un programa específico con una tecla de acceso rápido, y cuando presiono esa tecla de acceso rápido nuevamente, la ventana del programa se muestra al frente.
Quiero hacer esto en Ubuntu 9.04.
Tal vez con D-Bus? Cualquier expertos?
Actualización : Esto es lo que terminé en caso de que sea de ayuda para alguien:
#!/bin/bash
if [ -f "/tmp/myterm.pid" ]; then
WID=`cat /tmp/myterm.pid`
xdotool windowactivate $WID
if [ "$?" != "0" ]; then
WID=""
fi
else
WID=`xdotool search --title "UNIQUE TITLE" | head -1`
fi
if [ "$WID" == "" ]; then
/usr/bin/gnome-terminal --window-with-profile=MYPROFILE "$@"
WID=`xdotool search --title "UNIQUE TITLE" | head -1`
echo $WID > /tmp/myterm.pid
else
xdotool windowactivate $WID
fi
Seguramente se puede simplificar, pero no soy un bash
genio. Además, para que mi ejemplo funcione, creé un perfil personalizado en la Terminal que aplica un título único a la ventana para que pueda encontrarlo más tarde. ¡Las posibilidades son infinitas!
Respuestas:
El
wmctrl
programa es justo lo que estás buscando (sudo apt-get install wmctrl
). Puede usar elwmctrl -a "AppTitle"
comando para llevar la aplicación al frente.wmctrl -l
enumerará todas las ventanas disponibles, por lo que debería ser fácil escribir un script de shell que verifique si su programa se está ejecutando y lo inicia o lo pone al frente. Entonces puedes vincular eso a un atajo de teclado.Primero guarde el siguiente script en alguna parte, lo usaré
/home/jtb/code/bringToFront
. Se necesitan dos argumentos, el primero es lo que escribiría en el terminal para iniciar el programa, el segundo es una subcadena del título de la ventana del programa. Si no hay una cadena única constante en el título, tendrá que trabajar un poco más para encontrar la ventana del programa.Con el script en su directorio actual, ejecute
chmod +x bringToFront
para hacer que el script sea ejecutable. Entonces asegúrese de que funcione; para iniciar / enfocar firefox que podrías ejecutar./bringToFront firefox "Mozilla Firefox"
.Ahora necesitamos vincular una tecla de acceso directo. Ejecute
gconf-editor
y navegue la estructura de carpetas a la izquierda para/apps/metacity/keybinding_commands
.Haga doble clic en el primero
command
con un valor en blanco, probablementecommand_1
. Escriba la ruta completa al script y proporcione los dos parámetros, por ejemplo/home/jtb/code/bringToFront firefox Firefox
.Desde el panel de la izquierda, seleccione
global_keybindings
, la siguiente carpeta hacia arriba. Encuentre larun
entrada que coincida con el comando que acaba de definir, probablementerun_command_1
. Haga doble clic en él y escriba el método abreviado de teclado que desea usar. Ponga los modificadores entre paréntesis angulares, por ejemplo<Ctrl><Alt>F
.Ahora Control+ Alt+ Ftraerá su ventana de Firefox al frente, o la iniciará si aún no se está ejecutando.
fuente
Aquí hay otra forma de hacerlo
xdotools
. El proceso de ventana emergente es reconocido por la línea de comando emitida para ejecutarlo (no se necesita un archivo pid o un título de ventana único).fuente
gracias por eso. Utilizo una versión modificada para crear una secuencia de comandos de acceso directo de ventana que también admite el ciclo a través de varias instancias. Si estás interesado:
http://somanov.wordpress.com/2009/12/02/window-shortcuts-for-linux-desktops/
salud :)
fuente
La respuesta publicada por jtb anteriormente es excelente, pero a veces desea que coincidan los títulos exactos (por ejemplo, desea abrir "GitKraken" pero el título de su navegador "GitKraken vs CLI" también coincide con la consulta).
Así que ahora puede llamar a su script bringToFront de la siguiente manera:
fuente
Esta solución no está parametrizada, pero la he usado para enfocar o iniciar la calculadora gnome.
La opción -R encuentra la ventana o falla, si se encuentra se mueve al escritorio actual, se eleva y se enfoca. El nombre de la calculadora gnome es su ventana con el nombre Calculadora , podría parametrizarse fácilmente, pero nunca he encontrado la necesidad de hacerlo. Lo tengo mapeado
Ctrl-Alt-c
.fuente