Lightweight Native Desktop Application Framework. Write once, run on Linux and Windows. Minimal binary size using system WebView.
A CLI tool for building native desktop applications with HTML, CSS, and JavaScript. Uses the system WebView for minimal binary size: webkit2gtk on Linux, Edge WebView2 on Windows.
- Vanilla JavaScript
- React
- Vue
- Preact
- TypeScript
- CSS/SCSS imports
- Environment variables (.env)
- Hot reload
git clone https://github.com/Kitsuri-Studios/Valkyrie
cd valkyrie
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make installvalkyrie init my-app
cd my-app
npm install
valkyrie dev
valkyrie build
valkyrie build --target=windows
valkyrie packagemy-app/
index.html
app.js
package.json
.env
valkyrie.dialog.showMessageBox({ title: 'Title', message: 'Content' });
valkyrie.dialog.showOpenDialog({});
valkyrie.dialog.showSaveDialog({});
valkyrie.notification.show('title', 'body');
valkyrie.clipboard.writeText('text');
valkyrie.clipboard.readText();
valkyrie.send({ command: 'custom', data: 'payload' });window.onFileOpen = (path) => {};
window.onFolderOpen = (path) => {};
window.onFileSave = (path) => {};
window.onClipboardRead = (text) => {};| Feature | Linux | Windows |
|---|---|---|
| Dialogs | Zenity | Win32 |
| Notifications | notify-send | MessageBox |
| Clipboard | GTK | Win32 |
| File Pickers | Zenity | Win32 |
| WebView | webkit2gtk | Edge WebView2 |
macOS support is experimental. Contributions welcome.
sudo pacman -S mingw-w64-gcc
valkyrie build --target=windowsFirst build downloads and compiles QuickJS and libuv for Windows. Subsequent builds use cached dependencies.
| Framework | Size |
|---|---|
| Electron | 150-300 MB |
| Tauri | 10-20 MB |
| Valkyrie | ~2 MB |
- macOS cross-compilation not yet implemented
- Windows notifications use MessageBox instead of toast notifications
- Hot reload may miss changes on slow storage devices
BSD 3-Clause. See LICENSE for details.
Pull requests are welcome. New features should support both Linux and Windows.