Gnome (Ubuntu): bagaimana cara membawa jendela program ke depan menggunakan baris perintah dari terminal?

14

Saya memiliki lingkungan kerja tertentu dengan puluhan Windows yang terbuka. Bagaimana saya bisa membawa ke depan sebuah jendela dengan nama / judul yang diketahui secara terprogram atau menggunakan baris perintah?

GJ.
sumber

Jawaban:

12

Saya dulu menggunakan wmctrl -a <name>, yang berfungsi dengan baik, tetapi baru-baru ini beralih ke xdotool, misalnya:

xdotool search --name <name-or-regex-for-name> windowraise

Ini memiliki banyak fitur lain juga.

Untuk memasang:

sudo apt-get install xdotool

luar biasa
sumber
5
xdotool windowraisemembawa jendela ke depan tetapi tidak memberikan fokus ke jendela atau beralih ke desktop dengan jendela. sebaliknya, windowactivateakan melakukan ketiganya.
jozxyqk
6

Nah, setelah sudo apt-get install wmctrl-ing, Anda bisa bermain dengan skrip bash ini:

#! /bin/bash

WINTITLE="Mail/News" # Main Thunderbird window has this in titlebar
PROGNAME="mozilla-thunderbird" # This is the name of the binary for t-bird

# Use wmctrl to list all windows, count how many contain WINTITLE,
# and test if that count is non-zero:

if [ `wmctrl -l | grep -c "$WINTITLE"` != 0 ]
then
wmctrl -a "$WINTITLE" # If it exists, bring t-bird window to front
else
$PROGNAME & # Otherwise, just launch t-bird
fi
exit 0

Yang saya temukan di sini

digitxp
sumber
4
Tidak perlu untuk kurung dan backticks:if ! wmctrl -l | grep -q "$WINTITLE"
Dijeda sampai pemberitahuan lebih lanjut.
wmctrlmemiliki -iopsi, yang mendukung bekerja dengan jendela dengan pengenal heksanya. Jadi Anda dapat melakukan ini wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai- yang akan melakukan hal serupa
vlad-ardelean
0

Saat menggunakan xdotool, tampaknya sulit untuk membawa ke depan semua jendela untuk aplikasi atau kelas yang diberikan hanya dengan satu perintah. Saya akhirnya memiliki hasil yang lebih baik dengan membungkusnya dalam satu forlingkaran di tingkat shell. Menggunakan Bash:

for WINDOW in $(xdotool search --desktop 0 Firefox); do
   xdotool windowactivate ${WINDOW}
done

Beberapa komentar:

  • Secara default, xdotool searchakan mencari pola (di sini Firefox) di nama jendela, kelas, dan nama kelas. Jika Anda ingin membatasi ruang pencarian Anda, gunakan opsi yang relevan --class, --nameatau --classname.
  • The --desktop 0pilihan membatasi pencarian ke desktop pertama. Ini tampaknya menjadi solusi untuk menghindari yang XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)disebutkan dalam beberapa komentar.
  • Pada saat penulisan ini, xdotoolproyek ini macet sejak tahun 2015. Itu masih menjadi alat pilihan saya. Untuk alasan pribadi, Jordan Sissel (penulis asli) tidak seaktif dulu, jadi jangan ragu untuk berkontribusi pada proyek.


Ini adalah salinan dari jawaban yang saya posting di AskUbuntu , tapi saya rasa ini adalah Linux-flavor independent, jadi mungkin berguna di sini juga.

Sylvain Leroux
sumber