Existe uma maneira de desativar telas individuais?

13

Eu uso o xset para desligar minhas telas assim:

xset dpms force off

Existe alguma maneira de desativar uma única tela quando você tem mais de uma associada à mesma tela X?

Neil
fonte
@myrdd: Você poderia explicar o que gostaria de ver melhorado especificamente?
precisa
Eu gostaria de saber detalhes: (a) O recurso desejado é tecnicamente possível? - Ou seja, "desativar" telas individuais ( não quero dizer xrandr [...] --off) - (b) Existem dependências? - Ou seja, o o chipset da placa de vídeo e / ou o driver precisam ter um recurso específico? - (c) Dado que o recurso desejado ainda não está disponível (como um comando da CLI), quais seriam as próximas etapas?
myrdd

Respostas:

4

Se você estiver usando o Ubuntu Desktop padrão, poderá usar Sistema> Preferências> Monitores. Isso deve mostrar todos os seus monitores, clique no que você deseja desativar e, em seguida, use os botões de opção 'ligar / desligar' para desativar esse monitor específico.

Se você quiser fazer isso a partir da linha de comando, poderá xrandr --output <name> --offdesativar a saída que deve acionar o monitor para desligar.

Andy
fonte
1
O problema é que, quando você usa o Nvidia TwinView, as duas telas aparecem como uma para o xrandr e o xset, para que você não possa desligar os monitores individualmente. Além disso, as Preferências do Gnome Monitor estão desabilitadas e você deve usar o controle do driver da Nvidia. Quando você desativa um dos monitores com as configurações da nvidia, ele desativa completamente o monitor, bloqueando todas as janelas na outra tela. Eu só quero desligar um monitor para assistir a um filme no outro.
Neil
@ Neil É provavelmente útil adicionar informações de hardware à pergunta e marcá-las com a nvidia também.
Jorge Castro
2
@JorgeCastro não está relacionado ao hardware e ao TwinView: parece não haver maneira de desligar uma tela individualmente quando ela está no mesmo $ DISPLAY, exceto removendo / desativando-a da configuração do RandR. Queremos desligar, por exemplo, a tela do laptop, mas manter as janelas lá.
blueyed
@uru você é um macaco de edição! Eu continuo vendo suas edições.
MathCubes
4

Problema com a resposta existente

Embora tenha havido uma resposta há sete anos com três votos positivos, ela não foi aceita porque faz com que todas as janelas abertas na tela de desligamento migrem para as telas ativas restantes.

Brilho baseado em software

Em um laptop, você pode controlar o brilho através da placa gráfica que controla o painel LCD. Com TVs e monitores externos, você precisa de uma solução de software para reduzir o brilho a 0. Girar para zero é o mais próximo que cheguei à ilusão de desligá-lo, mantendo as janelas ativas no monitor externo.

Versão curta

Na linha de comando (sem scripts), use:

$ xrandr | grep " connected"
HDMI-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 1107mm x 623mm
eDP-1-1 connected primary 1920x1080+3840+2160 (normal left inverted right x axis y axis) 382mm x 215mm
DP-1-1 connected 3840x2160+1920+0 (normal left inverted right x axis y axis) 1600mm x 900mm

Isso mostra a lista de nomes de monitores atribuídos por xrandr. Agora, se você deseja DP-1-1desativar o brilho, use:

xrandr --output DP-1-1 --brightness 0

Script bash da TV Sony

Aqui está um dos três scripts que escrevi:

#!/bin/bash

# NAME: sony
# PATH: /mnt/e/bin
# DESC: Set brightness of Sony TV
# DATE: Dec 9, 2017.

if [[ $# -ne 1 ]]; then
    xrandr --verbose | grep -A5 "^HDMI-0" > /tmp/sony
    head -n1 /tmp/sony
    echo "$(tput setaf 1)" ; tail -n1 /tmp/sony ; echo "$(tput sgr0)"
    rm /tmp/sony
    echo 'One argument required for brightness level, e.g. "sony .63"'
    echo 'will set brightness level of Sony TV to level .63 using xrandr'
    exit 1
fi

xrandr --output HDMI-0  --brightness "$1"

Para desligar a tela, você usaria sony 0

Chamando script sem parâmetros

Quando você chama o script sem parâmetros, ele exibe o xrandrnome da tela junto com o brilho atual em vermelho. Você pode alterar a cor vermelha para outra modificando esta linha:

echo "$(tput setaf 1)" ; tail -n1 /tmp/sony ; echo "$(tput sgr0)"

Depois de setafalterar 1para:

  • 2 para verde
  • 3 para laranja
  • 4 para azul, etc.

Modificando e instalando script

Altere as duas ocorrências de HDMI-0para corresponder ao seu nome de tela. Você pode obter uma lista de todas as suas telas digitando xrandrno terminal.

Coloque o script em um diretório em seu caminho, como:

/usr/local/bin/sony

Marque o script como executável usando:

sudo chmod a+x /usr/local/bin/sony

Escolhendo qual diretório: /usr/local/binvs~/bin

Ao criar scripts, /usr/local/binvocê deve usar sudopoderes. Uma alternativa melhor é usar o diretório ~/binque é uma abreviação para /home/YourUserID/bin:

  • crie o diretório ~/bin
  • feche o seu terminal e reabra-o.
  • o diretório recém-criado está agora no seu caminho.
  • todos os scripts em que você cria ~/binpodem ser criados com suas permissões regulares.
  • para permitir a execução de seus scripts, você só precisa usar em chmod +xvez de chmod a+x(o asignificado para todos os usuários)
WinEunuuchs2Unix
fonte
2
Obrigado pela sua resposta. Eu não conhecia a xrandr [...] --brightnessopção. Observe que você falou sobre os monitores da Sony em particular, mas também --brightnessdeve funcionar para qualquer outro monitor. Eu testei --brightnessno meu laptop e funcionou. No entanto, --brightness 0não desliguei a luz de fundo ... - Também testei --brightnessno meu computador de mesa: infelizmente, a (s) tela (s) permaneceram em preto apenas por 1 ou 2 segundos . Após esses 1-2 segundos, o brilho é redefinido automaticamente. Suponho que funcione seja altamente dependente da combinação gpu + driver + screen.
myrdd
1
@myrdd Na verdade, tenho três scripts sony , toshiba e alien para dois monitores externos e um laptop embutido. Sim, a luz de fundo não apaga e você não fica "preto puro", mas é uma solução alternativa. A redefinição automática de 1 a 2 segundos não afeta nenhum dos meus monitores, mas eu estava executando drivers da nVidia para a porta HDMI nVidia com fio e o driver da nVidia controlando as duas telas do Intel HD530 iGPU - Thunderbolt3 e interno.
WinEunuuchs2Unix
nenhum script é necessário xrandr, basta executar para encontrar ID de saída e, em seguida xrandr --output HDMI-1 --brightness 0, por favor, simplificar a resposta
brauliobo
2
@brauliobo Em vez de excluir a maior parte da resposta, coloquei uma versão curta no topo, o que acho que é um compromisso.
WinEunuuchs2Unix