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

9

O Optimus no Linux está longe de ser perfeito, porém, usando os nVidiadrivers nativos , a maioria dos problemas que tive no passado foram resolvidos principalmente, exceto um.

Sempre que executo um aplicativo de tela cheia, como em Kodialguns Steamjogos, a posição está desativada, a tela é centralizada exatamente no meio das 2 telas em exatamente 1080p ou é renderizada mostrando apenas a metade esquerda em qualquer tela.

Eu acho que isso se deve a como eu fiz a instalação do monitor múltiplo usando xrandr. Quando sddminicializa, 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 que o contêiner é 3x1080p, devido a ter 3 telas (todas sendo 1080p), desativando meu monitor interno e usando o pan, eu posso mudar a saída para 2 monitores um ao lado do outro.

Parece que não consigo controlar o comportamento da tela cheia, KDEnem uso ou uso put. Brincando nas configurações dos aplicativos, posso selecionar em qual monitor ativá-lo, mas ele fica no centro de qualquer maneira.

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 sincero, tentei muitas coisas e estou sem dinheiro aqui. Não sou especialista em Linux, uso-o há cerca de 4 anos como meu único sistema operacional.

Como o KDE suporta Wayland, estou disposto a tentar, no entanto, devido à quantidade de problemas que tive com o Optimus no passado, reluto em testá-lo porque tudo está funcionando tão bem e há pouca informação sobre a compatibilidade Optimus / Nvidia / Wayland .

Há algo que talvez eu tenha esquecido 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 eu perdi completamente.

Qualquer ajuda é apreciada.

Informação adicional:

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.

Xorifelse
fonte
no momento, wayland não pode ser usado com os drivers proprietários da nvidia (mas funciona bem com o nouveau). não sei como o otimus afeta isso.
quixotic
@ Quixotic Pouco, preciso de propriedade para conseguir que a porta HDMI funcione na placa de vídeo discreta. O Bumblebee só chega até habilitar a porta para um aplicativo específico. Ou seja, se é verdade o que você está dizendo nouveau, não será capaz de suportar vários monitores. Mas eu li que nvidiaestava trabalhando mire waylandsuporte, mas isso foi há alguns meses atrás.
Xorifelse

Respostas:

1

Eu usei alguns roteiros em cima de xrandrhá alguns anos a criação de side-by-side e (atualmente) em forma de T desktops no Arch Linux. Deve ser uma tarefa 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 auxiliar 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.shno seu local .xprofileou não, logo após iniciar o X, e você deve estar pronto.

Essa configuração funcionou com as placas de vídeo AMD e nVidia, usando drivers proprietários e de código aberto. Acho que nunca tentei com Wayland em vez de X, mas suspeito que funcione se xrandrfuncionar com Wayland.

l0b0
fonte
Eu testei, modifiquei e tentei várias coisas com esse código e não consegui fazê-lo funcionar, resultando em rasgos na tela, nenhuma tela ou que a tela simplesmente não foi atualizada (exceto o mouse) (no segundo monitor conectado à nvidia lasca). É realmente o panorama que corrige isso, mas, ao mesmo tempo, provavelmente a causa do problema em si.
Xorifelse
Desculpe ouvir isso. Receio que esse seja o limite do meu próprio conhecimento, pois as investigações pararam depois que eu tive uma configuração de trabalho.
precisa saber é o seguinte