Scripting

如何將主螢幕上的視窗尺寸設置為外接顯示器的尺寸?

  • January 21, 2022

在使用擴展監視器時,我需要一個腳本:

  1. 獲取外接顯示器的尺寸(連接到 HDMI1)
  2. 將主監視器上目前視窗的尺寸設置為匹配。

我知道我可以用它xdotool getwindowfocus來辨識目前聚焦的視窗,但不知道如何做剩下的。

您可以使用 獲取有關已連接顯示器的資訊xrandr。它沒有方便的查詢格式,您需要不帶參數執行它並解析輸出。

您可以使用xdotool視窗來做很多事情,包括查詢和更改它們的屬性,例如焦點和大小。您可以使用命令連結對視窗進行操作,而無需顯式獲取其視窗 ID,例如xdotool getactivewindow dostuff …dostuff命令應用於具有焦點的視窗。

#!/bin/sh
monitor='HDMI-1'
new_xy=$(xrandr | sed -n "s/^$monitor [^ ]* \([0-9]*\)x\([0-9]*\).*/\1 \2/p")
if [ -n "$new_xy" ]; then
 xdotool getwindowfocus $new_xy
fi # else $monitor is not active

請注意,視窗大小包括裝飾(標題欄、邊框),因此這使得包含裝飾的整個視窗實際上不適合顯示器。

如果您還想將視窗移動到 HDMI-1,您可以從xrandr輸出的同一行解析顯示器的座標。但是,您可能希望最大化它或使其全屏顯示,而不是調整視窗大小。最大化/全屏和調整到螢幕大小的區別在於視窗管理器會記住視窗的非最大化大小並有一個命令來恢復它。最大化會在視窗周圍保留裝飾,而全屏則不會。最大化和全屏是視窗管理器的概念,不是X伺服器的概念,xdotool做不到。馬上我想不出一種與視窗管理器無關的方法來做到這一點。

引用自:https://unix.stackexchange.com/questions/687299