Saya memerlukan solusi untuk mendapatkan informasi jendela aktif (fokus) saat ini di desktop Gnome 2. Saya sebagian besar tertarik pada proses menjalankan judul jendela dan jendela itu.
Apa itu mungkin?
LARUTAN:
Mendapatkan judul jendela:
xwininfo -root -children | grep $(printf '%x\n' $(xdotool getwindowfocus)) | grep -oEi '"[^"]+"' | head -1
Mendapatkan nama proses:
ps -e | grep $(xdotool getwindowpid $(xdotool getwindowfocus)) | grep -v grep | awk '{print $4}'
atau:
cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm
Lebih sederhana (IMO) daripada solusi OP (yaitu tanpa
ps
,grep
danawk
), untuk mendapatkan nama proses:Atau jika Anda ingin akhir baris:
sumber
cat /proc/
itu bagus (dan bisa dibilang lebih cepat, karena itu tidak melibatkan menangkap seluruhps
output). Saya menambahkannya ke solusi di badan pertanyaan, sehingga pengguna masa depan akan dapat menemukannya.Coba perintah xwininfo, http://www.xfree86.org/4.2.0/xwininfo.1.html , itu pasti mengembalikan judul jendela dan sejauh proses berjalan, yah ...
X telah memberinya ID dan menjadi PID induk dari jendela dan juga akan menyembunyikannya secara default, jadi, dengan anggapan bahwa Gnome telah didukung oleh NET_WM_PID, karena tambalan ini dari tahun 2001 menunjukkannya, http://mail.gnome.org/ arsip / gtk-devel-list / 2001-Oktober / msg00238.html , maka kita dapat meninjau posting ini, http://www.mail-archive.com/[email protected]/msg05809.html , di mana penulis menulis program C pendek untuk mengubah Window ID menjadi PID, voila.
sumber
xwininfo
mengharuskan saya untuk secara manual memilih jendela yang dibutuhkan. Saya berharap cara untuk mendapatkan jendela fokus dari bash.Saya tahu pertanyaannya sudah tua, tetapi saya merasa
xprop
juga harus disebutkan di sini. Ini tersedia di bawah X. Dapat digunakan dengan cara interaktif:xprop
dan pilih jendela yang Anda inginkan menggunakan kursor mouse, laluWM_NAME
memberi Anda judul jendela,_NET_WM_PID
memberikan pidAtau Anda dapat langsung mengetahui
xprop
jendela mana yang Anda butuhkan dengan melewati-id
atau-name
opsi. Menggunakanawk
Anda bisa mendapatkan id jendela aktif dan meneruskannya kembalixprop
seperti itu (diambil dari sini ):Terakhir, menggunakan Your Favorite Tool ™ (mis.
grep
Ataused
) Anda dapat mencabut nilai yang dibutuhkan. Misalnya untukpid
output dari perintah di atas dapat disalurkan kesed
:sed -nE 's/^_NET_WM_PID.*= ([0-9]+)/\1/p'
sumber