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

时间:2011-04-06 07:42:36

标签: emacs

我的.emacs中有这样的设置 (display-battery-mode 1)。它在模式行上显示我的电池状态。当我在全屏笔记本电脑上时,这有助于我。但是当我在桌面[N/A%][N/A C]上工作时,它会变得很丑陋。

所以我想在我使用笔记本电脑时才开始使用它。


(if OnLaptop
(display-battery-mode 1))

感谢。

更新: 他们都在运行Linux(Ubuntu)

6 个答案:

答案 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)