用1个PHP文件实现桌面环境?MGO Desktop架构设计与实现
一个单文件,搞定整个虚拟桌面——MGO Desktop开发背后的故事
大家好,我是叫我弓木吉,Mango团队的一员。
说实话,写这篇文章的时候我自己都觉得有点好笑。
几个周前的一个下午,我坐在电脑前,看着费用高昂的云电脑,脑子里突然冒出一个念头:这些云电脑为什么都这么庞大?为什么虚拟主机和服务器没有轻量的能代替云电脑的程序?能不能搞一个简单到极致的东西?一个文件就能搞定所有事的那种?
于是,MGO Desktop就这么诞生了。
刚写出来的时候给几个朋友看,他们的一致评价是——“这玩意儿看着挺鸡肋的啊,谁会用?”说实话我当时也有点动摇,但转念一想,反正也是写着玩的,就当练手了呗。
结果没想到,这个当初被朋友戏称为“鸡肋”的小东西,居然真有人用起来了。
(前提说明:一个类似系统的东西产生就需要有社区来支撑它,希望大家能够为它开发一些程序,以保证它可以像一个真正的系统)
什么是MGO Desktop?
简单来说,MGO Desktop是一个单文件PHP虚拟桌面《操作系统》。(PHP写的仿系统,但是可以像系统一样实现简单操作,调用起服务器/虚拟主机的一些算力硬件)
它不需要数据库,不需要安装任何依赖,只需要一个PHP环境(7.2~8.1),上传到服务器/虚拟主机就能直接跑。
你可以把它想象成一个运行在浏览器里的完整桌面环境——桌面图标、任务栏、开始菜单、最大化最小化,该有的交互全都有。所有数据都存储在服务器端,你只需要一个浏览器,就能随时随地访问自己的“云端电脑”。
无论是放在云服务器、虚拟主机、家里的NAS,甚至是跑着玩的树莓派上,只要设备支持PHP,它就能跑起来。
项目地址:https://gitcode.com/2502_92989497/MGO_Desktop/
为什么会有这个项目?
说到这个项目的起源,其实挺随意的。
我身边有很多刚入门的朋友,他们最痛苦的事往往不是写代码,而是管东西。想搭个私人云盘?要先配服务器、装环境、搞数据库……一套流程走下来,热情早就被磨没了。
市面上的面板和系统要么太庞大(动不动几百兆),要么挂着MySQL等各种依赖,一旦崩溃心态也跟着崩。
我当时就想:能不能用一个文件就把桌面这件事讲清楚?
不追求大而全,就把最核心的功能做扎实。如果这个代码能帮某个人省下半天折腾环境的时间,那它就是有意义的。
核心功能:小身材,大能量
别看它只有一个文件,该有的功能基本都有:
📁 此电脑(文件管理器)
浏览、新建、重命名、删除(带回收站)、上传文件,基本操作全覆盖。
🌐 浏览器
多标签页、书签收藏,还支持打开本地HTML文件。
🎵 媒体播放器
支持图片、音频、视频(MP3、WAV、OGG、FLAC、MP4、WebM、AVI、MOV)。不过目前这个版本还有点小问题,下一版本会修复。
📝 记事本
打开和保存文本文件,简简单单。
🎨 画图
绘图、撤销、保存到桌面,随手涂鸦够用了。
🧮 计算器 · 🕒 时钟(含闹钟、时区切换) · 📅 日历(含日程管理)
⌨️ 屏幕键盘(英文输入)
⚙️ 设置
系统信息、修改密码、主题色、暗色模式、壁纸切换,该有的个性化选项都有。
📊 任务管理器
进程列表加性能概览,实时掌握系统状态。
📄 文档编辑器(支持TXT等文本文件) ·
🗑️ 回收站(可还原/清空)
技术上的“小脾气”
MGO Desktop的数据存储方式比较特别——不用数据库。
所有数据都以文件形式存储在服务器上:
storage/——用户数据根目录storage/user_xxxxx/——每个会话的用户目录(包含Desktop、Documents等)storage/trash/——回收站数据storage/password.txt——加密后的密码storage/theme.txt——保存的主题色
好处是出了问题直接改文件就能修复,不用担心数据库崩了数据全丢。你知道数据存在哪、长什么样,出了故障也知道该去哪修。
默认登录密码是admin123,用户名是administrator。首次访问时系统会自动创建所需目录并生成默认密码。
怎么用?部署简单到离谱
- 下载
index.php文件 - 上传到你的Web根目录(或任意子目录)
- 浏览器访问该文件
- 用
administrator/admin123登录
没了。真的就这么简单。
服务器需要对网站根目录具有写入权限,用于创建storage/目录。
扩展开发:想加什么自己加
MGO Desktop支持自定义应用扩展:
- 在
apps/目录下创建.php文件 - 在文件顶部添加应用元信息:
// app: 我的应用
// logo: fa-rocket
- 应用内输出任意HTML内容,系统会自动加载并显示在窗口中
想加什么功能,自己动手就行。
一些想说的话
做这个项目的过程让我明白了一件事:有时候最好的设计,就是简单到不需要说明书。
MGO Desktop的代码全部开源,采用MIT License。你可以自由使用、修改、分发,但请保留版权声明。
如果你觉得这个项目有点意思,欢迎去GitCode上点个Star,或者提交Issue和Pull Request。
最后,感谢所有用过、吐槽过、提过建议的朋友们。
没有你们的反馈,这个“无聊”的小项目可能早就被我丢在硬盘的某个角落里了。
项目地址: https://gitcode.com/2502_92989497/MGO_Desktop/
享受您的虚拟桌面!🥭
和MGO空间管理面板的主旨一样,极简之美是我们的目标,但与MGO空间面板不同,需要社区与应用来支撑它,所以希望各位能为它开发应用(优秀的应用可能会被官方设为系统应用)
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)