Gnome (Ubuntu): làm thế nào để đưa cửa sổ chương trình lên phía trước bằng cách sử dụng một dòng lệnh từ thiết bị đầu cuối?


14

Tôi có một môi trường làm việc nhất định với hàng tá Windows mở. Làm cách nào tôi có thể đưa ra phía trước một cửa sổ có tên / tiêu đề đã biết theo chương trình hoặc sử dụng dòng lệnh?

Câu trả lời:


12

Tôi đã từng sử dụng wmctrl -a <name>, hoạt động tốt, nhưng gần đây đã chuyển sang xdotool, ví dụ:

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

Nó có nhiều tính năng khác nữa.

Để cài đặt:

sudo apt-get install xdotool


5
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 đó, windowactivatesẽ làm cả ba.
jozxyqk

6

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


4
Không cần dấu ngoặc và backticks:if ! wmctrl -l | grep -q "$WINTITLE"
Tạm dừng cho đến khi có thông báo mới.

wmctrlcó một -itù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ự
vlad-ardelean

0

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 forvò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:

  • Theo mặc định, xdotool searchsẽ 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, --namehoặc --classnametùy chọn.
  • Các --desktop 0tù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.
  • Tại thời điểm viết bài này, xdotooldự á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.


Đây là bản sao câu trả lời tôi đã đăng trên AskUbfox , nhưng tôi nghĩ nó độc lập với hương vị Linux, vì vậy nó cũng có thể hữu ích ở đây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.