É possível que o xrandr não reaja ao desligamento do monitor secundário, remoção do cabo HDMI / DisplayPort?

4

Eu estou em um sistema desktop Nvidia GTX 950 GPU com três monitores conectados. Um monitor na porta de saída HDMI, outros dois nas portas DisplayPort.

O comportamento padrão é que a desativação de um dos monitores 'secundários' faz com que o xrandr redimensione a área de trabalho virtual e reorganize todas as janelas para que se ajustem aos monitores sobreviventes.

Existe uma maneira de xrandr ignorar a remoção de um cabo HDMI e / ou monitor associado para que ele mantenha a 'área de trabalho virtual' igual (mesmo se as janelas estiverem fora da tela e de difícil acesso) e não faça isso? o rearranjo que faz para consolidar todas as janelas ativas nos displays sobreviventes? Além disso, para reinserir o cabo e o mesmo monitor e ligá-lo de volta?

O Ubuntu 16.04 e o 16.10 parecem ter o mesmo comportamento básico. Eu tenho tanto como opções de inicialização. Obrigado.

EDIT 2017: Encontrei alguns scripts bash e python para tentar automatizar o rearranjo de janelas fora da tela. Estes podem ser de alguma utilidade para lidar com a situação. Mesmo com o Ubuntu 17.04 (format fresh install) este problema geral ainda está em andamento para mim. Discussões sobre scripts: Como recuperar a janela fora da tela após desconectar o segundo monitor? e Mover janelas para telas específicas usando o comando linha

    
por RoundSparrow hilltx 09.12.2016 / 15:03

1 resposta

3

Isso pode funcionar em portas HDMI / VGA, mas não em DP, devido a alguns padrões para DP que devem sempre passar por eventos de detecção.

Eu pude testar isso no Dell E6410 com VGA / DP. Remover o cabo da VGA agora não aciona as redefinições do xrandr e move as janelas.

  1. gksu nvidia-settings
  2. Vá para a guia de configuração do X e, em seguida, exporte a configuração
  3. Copiar apenas a seção do dispositivo
  4. sudo mkdir /etc/X11/xorg.conf.d/
  5. sudo nano /etc/X11/xorg.conf.d/90_my_nvidia_hacks.conf
  6. Cole a seção do dispositivo

    Section "Device"
        Identifier     "Device0"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "NVS 3100M"
    EndSection
    
  7. Adicione a esta linha Option "UseHotplugEvents" "false"

    Section "Device"
        Identifier     "Device0"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "NVS 3100M"
        Option "UseHotplugEvents" "false"
    EndSection
    
  8. Reinicie ou reinicie o lightdm

    sudo systemctl restart lightdm
    

Você também pode achar útil Option "AllowEmptyInitialConfiguration" "true" , o que cria uma seção de monitor vazia, mesmo que nenhuma tela esteja conectada no início do X.

Referência:

  

Meus monitores são reconfigurados de maneiras inesperadas quando eu conecto ou desconecte o monitor ou desligue o monitor e ligue-o novamente.

     

Este é um caso especial dos problemas descritos em "A exibição   as configurações que eu configurei na nvidia-settings não persistem ”. Alguns   ambientes de desktop que incluem configuração avançada de exibição   ferramentas irá configurar automaticamente o layout de exibição em resposta a   detectou alterações na configuração. Por exemplo, quando um novo display é   conectado, esse ambiente de área de trabalho pode tentar restaurar   layout anterior que foi usado com o conjunto de dispositivos conectados no momento   exibe ou pode configurar um layout padrão com base em sua própria política.

     

Em servidores X com suporte para RandR 1.2 ou posterior, o driver NVIDIA X   relatórios exibir eventos hotplug para o servidor X via RandR quando exibe   estão conectados e desconectados. Esses eventos hotplug podem desencadear   ambiente de desktop com recursos avançados de gerenciamento de   alterar a configuração de exibição. Essas alterações podem afetar as configurações   como o conjunto de displays ativos, suas resoluções e posicionamento   um em relação ao outro, configurações de correção de cores por exibição e   mais.

     

Além dos eventos de hotplug gerados por conexão ou desconexão   exibe, os displays DisplayPort irão gerar um evento de desligamento   eles desligam, e um evento hotplug quando eles ligam, mesmo se não   conexão física ou desconexão ocorre. Isso pode levar a   alterações de configuração de exibição induzidas por hotplug sem qualquer   ação de hotplug ocorrendo.

     

Se os eventos do hotplug de exibição estiverem resultando em configuração indesejada   alterações, tente as soluções e soluções alternativas listadas em “A exibição   as configurações que eu configurei na nvidia-settings não persistem ”. Outro   solução seria desativar o relatório do driver NVIDIA X de   eventos hotplug com a opção de configuração UseHotplugEvents X. Nota   que esta opção não terá efeito nos dispositivos DisplayPort, que   deve relatar todos os eventos do hotplug para garantir a funcionalidade adequada.

     

Option "UseHotplugEvents" "boolean"

     

Quando esta opção está ativada, o driver NVIDIA X gera eventos de exibição RandR alterados quando as telas são conectadas ou   desconectado de uma GPU NVIDIA. Alguns ambientes de desktop irão escutar   para esses eventos e reconfigurar dinamicamente a área de trabalho quando exibe   são adicionados ou removidos.

     

Desativar essa opção suprime a geração desses eventos RandR para exibições que não são DisplayPort, ou seja, aquelas conectadas via VGA,   DVI ou HDMI. Eventos de hotplug não podem ser suprimidos para exibições   conectado via DisplayPort.

     

Observe que testar a configuração de exibição (por exemplo, com configurações xrandr ou nvidia) pode fazer com que os eventos alterados de exibição RandR sejam   gerado, independentemente de esta opção estar ativada ou desativada.   Além disso, algumas portas VGA são incapazes de detectar hotplug:   essas portas, a adição ou remoção de monitores só pode ser detectada   reavaliando a configuração de exibição.

     

Padrão: ativado. O driver gerará eventos RandR quando as exibições forem adicionadas ou removidas.

     

Option "AllowEmptyInitialConfiguration" "boolean"

     

Normalmente, o driver NVIDIA X não será iniciado se não conseguir encontrar nenhum dispositivo de exibição conectado à GPU NVIDIA.   AllowEmptyInitialConfiguration substitui esse comportamento para que o X   o servidor será iniciado de qualquer maneira, mesmo que nenhum dispositivo de exibição esteja conectado.

     

Habilitar esta opção faz sentido nas configurações ao iniciar o servidor X sem dispositivos de exibição conectados à GPU NVIDIA.   esperado, mas um pode ser conectado mais tarde. Por exemplo, alguns monitores   não aparecem como conectados quando estão desligados, mesmo se   estão fisicamente conectados à GPU.

     

Outro cenário em que isso é útil é em laptops baseados em Optimus, onde o descarregamento de exibição RandR 1.4 (consulte o Capítulo 33, Descarregando gráficos   Display com RandR 1.4) é usado para exibir a tela no   painel de exibição interno não NVIDIA, mas um monitor externo pode   conectado mais tarde.

     

Padrão: desativado. O motorista se recusará a iniciar se não encontrar pelo menos um dispositivo de exibição conectado.

    
por user.dz 06.01.2017 / 21:34