Exibir informações da bateria somente quando desconectado?

8

display-battery-mode exibe informações da bateria, mas eu só quero usá-las quando meu computador estiver desconectado e sem energia da bateria.

  1. Existe uma maneira de definir o modo de exibição de acordo com o modo de fonte de alimentação?

  2. Também posso obter a temperatura relatada na modelagem?

usuario
fonte

Respostas:

6

Não tenho certeza se você pode fazer isso com o built-in display-battery-mode. Não é muito personalizável a esse respeito, e talvez você precise recorrer a conselhos pesados ​​para alterar o modo interno como desejar.

Escrevi fancy-battery.el há algum tempo para fornecer um indicador mais personalizável para o status da bateria. Notavelmente, eu queria indicar o estado da bateria com cores, mas o pacote é flexível o suficiente para permitir o seu caso de uso, alterando de fancy-battery-mode-lineacordo:

(setq fancy-battery-mode-line
      '(:eval (unless (equal (cdr (assq ?b fancy-battery-last-status)) "+")
                (fancy-battery-default-mode-line))))

Não pergunte, o status vem de battery.el, que tem uma API horrível. Apenas confie em mim, que ?bé o estado da bateria e "+"indica carga, pelo menos para a maioria dos back-ends.

Essa configuração mostra o status da bateria, mas apenas se a bateria estiver descarregando. Para usar outro formato, escreva sua própria função para substituir fancy-battery-default-mode-line. Sinta-se livre para tomar o meu como inspritação.

Em relação à temperatura, você pode ter sorte com um back-end diferente. Dê uma olhada nos back-end existentes battery.el, procure um que inclua a temperatura da bateria e tente atender aos requisitos. No entanto, battery.elnormalmente é possível escolher o melhor back-end para o seu sistema, portanto, muito provavelmente o seu hardware simplesmente não informa a temperatura da bateria ou não é adequadamente suportado pelo seu sistema operacional.

lunaryorn
fonte
2

Você pode conseguir isso aconselhando battery-update, a função que realmente atualiza a modelagem para exibir o status da bateria. O conselho verifica se a bateria está sendo carregada no momento. Nesse caso, ela liga battery-updatecom battery-mode-line-formatligação a nil(que na verdade oculta as informações da bateria); caso contrário, battery-updateé chamada com o valor inalterado debattery-mode-line-format

(defun my-skip-battery-display-if-charging (original-func)
  (let ((battery-mode-line-format (unless (string= (downcase (cdr (assoc ?B (funcall battery-status-function)))) "charging")
                                    battery-mode-line-format)))
          (funcall original-func)))

(advice-add 'battery-update :around #'my-skip-battery-display-if-charging)

O conselho é um pouco desajeitado, pois chamamos battery-status-functionuma vez, enquanto a buffer-updatefunção já chama essa função uma vez, por isso estamos fazendo uma chamada de função extra, mas é isso que eu poderia sugerir.

Iqbal Ansari
fonte