El wmctrl
programa es justo lo que estás buscando (sudo apt-get install wmctrl
). Puedes usar el wmctrl -a "AppTitle"
Comando para traer 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 trae al frente. Luego, puede vincular eso a un atajo de teclado.
Primero guarde el siguiente script en algún lugar, usaré /home/jtb/code/bringToFront
. Se necesitan dos argumentos, el primero es lo que escribiría en la 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.
#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]
then
wmctrl -a "$2"
else
$1 &
fi
-
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, puede ejecutar./bringToFront firefox "Mozilla Firefox"
. -
Ahora necesitamos vincular una tecla de acceso directo. Ejecutar
gconf-editor
y navegue por la estructura de carpetas a la izquierda hasta/apps/metacity/keybinding_commands
. -
Haga doble clic en el primer
command
con un valor en blanco, probablementecommand_1
. Escriba la ruta completa al script y proporcione los dos parámetros, p./home/jtb/code/bringToFront firefox Firefox
. -
En el panel de la izquierda, selecciona
global_keybindings
, la siguiente carpeta hacia arriba. Encuentra elrun
entrada que coincida con el comando que acaba de definir, probablementerun_command_1
. Haga doble clic en él y escriba el atajo de teclado que desea usar. Ponga los modificadores entre paréntesis angulares, p.<Ctrl><Alt>F
.
Ahora Control + Alt + F traerá su ventana de Firefox al frente, o la iniciará si aún no se está ejecutando.
Aquí hay otra forma de hacerlo con xdotools
. El proceso que aparece es reconocido por la línea de comando emitida para ejecutarlo (no se necesita un archivo pid o un título de ventana único).
#!/bin/bash
cmd="[email protected]"
# command line to be run. Note that the resulting
# process will hold this in /proc/PID/cmdline
pid=`pgrep -nf "^$cmd$"`
# most recent process having "$cmd" in /proc/PID/cmdline
if [ -z "$pid" ]; then # no pid
exec $cmd
# run command
else
winid=`xdotool search --all --pid $pid --onlyvisible | head -1`
# first visible window owned by pid
xdotool windowactivate $winid
# give window focus
fi