LinuxのOptimusは完璧とはほど遠いですが、ネイティブのnVidia
ドライバーを使用することで、過去に経験したほとんどの問題は主に1つを除いて解決されます。
Kodi
や一部のSteam
ゲームなどの全画面アプリケーションを実行するときは常に、位置がずれています。画面は、正確に1080pで2つの画面の真ん中の中央に配置されるか、レンダリングのみが表示されます。任意のディスプレイの左半分。
これは、マルチモニター設定をxrandr
を使用して機能させた方法に起因するものだと思います。 sddm
が初期化されると、次のコマンドが実行されます。
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --output HDMI-1-1 --mode 1920x1080 --pos 1920x0 --output HDMI-0 --primary --mode 1920x1080 --panning 3840x1080+0+0/0x0+0+0/0/0/-1920/0
ただし、これは3つの画面(すべて1080p)があり、内部ディスプレイを無効にし、パンを使用しているため、2つのモニターの出力を互いに隣り合わせにシフトできるため、コンテナーは3x1080pであることがわかります。
KDE
で、またはput
を使用しても、フルスクリーンの動作を制御できないようです。アプリケーション設定で遊んで、どのモニターにレンダリングするかを選択できますが、とにかく中央にレンダリングされます。
明確にするために:
xs on monitor left at 1920/2
ys on monitor left at 1080
xe on monitor right at (1920/2)+1920
ye on monitor right at 1080
正直なところ、私は多くのことを試しました、そして、ここで途方に暮れています。私はLinuxの専門家ではありません。これを約4年間、私の唯一のオペレーティングシステムとして使用しています。
KDEはWayland
をサポートしているので、試してみたいと思いますが、過去にOptimusで発生した問題が多かったため、すべてがスムーズに実行されており、情報がほとんどないため、試してみたくありませんOptimus/Nvidia/Waylandとの互換性。
安定したディスプレイマネージャーを新しいディスプレイマネージャーに変更するのと同じくらい過激なことをする前に、私が見逃したかもしれないものはありますか?あるいは、私が完全に見逃したアプリケーションを実行するための、ターミナルからの1つの単純なコマンド。
どんな助けでもありがたいです。
xorg.conf、xorg.conf.dは空です。
Section "Module"
Load "modesetting"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0"
Option "AllowEmptyInitialConfiguration"
EndSection
必要に応じて、コメントで詳細情報をリクエストしてください。
ここ数年、xrandr
に加えていくつかの scripts を使用して、Arch Linuxにサイドバイサイドおよび(現在)T字型のデスクトップをセットアップしました。 side-by-side.sh をニーズに合わせるのは簡単な作業です:
#!/bin/sh
eval `\`dirname -- "$0"\`/monitor_resolutions.sh`
expected_monitors=2
if [ "${monitor_count:-0}" -ne "$expected_monitors" ]
then
echo "$0: Expected ${expected_monitors} monitors; found ${monitor_count:-0}." >&2
exit 1
fi
xrandr \
--output "$monitor1_name" \
--mode ${monitor1_width}x${monitor1_height} \
--rotate normal \
--output "$monitor2_name" \
--mode ${monitor2_width}x${monitor2_height} \
--right-of "$monitor1_name" \
--rotate normal
monitor_resolutions.sh ヘルパースクリプト:
#!/bin/sh
#
# NAME
# monitor_resolutions.sh - Variables for monitor resolutions
#
# SYNOPSIS
# eval `./monitor_resolutions.sh`
#
# DESCRIPTION
# Prints a set of `eval`-able variable assignments with monitor name,
# width and height for each monitor plus a monitor count.
#
# EXAMPLES
# eval `./monitor_resolutions.sh`
# Assign monitor1_name, monitor1_width, monitor1_height,
# monitor2_name, etc. and monitor_count variables.
#
# BUGS
# https://github.com/l0b0/tilde/issues
#
# COPYRIGHT
# Copyright (C) 2013-2014 Victor Engmark
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
monitor_info() {
xrandr --query | tee ~/.xsession-xrandr-query
}
monitor_resolutions() {
# Input: XRandR monitor info
# Output: Lines with monitor name, width and height separated by spaces
while read -r Word1 Word2 _
do
if [ "${Word2:-}" = 'connected' ]
then
IFS='xi ' read -r width height _
printf '%s %d %d\n' "$Word1" "$width" "$height"
fi
done
}
monitor_assignments() {
# Input: Lines with monitor name, width and height separated by spaces
# Output: eval-able variable assignments for each input value, including a final count
count=0
while read monitor width height
do
count=$(($count + 1))
printf "monitor%d_name='%s'\n" "$count" "$monitor"
printf "monitor%d_width='%s'\n" "$count" "$width"
printf "monitor%d_height='%s'\n" "$count" "$height"
done
printf "monitor_count='%s'\n" "$count"
}
monitor_info | monitor_resolutions | monitor_assignments
ローカルでside-by-side.sh
を実行 .xprofile
またはXを開始した直後に実行すれば、問題ありません。
このセットアップは、AMDとnVidiaの両方のビデオカードで、独自のドライバーとオープンソースドライバーの両方を使用して機能しました。 Xの代わりにWaylandを試した経験はないと思いますが、xrandr
がWaylandで機能する場合にのみ機能するはずです。