Visualizza le informazioni sulla batteria solo quando è scollegato?


8

display-battery-mode visualizza le informazioni sulla batteria, ma voglio usarlo solo quando il mio computer è scollegato e sta scaricando la batteria.

  1. C'è un modo per impostare la modalità di visualizzazione in base alla modalità di alimentazione?

  2. Posso anche ottenere la temperatura riportata nella modeline?

Risposte:


6

Non sono sicuro che sia possibile farlo con il built-in display-battery-mode. Non è molto personalizzabile a questo proposito, e potresti dover ricorrere a pesanti consigli per cambiare la modalità integrata come preferisci.

Ho scritto fancy-battery.el qualche tempo fa per fornire un indicatore più personalizzabile per lo stato della batteria. In particolare, volevo indicare lo stato della batteria con i colori, ma il pacchetto è abbastanza flessibile da consentire anche il tuo caso d'uso, cambiando di fancy-battery-mode-lineconseguenza:

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

Non chiedere, lo stato proviene da battery.el, che ha un'API orribile. Fidati di me che ?bè lo stato della batteria e "+"indica la carica, almeno per la maggior parte dei backend.

Questa impostazione mostrerà lo stato della batteria, ma solo se la batteria si sta scaricando. Per utilizzare un altro formato, scrivi la tua funzione da sostituire fancy-battery-default-mode-line. Sentiti libero di prendere il mio come sorpresa.

Per quanto riguarda la temperatura, potresti avere fortuna con un backend diverso. Dai un'occhiata ai backend esistenti, cercane battery.eluno che includa la temperatura della batteria e prova a soddisfare i suoi requisiti. Tuttavia, in battery.elgenere riesce a scegliere il miglior backend per il tuo sistema, quindi è molto probabile che l'hardware non riporti semplicemente la temperatura della batteria o non sia adeguatamente supportato dal tuo sistema operativo.


2

È possibile ottenere ciò avvantaggiandosi battery-update, la funzione che aggiorna effettivamente la modeline per visualizzare lo stato della batteria. Il consiglio controlla se la batteria è attualmente in carica, nel qual caso chiama battery-updatecon il battery-mode-line-formatlimite nil(che in effetti nasconde le informazioni sulla batteria), altrimenti battery-updateviene chiamata con un valore invariato dibattery-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)

Il consiglio è un po 'goffo dal momento che chiamiamo battery-status-functionuna volta mentre la buffer-updatefunzione chiama già quella funzione una volta, quindi stiamo facendo una chiamata di funzione aggiuntiva, ma questo è quello che potrei trovare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.