系统信息悬浮窗-fstats
摘要: 本文介绍了作者开发的基于Python和tkinter的系统信息悬浮窗工具fstats,旨在实时监控CPU、内存等资源占用情况。该工具支持用户自定义扩展内容(如进程状态、计数器等),通过配置文件实现多项显示和样式调整,且可集成到系统启动项中。作者还展示了样式动态变化和扩展接口的实现方式,强调其简便性和扩展性。 (评价: A)
日常开发过程中, 一次编译经常会占用满系统的CPU和内存资源. 我使用tmux作为终端环境, 有tmux-cpu等插件可以监控系统资源, 但是退出该环境后(比如切换到其他应用)就不容易实时查看到系统资源的占用. 为了解决这个问题, 我开发了fstats这款显示系统信息的悬浮窗工具, 同fkfish, 使用python作为主要开发语言, 也使用tkinter来编写界面.
项目地址: https://github.com/caibingcheng/fstats
基础功能
最基础的需求是能够显示CPU和内存的占用率, UI界面也可以根据占用率有所变化, 如下:
低占用是白色背景:
高占用是红色背景:
扩展
如果只有默认显示, 总感觉少了些什么. 现在fstats支持用户扩展, 通过扩展接口, 用户可以自定义更丰富的显示, 通过以下路径配置<HOME path>/.fstats/config.json:
|
|
通过width和height, 用户可以定义悬浮窗的大小, 通过items, 用户可以定义显示的内容, 如上描述, 第一行显示CPU占用率, 第二行显示内存占用率, 第三行显示一个计数器, 表示存活状态, 这几个item的实现如下:
|
|
|
|
|
|
更多的, 比如想显示座右铭, 那么可以实现一个info接口, 返回你喜欢的句子即可, 或者可以通过request请求远端的数据, 实现座右铭的动态切换. 再或者, 想监控某个进程的存活状态, 也可以通过实现一个info接口实现. 但是目前仅支持显示文字, 也只支持python脚本, 后续还需至少添加对shell脚本和纯字符串的支持. 至于图片之类的内容显示, 目前并不在计划中.
style指向的脚本则是用来更新UI状态, 比如一种实现如下:
|
|
以上通过CPU/MEM的占用率, 修改label的样式, 这里的label就是tkinter中的Label对象, 是目前所有信息的容器(所有信息都当作是Label的text成员). 该接口的扩展方向是, 把每一个item都当作是一个label对象, 这样就可以控制某些item的样式, 而不是整体的样式.
那么, 我个人做了以下扩展:
LIVE用来标识是不是卡死了, 这是一个计数器, 每次轮循的时候+1.
BUILD用来监视编译进程, 因为一次编译可能会消耗几十分钟, 那么我在切换到其他应用的时候, 就可以通过BUILD判断编译是否完成了(ON表示还在编译, OFF表示编译完成).
开始使用
该库已提交到pypi, 因此pip安装即可:
|
|
使用的时候, 可以配置到系统启动项, 或者手动启动, 手动启动推荐以下方式, 可以在后台启动:
|
|