#!/bin/bash call_dbus() { dbus-send \ --print-reply=literal \ --session \ --dest=org.kde.KWin \ /VirtualKeyboard \ "$@" } active=$(call_dbus \ org.freedesktop.DBus.Properties.Get \ string:org.kde.kwin.VirtualKeyboard \ string:active | awk '{ print $3 }' \ ) case "$active" in true) call_dbus \ org.freedesktop.DBus.Properties.Set \ string:org.kde.kwin.VirtualKeyboard \ string:active \ variant:boolean:false ;; false) call_dbus \ org.kde.kwin.VirtualDesktop.willShowOnActive boolean:true call_dbus \ org.kde.kwin.VirtualKeyboard.forceActivate ;; *) exit 1;; esac