如何透過命令列設定應用程式在螢幕上的視窗大小和位置?

如何透過命令列設定應用程式在螢幕上的視窗大小和位置?

我希望使用 shell 命令以特定大小和螢幕位置打開 Firefox 窗口,例如:

firefox myfile.html size 800x600 location bottom-left

有這樣的命令嗎?

答案1

這是答案的社群版本妖怪其中包含以下提供的範例魯道夫·奧拉


您可以使用名為的工具xdotool來控制視窗的大小和位置。不僅如此,您bash使用編寫的任何腳本xdotool都可以設定為與完全最大化的視窗一起使用,並且可以透過操作mousemoveclick命令來編寫腳本來設定視窗大小和 x:y 座標。

  1. 尋找視窗 ID:

    xdotool search --onlyvisible --name firefox
    
  2. 設定視窗大小

    xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
    
  3. 移動視窗

    xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y
    

例如,如果 Firefox 的視窗 ID 是 123,您將執行下列操作:

xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080

左下角的位置必須根據您的螢幕解析度來決定。

答案2

據我所知,這是不可能的,因為 Firefox 不接受控制視窗的命令。這也是(主要)視窗管理器的責任,所以我懷疑是否會有參數來做到這一點。但是,您可以使用以下命令控制視窗控制面板,但這會有點困難:

#!/usr/bin/env bash

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

可能有更聰明的方法來做到這一點,並且與 Firefox 存在一些互通性問題(例如,沒有其他實例正在運行),但它應該可以幫助您繼續。

答案3

這並不能解決位置問題,但至少你可以設定尺寸:

firefox -width 200 -height 500

答案4

我一直這樣做。不過,我使用 DevilsPie2,因為它更強大。它使用LUA腳本語言,這不是很困難。

這是我的 Thunderbird lua 腳本,我想在它打開時在最左邊的顯示器(筆記型電腦螢幕)上打開它:

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

要進行此設置,您可以在主配置中(在類似 Ubuntu 的發行版上)建立名為 Devilspie2 的目錄,例如 /home/$USERNAME/.config/devilspie2

對於 Thunderbird,我建立了 Thunderbird.lua,儘管檔案名稱並不重要。我為每個應用程式都有不同的檔案名,但如果您願意,您可以將所有內容放入腳本檔案中。設定 Devilspie2 在登入時自動啟動,例如 /home/$USERNAME/.config/autostart/devilspie2.desktop

以下是一個關於 lua 腳本可用的各種選項的好頁面的連結:https://github.com/gusnan/devilspie2/blob/master/README

請注意:腳本不必是可執行的。我的是664,工作正常。我控制的其他一些程式包括 openconnect、pidgin、RecordMyDesktop、timeshift、xeyes、xload 和 yad。我對它們使用 pin_window,以便它們出現在所有桌面上,以及取決於應用程式的其他命令。

相關內容