ラップトップとモニター間の Ultra HD 解像度を使用したスケーリングの問題

ラップトップとモニター間の Ultra HD 解像度を使用したスケーリングの問題

私は Arch Linux と Gnome Shell を使用しているラップトップを持っています。グラフィック カードは Intel HD 520 です。ラップトップの画面解像度は 3200×1800 です。職場では、解像度が 1920×1080 のモニターにラップトップを接続しています。接続には HDMI ケーブルを使用しています。システムは両方の画面と解像度を正しく検出します。問題は次のとおりです。

超高解像度では、Gnome(Gnomeがこれを行うのか、それともグラフィックカードのドライバーが行うのか?)はウィンドウを拡大するために拡大します。これは完全に理にかなっています。そうでなければ、たとえばFirefoxのバーは細い線になります。しかし、問題は、ウィンドウ(たとえばFirefox)をあるモニターから別のモニターに移動すると、この拡大縮小が維持されることです。その結果、巨大な解像度が正しく検出されているにもかかわらず、1920×1080 モニターでは表示されません。

  1. これはバグでしょうか? もしそうなら、誰のせいでしょうか? Gnome、Intel HD グラフィックス、それとも Linux カーネルでしょうか?
  2. 修正してもいいですか?

答え1

  1. TLDR: これはバグではなく、HiDPI 画面を快適に使用するための理想的とは言えない解決策です。

これらの解決策は、ほとんどのソフトウェアが高DPIモニターを自動的に補正しないという事実から生じているようです。スケーリングやDPI設定をせずにそのままにしておくと、多くのプログラムがHiDPI画面で小さく見えてしまいます。そのため、OSレベルで補正を行うことができます(Arch Linux の HiDPI に関する情報) ですが、ピクセル密度が異なる 2 つの画面がある場合に問題が発生します。

  1. 内部 HiDPI 画面が 3200x1800、外部 HiDPI 画面が 1920x1080 の場合、次の構成が機能するはずです (Dell XPS9350 および XPS9360 でテスト済み)。

右側の外部を設定します。

xrandr --dpi 276 --fb 7040x3960 --output eDP-1 --mode 3200x1800 --output 
DP-1 --scale 2x2 --pos 3200x0 --panning 3840x2160+3200+0

左側の外部を設定します。

xrandr --dpi 276 --fb 7040x3960 --output DP-1 --scale 2x2 --panning
-3840x2160+3200+0 --pos 0x0 --output eDP-1 --mode 3200x1800 --pos 3840x0

頻繁に切り替える場合は、これらのコマンドをエイリアスとして .bashrc に配置することをお勧めします。例:

alias ext-config-right="xrandr --dpi 276 --fb 7040x3960 --output eDP-1 --mode 
3200x1800 --output DP-1 --scale 2x2 --pos 3200x0 --panning 3840x2160+3200+0"

答え2

ウルトラ HD 画面には単一の設定があり、それが接続されているすべてのモニターに適用されるようですが、これは適切ではない可能性があり、おそらく X からの設定であると思われます。

Arch Linux ウィキこれに関するセクションがあり、xrandr を使用してモニターを拡大縮小するいくつかのオプションがあります。eDP1 はラップトップ スクリーンです。

xrandr --output eDP1 --auto --output HDMI1 --auto --scale 2x2 --right-of eDP1

ただし、どうやらこれら 2 つの画面が重なり合ったり、カーソルが両方の画面全体をカバーしなかったりするなど、まだいくつかの問題が発生する可能性があります。

内部モニターの寸法がAxB、外部モニターの寸法がCxD、スケーリングがArch wikiで提案されているようにExFの場合、シェルスクリプトはユーザーにリンクされます。ヴェンゲンs Github では、ディスプレイに適切なものを指定する必要があります。次のようになります。

xrandr --output eDP1 --auto --pos ${(A-C)/2}x${D} --scale 1x1 \
--output HDMI1 --auto --scale 2x2 --pos 0x0

2 番目の問題については、arch はパンニングの使用を提案しています。

xrandr --output eDP1 --auto \
--output HDMI1 --auto --panning [C*E]x[D*F]+[A]+0 --scale [E]x[F] --right-of eDP1

そして最後に、もしそれが役に立ったなら、Ubuntu wiki は xrandr コマンドを の/etc/gdm/Init/Default行の直前に保存できることを示唆していますinitctl -q emit login-session-start DISPLAY_MANAGER=gdm。(申し訳ありませんが、3 番目のリンクには評判が低すぎます。)

関連情報