Aplicaciones de pantalla completa en configuración de monitor dual

9

Optimus en Linux está lejos de ser perfecto, sin embargo, utilizando los nVidiacontroladores nativos , la mayoría de los problemas que tuve en el pasado se resuelven principalmente, excepto uno.

Cada vez que ejecuto una aplicación de pantalla completa, como en Kodialgunos Steamjuegos, la posición está apagada, o bien la pantalla está centrada justo en el medio de las 2 pantallas en exactamente 1080p o se muestra solo la mitad izquierda en cualquier pantalla.

Creo que esto se debe a cómo hice que funcione la configuración de varios monitores xrandr. Cuando se sddminicializa, ejecuta el siguiente 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

Sin embargo, funciona perfectamente, ya que puede notar que el contenedor es de 3x1080p, ya que esto se debe a que tiene 3 pantallas (todas de 1080p), al deshabilitar mi pantalla interna y al usar la panorámica, puedo cambiar la salida de 2 monitores uno al lado del otro.

Parece que no puedo controlar el comportamiento de pantalla completa, noor KDEo mediante el uso put. Jugando en la configuración de las aplicaciones, puedo seleccionar en qué monitor mostrarlo, pero de todos modos se muestra en el centro.

Para aclarar:

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

Aquí hay un enlace para referencia visual

Para ser honesto, he intentado muchas cosas y estoy perdido aquí. No soy un experto en Linux, lo he estado usando durante aproximadamente 4 años como mi único sistema operativo.

Dado que KDE admite Wayland, estoy dispuesto a intentarlo, sin embargo, debido a la cantidad de problemas que tuve con Optimus en el pasado, soy reacio a probarlo porque todo funciona muy bien y hay poca información sobre la compatibilidad de Optimus / Nvidia / Wayland .

¿Hay algo que tal vez me haya perdido antes de hacer algo tan radical como cambiar un administrador de pantalla estable por uno nuevo? O tal vez un comando simplista del terminal para ejecutar aplicaciones me perdí por completo.

Cualquier ayuda es apreciada.

Información Adicional:

xorg.conf, xorg.conf.d está vacío.

Section "Module"
    Load "modesetting"
EndSection

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

Solicite más información si es necesario en los comentarios.

Xorifelse
fuente
En la actualidad, wayland es inutilizable con los controladores propietarios de nvidia (pero funciona bien con nouveau). No sé cómo Optimus afecta esto.
quijotesco
@quixotic Little, necesito propiedad para poder hacer que el puerto HDMI funcione en la tarjeta de video discreta. Bumblebee solo llega a habilitar el puerto para una aplicación específica. Es decir, si es cierto lo que estás diciendo, Nouveau no podrá soportar múltiples monitores. Pero he leído que nvidiaestaba trabajando miry waylandapoyando, pero eso fue hace un par de meses.
Xorifelse

Respuestas:

1

He usado algunos scripts además xrandrdurante algunos años para configurar escritorios en paralelo y (actualmente) en forma de T en Arch Linux. Debería ser un trabajo simple adaptar side-by-side.sh a sus necesidades:

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

Ejecute side-by-side.shen su local .xprofileo de otro modo justo después de comenzar X, y debería estar listo para comenzar.

Esta configuración ha funcionado con tarjetas de video AMD y nVidia, utilizando controladores de código abierto y propietarios. No creo que haya intentado alguna vez con Wayland en lugar de X, pero sospecho que debería funcionar si xrandrfunciona con Wayland.

l0b0
fuente
Probé, modifiqué y probé varias cosas con este código y no pude hacerlo funcionar, lo que provocó el desgarro de la pantalla, ninguna pantalla o que la pantalla simplemente no se actualizó (excepto mi mouse) (en el segundo monitor conectado a la nvidia chip). Realmente es el panorama lo que soluciona esto, pero al mismo tiempo probablemente sea la causa del problema en sí.
Xorifelse
Lamento escuchar eso. Me temo que este es el límite de mi propio conocimiento, ya que las investigaciones se detuvieron una vez que tuve una configuración funcional.
l0b0