Jawaban:
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-line
sesuai:
(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 ?b
ini 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.el
biasanya 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.
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-update
dengan battery-mode-line-format
terikat nil
(yang pada dasarnya menyembunyikan informasi baterai), jika battery-update
tidak 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-function
sekali sementara buffer-update
fungsi sudah memanggil fungsi itu sekali sehingga kita membuat satu panggilan fungsi tambahan tapi ini adalah apa yang bisa saya hasilkan.