私は Arch Linux と Gnome Shell を使用しているラップトップを持っています。グラフィック カードは Intel HD 520 です。ラップトップの画面解像度は 3200×1800 です。職場では、解像度が 1920×1080 のモニターにラップトップを接続しています。接続には HDMI ケーブルを使用しています。システムは両方の画面と解像度を正しく検出します。問題は次のとおりです。
超高解像度では、Gnome(Gnomeがこれを行うのか、それともグラフィックカードのドライバーが行うのか?)はウィンドウを拡大するために拡大します。これは完全に理にかなっています。そうでなければ、たとえばFirefoxのバーは細い線になります。しかし、問題は、ウィンドウ(たとえばFirefox)をあるモニターから別のモニターに移動すると、この拡大縮小が維持されることです。その結果、巨大な解像度が正しく検出されているにもかかわらず、1920×1080 モニターでは表示されません。
- これはバグでしょうか? もしそうなら、誰のせいでしょうか? Gnome、Intel HD グラフィックス、それとも Linux カーネルでしょうか?
- 修正してもいいですか?
答え1
- TLDR: これはバグではなく、HiDPI 画面を快適に使用するための理想的とは言えない解決策です。
これらの解決策は、ほとんどのソフトウェアが高DPIモニターを自動的に補正しないという事実から生じているようです。スケーリングやDPI設定をせずにそのままにしておくと、多くのプログラムがHiDPI画面で小さく見えてしまいます。そのため、OSレベルで補正を行うことができます(Arch Linux の HiDPI に関する情報) ですが、ピクセル密度が異なる 2 つの画面がある場合に問題が発生します。
- 内部 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 番目のリンクには評判が低すぎます。)