wmctrl
program adalah apa yang Anda cari (sudo apt-get install wmctrl
). Anda dapat menggunakan wmctrl -a "AppTitle"
perintah untuk membawa aplikasi ke depan. wmctrl -l
akan mencantumkan semua jendela yang tersedia, jadi mudah untuk menulis skrip shell yang memeriksa apakah program Anda sedang berjalan dan meluncurkannya atau membawanya ke depan. Kemudian Anda bisa mengikatnya ke pintasan keyboard.
Pertama simpan skrip berikut di suatu tempat, saya akan menggunakan /home/jtb/code/bringToFront
. Dibutuhkan dua argumen, yang pertama adalah apa yang akan Anda ketikkan di terminal untuk meluncurkan program, yang kedua adalah substring dari judul jendela program. Jika tidak ada string unik konstan pada judul, maka Anda perlu melakukan sedikit usaha lagi untuk menemukan jendela program.
#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]
then
wmctrl -a "$2"
else
$1 &
fi
-
Dengan skrip di direktori Anda saat ini, jalankan
chmod +x bringToFront
untuk membuat skrip dapat dieksekusi. Kemudian pastikan itu berfungsi; untuk meluncurkan/memfokuskan firefox Anda dapat menjalankan./bringToFront firefox "Mozilla Firefox"
. -
Sekarang kita perlu mengikat tombol pintasan. Jalankan
gconf-editor
dan arahkan struktur folder ke kiri ke/apps/metacity/keybinding_commands
. -
Klik dua kali pada
command
pertama dengan nilai kosong, mungkincommand_1
. Ketik path lengkap ke skrip dan berikan dua parameter, mis./home/jtb/code/bringToFront firefox Firefox
. -
Dari panel di sebelah kiri, pilih
global_keybindings
, folder berikutnya. Temukanrun
entri yang cocok dengan perintah yang baru saja Anda tentukan, mungkinrun_command_1
. Klik dua kali dan ketik pintasan keyboard yang ingin Anda gunakan. Letakkan pengubah dalam kurung sudut, mis.<Ctrl><Alt>F
.
Sekarang Kontrol + Alt + F akan membawa jendela firefox Anda ke depan, atau meluncurkannya jika belum berjalan.
Inilah cara lain untuk melakukannya dengan xdotools
. Proses pop-up dikenali oleh baris perintah yang dikeluarkan untuk menjalankannya (tidak diperlukan file pid atau judul jendela unik).
#!/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