Desligue o monitor usando a linha de comando

59

Estou executando o Ubuntu Server no meu laptop. Realmente não há razão para a tela estar ligada. Eu tenho tentado usar este comando para desligar a tela:

sleep 1 && xset dpms force off

O problema é que recebo o seguinte erro

unable to open display "".

Alguma idéia do que está acontecendo / o que está errado? Alguma outra sugestão de como fazer isso?

Pássaro nervoso
fonte
Você tem um servidor X instalado? E está funcionando?
enzotib 24/09/11
@enzotib Eu acredito que está instalado. Quanto à execução, não tenho certeza. Como posso verificar?
precisa saber é o seguinte
11
Tente executar isso primeiro:export DISPLAY=:0.0
RobinJ
Saída não nula dpkg -l | grep xserver-xorga ser instalada. Saída não nula pgrep -fl Xpara estar em execução. A propósito, se estiver executando, você deve estar em uma sessão gráfica.
enzotib 24/09/11
11
@ WarriorIng64: é um laptop
enzotib

Respostas:

59

Para desligar o monitor no console, o comando é o seguinte:

sudo vbetool dpms off

Para recuperar o controle do console ao pressionar a tecla Enter , sugiro

sudo sh -c 'vbetool dpms off; read ans; vbetool dpms on'
enzotib
fonte
2
Você provavelmente deseja aliasar esse lote para algo útil.
Danny Staple
11
vbetool está disponível viasudo apt-get install vbetool
David Clarke
11
No meu caso este comando realmente virou o visor e não a xsetum
Golimar
Por estranho que pareça, o comando desativa 2 de 3 visores, o terceiro permanecendo em branco por um tempo antes de a máquina reiniciar por conta própria se o comando foi executado no ssh.
danba
@enzotib, cliquei acidentalmente para diminuir o voto, desculpe. Por favor, edite um pouco a resposta para Eu posso remover o voto negativo.
precisa saber é o seguinte
32

Experimente estes comandos ...

Desligar:

xset -display :0.0 dpms force off 

Para ativar:

xset -display :0.0 dpms force on 

Se o visor desligar e ligar novamente imediatamente, tente o seguinte, adicionando um atraso de 1 segundo antes de desligar a tela. Isso permite que todos os eventos sejam processados ​​pelo servidor X antes de desligar a tela.

sleep 1 && xset -display :0.0 dpms force off 
Glauber Cardoso
fonte
Como faço para saber qual tela é qual?
Karl Morrison
11
A seguir trabalhou para mim (também parcialmente inspirado pela resposta de @ enzotib ):xset -display $DISPLAY dpms force off; read temp; xset -display $DISPLAY dpms force on
stiemannkj1
Tenha cuidado com isso. Eu sou incapaz de virar o monitor para trás com uma máquina de teste após a emissãoforce off
Zmart
2
Atualização: Puxar e reconectar todos os cabos (incluindo energia) do monitor corrigiu a situação.
Zmart
27

O xsetcomando mencionado em outras respostas desligará todos os monitores se você tiver várias configurações de monitor. No entanto, se você deseja desligar apenas um ou alguns dos monitores, deve usar xrandr.

xrandr -qComando de primeira execução , que listará todos os monitores e suas configurações de exibição atuais. No início dos detalhes de cada monitor, você encontrará o nome do monitor definido pelo sistema. Você tem que acompanhar isso.

Eu tenho dois monitores (um está conectado à porta DVI e outro à porta VGA) e, quando executo o comando, vejo o seguinte:

Screen 0: minimum 320 x 200, current 1360 x 768, maximum 2726 x 2726
DFP1 connected 1360x768+0+0 (normal left inverted right x axis y axis) 304mm x 228mm
   1360x768       59.7*+
   ... (more details are shown here, but I have hidden it)

CRT1 connected 1360x768+0+0 (normal left inverted right x axis y axis) 410mm x 230mm
   1360x768       59.8*+   60.0  
   ... (more details are shown here, but I have hidden it)

Nesta saída, o monitor conectado à porta DVI é rotulado como DFP1e outro como CRT1. Portanto, se eu quiser desligar o monitor secundário (ou seja CRT1), executei este comando:

xrandr --output CRT1 --off

se você quiser ligar o monitor novamente, execute este comando:

xrandr --output CRT1 --auto
Harshith JV
fonte
Eu tenho 3 monitores, 1 VGA, 1 DVI e 1 HDMI. Quando executei: xrandr --output VGA1 --auto, ligou o VGA, mas clonou o monitor DVI.
ThiagoPonte
Hmm estranho. Tente --em em vez de
--auto
@ HarshithJ.V. esta é uma boa resposta! É melhor do que o xsetdevido xset liga se você basta pressionar o touchpad etc. Btw espero que você se lembre de mim de sua empresa anterior :-)
Nishant
@ Nishant Obrigado por elogios. Estranhamente, não me lembro de você. Por favor, faça ping em mim em qualquer outra mídia social, pois não podemos conversar por causa das regras.
Harshith JV
Se você obteve o erro CRTC, em seguida, digite "chvt 7" antes xrandr comando, para que ele lê "chvt 7 && xrandr -d: 0 --output eDP1 --auto"
haytham med-haytham
11

Acabei de instalar o Ubuntu Server 18.04.1 (sem GUI, X, nem nada gráfico), e depois de quebrar minhas costas ontem à noite tentando desligar a tela, finalmente encontrei o comando mágico:

setterm --blank 1

Após executar o comando, a tela será desligada automaticamente a cada minuto (se estiver ociosa).


E melhor ainda, se você deseja que o comando seja executado automaticamente na inicialização, você pode adicioná-lo à linha de comando do GRUB , para isso, precisamos editar o próximo arquivo:

sudo nano /etc/default/grub

Uma vez lá, basta adicionar consoleblank=60a GRUB_CMDLINE_DEFAULT, deve ficar assim:

GRUB_CMDLINE_LINUX_DEFAULT="quiet consoleblank=60"

Em seguida, feche o arquivo e salve-o; depois disso, execute sudo update-grube pronto , toda vez que você inicializar a tela será desligada automaticamente a cada 60 segundos. (novamente, se estiver ocioso).

E dessa maneira (adicionar o consoleblank ao GRUB) funciona mesmo a partir de terminais remotos (ssh).

Desfrutar! (novamente)

Boy Graffity
fonte
11
Executando o comando acima, recebo: "setterm: terminal xterm-256color não suporta --blank". O que pode estar errado?
Zx485
11
Você está tentando em uma sessão remota?
Boy Graffity
@ zx485 Confira a resposta atualizada, agora você pode desligar a tela em uma sessão remota. Tenho certeza que isso resolverá o seu problema
Boy Graffity
6

Se você tiver vários monitores, use isto:

Desligando o seu segundo monitor:
(Assumindo que o CRT-0 é o seu monitor esquerdo e CRT-1 é o seu monitor direito)
xrandr --output CRT-1 --off
Ligando o seu segundo monitor:
xrandr --output CRT-1 --right-of CRT-0 --auto
Desta forma, o xrandr sabe que não deve duplicar a primeira tela.

Verme das Trevas
fonte
Eu estava testando isso, desligar uma tela dessa maneira é mais como desativá-la, por exemplo, a tela ainda está ligada. É apenas não usado. A --offtela não pode ser ligada novamente com o botão liga / desliga (porque ainda está ligado / nunca foi desligado). Ele também mexia com as configurações de exibição da minha área de trabalho (da área de trabalho estendida para as telas espelhadas). Se isso foi feito para desativar os dois monitores, não tenho certeza de que seria fácil ativá-los novamente sem efetuar login no TTY e limpando o arquivo monitors.xml onde quer que esteja. Quanto mais você sabe.
ThorSummoner
0

Eu estava tendo o mesmo problema. O que eu descobri é que no meu laptop (um antigo Acer aspire) o botão screentoggle padrão é suportado. Isso pode ser algo parecido fn+F6.

Essa solução provavelmente não funcionou naquele dia. Espero que ajude quem encontrar esse problema.

DutchJelly
fonte