让桌面
活过来。

DesktopEngine 在 Mac 上运行动态壁纸、桌面小组件和桌面宠物。每一个都是用 JavaScript 写的小程序。

这不是视频。壁纸、小组件和这只猫都是 App 内置的小程序,正在你的浏览器里运行:拖动小组件,或者点一下猫。

星云,在鼠标下流动

十几万个粒子在 GPU 上模拟,在星系、行星环、圆环和波浪之间慢慢变换。在上面移动鼠标可以搅动它们,点一下会吹散。深色外观下它们发光,浅色外观下像墨水一样在纸上晕开。

实时运行的动态壁纸「星云」
形状
配色
外观

这些选项由壁纸在清单里声明,App 把它们画成系统表单。改一个选项,壁纸会带着新的取值重新启动,这里也一样。

两块屏幕,一幅风景

「地平线」跟着真实的时钟走:太阳划过天空,晨昏染上霞光,夜里升起当天月相的月亮,还有星星和萤火虫。并排的显示器连成一整幅风景,太阳从一块屏幕走到另一块。

左边的显示器
右边的显示器
快进到

时间只往前走。想看夜晚,要先经过一场日落。

小组件,拿来就能玩

小组件有小、中、大三种尺寸,和系统小组件一样大。拖到哪儿,下次启动还在哪儿。

桌面上的三个小组件:番茄钟、烧瓶和粒子时钟
番茄钟
一块随时间缩小的彩色扇形。像拧旋钮一样拖动它设定分钟,松手就开始,时间到了会响铃。
烧瓶
液面是内存,沸腾是 CPU。网页读不到你的 CPU,这里换成了你滚动和移动鼠标的速度:快速滚动一下试试。
粒子时钟
上千个粒子拼成现在的时间,每过一分钟飞过去拼成新的时间。鼠标划过会吹散,点一下会炸开。

一只会看你的猫

像素猫在屏幕底部散步、坐下、舔爪、打盹。鼠标移上去它会看着你,点它会跳一下,拖起来就被拎着后颈晃。橘猫、灰虎斑、黑猫、奶牛猫,四种毛色。

它的窗口是透明的,只有猫身上那一块接住鼠标,其他地方的点击会落到下面的窗口上。

在后台,
安安静静

动态内容一直开着,就得懂得让路。DesktopEngine 替你定好了播放规则:

其他应用全屏时
壁纸继续、静音还是暂停,由你决定。
使用电池时
壁纸同样可选;小组件和伙伴最多每秒 30 帧。
看不见的时候
被挡住的内容停止绘制。显示器睡眠时,全部暂停并静音。
全局
一个帧率上限管住所有内容;每个内容单独调音量,菜单栏一键静音。
一个粒子时钟小组件,按电源状态调整帧率

60 帧每秒

帧率是真的:这是粒子时钟每秒实际运行的帧数。

会写网页,就会写它

壁纸、小组件和桌面伙伴都是 JavaScript 或 TypeScript 小程序。Canvas 2D、WebGL 2、Web Audio、fetch 和 WebSocket 都是你熟悉的样子,three.js 和 PixiJS 直接能用。它们跑在原生的 JavaScriptCore 上,WebGL 2 经 ANGLE 翻译成 Metal。

src/index.js
代码运行的效果

          

改左边的代码,右边立刻重新载入,就像 desktopengine dev 在 App 里做的那样。

  1. 新建

    desktopengine create wallpaper ripple --renderer three

    壁纸、小组件、桌面伙伴三种模板,都是 TypeScript。壁纸可以选 Canvas 2D、WebGL、three.js 或 PixiJS。

  2. 调试

    desktopengine dev ripple

    在 App 里运行,保存即重新载入。console 输出和异常回到终端,也可以用 Safari 网页检查器打断点。

  3. 打包

    desktopengine pack ripple

    生成一个 .zip,在 App 里导入就能用。

放到你的桌面上

需要 macOS 12 或更新版本。动态壁纸和小组件需要支持 Metal 的 Mac,图片和视频壁纸在任何 Mac 上都能用。

下载 DesktopEngine

官网下载版包含屏幕保护程序:任何一张壁纸都能设成屏保。