Afficher les informations sur la batterie uniquement lorsqu'elle est débranchée?

8

display-battery-mode affiche des informations sur la batterie, mais je ne veux l'utiliser que lorsque mon ordinateur est débranché et qu'il est déchargé.

  1. Existe-t-il un moyen de régler le mode d'affichage en fonction du mode d'alimentation?

  2. Puis-je également obtenir la température indiquée dans la modeline?

pseudo
la source

Réponses:

6

Je ne sais pas si vous pouvez le faire avec le intégré display-battery-mode. Ce n'est pas très personnalisable à cet égard, et vous devrez peut-être recourir à de lourds conseils pour changer le mode intégré à votre guise.

J'ai écrit fancy-battery.el il y a quelque temps pour fournir un indicateur plus personnalisable de l'état de la batterie. Notamment, je voulais indiquer l'état de la batterie avec des couleurs, mais le package est suffisamment flexible pour permettre également votre cas d'utilisation, en changeant en fancy-battery-mode-lineconséquence:

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

Ne demandez pas, le statut vient de battery.el, qui a une horrible API. Croyez-moi, c'est ?bl'état de la batterie et "+"indique la charge, pour la plupart des backends au moins.

Ce paramètre affichera l'état de la batterie, mais uniquement si la batterie se décharge. Pour utiliser un autre format, écrivez votre propre fonction à remplacer fancy-battery-default-mode-line. N'hésitez pas à prendre le mien comme source d'inspiration.

Concernant la température, vous aurez peut-être de la chance avec un backend différent. Jetez un œil aux backends existants battery.el, recherchez-en un qui inclut la température de la batterie et essayez de répondre à ses exigences. Cependant, battery.elréussit généralement à choisir le meilleur backend pour votre système, donc votre matériel ne rapporte tout simplement pas la température de la batterie ou n'est pas correctement pris en charge par votre système d'exploitation.

lunaryorn
la source
2

Vous pouvez y parvenir en conseillant battery-update, la fonction qui met à jour la modélisation pour afficher l'état de la batterie. L'avis vérifie si la batterie est en cours de charge, auquel cas il appelle battery-updateavec battery-mode-line-formatlié à nil(ce qui masque en fait les informations sur la batterie), sinon il battery-updateest appelé avec une valeur inchangée 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)

Le conseil est un peu maladroit puisque nous appelons battery-status-functionune fois alors que la buffer-updatefonction appelle déjà cette fonction une fois, nous faisons donc un appel de fonction supplémentaire, mais c'est ce que je pourrais trouver.

Iqbal Ansari
la source