diff --git a/README.md b/README.md index 4afdc40..db11fd8 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,13 @@ -# tablet-mode +# Chuwi Minibook tablet mode switch -Allow users to toggle a convertible laptop between laptop and tablet mode. +Allow users to toggle a Chuwi Minibook laptop between laptop and tablet mode. +This is based on https://github.com/conqp/tablet-mode. -## Configuration +## Installation -The devices to be deactivated in either *tablet* or *laptop* mode must be specified in `/etc/tablet-mode.json`. -You can specify whether desktop notifications shall be send when changing the mode using the `notify` flag. -If specified, you can override `sudo` to provide another program that accepts commands to be run as root without a password -by the current user to elevate privileges, such as *doas*. - -```json -{ - "tablet": [ - "/dev/input/by-path/platform-i8042-serio-0-event-kbd", - "/dev/input/by-path/platform-i8042-serio-1-event-mouse" - ], - "notify": false, - "sudo": "/usr/bin/doas" -} -``` +Just run `install.sh` on your Debian system and enter the name of you local user account. +Reboot after successful installation. ## Usage -You must be a member of the group `tablet` to toggle between tablet and laptop mode. You can toggle between tablet and laptop mode by running `setsysmode toggle` or use the desktop icon provided with this package. diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..990b345 --- /dev/null +++ b/install.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +set -eu + +GROUP=tablet + +if ! [ $(getent group "$GROUP") ]; then + echo "Add tablet group..." + /usr/sbin/groupadd tablet +fi + +read -p "Enter your local username: " user + +if ! [ $(groupmems -g "$GROUP" -l | grep "$user" ) ]; then + echo "Add user to group..." + usermod -a -G tablet "$user" +fi + +echo "Copy files..." +cp -r tabletmode/ /usr/local/lib/python3.11/dist-packages +cp tablet-mode.service /etc/systemd/system +cp laptop-mode.service /etc/systemd/system +cp tablet-mode.json /etc/ +cp tablet-mode.desktop /home/"$user"/.local/applications +cp tablet-mode.sudoers /etc/sudoers.d/tablet-mode +cp setsysmode /usr/local/bin +chmod +x /usr/local/bin/setsysmode +cp sysmoded /usr/local/bin +chmod +x /usr/local/bin/sysmoded + +echo "Reload systemd..." +systemctl daemon-reload + +echo "Install packages..." +apt install evtest -y diff --git a/laptop-mode.service b/laptop-mode.service index 7f9bd26..93e4f27 100644 --- a/laptop-mode.service +++ b/laptop-mode.service @@ -3,7 +3,7 @@ Description=Configure system for laptop mode Conflicts=tablet-mode.service [Service] -ExecStart=/usr/bin/sysmoded laptop +ExecStart=/usr/local/bin/sysmoded laptop StandardOutput=null [Install] diff --git a/setsysmode b/setsysmode new file mode 100644 index 0000000..fb31d1f --- /dev/null +++ b/setsysmode @@ -0,0 +1,8 @@ +#! /usr/bin/env python3 +"""Sets the system mode.""" + +from tabletmode.cli import main + + +if __name__ == '__main__': + main() diff --git a/sysmoded b/sysmoded new file mode 100644 index 0000000..347aca9 --- /dev/null +++ b/sysmoded @@ -0,0 +1,8 @@ +#! /usr/bin/env python3 +"""System mode daemon.""" + +from tabletmode.daemon import main + + +if __name__ == '__main__': + main() diff --git a/tablet-mode.desktop b/tablet-mode.desktop index b077626..2c3a375 100644 --- a/tablet-mode.desktop +++ b/tablet-mode.desktop @@ -2,6 +2,6 @@ Comment=Toggle tablet mode Terminal=false Name=Tablet Mode -Exec=/usr/bin/setsysmode toggle +Exec=/usr/local/bin/setsysmode toggle Type=Application Icon=pda-symbolic diff --git a/tablet-mode.json b/tablet-mode.json new file mode 100644 index 0000000..14f657e --- /dev/null +++ b/tablet-mode.json @@ -0,0 +1,7 @@ +{ + "tablet": [ + "/dev/input/by-path/platform-i8042-serio-0-event-kbd", + "/dev/input/by-path/pci-0000:00:14.0-usb-0:9:1.0-event-mouse" + ], + "notify": false +} diff --git a/tablet-mode.service b/tablet-mode.service index 5ca2d1d..fc893e7 100644 --- a/tablet-mode.service +++ b/tablet-mode.service @@ -3,7 +3,7 @@ Description=Configure system for tablet mode Conflicts=laptop-mode.service [Service] -ExecStart=/usr/bin/sysmoded tablet +ExecStart=/usr/local/bin/sysmoded tablet StandardOutput=null [Install]