86 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
*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
 | 
						|
 | 
						|
Building
 | 
						|
--------
 | 
						|
 | 
						|
### Dependencies
 | 
						|
 | 
						|
See `.gitlab-ci.yml`.
 | 
						|
 | 
						|
### Build from git repo
 | 
						|
 | 
						|
```
 | 
						|
$ git clone https://source.puri.sm/Librem5/squeekboard.git
 | 
						|
$ cd squeekboard
 | 
						|
$ mkdir ../build
 | 
						|
$ meson ../build/
 | 
						|
$ cd ../build
 | 
						|
$ ninja test
 | 
						|
$ ninja install
 | 
						|
```
 | 
						|
 | 
						|
Running
 | 
						|
-------
 | 
						|
 | 
						|
```
 | 
						|
$ phoc # if no compatible Wayland compositor is running yet
 | 
						|
$ cd ../build/
 | 
						|
$ src/squeekboard
 | 
						|
```
 | 
						|
 | 
						|
### Maintenance
 | 
						|
 | 
						|
Use the `cargo.sh` script for maintaining the Cargo part of the build. The script takes the usual Cargo commands, after the first 2 positionsl arguments: source directory, and output artifact. So, `cargo test` becomes:
 | 
						|
 | 
						|
```
 | 
						|
cd build_dir
 | 
						|
/source_path/cargo.sh /source_path '' test
 | 
						|
```
 | 
						|
 | 
						|
### Testing
 | 
						|
 | 
						|
Testing with an application:
 | 
						|
 | 
						|
```
 | 
						|
python3 tests/entry.py
 | 
						|
```
 | 
						|
 | 
						|
Testing visibility:
 | 
						|
 | 
						|
```
 | 
						|
$ busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true
 | 
						|
$ busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b false
 | 
						|
```
 | 
						|
 | 
						|
Testing layouts:
 | 
						|
 | 
						|
```
 | 
						|
$ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('xkb', 'ua')]"
 | 
						|
$ gsettings set org.gnome.desktop.input-sources current 1
 | 
						|
```
 |