Повноекранні програми при встановленні подвійного монітора


9

Optimus в Linux далеко не ідеальний, проте за допомогою рідних 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

Він працює чудово, проте, як ви могли помітити, контейнер має 3x1080p, оскільки це пов'язано з тим, що у нього є 3 екрани (1080p), вимкнення мого внутрішнього дисплея та використання панорамирования, я в змозі змістити вихід на 2 монітора прямо поруч.

Здається, я не можу контролювати поведінку на повноекранному екрані, ні в ній, 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, який працює на дискретній відеокарті. Джміль підходить лише для того, щоб увімкнути порт для конкретної програми. Це означає, що якщо це правда, те, що ви говорите, не зможе підтримувати декілька моніторів. Але я читав, що 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

Запустіть side-by-side.shу своєму локальному .xprofileчи іншому випадку після запуску X, і вам слід добре поїхати.

Ця установка працювала як з відеокартами AMD, так і з nVidia, використовуючи як власні, так і драйвери з відкритим кодом. Я не думаю, що я коли-небудь намагався з Wayland замість X, але я підозрюю, що це повинно працювати, якщо iff xrandrпрацює з Wayland.


Я перевірив, модифікував і спробував кілька речей з цим кодом і не зміг його працювати, що призвело до розриву екрана, відсутній екран або що екран просто не оновився (крім моєї миші) (на другому моніторі, підключеному до nvidia чіп). Це дійсно саме панірування, що виправляє це, але в той же час, ймовірно, сама причина проблеми.
Xorifelse

Прикро це чути. Боюся, це межа моїх власних знань, оскільки розслідування припинилися, як тільки я працював.
l0b0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.