我的.emacs中有这样的设置
(display-battery-mode 1)
。它在模式行上显示我的电池状态。当我在全屏笔记本电脑上时,这有助于我。但是当我在桌面[N/A%][N/A C]
上工作时,它会变得很丑陋。
所以我想在我使用笔记本电脑时才开始使用它。
像
(if OnLaptop
(display-battery-mode 1))
感谢。
更新: 他们都在运行Linux(Ubuntu)
答案 0 :(得分:5)
我会使用battery
包的内部来确定电池信息是否可用。这段代码片段可以帮到你:
(require 'battery)
(when (and battery-status-function
(not (string-match-p "N/A"
(battery-format "%B"
(funcall battery-status-function)))))
(display-battery-mode 1))
答案 1 :(得分:2)
我用
;; If not on AC power line, then display battery status on the mode line
(and (require 'battery nil t)
(functionp battery-status-function)
(or (equal (cdr (assoc ?L (funcall battery-status-function))) "on-line")
(display-battery-mode 1)))
答案 2 :(得分:0)
您还没有说过他们正在运行的操作系统。我建议做一些键入主机名的东西。通过getenv函数(虽然并非所有发行版都导出HOSTNAME)或通过
之类的东西(with-output-to-string
(call-process "/bin/hostname" nil standard-output nil))
如果您使用的是unix,我会考虑在.bashrc中添加“export LAPTOP = 1”并检查它。
答案 3 :(得分:0)
我想不出一种直截了当的方式,但我认为你可以查看/proc
中的一些文件并做出有根据的猜测。如果您只有一台笔记本电脑和一台桌面可以区分,那么应该可以使用CPU等创建一些签名。
答案 4 :(得分:0)
试试这个。不幸的是,我没有任何非笔记本电脑可以尝试:(
(require 'battery)
(setq have-battery-status-p
(let ((perc-charged (assoc ?p (funcall battery-status-function))))
(and perc-charged
(not (zerop (string-to-number (cdr perc-charged)))))))
(if have-battery-status-p
(display-battery-mode 1))
修改强>
要从内到外将其分解,(funcall battery-status-function)
会返回alist,我们需要'p'(作为字符)元素,因为它包含剩余电池电量的百分比。
如果电池状态列表中没有'p'元素,则perc-charged
将类似于nil
,如果电池充电率为97%,则为(112 . "97")
,或(我是猜测)(112 . "N/A")
如果电池状态不可用。
最后,如果perc-charged
为非零且转换为数字时此值的cdr
为非零(使用string-to-number
时为“N / A”转换),我们假设存在电池。
我已经充实了这个例子,现在应该是一个完全有效的例子。
答案 5 :(得分:0)
我用:
;; load these only if using GUI emacs
(when (display-graphic-p)