Since the current code uses a handcoded approach for popup construction reuse the unused ui file to keep translatable strings. Since UI file in popover.rs runs through glib the strings get translated. Future rework will allow us to get rid of this duplication but since the ui file went unnoticed for so long who could possibly complain. Closes: #315
squeekboard - a Wayland virtual keyboard
Squeekboard is a virtual keyboard supporting Wayland, built primarily for the Librem 5 phone.
It squeaks because some Rust got inside.
Features
Present
- GTK3
- Custom yaml-defined keyboards
- DBus interface to show and hide
- Use Wayland input method protocol to show and hide
- Use Wayland virtual keyboard protocol
Temporarily dropped
- A settings interface
TODO
- Use Wayland input method protocol
- Pick up DBus interface files from /usr/share
Creating layouts
If you want to work on layouts, check out the guide.
Building
Dependencies
See .gitlab-ci.yml or run apt-get build-dep .
Build from git repo
$ git clone https://source.puri.sm/Librem5/squeekboard.git
$ cd squeekboard
$ mkdir _build
$ meson _build/
$ cd _build
$ ninja
To run tests use ninja test. To install squeekboard run ninja install.
Running
$ phoc # if no compatible Wayland compositor is running yet
$ cd ../build/
$ src/squeekboard
Squeekboard honors the gnome "screen-keyboard-enabled" setting. Either enable this through gnome-settings under accessibility or run:
$ gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true
To make the keyboard show you can use either an application that does so automatically, like a text editor or python3 ./tools/entry.py, or you can manually trigger it with:
busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true
Environment Variables
Besides the environment variables supported by GTK and GLib applications
squeekboard honors the SQUEEKBOARD_DEBUG environment variable which can
contain a comma separated list of:
force-show: Show squeekboard on startup independent of any gsettings or compositor requestsgtk-inspector: Spawn gtk-inspector
What the compositor has to support
A compatible compositor has to support the protocols:
- layer-shell
- virtual-keyboard-v1
It's strongly recommended to support:
- input-method-v2
Developing
See doc/hacking.md for this copy, or the official documentation for the current release.