[software development] 之前有朋友想要的手机监控Linux工具,终于完善的差不多了
Tofloor
poster avatar
DebuggerX
deepin
2023-09-05 00:25
Author

image.png

20.9版本的电源管理是怎么回事,性能模式的代码写的什么鬼!?? 这个帖子里,我用自己写的小工具发现了20.9版本更新后电源管理出了问题,当时就有朋友说想尝试,我说估计一个月能完善好放出来,结果果然食盐了joy 倒不是跟deepin学的跳票,实在是最近工作比较忙,再加上完善过程中不断发现有可以继续提升的点,于是一晃快三个月,到刚才才终于达到了一个我自己比较满意的完成度。

简介

这是一个利用 Flutter/Dart 编写的,用于显示 Linux 系统状态信息的APP,可以运行在包括Android、iOS、Linux、MacOS、Windows等平台上,兼容从小屏手机到大屏幕电视等各种尺寸的展示,支持局域网自动发现服务,也支持通过网络远程使用。

image.png
image.png
image.png

开发动机

  1. 组了台洋垃圾E5主机,配的是一颗10核20线程的CPU,所以想做一个可以随时获得数框框快乐的工具
  2. 钟爱的 deepin 系统升级v23版本后系统环境改动很大,原本使用的dock栏网速插件和悬浮窗插件失效了,所以打算做一个替代品
  3. 除了日常使用 Linux 桌面,手里还有一些运行 Linux 系统的云服务器、虚拟机和机顶盒等设备,所以想要做一个无关发行版和桌面环境,通用的系统监视工具
  4. 家里一堆淘汰的旧手机想要利用起来,并且用旧手机做系统状态监控可以在不占用一丁点的电脑屏幕空间情况下显示足够丰富的信息

特性

  • 支持Android直接下载安装APP,iOS、Linux、MacOS、Windows等可以无修改直接支持
  • 多CPU架构支持(X64、ARM64)
  • 适配各种屏幕尺寸的显示、支持横竖屏切换
  • 适配多核心的自适应布局显示,最多可同时显示105个核心的状态
  • 安装脚本支持通过网络一键下载安装配置
  • 支持局域网自动发现服务
  • 支持通过网络远程使用
  • 支持设备上线自动连接
  • 优化网络数据传输量
  • 低内存占用及CPU资源占用
  • 进程合并显示优化、wine应用\玲珑应用进程信息优化
  • 支持桌面应用进程显示窗口标题
  • 可以显示的信息有:
    • CPU频率、总占用率、以及每个核心的频率、占用率
    • 内存信息及虚拟内存信息
    • 当前网络上行、下行速度及总发送、总接收
    • CPU占用最高的进程列表及占用率
    • 内存占用最高的进程列表及内存使用量

使用方法见博客:远程监视器——使用Flutter/Dart开发的Linux系统状态监视APP

安装方法

请在 Linux 系统的桌面系统或服务器上,以 非root 权限执行如下命令:

bash -c "$(curl -fsSL https://www.debuggerx.com/raw_assets/scripts/rsm_install.sh)"

根据提示依次输入:

  1. sudo密码
  2. 服务监听的端口号(1024-65535)
  3. 服务的安装模式(1.桌面模式 2.服务器模式)

开发过程分享

感谢勇哥的技术分享

在确定了需求和大致设计思路之后,我首先尝试搜索了Flutter/Dart的开发社区中已有的“轮子”。得益于这些年Flutter社区生态的蓬勃发展,其实现在也已经有不少用于在Linux环境获取系统信息的库,例如:

但在试验后,发现这些库都还不能完全满足我的需要,又查了一些资料和分享,也没能找到质量特别高且适合我的。
这时我忽然回忆起,好像曾看到过deepin的前CTO勇哥分享过几篇有关deepin开发的技术分享,其中似乎有一篇就是讲如何实现deepin里那个酷炫的系统监视器的,于是赶紧找来学习,一看之下大喜过望:

深度系统监视器原理剖析

勇哥的这篇文章清晰易懂,娓娓道来,不仅介绍了在Linux系统中获取系统信息的方式,也详细解释了每个文件和数据的含义和解析计算方法,关键地方甚至还贴心地准备了示例代码,同时在实现deepin的系统监视器过程中碰到的问题和总结的技巧也毫无保留的分享了出来。早先也拜读过这篇文章,但当时是没有目的性的泛读,所以还不能完全体会到其价值;如今在有明确的目标和问题的情况下阅读,结合了与其他搜索到的文章资料的对比,才深刻感受到勇哥作为技术人的追求和务实、作为社区负责人的认真与严谨、以及作为开源导师的无私和热情。

再次勉励自己,向勇哥学习!
贴上勇哥的blog地址,希望看到本文的,对技术有追求的朋友可以看看:

ManateeLazyCat - 「生活可以更简单, 欢迎来到我的开源世界」

关于进程信息的合并(见博客)

关于服务发现(见博客)

参考了deepin的UI设计

最后感谢deepin的设计和资源。
本人资深伪全栈,从需求设计到前后端开发,再到项目发布部署运维,多多少少也都能做个像那么回事,唯独美术水平一直不忍直视。所以本工具在很多地方借鉴参考了deepin的UI设计,包括不限于设计指南(UI视觉规范、设计基础知识),主题配色,组件样式,甚至app的应用图标也是直接拿系统监视器的图标来用的,可以说虽然这是个通用为目的的工具,但是一切还是优先以deepin为主,希望大家喜欢。

博客:远程监视器——使用Flutter/Dart开发的Linux系统状态监视APP

Reply Favorite View the author
All Replies
1 / 2
To page
DebuggerX
deepin
2023-09-05 00:36
#1

补一张实拍:

IMG_20230904_163516.jpg

Reply View the author
yanjuner
Super Moderator
2023-09-05 00:44
#2

好厉害啊

点赞!

Reply View the author
阿尼樱奈奈
Moderator
2023-09-05 00:44
#3

like

Reply View the author
caoyuUU
deepin
2023-09-05 00:44
#4

这不得上架到商店

Reply View the author
DebuggerX
deepin
2023-09-05 00:59
#5
caoyuUU

这不得上架到商店

这个不好上吧,Linux这边只有个服务端,引导下载手机客户端和使用是个难题。

Reply View the author
神末shenmo
deepin
Spark-App
2023-09-05 01:17
#6

这不得上架到商店

https://upload.deepinos.org.cn

Reply View the author
longlong
deepin
Developer
2023-09-05 01:32
#7
DebuggerX

这个不好上吧,Linux这边只有个服务端,引导下载手机客户端和使用是个难题。

挺好的 其实服务端套一个简单的gui展示二维码下载手机端就挺好

Reply View the author
DebuggerX
deepin
2023-09-05 02:21
#8
longlong

挺好的 其实服务端套一个简单的gui展示二维码下载手机端就挺好

那就又不甘心只做个简单的引导页面了,因为我这个工具的客户端本来也就支持直接在linux桌面原生运行的……有空再构思吧,暂时还是得滚回去忙工作了,养家糊口要紧😂

image.png
image.png

Reply View the author
安洛
deepin
2023-09-05 03:40
#9

全平台,网络监控这两点真是太方便了。

Reply View the author
谢克辉
deepin beta test group
2023-09-05 05:43
#10
DebuggerX

那就又不甘心只做个简单的引导页面了,因为我这个工具的客户端本来也就支持直接在linux桌面原生运行的……有空再构思吧,暂时还是得滚回去忙工作了,养家糊口要紧😂

image.png
image.png

这个是如何在桌面上调出这个窗口的?

Reply View the author
DebuggerX
deepin
2023-09-05 17:40
#11
谢克辉

这个是如何在桌面上调出这个窗口的?

flutter跨平台开发,可以实现一套代码输出移动端和桌面端的原生应用,所以我只要指定编译模式是linux,就得到了一个原生的Linux应用,和其他应用一样用命令行或者点击桌面图标就可以打开了

Reply View the author
谢克辉
deepin beta test group
2023-09-05 17:50
#12
DebuggerX

flutter跨平台开发,可以实现一套代码输出移动端和桌面端的原生应用,所以我只要指定编译模式是linux,就得到了一个原生的Linux应用,和其他应用一样用命令行或者点击桌面图标就可以打开了

可以在桌面创建图标吗?如何做?applaud

Reply View the author
DebuggerX
deepin
2023-09-05 18:00
#13
谢克辉

可以在桌面创建图标吗?如何做?applaud

呃,就和普通程序一样的做法啊。

如果是你自己写的软件,那可以在桌面上创建一个 .desktop 文件,设置好名称和图标,运行命令指向你的软件位置即可。

如果是要打包 deb 包,那就去看 deepin\UOS 的打包规范,把 .desktop 文件放到指定的位置打包就好了,用户安装的时候安装器会自动拷贝图标文件到系统里。

可以参考我这两个项目里的做法,都是Flutter写的桌面应用,都上架应用商店了:

https://github.com/debuggerx01/dde_qrcode_detector/blob/master/dde_package_info/entries/applications/com.debuggerx.dde-qrcode-detector.desktop

https://github.com/debuggerx01/dde_gesture_manager/blob/dev/app/dde_package_info/entries/applications/com.debuggerx.dde-gesture-manager.desktop

https://github.com/debuggerx01/dde_qrcode_detector/blob/master/build_deb.sh

https://github.com/debuggerx01/dde_gesture_manager/blob/dev/app/build_deb.sh

Reply View the author
fax928
deepin
2023-09-05 19:18
#14

yeah

Reply View the author
谢克辉
deepin beta test group
2023-09-05 23:57
#15
DebuggerX

呃,就和普通程序一样的做法啊。

如果是你自己写的软件,那可以在桌面上创建一个 .desktop 文件,设置好名称和图标,运行命令指向你的软件位置即可。

如果是要打包 deb 包,那就去看 deepin\UOS 的打包规范,把 .desktop 文件放到指定的位置打包就好了,用户安装的时候安装器会自动拷贝图标文件到系统里。

可以参考我这两个项目里的做法,都是Flutter写的桌面应用,都上架应用商店了:

https://github.com/debuggerx01/dde_qrcode_detector/blob/master/dde_package_info/entries/applications/com.debuggerx.dde-qrcode-detector.desktop

https://github.com/debuggerx01/dde_gesture_manager/blob/dev/app/dde_package_info/entries/applications/com.debuggerx.dde-gesture-manager.desktop

https://github.com/debuggerx01/dde_qrcode_detector/blob/master/build_deb.sh

https://github.com/debuggerx01/dde_gesture_manager/blob/dev/app/build_deb.sh

我是说你这个软件,现在已经成功在手机上显示了,我现在就是说能不能在桌面开机自动显示

Reply View the author
DebuggerX
deepin
2023-09-06 00:16
#16
谢克辉

我是说你这个软件,现在已经成功在手机上显示了,我现在就是说能不能在桌面开机自动显示

所以你是想要我这个客户端程序的Linux版本是吗?

Reply View the author
谢克辉
deepin beta test group
2023-09-06 00:52
#17
DebuggerX

所以你是想要我这个客户端程序的Linux版本是吗?

嘿嘿,是的thanks

Reply View the author
Lwh2008-Equinox
deepin
2023-09-08 07:25
#18

收藏了

Reply View the author
晚秋(lateautumn)
Moderator
2023-09-18 07:22
#19

厉害,收藏了。applaud

Reply View the author
dgmenghuan
deepin
2023-09-20 16:42
#20

tail

Reply View the author
1 / 2
To page