A production-ready, self-hosted VNC web client based on noVNC that supports wlroots compositors (Wayfire/Hyprland) via wayvnc, with automatic dependency installation and unified startup.
- Wayland Support: Native wlroots compositor support via wayvnc
- Existing Session: Connects to your current Hyprland/Wayfire session
- Web Interface: Modern, responsive web client based on noVNC
- Multi-Platform: Supports Ubuntu, Debian, Fedora, and Arch Linux
- One-Click Setup: Single script handles installation and startup
- Production Ready: Automatic dependency management and error handling
Single Command Setup & Launch:
./run.shThat's it! This will:
- Check and install all dependencies automatically
- Start the VNC server (connects to your existing Hyprland session)
- Start the web client with WebSocket proxy
- Display connection information
Manual Setup (if needed):
# Install dependencies only
./install-deps.sh
# Start components separately
./start-vnc-server.sh # VNC server only
./start-web-client.sh # Web client onlyyesVNC/
├── README.md # This file
├── run.sh # Production runner (install + start everything)
├── install-deps.sh # Dependency installation script
├── start-vnc-server.sh # VNC server startup script
├── start-web-client.sh # Web client startup script
├── config/ # Configuration files
│ ├── vnc-config.json # VNC server configuration
│ └── web-config.json # Web client configuration
├── web/ # Web client files
│ ├── index.html # Main web interface
│ ├── app.js # Application logic
│ └── style.css # Styling
├── noVNC/ # noVNC library (auto-downloaded)
└── logs/ # Runtime logs
After running ./run.sh, you can access your desktop via:
- Web Interface: http://localhost:8080
- Direct VNC: localhost:5903 (for VNC clients)
- WebSocket Proxy: localhost:6080
{
"display": 3,
"port": 5903,
"headless": true,
"compositor": "hyprland",
"width": 1920,
"height": 1080,
"depth": 24
}{
"webPort": 8080,
"websocketPort": 6080,
"vncHost": "localhost",
"vncPort": 5903,
"title": "YesVNC - Remote Desktop",
"autoConnect": false,
"encryption": false,
"resizeSession": true,
"showDotCursor": false,
"logging": "warn"
}- VNC server settings (port, display, etc.)
- Web client settings (websocket proxy, authentication, etc.)
- SSH tunnel settings (ports, hosts, etc.)
- Linux system with Wayland support
- Node.js (for websockify proxy)
- Python 3 (for noVNC)
- wayvnc
- Xvfb (for headless X11 displays)
- Hyprland or other wlroots compatible Wayland compositor
- SSH client
MIT License