一个单文件,搞定整个虚拟桌面——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。首次访问时系统会自动创建所需目录并生成默认密码。


怎么用?部署简单到离谱

  1. 下载index.php文件
  2. 上传到你的Web根目录(或任意子目录)
  3. 浏览器访问该文件
  4. administrator / admin123登录

没了。真的就这么简单。

服务器需要对网站根目录具有写入权限,用于创建storage/目录。


扩展开发:想加什么自己加

MGO Desktop支持自定义应用扩展:

  1. apps/目录下创建.php文件
  2. 在文件顶部添加应用元信息:
// app: 我的应用
// logo: fa-rocket
  1. 应用内输出任意HTML内容,系统会自动加载并显示在窗口中

想加什么功能,自己动手就行。


一些想说的话

做这个项目的过程让我明白了一件事:有时候最好的设计,就是简单到不需要说明书

MGO Desktop的代码全部开源,采用MIT License。你可以自由使用、修改、分发,但请保留版权声明。

如果你觉得这个项目有点意思,欢迎去GitCode上点个Star,或者提交Issue和Pull Request。

最后,感谢所有用过、吐槽过、提过建议的朋友们。

没有你们的反馈,这个“无聊”的小项目可能早就被我丢在硬盘的某个角落里了。


项目地址: https://gitcode.com/2502_92989497/MGO_Desktop/

享受您的虚拟桌面!🥭


和MGO空间管理面板的主旨一样,极简之美是我们的目标,但与MGO空间面板不同,需要社区与应用来支撑它,所以希望各位能为它开发应用(优秀的应用可能会被官方设为系统应用)

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐