Câu trả lời:
Chà, sau khi sudo apt-get install wmctrl
-ing, bạn có thể chơi với tập lệnh bash này:
#! /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
Mà tôi tìm thấy ở đây
if ! wmctrl -l | grep -q "$WINTITLE"
wmctrl
có một -i
tùy chọn, hỗ trợ làm việc với cửa sổ với mã định danh hex. Và vì vậy bạn có thể làm điều này wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai
- sẽ làm một cái gì đó tương tự
Khi sử dụng xdotool
, có vẻ khó mang ra phía trước tất cả các cửa sổ cho một ứng dụng hoặc lớp nhất định chỉ bằng một lệnh. Tôi cuối cùng có kết quả tốt hơn bằng cách gói nó trong một for
vòng lặp ở cấp độ vỏ. Sử dụng Bash:
for WINDOW in $(xdotool search --desktop 0 Firefox); do
xdotool windowactivate ${WINDOW}
done
Vài nhận xét:
xdotool search
sẽ tìm kiếm mẫu (ở đây Firefox
) trong tên cửa sổ, lớp và tên lớp. Nếu bạn muốn hạn chế không gian tìm kiếm của bạn, sử dụng có liên quan --class
, --name
hoặc --classname
tùy chọn.--desktop 0
tùy chọn giới hạn tìm kiếm máy tính để bàn đầu tiên. Đây có vẻ là một cách giải quyết để tránh XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)
đề cập trong một số ý kiến.xdotool
dự án bị đình trệ từ năm 2015. Nó vẫn là công cụ lựa chọn của tôi. Vì lý do cá nhân, Jordan Sissel (tác giả gốc) không hoạt động như trước đây, vì vậy đừng ngần ngại đóng góp cho dự án.
xdotool windowraise
đưa cửa sổ ra phía trước nhưng không tập trung vào cửa sổ hoặc chuyển sang màn hình nền với cửa sổ. thay vào đó,windowactivate
sẽ làm cả ba.