Tôi muốn cửa sổ Firefox được mở ở một kích thước cụ thể và vị trí trên màn hình bằng lệnh shell, ví dụ:
firefox myfile.html size 800x600 location bottom-left
Có một lệnh như vậy?
Tôi muốn cửa sổ Firefox được mở ở một kích thước cụ thể và vị trí trên màn hình bằng lệnh shell, ví dụ:
firefox myfile.html size 800x600 location bottom-left
Có một lệnh như vậy?
Câu trả lời:
Đây là phiên bản cộng đồng của câu trả lời của Yokai kết hợp các ví dụ được cung cấp bởi Rudolf Olah .
Bạn có thể sử dụng công cụ được gọi xdotool
để kiểm soát kích thước và vị trí cửa sổ. Không chỉ vậy, bất kỳ tập lệnh nào bạn viết bash
, sử dụng xdotool
, đều có thể được thiết lập để hoạt động với một cửa sổ được tối đa hóa hoàn toàn và nó có thể được viết kịch bản để đặt kích thước cửa sổ và tọa độ x: y bằng cách thao tác các lệnh mousemove
và click
lệnh.
Tìm ID cửa sổ:
xdotool search --onlyvisible --name firefox
Đặt kích thước cửa sổ
xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
Di chuyển cửa sổ
xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y
Ví dụ: nếu id cửa sổ cho firefox là 123 bạn sẽ làm điều này:
xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080
Định vị phía dưới bên trái sẽ phải được tìm ra dựa trên độ phân giải màn hình của bạn.
xdotool
, wmctrl
v.v. và Ubuntu, XFCE (mà tôi có): nếu cửa sổ đã được khởi chạy ở chế độ toàn màn hình, bạn không thể di chuyển nó nữa: bug.launchpad.net/ubfox/+source/unity/ + lỗi / 971147
Theo tôi biết, điều này là không thể vì Firefox không chấp nhận các lệnh để điều khiển cửa sổ. Đó cũng (phần lớn) là trách nhiệm của người quản lý cửa sổ, vì vậy tôi nghi ngờ rằng sẽ có những thông số để làm điều đó. Tuy nhiên, bạn có thể điều khiển cửa sổ bằng wmctrl , nhưng điều đó sẽ hơi khó khăn một chút:
#!/bin/sh
firefox -new-instance -new-window "http://www.reddit.org" &
# Process ID of the process we just launched
PID=$!
# Window ID of the process...pray that there's
# only one window! Otherwise this might break.
# We also need to wait for the process to spawn
# a window.
while [ "$WID" == "" ]; do
WID=$(wmctrl -lp | grep $PID | cut "-d " -f1)
done
# Set the size and location of the window
# See man wmctrl for more info
wmctrl -i -r $WID -e 0,50,50,250,250
Có thể có nhiều cách thông minh hơn để làm điều đó và có một số vấn đề về khả năng tương tác với Firefox (ví dụ: không có phiên bản nào khác đang chạy) nhưng nó sẽ giúp bạn tiếp tục.
Trước đây tôi đã tạo một tài liệu HTML sẽ đặt kích thước cửa sổ bằng Javascript sau đó chuyển hướng đến trang tôi muốn. Đó là một hack ngu ngốc, nhưng, hey, nó hoạt động.
Tôi làm điều này tất cả các thời gian. Tôi sử dụng DevilsPie2, tuy nhiên, vì nó mạnh hơn. Nó sử dụng ngôn ngữ kịch bản LUA, không khó lắm.
Đây là kịch bản lua của tôi cho Thunderbird, mà tôi muốn mở trên màn hình bên trái (màn hình máy tính xách tay) khi nó mở:
if (get_window_name()=="Mozilla Thunderbird") then
pin_window()
set_window_geometry( 50, 10, 1220, 780 )
end
where 50 = X coordinate (for upper-left corner of the window)
10 = Y coordinate ( " " )
1220 = window width
780 = window height
Để thiết lập tính năng này, bạn tạo một thư mục trong cấu hình nhà của bạn (trên các bản phân phối giống như Ubuntu) có tên devilspie2, ví dụ: /home/$USERNAME/.config/devilspie2
Đối với Thunderbird, tôi đã tạo thunderbird.lua, mặc dù tên tệp không thành vấn đề. Tôi có một tên tệp khác nhau cho mỗi ứng dụng mặc dù bạn có thể đặt mọi thứ vào một tệp script nếu muốn. Đặt devilspie2 để tự động bắt đầu khi bạn đăng nhập, ví dụ: /home/$USERNAME/.config/autostart/devilspie2.desktop
Đây là một liên kết đến một trang tốt về các tùy chọn khác nhau có sẵn cho tập lệnh lua của bạn: https://github.com/gusnan/devilspie2/blob/master/README
Một lưu ý: Các tập lệnh không phải được thực thi. Của tôi là 664 và hoạt động tốt. Một vài trong số các chương trình khác mà tôi kiểm soát là openconnect, pidgin, RecordMyDesktop, timeshift, xeyes, xload, & yad. Tôi sử dụng pin_window trên chúng để chúng xuất hiện trên tất cả các máy tính để bàn, cộng với các lệnh khác tùy thuộc vào ứng dụng.
devilspie2 --debug
)