Có cách nào để đặt một cửa sổ ở giữa màn hình sau khi mở hay khiến nó mở ở giữa màn hình không?
Điều này cần phải được thực hiện bằng cách sử dụng dòng lệnh.
Có cách nào để đặt một cửa sổ ở giữa màn hình sau khi mở hay khiến nó mở ở giữa màn hình không?
Điều này cần phải được thực hiện bằng cách sử dụng dòng lệnh.
Câu trả lời:
Công cụ wmctrl cung cấp quyền truy cập dòng lệnh vào hầu hết tất cả các tính năng được xác định trong đặc tả EWMH (Gợi ý quản lý cửa sổ mở rộng) . Ví dụ, nó có thể được sử dụng để lấy thông tin về trình quản lý cửa sổ, để có danh sách chi tiết về máy tính để bàn và cửa sổ được quản lý, để chuyển đổi và thay đổi kích thước máy tính để bàn, để làm cho cửa sổ toàn màn hình , luôn ở trên hoặc dính và để kích hoạt , đóng , di chuyển , thay đổi kích thước , tối đa hóa và tối thiểu hóa chúng.
Bạn có thể cài đặt nó bằng cách
sudo apt-get install wmctrl
Bạn có thể nhận thông tin về máy tính để bàn ảo (không gian làm việc) với
wmctrl -d
one@onezero:~$ wmctrl -d
0 * DG: 2720x1536 VP: 0,0 WA: 0,24 1360x744 N/A
Và liệt kê các cửa sổ mở với wmctrl -l
. Các -G
tùy chọn hiển thị cho bạn những hình học của các cửa sổ:
one@onezero:~$ wmctrl -l
0x02000004 0 onezero Desktop
0x02e00002 0 N/A DNDCollectionWindow
0x02e00003 0 N/A launcher
0x01e00004 0 onezero cairo-dock
0x02e00004 0 N/A panel
0x04800061 0 onezero Transmission
0x02e0000a 0 N/A Dash
0x03a00044 0 onezero arranging windows from the gnu/linux command line with wmctrl ~ Moving to Freedom - Chromium
0x04400006 0 onezero one@onezero: ~
0x04c000e9 0 onezero Google - Mozilla Firefox
wmctrl -lG
one@onezero:~$ wmctrl -lG
0x02000004 0 0 0 1360 768 onezero Desktop
0x02e00002 0 -1460 -868 1360 768 N/A DNDCollectionWindow
0x02e00003 0 0 24 58 744 N/A launcher
0x01e00004 0 290 653 780 115 onezero cairo-dock
0x02e00004 0 0 0 1360 24 N/A panel
0x04800061 0 408 95 732 500 onezero Transmission
0x02e0000a 0 -1402 -844 1302 744 N/A Dash
0x03a00044 0 0 24 1360 744 onezero Center a window via command line - Ask Ubuntu - Stack Exchange - Chromium
0x04400006 0 127 94 983 434 onezero one@onezero: ~
0x04c000e9 0 5 47 1349 715 onezero Google - Mozilla Firefox
Bạn có thể chỉ định một cửa sổ bằng cách tham chiếu tiêu đề của nó hoặc tiêu đề một phần sau -r. -e là để di chuyển và thay đổi kích thước
wmctrl -r "Mozilla Firefox" -e <G>,<X>,<Y>,<W>,<H>
<G>: Gravity specified as a number. The numbers are defined in the EWMH specification. The value of zero is particularly
useful, it means "use the default gravity of the window".
<X>,<Y>: Coordinates of new position of the window.
<W>,<H>: New width and height of the window.
Vì vậy, để di chuyển một cửa sổ sang góc trên bên trái và làm cho nó rộng 1000 pixel, cao 700, bạn sẽ sử dụng 0,0,0,1000,700
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 0,0,0,1000,700
Để di chuyển / thay đổi kích thước nó. Vì thế, trước tiên tôi đã sử dụng cách giải quyết của un unimimizing của nó, sử dụng -b
tùy chọn
wmctrl -r "Mozilla Firefox" -b thêm, maximized_vert, maximized_horz
wmctrl -r "Mozilla Firefox" -b xóa, maximized_vert, maximized_horz
one@onezero:~$ wmctrl -r "Mozilla Firefox" -b add,maximized_vert,maximized_horz
Những điều bạn cần hiểu 1
The -e option expects a list of comma separated integers: "gravity,X,Y,width,height"
đó là độ phân giải màn hình của tôi nên x = 1360 & y = 786
Căn chỉnh một cửa sổ ở nửa bên trái của màn hình
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,0,0,680,768
Căn chỉnh một cửa sổ ở nửa bên phải của màn hình
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,680,0,680,768
Căn chỉnh cửa sổ thành center of screen
1360/4 = 340
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,340,0,680,768
Thao tác với cài đặt màn hình của bạn
hoạt động với cửa sổ hiện đang hoạt động
IFS='x' read screenWidth screenHeight < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
width=$(xdotool getactivewindow getwindowgeometry --shell | head -4 | tail -1 | sed 's/[^0-9]*//')
height=$(xdotool getactivewindow getwindowgeometry --shell | head -5 | tail -1 | sed 's/[^0-9]*//')
newPosX=$((screenWidth/2-width/2))
newPosY=$((screenHeight/2-height/2))
xdotool getactivewindow windowmove "$newPosX" "$newPosY"
xdotool
nên gọi hành động nào trước tiên để biến chúng thành cửa sổ "bình thường" trước khi gọi windowmove
. Ý tưởng?
wmctrl
quá, giải pháp tốt hơn chào mừng. TL; DR: gọi wmctrl -ir "$(xdotool getactivewindow)" -b remove,maximized_vert,maximized_horz
trước xdotool getactivewindow windowmove
cuộc gọi cuối cùng .
Nếu bất cứ ai muốn một đoạn mã để sao chép / dán để làm điều này, thì đây là:
winname='foo'
IFS='x' read sw sh < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
read wx wy ww wh < <(wmctrl -lG | grep $winname | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;')
wmctrl -r $winname -e 0,$(($sw/2-$ww/2)),$(($sh/2-$wh/2)),$ww,$wh
Tất nhiên, thay thế foo
bằng tên của cửa sổ bạn muốn đặt ở giữa dòng đầu tiên.
Giải thích (phân tích dưới dạng phiên bảng điều khiển mẫu):
Lấy kích thước màn hình
llama@llama:~$ xdpyinfo | grep dimensions
dimensions: 1920x1080 pixels (508x285 millimeters)
llama@llama:~$ xdpyinfo | grep dimensions | grep -o '[0-9x]*'
1920x1080
x
508x285
llama@llama:~$ xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1
1920x1080
llama@llama:~$ IFS='x' read sw sh < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
llama@llama:~$ echo $sw $sh
1920 1080
Lấy thông tin hình học của cửa sổ
llama@llama:~$ wmctrl -lG | grep foo
0x00a0000c 0 1113 510 722 475 llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]*//;'
0 1113 510 722 475 llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]*//;'
1113 510 722 475 llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;'
1143 505 722 475
llama@llama:~$ read wx wy ww wh < <(wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;')
llama@llama:~$ echo $wx $wy $ww $wh
1143 505 722 475
Di chuyển cửa sổ
llama@llama:~$ echo 0,foo,bar,$ww,$wh
0,foo,bar,722,475
llama@llama:~$ echo 0,$(($sw/2)),bar,$ww,$wh
0,960,bar,722,475
llama@llama:~$ echo 0,$(($sw/2-$ww/2)),bar,$ww,$wh
0,599,bar,722,475
llama@llama:~$ echo 0,$(($sw/2-$ww/2)),$(($sh/2-$wh/2)),$ww,$wh
0,599,303,722,475
Hầu hết các ứng dụng nên tôn trọng tham số --geometry khi khởi động (một số thích -geometry, hãy thử lần thứ hai nếu lần đầu tiên không phù hợp với bạn):
gnome-terminal --geometry 80x25+100+100
Tham số hình học có dạng này:
WIDTHxHEIGHT+XOFF+YOFF
Bạn có thể bỏ những phần không cần thiết ra:
gnome-terminal --geometry +20+50 #No size, just offsets
Để biết thêm chi tiết:
man X
sau đó nhấn "/" và tìm kiếm THÔNG SỐ KỸ THUẬT GEOMETRY
hoặc xem tại đây: http://www.cotse.com/dlf/man/xwindows/geometry.htmlm
bash
hoặczsh
để chạy, đồng bằngsh
sẽ không hoạt động.