大型ディスプレイ内で小さなディスプレイをエミュレートする方法は?

大型ディスプレイ内で小さなディスプレイをエミュレートする方法は?

私は23.8インチモニターを使用しています。 xrandrの出力=

Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
HDMI-2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 527mm x 296mm panning 1920x1080+0+0
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1600x900      60.00  
   1280x1024     75.02    60.02  
   1280x800      59.91  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    60.00  
   832x624       74.55  
   800x600       75.00    60.32  
   720x576       50.00  
   720x576i      50.00  
   720x480       60.00    59.94  
   720x480i      60.00    59.94  
   640x480       75.00    60.00    59.94  
   720x400       70.08  

私のモニターでは、より小さいサイズのディスプレイ(〜15インチ)を次のようにエミュレートしたいと思います。

|----------|-----|
|          |     |
|  X       |  Y  |
|          |     |
|      ~15 |     |
|-----------     |
|            23.8|
-----------------

X領域は通常のモニタのように動作し、Y領域は空でなければなりません(黒い画面)。

xrandrを使用しようとしましたが、成功しませんでした。上記のように画面を切り取り、X領域に全画面コンテンツ(より小さな解像度)を表示する方法についてのアイデアはありますか?

助けてくれてありがとう。

答え1

xrandr(GPUに指示して)何でも適用できます。変換行列存在する同次座標g h i(2Dの場合、これは通常[0 0 1]で終わる3x3行列です。)

--transform a,b,c,d,e,f,g,h,i
出力に適用する変換行列を指定します。二重線形フィルタの自動選択数学的な形式は次のとおりです。

a b c
d e f
g h i

変換は同軸座標に基づいています。出力ピクセルの座標ベクトルを乗算した行列は、グラフィックバッファ内のピクセルの変換座標ベクトルを提供します。 [...]

これは、縮小されたディスプレイからより大きな物理フレームバッファに切り替えるために1つ以上を掛ける必要があることを意味します。したがって、フレームバッファを23.8/15未満のディスプレイに縮小するには、2x2の上限を23.8/15マトリックスの左側の部分に乗算する必要があります。

1.5867   0     0
0     1.5867   0
0        0     1

これを達成したら、以前の仮想画面サイズ(フレームバッファサイズなど)を変更せずに手動で維持する必要があります。それ以外の場合は、ディスプレイを覆うのに十分大きく計算されます--fb 1920x1080

--fb widthxheight
画面を指定されたサイズに再構成します。すべてのモニター構成はこの寸法に準拠する必要があります。このオプションが指定されていない場合、xrandrは設定された出力セットに対応できる最小の画面サイズを計算します。このオプションは、その動作をオーバーライドする方法を提供します。

この設定はモニター固有ではなくグローバルです。

これは以下を提供します:

$ xrandr --output HDMI-2 --transform 1.5867,0,0,0,1.5867,0,0,0,1 --fb 1920x1080

複数の効果(翻訳など)を適用したい場合に備えて、一般的なケースを示しています。行列を掛けて最終結果行列を提供するだけです。実際、この変換はとても簡単です。専用オプションがあります:

--scale xxy
出力画像のサイズを変更します。 1より大きい値は画面が圧縮され(出力モードのサイズよりも画面サイズが大きくなる)、1より小さい値は拡大出力になります。これは実際にはこのオプションの短縮バージョンです --transform

最終的にはそれだけです:

$ xrandr --output HDMI-2 --scale 1.5867x1.5867 --fb 1920x1080

結果が表示されなくなり、警告が表示されます。

xrandr: specified screen 1920x1080 not large enough for output HDMI-2 (3047x1714+0+0)

出力モードは変更されません(明示的に指定できます--mode 1920x1080 --rate 60.00)。

関連情報