Applicazioni a schermo intero su configurazione a doppio monitor


9

Optimus su Linux è lungi dall'essere perfetto, tuttavia utilizzando i nVidiadriver nativi la maggior parte dei problemi che ho avuto in passato sono stati risolti principalmente tranne uno.

Ogni volta che eseguo un'applicazione a schermo intero, come Kodio alcuni Steamgiochi, la posizione è disattivata, o lo schermo è centrato proprio nel mezzo delle 2 schermate esattamente a 1080p o viene visualizzato mostrando solo la metà sinistra su qualsiasi display.

Penso che ciò sia dovuto al modo in cui ho fatto funzionare la configurazione multi monitor xrandr. Quando viene sddminizializzato, esegue il seguente comando:

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

Funziona perfettamente tuttavia, come si può notare, il contenitore è 3x1080p poiché ciò è dovuto al fatto di avere 3 schermi (tutti 1080p), disabilitare il mio display interno e usare il panning sono in grado di spostare l'output per 2 monitor uno accanto all'altro.

Sembra che non riesco a controllare il comportamento a schermo intero, noor in KDEo utilizzando put. Giocando nelle impostazioni delle applicazioni, posso selezionare il monitor su cui renderizzarlo, ma viene comunque visualizzato al centro.

Chiarire:

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

Ecco un link per riferimento visivo

Ad essere sincero, ho provato molte cose e qui sono perplesso. Non sono un esperto di Linux, lo uso da circa 4 anni come unico sistema operativo.

Dato che KDE supporta, Waylandsono disposto a provarlo, tuttavia, a causa della quantità di problemi che ho avuto con Optimus in passato, sono riluttante a provarlo perché tutto funziona in modo fluido e ci sono poche informazioni sulla compatibilità Optimus / Nvidia / Wayland .

C'è forse qualcosa che forse mi sono perso prima di fare qualcosa di così radicale come cambiare un display manager stabile con uno nuovo? O forse un comando semplicistico dal terminale per l'esecuzione delle applicazioni mi è mancato completamente.

Qualsiasi aiuto è apprezzato.

Informazioni aggiuntive:

xorg.conf, xorg.conf.d è vuoto.

Section "Module"
    Load "modesetting"
EndSection

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

Richiedi maggiori informazioni se necessario nei commenti.


attualmente wayland è inutilizzabile con i driver proprietari nvidia (ma funziona bene con nouveau). non so come l'ottimismo influenzi questo.
Quixotic

@quixotic Poco, ho bisogno della proprietà per poter far funzionare la porta HDMI sulla scheda video discreta. Bumblebee va solo per quanto riguarda l'abilitazione della porta per un'applicazione specifica. Significa che se è vero ciò che stai dicendo nouveau non sarà in grado di supportare più monitor. Ma ho letto che nvidiastava lavorando mire waylandsupportando, ma è stato un paio di mesi fa.
Xorifelse,

Risposte:


1

Ho usato alcuni script in cima xrandrda qualche anno per impostare side-by-side e (attualmente) desktop a forma di T su Arch Linux. Dovrebbe essere un lavoro semplice adattare side-by-side.sh alle tue esigenze:

#!/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

script helper 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

Corri side-by-side.shnel tuo locale .xprofileo comunque subito dopo aver avviato X, e dovresti essere pronto per partire.

Questa configurazione ha funzionato con entrambe le schede video AMD e nVidia, utilizzando driver proprietari e open source. Non credo di aver mai provato con Wayland invece di X, ma sospetto che dovrebbe funzionare se xrandrfunziona con Wayland.


Ho testato, modificato e provato più cose con questo codice e non sono riuscito a farlo funzionare causando lacerazioni dello schermo, nessuna schermata o che lo schermo non si aggiornava (tranne il mio mouse) (sul secondo monitor collegato alla NVIDIA patata fritta). È davvero il pan che risolve questo problema, ma allo stesso tempo probabilmente la causa del problema stesso.
Xorifelse,

Mi dispiace sentirlo. Temo che questo sia il limite delle mie conoscenze, poiché le indagini si sono interrotte una volta che ho avuto un setup funzionante.
l0b0
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.