抜かれたときにのみバッテリー情報を表示しますか?


8

display-battery-mode はバッテリー情報を表示しますが、コンピューターのプラグが抜かれ、バッテリー電源が切れているときにのみ使用したいと思います。

  1. 電源モードに応じて表示モードを設定する方法はありますか?

  2. モードラインで温度を報告することもできますか?

回答:


6

組み込みのでそれを実行できるかどうかはわかりませんdisplay-battery-mode。この点についてはあまりカスタマイズできません。また、組み込みモードを好きなように変更するには、重いアドバイスに頼らなければならない場合があります。

少し前にfancy-battery.elを書いて、バッテリーステータスのよりカスタマイズ可能なインジケーターを提供しました。特に、私は色でバッテリーの状態を示したかったのですが、パッケージはfancy-battery-mode-lineそれに応じて変更することで、ユースケースにも対応できるように十分に柔軟です:

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

質問しないでください。ステータスは、恐ろしいAPIを持つbattery.elから取得されます。少なくともほとんどのバックエンドで?bは、それがバッテリーの状態であり、"+"充電中であることを示しています。

この設定はバッテリーの状態を表示しますが、バッテリーが放電している場合のみです。別の形式を使用するには、独自の関数を記述してを置き換えfancy-battery-default-mode-lineます。私の考えを自由に使ってください。

温度に関しては、別のバックエンドで運が良いかもしれません。で既存のバックエンドを確認し、battery.elバッテリー温度を含むものを検索して、その要件を満たしてみてください。ただし、battery.el通常はシステムに最適なバックエンドを選択することに成功するため、ハードウェアが単にバッテリー温度を報告しないか、OSが適切にサポートしていない可能性があります。


2

これを実現するには、モードラインbattery-updateを実際に更新してバッテリーのステータスを表示する関数をadvicingします。アドバイスチェック電池は、現在、それが呼び出した場合には充電されている場合battery-updatebattery-mode-line-formatに結合してnilそれ以外の場合、(実際に電池情報を非表示にする)battery-updateの不変の値で呼び出されbattery-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)

関数が既にその関数を1回呼び出しているbattery-status-function間に1回呼び出すので、アドバイスは少し不格好ですbuffer-update。1つの追加の関数呼び出しを行っていますが、これは私が思いつくことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.