Controle o brilho do monitor externo via software

10

Olá comunidade Ubuntu,

Eu posso controlar o brilho do meu DELL U2713HM conectado ao DisplayPort através do comando:

ddccontrol -p -r 0x10 -w 53

onde neste exemplo o número 53 representa o nível de brilho (faixa de 0 a 100). Mas não sei como vincular o comando às minhas teclas de brilho no teclado.

Eu já procurei, mas apenas encontrei respostas para telas de laptop integradas. In /sys/class/backlighté a pasta acpi_video0com algumas subpastas e arquivos. O arquivo actual_brightness contém um número de 0 a 20, que muda quando pressiono as teclas de brilho.

Como obtenho meu monitor externo listado como um dispositivo em / sys / class / backlight?

PS: Estou executando uma nova instalação do Ubuntu 12.10 com gráficos integrados Intel HD4000.

remi
fonte
Quando o comando fornecido funciona para o monitor externo, você pode definir teclas de atalho personalizadas em Configurações do sistema> Teclado> Atalhos.
Tongpu
Está correto, mas posso enviar apenas dois comandos (escuro / claro) e ignoraria o trocador de brilho interno do Ubuntu com a bela animação de brilho.
Remi
Você pode postar um link com a saída de ddccontrol -p, eu estou pensando em uma solução ...
Gerhard Burger
Espero que isso ajude você: pastebin.com/L7Y7pRZe
remi

Respostas:

6

Não acho que a solução desejada para obter seu monitor externo /sys/class/backlightfuncione, mas a boa notícia é que você pode ter uma boa animação de brilho!

Experimentar

notify-send " " -i notification-display-brightness-low -h int:value:50 -h string:x-canonical-private-synchronous:brightness &

Agora podemos criar um script que simula o trocador de brilho do Ubuntu:

#!/bin/bash
#get current brightness
presbright=$(ddccontrol -p | grep -A1 0x10 | tr -d '\n\t' | sed 's/.*value=\([^a-zA-Z]*\),.*/\1/')
#stepsize for the brightness change
stepsize=10

case "$1" in
        up)
          newbright=$(( ${presbright}+${stepsize} ))
          newbright=$(echo $newbright | awk '{if($1 < 100){if($1 > 0) print $1; else print 0;} else print 100;}')

          notify-send " " -i notification-display-brightness-low -h int:value:$newbright -h string:x-canonical-private-synchronous:brightness &
          ddccontrol -p -r 0x10 -w $newbright
        ;;
        down)
          newbright=$(( ${presbright}-${stepsize} ))
          newbright=$(echo $newbright | awk '{if($1 < 100){if($1 > 0) print $1; else print 0;} else print 100;}')

          notify-send " " -i notification-display-brightness-low -h int:value:$newbright -h string:x-canonical-private-synchronous:brightness &
          ddccontrol -p -r 0x10 -w $newbright            
        ;;
        status)
          echo $presbright
        ;;
        *)
          echo "Accepted arguments are: up, down, status."
        ;;
esac

exit 0

Como você pode ver, ele fixa os valores entre 0 e 100. Agora você pode vincular as chamadas upe downao script a alguns atalhos de teclado de sua escolha em Configurações do sistema> Teclado> Atalhos , como sugerido pelo fotomonster.


Notas:
Não sei quanto tempo ddccontrol -pleva; se for muito longo, você também pode adicionar uma syncopção ao script que salva o valor do brilho do monitor em um arquivo. Então, em vez de obter o brilho atual, ddccontrolvocê pode simplesmente obtê-lo em seu arquivo, que deve ser muito mais rápido. Claro que você precisaria atualizar as chamadas upe downpara escrever o novo brilho no arquivo ...


script inspirado por este post no archlinux .

Gerhard Burger
fonte
funciona muito bem, muito obrigado. Era exatamente isso que eu queria. Agora, todo o sistema está bem integrado, como um iMac, mas ainda configurável.
Remi
Ainda preciso de uma ajudinha, vinculando o script às minhas chaves de brilho: askubuntu.com/questions/239560/…
remi