about summary refs log tree commit diff
path: root/osk0-wvkbd-wrapper.sh
diff options
context:
space:
mode:
authorZach DeCook <zachdecook@librem.one>2023-05-20 15:24:44 -0400
committerZach DeCook <zachdecook@librem.one>2023-05-20 15:24:44 -0400
commitf8a542e7019e8e0ed6a12c914a449795086966be (patch)
tree959cc5dbebc8c122b89ec1f83cfa6611dc0055c5 /osk0-wvkbd-wrapper.sh
downloadosk0-wvkbd-wrapper-f8a542e7019e8e0ed6a12c914a449795086966be.tar.gz
osk-wvkbd-wrapper: Basic functionality: reading dbus toggles our keyboard
Diffstat (limited to 'osk0-wvkbd-wrapper.sh')
-rwxr-xr-xosk0-wvkbd-wrapper.sh48
1 files changed, 48 insertions, 0 deletions
diff --git a/osk0-wvkbd-wrapper.sh b/osk0-wvkbd-wrapper.sh
new file mode 100755
index 0000000..0893484
--- /dev/null
+++ b/osk0-wvkbd-wrapper.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+# SPDX-License-Identifier: AGPL-3.0-only
+# Copyright 2022 Sxmo Contributors
+# Copyright 2023 Zach DeCook
+
+KEYBOARD=wvkbd-mobintl
+
+isopen() {
+	if [ -z "$KEYBOARD" ]; then
+		exit 0 # ssh/tty usage by example
+	fi
+	pidof "$KEYBOARD" > /dev/null
+}
+
+open() {
+	if [ -n "$KEYBOARD" ]; then
+		#Note: KEYBOARD_ARGS is not quoted by design as it may includes a pipe and further tools
+		# shellcheck disable=SC2086
+		isopen || eval "$KEYBOARD" $KEYBOARD_ARGS &
+	fi
+}
+
+close() {
+	if [ -n "$KEYBOARD" ]; then # avoid killing everything !
+		pkill "$KEYBOARD"
+	fi
+}
+
+
+dbus-monitor "interface='sm.puri.OSK0',member='SetVisible'" |
+	while read -r line; do
+		echo "$line" | grep -i "boolean.*true" && open
+		echo "$line" | grep -i "boolean.*false" && close
+	done
+
+exit 0
+
+if [ "$1" = "toggle" ]; then
+	close || open
+elif [ "$1" = "close" ]; then
+	if isopen; then
+		close
+	fi
+elif [ "$1" = "isopen" ]; then
+	isopen || exit 1
+else
+	open
+fi