热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:修复Emacs电量信息获取错误

篇首语:本文由编程笔记#小编为大家整理,主要介绍了修复Emacs电量信息获取错误相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了修复 Emacs 电量信息获取错误相关的知识,希望对你有一定的参考价值。




Emacs 在我的电脑上遇到一个诡异的问题,运行 battery 函数,输出信息为 Battery status not available,导致状态栏上始终无法显示电量信息。每次看到这个小 bug 总感觉很不爽,于是自己试着修复了一下。记录下修复的思路


0x00 系统配置情况



  • 系统:Ubuntu Meta 19.04


  • 硬件:GPD Pocket 一代


  • 电量信息文件位置:

    /sys/class/power_supply/max170xx_battery/



0x01 battery 的运行机制


C-h f 查看 battery 信息,发现在 battery 的描述如下:



Display battery status information in the echo area.
The text being displayed in the echo area is controlled by the variables battery-echo-area-format and battery-status-function.



C-h v查看 battery-status-function 变量,发现玄机在 battery-status-function 的 Symbol Property List 中。其中获取信息的关键点在 standard-value,定义如下:





















standard-value ((cond ((and (eq system-type 'gnu/linux) (file-readable-p "/proc/apm")) #'battery-linux-proc-apm) ((and (eq system-type 'gnu/linux) (file-directory-p "/proc/acpi/battery")) #'battery-linux-proc-acpi) ((and (eq system-type 'gnu/linux) (file-directory-p "/sys/class/power_supply/") (directory-files "/sys/class/power_supply/" nil battery-linux-sysfs-regexp)) #'battery-linux-sysfs)     ......))


可以看到,emacs 尝试从 /proc/apm/proc/acpi/battery 目录下读取或 /sys/class/power_supply/ 目录下通过 battery-linux-sysfs-regexp 匹配到存储电量信息的目录,然后再进行读取电量信息。很明显,在我的电脑上读取方式为第三种。


下一步,C-h v查看 battery-linux-sysfs-regexp 的值,结果为 [bB][aA][tT][0-9]?$,这个正则表达式明显是失效的


0x02 解决方案


通过以上的分析,解决方案已经很明显了,需要修改 battery-linux-sysfs-regexp 变量。
那么,问题来了。怎么改,在哪改?


根据目录 /sys/class/power_supply/max170xx_battery/,确定新正则表达式的值,由于不用考虑兼容性,简单粗暴就好,比如 battery$




具体修改有两种方式:一是简单粗暴,直接M-x customize-group,然后输入 battery 打开自定义窗口找到对应变量进行修改。二是在配置文件中重定义,将下列代码放到 .emacs 文件中即可









(defcustom battery-linux-sysfs-regexp "battery$" "custom regexp to read battery status correctly")








推荐阅读
  • Python正则表达式详解:掌握数量词用法轻松上手
    Python正则表达式详解:掌握数量词用法轻松上手 ... [详细]
  • RancherOS 是由 Rancher Labs 开发的一款专为 Docker 设计的轻量级 Linux 发行版,提供了一个全面的 Docker 运行环境。其引导镜像仅 20MB,非常适合在资源受限的环境中部署。本文将详细介绍如何在 ESXi 虚拟化平台上安装和配置 RancherOS,帮助用户快速搭建高效、稳定的容器化应用环境。 ... [详细]
  • 在Linux环境中,通过编写Shell脚本来实现自定义命令的创建与激活,能够极大地简化服务器上多个子系统的管理操作。例如,通过简单的命令如“tt”,即可快速查看各个应用程序的名称及其运行状态,从而提高系统维护的效率和便捷性。 ... [详细]
  • 一、媒介  Koa为了坚持本身的简约,并没有绑缚中间件。然则在现实的开辟中,我们须要和五花八门的中间件打交道,本文将要剖析的是常常用到的路由中间件—koa-router。  假如你 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • 本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • 深入解析:RKHunter与AIDE在入侵检测中的应用与优势
    本文深入探讨了RKHunter与AIDE在入侵检测领域的应用及其独特优势。通过对比分析,详细阐述了这两种工具在系统完整性验证、恶意软件检测及日志文件监控等方面的技术特点和实际效果,为安全管理人员提供了有效的防护策略建议。 ... [详细]
  • 在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转
    本文探讨了在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转的技术细节。通过详细分析Swscale的工作原理和实际应用,展示了如何在Android环境中高效地进行图像格式转换。此外,还介绍了FFmpeg的全平台编译过程,包括x264和fdk-aac的集成,并在Ubuntu系统中配置Nginx和Nginx-RTMP-Module以支持直播推流服务。这些技术的结合为音视频处理提供了强大的支持。 ... [详细]
  • 【Python爬虫实操】 不创作小说,专精网站内容迁移,超高效!(含源代码)
    本文详细介绍了如何利用Python爬虫技术实现高效网站内容迁移,涵盖前端、后端及Android相关知识点。通过具体实例和源代码,展示了如何精准抓取并迁移网站内容,适合对Python爬虫实战感兴趣的开发者参考。 ... [详细]
  • HTML5大文件传输技术深度解析与实践分享
    本文深入探讨了HTML5在Web前端开发中实现大文件上传的技术细节与实践方法。通过实例分析,详细讲解了如何利用HTML5的相关特性高效、稳定地处理大文件传输问题,并提供了可供参考的代码示例和解决方案。此外,文章还讨论了常见的技术挑战及优化策略,旨在帮助开发者更好地理解和应用HTML5大文件上传技术。 ... [详细]
  • 本指南详细介绍了如何使用 `apt-get` 命令在 Ubuntu 系统上部署 MySQL 5、Apache 2、PHP 5 及 phpMyAdmin。首先,建议读者查阅 Ubuntu 的官方文档以获取更多背景信息。通过本文,您将逐步了解每个软件包的安装过程及其配置方法,确保系统环境的稳定性和安全性。此外,还将提供一些常见问题的解决方案,帮助用户顺利完成部署。 ... [详细]
  • Ubuntu系统中实用快捷键汇总及Windows 10快捷键补充说明
    在Ubuntu系统中,用户可以通过多种快捷键提高操作效率。例如,使用Alt+Tab可以在当前桌面上的不同应用程序之间快速切换,而Super+D则用于在桌面与应用程序之间进行切换(Super键在Linux系统中相当于Windows系统中的Windows键)。此外,本文还补充了部分Windows 10的快捷键,帮助用户在不同操作系统间更加自如地切换。 ... [详细]
  • 本文旨在构建一个JavaScript函数,用于对用户输入的电子邮件地址和密码进行有效性验证。该函数将确保输入符合标准格式,并检查密码强度,以提升用户账户的安全性。通过集成正则表达式和条件判断语句,该方法能够有效防止常见的输入错误,同时提供即时反馈,改善用户体验。 ... [详细]
  • PHP正则表达式主要用于字符串的模式分割、匹配、查找及替换操作。使用正则表达式在某些简单的环境下可能效率不高,因此如何更好的使用PHP正则表达式需要综合考虑。PHP正则表达式的定义 ... [详细]
author-avatar
无内功不5功
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有