Customizing the UI
Currently there is no configuration for customizing the UI of Neko. You need to modify the source code to change the UI.
# Clone the repository
git clone https://github.com/m1k1o/neko
# Change to the client directory
cd neko/client
# Install the dependencies
npm install
# Build the project
npm run build
You can mount your newly created UI files to the container to /var/www to overwrite the default files. The Neko web server will automatically reload the new files when they are changed. You can use the following command to mount your new UI files to the container:
services:
neko:
image: "ghcr.io/m1k1o/neko/firefox:latest"
restart: "unless-stopped"
shm_size: "2gb"
ports:
- "8080:8080"
- "52000-52100:52000-52100/udp"
volumes:
- "./client/dist:/var/www"
environment:
NEKO_DESKTOP_SCREEN: 1920x1080@30
NEKO_MEMBER_MULTIUSER_USER_PASSWORD: neko
NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: admin
NEKO_WEBRTC_EPR: 52000-52100
NEKO_WEBRTC_ICELITE: 1
Query parameters
You can use query parameters to customize the Neko web interface. These parameters can be added to the URL when accessing the Neko web interface. The following table lists the available query parameters:
| Query Parameter | Description |
|---|---|
?usr=<username> | Prefills the username field. |
?pwd=<password> | Prefills the password field. |
?cast=1 | Hides all controls and shows only the video. |
?embed=1 | Hides most additional components and shows only the video. |
?volume=<0-1> | Sets the volume to the given value (between 0 and 1). |
?scroll=<1-100> | Sets the scroll sensitivity to the given value (1-100). |
?lang=<language> | Sets the language to the given value. |
?show_side=1 | Shows the sidebar on startup. |
?mute_chat=1 | Mutes the chat on startup. |
You can combine multiple query parameters in the URL. For example, to set the username to guest, the password to neko, and enable casting mode, you can use the following URL:
Example: http(s)://<URL:Port>/?pwd=neko&usr=guest&cast=1
Single-user setup
If you are running Neko for personal use only, you can streamline the experience in two ways:
1. Hide the control panel with ?embed=1
Append ?embed=1 to the URL to hide most additional UI components (sidebar, control bar, chat) and display only the video. This removes the clutter when you do not need multi-user controls.
Example: http(s)://<URL:Port>/?embed=1
2. Gain control automatically with implicit_hosting
By default, a user must explicitly request control of the mouse and keyboard. With session.implicit_hosting enabled, Neko automatically grants control to the user the moment they interact with the screen, without requiring them to press a button.
environment:
NEKO_SESSION_IMPLICIT_HOSTING: "true"
Combining both gives a clean, single-user experience where you open the page and immediately have full control without any extra clicks.