A virtual keyboard for GNU/Linux with Wayland support on KDE Plasma, plus GNOME support via Xwayland, and Ctrl, Alt, Tab and Super (Meta/Win) keys.
Wayland-compatible on KDE Plasma; also works on GNOME via Xwayland.
It supports many themes, as you can see below:
vboard is a lightweight, customizable virtual keyboard designed for Linux desktop systems. It runs as a Wayland-compatible on-screen keyboard on KDE Plasma, and also works on GNOME by falling back to Xwayland. It provides a full on-screen keyboard with modifier keys such as Ctrl, Alt, and Super (Meta/Win), which makes it especially useful for:
- Touchscreen devices without physical keyboards
- Systems with malfunctioning physical keyboards
- Accessibility needs
- Kiosk applications
The keyboard supports customizable colors, opacity settings, and can be easily modified to support different layouts.
- Customizable appearance: Change background color and opacity
- Persistent settings: Configuration is saved between sessions
- Modifier key support: Provide Ctrl, Alt, Tab and Super (Meta/Win) keys
- Desktop compatibility: Native Wayland-friendly behavior on KDE Plasma, with GNOME support via Xwayland fallback
- Hold for repetitive clicks: Keep holding the mouse button to trigger repeated clicks
- Word suggestions: Offers completions from an installed Hunspell dictionary while you type with vboard
- Gesture typing: Swipe across letter keys and vboard will decode the path into a word
- Compact interface: Headerbar with minimal controls to save screen space
- Tray icon support: Keeps vboard running in the background and you can quickly reopen it when needed
- uinput input backend: Injects keys through Linux
uinput
Implementation notes for gesture typing are documented in GESTURE_TYPING.md.
Download the latest .deb from the GitHub Releases page for a lightweight on-screen keyboard with modifier keys such as Ctrl, Alt, Shift, and Super, then install it with:
sudo apt install ./vboard_*.debDO NOT use dpkg. Please use apt. Otherwise, it will not work.
The package post-install step sets up uinput and installs the udev rule needed for desktop-session access to /dev/uinput.
Log out and back in, or reboot, after installation.
You can also use the following PPA in Ubuntu. Run the following commands one by one:
sudo add-apt-repository ppa:apandada1/vboard
sudo apt update
sudo apt install vboardRestart for changes to take effect.
For the latest unreleased changes on Ubuntu and Debian-based systems, use the automated setup script:
git clone https://github.com/archisman-panigrahi/vboard.git
cd vboard
sudo bash setup-ubuntu-debian.shThis script will handle all setup steps including dependency installation, uinput configuration, and system-wide installation. A system restart is recommended after installation.
For Debian/Ubuntu, Fedora, Arch, and other distributions, install the dependencies manually and then build with Meson.
For Debian/Ubuntu-based distributions:
sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0 python3-uinput gir1.2-ayatanaappindicator3-0.1 meson ninja-build --no-install-recommendsOptional for word suggestions:
sudo apt install hunspell-en-usFor Fedora-based distributions:
sudo dnf install python3-gobject python3-cairo gtk3 python3-uinput python3-setuptools libappindicator-gtk3 meson ninja-buildOptional for word suggestions:
sudo dnf install hunspell-en-USIn Fedora KDE, you will also have to create a symlink for qdbus
sudo ln -sf /usr/bin/qdbus-qt6 /usr/local/bin/qdbus6
For Arch-based distributions:
sudo pacman -S python-gobject gtk3 python-uinput python-cairo libayatana-appindicator meson ninjaOptional for word suggestions:
sudo pacman -S hunspell-en_usgit clone https://github.com/archisman-panigrahi/vboard.git
cd vboardRun once with sudo before Meson install:
sudo bash scripts/setup-uinput.shFor system installs, this also installs a udev rule so your logged-in desktop user can access /dev/uinput. If permissions still do not apply, log out/log in or restart your computer.
Global install:
meson setup builddir --prefix=/usr/local
meson compile -C builddir
sudo meson install -C builddirUser-only install:
meson setup builddir-user --prefix=$HOME/.local
meson compile -C builddir-user
meson install -C builddir-userRestart for changes to take effect. On KDE/Plasma, install hooks automatically create the appropriate KWin window rule for vboard using its Wayland application ID instead of the window title.
meson compile -C builddir uninstall-localFor system installs:
sudo meson compile -C builddir uninstall-localAfter installation, open System Settings, search for Virtual Keyboard, and select Vboard.
When launched, vboard presents a compact keyboard with a minimal interface. The keyboard includes:
- Standard QWERTY layout keys
- Arrow keys
- Modifier keys (Shift, Ctrl, Alt, Super)
- Header-bar suggestions that appear while typing words through vboard when a system Hunspell dictionary is available
- Experimental swipe typing on alphabetic keys: drag across the intended letters and release to insert the best matching dictionary word
- ☰ (menu) - Toggle visibility of other interface controls
- Options - Open in-app options for typing, startup, layout, about, bug reports, and quit actions
+ -Increase opacity- -Decrease opacity- Background dropdown - Change the keyboard background color or pick an enhanced color theme
- Right-click a key - Send Shift + that key once
- Tray icon click - Hide or show vboard
- Tray icon right-click - Open tray controls when the tray backend supports a separate context menu
vboard saves its settings to ~/.config/vboard/settings.conf. This configuration file stores:
- Background color
- Theme style
- Text prediction enabled/disabled state
- Gesture typing enabled/disabled state
- Start minimized enabled/disabled state
- Keyboard layout
- Opacity level
- Text color
You can manually edit this file or use the built-in interface controls to customize vboard.
Keyboard layouts are JSON files. Packaged layouts are installed to:
/usr/share/vboard/vboard/layouts/User layouts can be added or overridden in:
~/.config/vboard/layouts/Each layout file defines an id, display label, rows, optional key labels, and optional shifted output. To customize a packaged layout, copy its JSON file into ~/.config/vboard/layouts/, edit it, and restart vboard.
If vboard opens but pressing keys does not type anything, the uinput backend usually could not open /dev/uinput.
- Check whether
uinputexists and inspect its permissions:
ls -l /dev/uinput- Run the setup helper again as root:
sudo bash scripts/setup-uinput.sh- Reload
udevrules and retrigger the device:
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=misc --sysname-match=uinput-
Log out and back in, or reboot, so your desktop session picks up the updated device permissions.
-
If it still does not work, add your user to the
inputgroup and log out/in again:
sudo usermod -a -G input $USERYou can also start vboard from a terminal and look for errors such as Could not initialize uinput backend ([Errno 13]).
Make sure uinput module is loaded:
sudo modprobe uinputTo auto-load at boot:
echo 'uinput' | sudo tee /etc/modules-load.d/uinput.confRun uinput setup script:
sudo bash scripts/setup-uinput.shThis installs the packaged udev rule at /etc/udev/rules.d/70-vboard-uinput.rules for system installs. If needed, reload udev, then log out/log in or reboot:
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=misc --sysname-match=uinputContributions are welcome.
Originally created by mdev588. The original project was archived, and it is now maintained by Archisman Panigrahi.
Original project: https://github.com/mdev588/vboard
Special thanks to honjow for the icon and patches.
Thanks to Yavuz Kagan Yadigar for the enhanced theme inspiration.
Thanks to onboard developers for the droid theme inspiration.
Thanks to the Hunspell project for the suggestion engine.
This project is licensed under GPLv3.
vboard is licensed under the GNU General Public License v3. See LICENSE for details.
Currently only the QWERTY US layout is supported.


