A lightweight, native desktop runtime for Arch Linux and KDE Plasma designed to run web-based games (such as RPG Maker MV/MZ) and HTML5 applications natively. It serves as a modern, high-performance alternative to NW.js, utilizing Qt 6 QML (QtWebEngine) for hardware-accelerated UI rendering and Bun as a lightning-fast backend server.
- Dynamic Window Configuration: Reads metadata (title, window size, custom window icons) directly from the application's
package.json. - NW.js & Node.js Compatibility Layer: Exposes key Node.js globals (
require,process,Buffer) and filesystem APIs (fs,path,os,nw.gui) inside the browser context, enabling seamless execution of legacy desktop web games. - Synchronous Filesystem Operations: Intercepts
fsoperations (like reading/writing save files) and forwards them to a local Bun-powered HTTP backend using synchronous XMLHttpRequests. - Built-in Developer Tools: Press
F12inside the app window to toggle the Chrome DevTools panel side-by-side. - KDE Menu Shortcut Integration: Installs web applications natively, creating customized desktop launchers (
.desktop) and menu entries in KDE Plasma. - Unified CLI SDK: Manage all applications with a single, standalone compiled tool (
qmjs).
Ensure you are running Arch Linux with KDE Plasma and have the necessary Qt 6 libraries installed:
sudo pacman -S qt6-declarative qt6-webengine qt6-webchannelTo compile and install the global QMJS CLI tool to your user space (~/.local/bin/qmjs), run:
make installEnsure that ~/.local/bin is in your system's PATH. The installation script automatically appends the export line to your ~/.bashrc if it's not present. Remember to reload your terminal session or run:
source ~/.bashrcOnce installed, the qmjs command is available globally.
Launch any application directory (it should contain package.json directly or inside a www/ subfolder):
qmjs run /path/to/projectNote: If no directory is specified, it defaults to the current directory.
Compiles the application into a standalone folder named after the project (or falls back to qjs_1 if unnamed):
qmjs build /path/to/projectThe output directory will contain a self-contained runtime wrapper and all required game resources.
Compile and register the app in your KDE Plasma application menu:
qmjs install /path/to/projectView all installed applications and their installation folders:
qmjs listRemoves the persistent bundle folder, the .desktop launcher, icon assets, and database registry entries:
qmjs uninstall <app_identifier>Removes all temporary binaries, dist/ folders, and build outputs in the workspace:
make clean
# or
qmjs cleanqmjs/
├── Makefile <- Builds and installs the SDK globally
├── src/
│ ├── cli.js <- Standalone JavaScript CLI application manager
│ ├── main.qml <- QML scene graph container (coordinates WebEngineView)
│ ├── Backend.qml <- KDE process manager for the server execution
│ ├── server.js <- Bun HTTP static and filesystem bridge API server
│ └── bun/ <- Embedded Bun binaries
└── www/ <- Default welcome screen / developer workspace