Aplicativos de tela cheia na configuração de monitor duplo

9

O Optimus no Linux está longe de ser perfeito, mas usando os drivers nVidia nativos, a maioria dos problemas que tive no passado são resolvidos principalmente, exceto um.

Sempre que executo um aplicativo em tela cheia, como Kodi ou alguns Steam jogos, a posição está desativada, ou a tela está centralizada no meio das duas telas em exatamente 1080p ou é renderizada mostrando apenas a metade esquerda em qualquer exibição.

Acho que isso é devido em como eu fiz a configuração de vários monitores trabalhando usando xrandr . Quando sddm inicializa, ele executa o seguinte 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

Funciona perfeitamente no entanto, como você pode notar o contêiner é 3x1080p como isso é devido a ter 3 telas (todos sendo 1080p), desabilitando meu monitor interno e usando panning eu sou capaz de mudar a saída para 2 monitores ao lado de cada outro.

Parece que não consigo controlar o comportamento em tela cheia, noor em KDE ou usando put . Brincando nas configurações de aplicativos, eu posso selecionar qual monitor para renderizá-lo, mas ele renderiza no centro de qualquer maneira.

Para esclarecer:

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

Aqui está um link para referência visual

Para ser honesto, eu tentei muitas coisas e estou perdido aqui. Eu não sou um especialista em Linux, eu tenho usado por cerca de 4 anos como meu único sistema operacional.

Como o KDE suporta Wayland , estou disposto a experimentar, mas devido à quantidade de problemas que tive com o Optimus no passado, estou relutante em experimentá-lo porque tudo está a correr tão bem e há pouca informação sobre Compatibilidade com Optimus / Nvidia / Wayland.

Há algo que eu talvez tenha perdido antes de fazer algo tão radical quanto mudar um gerenciador de exibição estável para um novo? Ou talvez um comando simplista do terminal para executar aplicativos que perdi completamente.

Qualquer ajuda é apreciada.

Informações adicionais:

xorg.conf, xorg.conf.d está vazio.

Section "Module"
    Load "modesetting"
EndSection

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

Solicite mais informações, se necessário, nos comentários.

    
por Xorifelse 01.04.2017 / 02:16

1 resposta

1

Eu usei alguns scripts em cima de xrandr por alguns anos para definir lado a lado e (atualmente) desktops em formato de tee no Arch Linux. Deve ser um trabalho simples adaptar side-by-side.sh às suas necessidades:

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

Execute side-by-side.sh no seu local .xprofile ou, caso contrário, apenas após começando X, e você deve ser bom para ir.

Essa configuração funcionou com as placas de vídeo AMD e nVidia, usando drivers proprietários e de código aberto. Eu não acho que eu já tentei com Wayland ao invés de X, mas eu suspeito que isso deveria funcionar se o xrandr trabalhar com Wayland.

    
por 05.04.2017 / 14:21