듀얼 모니터 설정의 전체 화면 응용 프로그램


9

Linux의 Optimus는 완벽하지는 않지만 nVidia과거에 내가 겪었던 대부분의 문제 는 기본 드라이버를 제외하고 주로 해결되었습니다.

내가 좋아하는 전체 화면 응용 프로그램을 실행 할 때마다 Kodi또는 일부 Steam게임을 위치가 꺼져 중 화면이 정확하게 1080p의에이 화면의 중앙에 바로 중심 또는 디스플레이 만 왼쪽 절반을 보여주는 렌더링됩니다.

나는 이것이 멀티 모니터 설정을 사용하여 작동시킨 방법 때문이라고 생각합니다 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)이 있고 내부 디스플레이를 비활성화하고 패닝을 사용하기 때문에 컨테이너가 3x1080p 인 것을 알 수 있듯이 완벽하게 작동합니다 .2 모니터의 출력을 서로 바로 옆으로 옮길 수 있습니다.

noor에서 또는를 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 호환성에 대한 정보가 거의 없기 때문에 시도해 보는 것을 꺼려합니다. .

새로운 디스플레이 관리자를 위해 안정적인 디스플레이 관리자를 변경하는 것만 큼 과격한 일을하기 전에 내가 놓친 것이 있습니까? 또는 터미널에서 하나의 간단한 명령으로 응용 프로그램을 실행하기가 어려웠습니다.

도움을 주시면 감사하겠습니다.

추가 정보:

xorg.conf, xorg.conf.d가 비어 있습니다.

Section "Module"
    Load "modesetting"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:1:0:0"
    Option "AllowEmptyInitialConfiguration"
EndSection

의견이 필요한 경우 추가 정보를 요청하십시오.


현재 wayland는 nvidia 독점 드라이버와 함께 사용할 수 없습니다 (그러나 nouveau와 잘 작동합니다). 옵티머스가 어떻게 영향을 미치는지 모르겠습니다.
돈키호테

@quixotic Little, 별개의 비디오 카드에서 HDMI 포트를 작동 시키려면 적절해야합니다. Bumblebee는 특정 응용 프로그램에 대해 포트를 활성화하는 것만 가능합니다. 당신이 말하는 것이 진실인지를 의미한다면, nouveau는 다중 모니터를 지원할 수 없습니다. 그러나 나는 nvidia노력 mir하고 wayland지원하고 있지만 몇 달 전에 읽었습니다 .
Xorifelse

답변:


1

나는 몇 년 동안 몇 가지 스크립트 를 사용 xrandr하여 Arch Linux에서 나란히 (현재) 티 모양의 데스크탑을 설정했습니다. 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

X를 시작한 직후 또는 다른 곳 side-by-side.sh에서 실행 .xprofile하면 좋을 것입니다.

이 설정은 독점 및 오픈 소스 드라이버를 모두 사용하여 AMD 및 nVidia 비디오 카드와 함께 작동했습니다. X 대신 Wayland로 시도한 적이 없다고 생각하지만 xrandrWayland와 함께 작동 하면 작동한다고 생각합니다 .


이 코드로 여러 가지를 테스트, 수정 및 시도했지만 화면이 찢어 지거나 화면이 나타나지 않거나 화면이 새로 고쳐지지 않습니다 (마우스 제외) (nvidia에 연결된 두 번째 모니터에서) 칩). 이 문제를 해결하는 것은 실제로 패닝이지만 동시에 문제 자체의 원인 일 수 있습니다.
Xorifelse

유감입니다. 작업 설정이 완료되면 조사가 중단되었으므로 이것이 내가 아는 한도 인 것이 두렵습니다.
l0b0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.