Tampilkan informasi baterai hanya ketika dicabut?

8

display-battery-mode menampilkan informasi baterai, tetapi saya hanya ingin menggunakannya ketika komputer saya dicabut dan daya baterai habis.

  1. Apakah ada cara untuk mengatur mode tampilan sesuai dengan mode catu daya?

  2. Bisakah saya mendapatkan suhu yang dilaporkan dalam modeline?

Nick
sumber

Jawaban:

6

Saya tidak yakin apakah Anda bisa melakukannya dengan built-in display-battery-mode. Ini tidak terlalu dapat dikustomisasi dalam hal ini, dan Anda mungkin harus menggunakan saran berat untuk mengubah mode bawaan yang Anda inginkan.

Saya menulis fancy-battery.el beberapa waktu lalu untuk memberikan indikator yang lebih dapat disesuaikan untuk status baterai. Khususnya, saya ingin menunjukkan status baterai dengan warna, tetapi paketnya cukup fleksibel untuk memungkinkan Anda juga, dengan mengubah fancy-battery-mode-linesesuai:

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

Jangan tanya, statusnya berasal dari battery.el, yang memiliki API mengerikan. Percayalah pada saya bahwa ?bini adalah kondisi baterai, dan "+"mengindikasikan pengisian daya, setidaknya untuk sebagian besar backend.

Pengaturan ini akan menunjukkan status baterai, tetapi hanya jika baterai habis. Untuk menggunakan format lain, tulis fungsi Anda sendiri untuk mengganti fancy-battery-default-mode-line. Jangan ragu untuk menganggap milik saya sebagai inspirasi.

Mengenai suhu, Anda mungkin beruntung dengan backend yang berbeda. Lihatlah backend yang ada di battery.el, cari yang termasuk suhu baterai dan cobalah untuk memenuhi persyaratan itu. Namun, battery.elbiasanya berhasil memilih backend terbaik untuk sistem Anda, jadi kemungkinan besar perangkat keras Anda tidak melaporkan suhu baterai, atau tidak didukung dengan baik oleh OS Anda.

lunaryorn
sumber
2

Anda dapat mencapai ini dengan menyarankan battery-update, fungsi yang sebenarnya memperbarui modeline untuk menampilkan status baterai. Saran tersebut memeriksa apakah baterai saat ini sedang diisi dalam hal panggilan battery-updatedengan battery-mode-line-formatterikat nil(yang pada dasarnya menyembunyikan informasi baterai), jika battery-updatetidak disebut dengan nilai tidak berubah daribattery-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)

Sarannya agak kikuk karena kita memanggil battery-status-functionsekali sementara buffer-updatefungsi sudah memanggil fungsi itu sekali sehingga kita membuat satu panggilan fungsi tambahan tapi ini adalah apa yang bisa saya hasilkan.

Iqbal Ansari
sumber