![](/img/trans.png)
[英]Emacs frames that fit the desktop (on either laptop or external monitor)
[英]emacs , is it running on laptop or on desktop?
我的.emacs设置如下(display-battery-mode 1)
。 它在模式行上显示我的电池状态。 当我在全屏笔记本电脑上时,这有助于我。 但是当我在桌面上工作时,这很难看[N/A%][N/AC]
。
所以我只想在笔记本电脑上工作时才能使用它。
喜欢
(if OnLaptop
(display-battery-mode 1))
谢谢。
更新:他们都在运行Linux(Ubuntu)
我将使用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))
我用
;; 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)))
你还没有说他们正在运行什么操作系统。 我建议做一些键入主机名的东西。 通过getenv函数(虽然不是所有发行版都导出HOSTNAME)或通过类似的东西
(with-output-to-string
(call-process "/bin/hostname" nil standard-output nil))
如果您使用的是unix,我会考虑在.bashrc中添加“export LAPTOP = 1”并检查它。
我想不出一种直截了当的方式,但我认为你可以查看/proc
一些文件并做出有根据的猜测。 如果您只有一台笔记本电脑和一台桌面可以区分,那么应该可以使用CPU等创建一些签名。
尝试这个。 不幸的是,我没有任何非笔记本电脑试试:(
(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
,或者(112 . "97")
如果电池充电97%,或者(我猜) (112 . "N/A")
如果电池状态不可用。
最后,如果perc-charged
是非零并且当转换为数字时该值的cdr
为非零(当使用string-to-number
转换时将为“N / A”),我们假设存在电池。
我已经充实了这个例子,现在应该是一个完全有效的例子。
我用:
;; load these only if using GUI emacs
(when (display-graphic-p)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.