Die GUI Optionen zu haben ist zwar schön, aber viel zu Umständlich, wenn ich die jedes Mal einzeln alle umstellen muss, wenn ich zwischen den Benutzungsarten wechsle. Daher hatte ich erwartet, dass es längst einen Knopf in der GUI gibt, der genau das macht (und bei dem schlaue Leute vielleicht auch noch an Dinge gedacht haben, auf deren praktischen Mehrwert ich noch gar nicht gekommen bin).
Klar stelle ich gern zur Verfügung, was ich mir schon gescripted habe.
Nicht schön, aber bis auf die bereits erwähnten Punkte funktioniert es so für mich:
File: /opt/tabmode/switch_tabmode.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 | #!/bin/bash
#Anpassung Tabletmode
declare -r strPIDFile="/opt/tabmode/$(basename $0).pid"
declare -r strPIDKeyboard="/opt/tabmode/Keyboard.pid"
declare -r strPIDTouchpad="/opt/tabmode/Touchpad.pid"
declare -r strEventKeyboard="/dev/input/event2"
declare -r strEventTouchpad="/dev/input/event4"
[ -f $strPIDFile ] && { echo "$(basename $0) already running"; exit -1; }
deleteLockFile() {
rm -f $strPIDFile
}
trap "deleteLockFile ; exit 1" 2 9 15
echo $$ > $strPIDFile
if [ -f $strPIDKeyboard ] || [ -f $strPIDTouchpad ]; then
sudo /opt/tabmode/sudo_tabmode.sh
gdbus call --session --dest=org.gnome.Mutter.DisplayConfig --object-path /org/gnome/Mutter/DisplayConfig --method org.gnome.Mutter.DisplayConfig.ApplyMonitorsConfig 1 1 "[(0, 0, 1, 0, true, [('eDP-1', '1920x1080@59.997', [] )] )]" "[]"
gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled false
else
gdbus call --session --dest=org.gnome.Mutter.DisplayConfig --object-path /org/gnome/Mutter/DisplayConfig --method org.gnome.Mutter.DisplayConfig.ApplyMonitorsConfig 1 1 "[(0, 0, 1, 1, true, [('eDP-1', '1920x1080@59.997', [] )] )]" "[]"
gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true
sudo /opt/tabmode/sudo_tabmode.sh
fi
waydroid session stop
deleteLockFile
#sleep 5
exit 0
|
File: /opt/tabmode/sudo_tabmode.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 | #!/bin/bash
#Anpassung Tabletmode
declare -r strPIDFile="/opt/tabmode/$(basename $0).pid"
declare -r strPIDKeyboard="/opt/tabmode/Keyboard.pid"
declare -r strPIDTouchpad="/opt/tabmode/Touchpad.pid"
declare -r strEventKeyboard="/dev/input/event2"
declare -r strEventTouchpad="/dev/input/event4"
[ -f $strPIDFile ] && { echo "$(basename $0) already running"; exit -1; }
deleteLockFile() {
rm -f $strPIDFile
}
trap "deleteLockFile ; exit 1" 2 9 15
echo $$ > $strPIDFile
if [ -f $strPIDKeyboard ] || [ -f $strPIDTouchpad ]; then
if [ -f $strPIDKeyboard ]; then
cat $strPIDKeyboard | xargs kill -9
rm $strPIDKeyboard
fi
if [ -f $strPIDTouchpad ]; then
cat $strPIDTouchpad | xargs kill -9
rm $strPIDTouchpad
fi
else
evtest --grab $strEventKeyboard > /dev/null &
pidKeyboard=$!
echo $pidKeyboard > $strPIDKeyboard
evtest --grab $strEventTouchpad > /dev/null &
pidTouchpad=$!
echo $pidTouchpad > $strPIDTouchpad
fi
deleteLockFile
exit 0
|
Achtung:
Die Befehle in sudo_tabmode.sh erfordern root-Rechte, um zu funktionieren. Daher habe ich das Ganze in zwei Scripte aufgeteilt und die sudo config dahingehend angepasst, dass dieses script vom user mit root-Rechten ausgeführt werden darf, ohne ein Passwort dafür angeben zu müssen. Das stellt ein gewisses Sicherheitsrisiko dar. Ferner kann man auch nicht alle Befehle als Root ausführen, da z.B. für die Bildschirmumstellung die Session des ausführenden Users genutzt wird.
Auf dem Desktop habe ich mir dann einfach eine Verknüpfung (.desktop Datei) auf die switch_tabmode.sh gesetzt, die ich doppelklicken kann (Mousepad oder Bildschirm) und die Anpassungen werden dann hin/zurück umgestellt.
Da Waydroid die Bildschirmdrehung nur durch Neustart der Session übernimmt, stoppe ich bei jeder Ausführung die Session. Wer kein Waydroid nutzt, kann die Zeile entsprechend entfernen. Die richtigen events für evtest und die korrekten Parameter für gdbus muss man ebenfalls selber ermitteln und anpassen.