Four WebGL2 worlds run locally on a Mac
A school of fish swims behind your desktop icons, notices the pointer, and competes for pellets dropped from a menu-bar command. Deskworlds supplies four scenes: Riverbed, Coral reef, Betta, and Plasma globe. The first three model aquatic creatures and feeding. The fourth renders branching plasma channels that lean toward the cursor. Each scene also runs in a browser.
The repository used to be called Desktop Habitats, which is why the requested GitHub URL now redirects to chaseleantj/deskworlds. The current package identifies itself as version 1.1.0. Three.js 0.180.0 is bundled, as are the code and textures, so the installed app works offline. The README says there are no accounts, analytics, or external services after setup.
Interaction stays deliberately small. Move the cursor and creatures react. Feed them from the menu, pause the scene, or switch worlds. Each display receives its own world, and the app remembers the selection and pause state. Desktop clicks and icons continue to work because the live scene sits underneath them. That makes Deskworlds feel more like a screensaver that never takes over than a conventional desktop application.
The native wallpaper is Mac-only and installed from source
The wallpaper needs macOS 13 or newer and Apple's Xcode command-line tools. Running sh wallpaper/install.sh builds the app, places it at ~/Applications/Deskworlds.app, launches it, and creates a login item. Node.js is unnecessary for that route. Updating requires a fresh pull or download followed by the same installer, while wallpaper/uninstall.sh removes the app and login item.
That workflow is understandable, but it is not a polished distribution channel. GitHub has no tagged release for the project, so there is no signed versioned download or release history to inspect. Managed-device policies may also block a locally built login app. The upside is clarity: the script does not replace the user's wallpaper, and removal leaves the original image underneath.
Browser use is easier. Node.js 20 or newer starts the included server with npm start, and the local gallery listens on port 8080 by default. Opening index.html directly fails because the scenes use JavaScript modules. The browser controls include pause, feed, fullscreen, hidden controls, and Eco, Balanced, or Detail quality profiles capped at 20, 30, or 60 frames per second.
What happened when we ran it
Our unprivileged Node 22 sandbox installed commit 1be6651 in 8 seconds. Npm added 0 packages because the project vendors the library it needs, and the resulting environment occupied 89 MB. The repository itself had 112 files, about 16,638 lines of source, and a 47.5 MB checkout. Npm audit reported 0 known vulnerabilities across every severity level.
There is no build script or target, so the lab correctly skipped that step. The provided test command succeeded in 22 seconds. The package script runs checks for the gallery plus fish behavior, render policy, plant budgets, reef assets and movement, betta food, and plasma behavior. Our supplied measurement does not include a test count, so a green command is the defensible result.
The repository has no CI workflow and no Dockerfile. Our scan also reported no tests directory, although the npm command names test files nested under the UI and individual scene folders. That layout worked in our sandbox. It does leave contributors without a visible hosted check proving the same command ran on macOS, where the wallpaper shell, WebKit host, window placement, and login behavior actually matter.
Power management helps, but battery life is unmeasured
The README is candid that a live 3D wallpaper uses more power than a still image and supplies no measured battery-life estimate. Plugged in, a visible world may run up to 60 fps. Battery mode cuts that to 30 fps, mostly covered scenes fall to 20 fps, and nearly covered, locked, sleeping, or Low Power Mode desktops stop rendering. Reduce Motion starts the wallpaper paused unless the user previously chose otherwise.
Open issue 6 reports roughly 99% GPU use immediately after launch on an Apple M4 with a 10-core GPU. That is one user's report, not our sandbox result or a general battery benchmark. It is still a serious reason to watch Activity Monitor after installation. Multiple displays render separately, so the README also warns that another screen can raise power use.
Open issue 8 describes a different Mac-specific failure: the aquarium frame can appear while fish and water remain frozen, with the render loop effectively receiving 0 fps during startup. Finder may also place its wallpaper above the live window. A proposed correction exists in pull request 7, but both remained open when checked on October 6, 2026.
Recent pushes show care, while release engineering lags
The repository was pushed on September 30, 2026, less than two weeks after its creation on September 18. GitHub showed 343 stars, 3 open issues, and 5 open pull requests. That activity is healthy for a young visual experiment. It does not replace a release process, automated CI, or Mac-specific regression coverage.
Deskworlds is easy to recommend as source code and a browser toy. The Mac wallpaper deserves a more conditional answer. Install it if these four scenes have the exact mood you want, then check startup, GPU load, battery behavior, and every attached display. Plash is the better Mac choice when the desired background is a website; Windows users should start with Lively instead.

