Scripting

檢索剛剛啟動的 GUI 程序的 X11 視窗 ID

  • December 17, 2014

我想檢索我在後台啟動的 GUI 程序的 X id,以便處理它們的 Windows 屬性。到目前為止,我一直在使用這種解決方法:

myprogram &
sleep 1
winID=$(wmctrl -l | awk '/./{line=$0} END{print $1;}')

但這依賴於三個重要的假設:

  • 該程序將花費不到 1 秒的時間來打開它的視窗(更不用說 1 秒可能太長了)
  • wmctrl視窗將出現在列表的末尾
  • 同時不會打開其他視窗

myprogram打開視窗後是否會發送任何信號?我怎樣才能攔截它?

為了在我的程序中獲取 Window ID,我讓程序將標題設置為唯一的,然後讓程序啟動wmctrl並解析其輸出(而不是啟動程序的 shell 腳本),然後報告 Window ID(大多數通常通過文件)。

由於程序在視窗打開之前不會繼續執行,因此您永遠不必等待很長時間。

這當然要求您可以更改myprogram(即從原始碼編譯)。

引用自:https://unix.stackexchange.com/questions/174730