繁体   English   中英

emacs,它是在笔记本电脑上还是在桌面上运行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM