Applications plein écran sur une configuration à deux écrans

9

Optimus sur Linux est loin d'être parfait, mais en utilisant les nVidiapilotes natifs , la plupart des problèmes que j'ai rencontrés par le passé sont principalement résolus sauf un.

Chaque fois que j'exécute une application en plein écran, comme Kodiou certains Steamjeux, la position est désactivée, soit l'écran est centré en plein milieu des 2 écrans sur 1080p exactement, soit il affiche uniquement la moitié gauche sur n'importe quel affichage.

Je pense que cela est dû à la façon dont j'ai fait fonctionner la configuration multi-écrans xrandr. Une fois sddminitialisé, il exécute la commande suivante:

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

Cela fonctionne parfaitement, car vous remarquerez peut-être que le conteneur est de 3x1080p car cela est dû à 3 écrans (tous en 1080p), à la désactivation de mon affichage interne et à l'utilisation du panoramique, je suis en mesure de décaler la sortie de 2 moniteurs l'un à côté de l'autre.

Il semble que je ne puisse pas contrôler le comportement en plein écran, KDEni dans ni en utilisant put. En jouant dans les paramètres des applications, je peux sélectionner sur quel moniteur le restituer, mais il restera quand même au centre.

Clarifier:

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

Voici un lien de référence visuelle

Pour être honnête, j'ai essayé beaucoup de choses et je suis perdu ici. Je ne suis pas un expert Linux, je l'utilise depuis environ 4 ans comme mon seul système d'exploitation.

Étant donné que KDE prend en charge, Waylandje suis prêt à essayer, mais en raison du nombre de problèmes que j'ai rencontrés avec Optimus dans le passé, je suis réticent à l'essayer, car tout fonctionne si bien et il y a peu d'informations sur la compatibilité Optimus / Nvidia / Wayland. .

Y a-t-il quelque chose que je pourrais avoir manqué avant de faire quelque chose d'aussi radical que de changer un gestionnaire d'affichage stable pour un nouveau? Ou peut-être une commande simpliste du terminal pour exécuter des applications que j'ai complètement manquées.

Toute aide est appréciée.

Information additionnelle:

xorg.conf, xorg.conf.d est vide.

Section "Module"
    Load "modesetting"
EndSection

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

Demandez plus d'informations si nécessaire dans les commentaires.

Xorifelse
la source
actuellement, wayland est inutilisable avec les pilotes propriétaires nvidia (mais fonctionne très bien avec nouveau). ne sais pas comment optimus affecte cela.
Don Quichotte
@quixotic Little, j'ai besoin de propriété pour pouvoir faire fonctionner le port HDMI sur la carte vidéo discrète. Bumblebee ne va que jusqu'à activer le port pour une application spécifique. Ce qui signifie que si ce que vous dites est vrai, nouveau ne pourra pas prendre en charge plusieurs moniteurs. Mais j'ai lu que je nvidiatravaillais miret que je waylandsoutenais, mais c'était il y a quelques mois.
Xorifelse

Réponses:

1

Je l' ai utilisé quelques scripts sur le dessus xrandrdepuis quelques années à mettre en place côte à côte et (actuellement) des postes de travail en forme de tee-Arch Linux. Ce devrait être un travail simple d'adapter side-by-side.sh à vos besoins:

#!/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 d' aide 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

Courez side-by-side.shdans votre section locale .xprofileou autrement juste après avoir commencé X, et vous devriez être prêt à partir.

Cette configuration a fonctionné avec les cartes vidéo AMD et nVidia, en utilisant des pilotes propriétaires et open source. Je ne pense pas avoir déjà essayé avec Wayland au lieu de X, mais je pense que cela devrait fonctionner si cela ne xrandrfonctionne pas avec Wayland.

l0b0
la source
J'ai testé, modifié et essayé plusieurs choses avec ce code et je n'ai pas pu le faire fonctionner, ce qui a entraîné un déchirement de l'écran, aucun écran ou que l'écran ne s'est tout simplement pas actualisé (sauf ma souris) (sur le deuxième moniteur connecté au nvidia puce). C'est vraiment le panoramique qui résout ce problème, mais en même temps probablement la cause du problème lui-même.
Xorifelse
Désolé d'entendre ça. Je crains que ce soit la limite de mes propres connaissances, car les enquêtes ont cessé une fois que j'ai eu une configuration de travail.
l0b0