Acho que você possivelmente entendeu mal o que o DPMS "off" significa. Veja a tabela em Wikipedia , o que o DPMS realmente faz é sinalizar o estado de economia de energia ao ativar a sincronização horizontal e a sincronização vertical sinais (ou o equivalente HDMI), e desativando o DAC na placa gráfica, enquanto o resto da placa gráfica continua funcionando. Então você está não desligando tudo completamente, você está entrando no modo de economia de energia "mais profundo" possível.
OTOH, usando xrandr --off
realmente desliga completamente a saída, e desativa tudo na placa gráfica que é usada para produzir a saída, como se o monitor não estivesse conectado a nada. E, claro, se for o seu único monitor, isso não funciona, já que não há mais exibição gráfica para desenhar qualquer coisa. Isso é realmente para habilitar e desabilitar monitores adicionais de segundo ou terceiro.
Para que você não o queira "completamente desligado", você quer o mais profundo estado de economia de energia do DPMS, que por acaso é chamado de "desligado".
Seu comando busctl
diz ao Wayland para usar o PowerSaveMode
, ou seja, o DPMS. E o Wayland não parece reativar o DPMS quando detecta entradas de mouse ou teclado, então ele fica desligado.
Da mesma forma, xset dpms
diz ao servidor X para usar o DPMS. Isso é completamente a mesma coisa. A diferença é que o servidor X reativa o DPMS quando detecta entradas.
Quanto a "por que", é como os desenvolvedores decidiram como isso deveria funcionar. Em X, xset dpms
funciona mesmo quando não há protetor de tela extra, e é por isso que a maneira de ligar a tela novamente foi incorporada no servidor X. Para Wayland, os designers parecem ter decidido que você sempre precisa de um programa extra de proteção de tela (cujo trabalho é comunicar o desejado PowerSaveMode
ao Wayland), de modo que ele deixa para o protetor de tela monitorar as entradas e ativar a tela novamente . Que você é capaz de fingir ser um programa protetor de tela usando busctl
é mais ou menos um acidente.
Não é um bug, é um design diferente.
Como eu disse, tente pegar as entradas do mouse e do teclado com evtest --grab /dev/input/eventX
(use apenas evtest
para ver qual dispositivo é qual. Cuidado, os números não precisam permanecer os mesmos nas botas, olhe os links simbólicos do udev) ou o equivalente ioctl
se você estiver escrevendo seu próprio programa de proteção de tela. Se você quiser monitorar as entradas para uma combinação específica, você precisa fazer isso de qualquer maneira.