feat(x11): migrate to pure Xlibre + dwm/dmenu/st stack, fix fcitx5-t9 bottom bar, PM8909 PON shutdown, and remove Wayland
This commit is contained in:
Executable
+60
@@ -0,0 +1,60 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
# Copyright 2022 Sxmo Contributors
|
||||
# shellcheck source=scripts/core/sxmo_common.sh
|
||||
. sxmo_common.sh
|
||||
|
||||
if [ "$1" = clear ]; then
|
||||
rm -f "$XDG_RUNTIME_DIR"/sxmo.multikey.count.*
|
||||
exit
|
||||
fi
|
||||
|
||||
identifier="$1"
|
||||
threshold="${SXMO_THRESHOLD:-0.15}"
|
||||
|
||||
# Fast path: when locked or screenoff, single/double/triple presses on power/pickup
|
||||
# all wake and unlock the phone, so execute immediately without waiting 300ms.
|
||||
STATE_FILE="${SXMO_STATE:-$XDG_RUNTIME_DIR/sxmo.state}"
|
||||
if [ -r "$STATE_FILE" ]; then
|
||||
read -r cur_state < "$STATE_FILE" 2>/dev/null || cur_state=""
|
||||
if [ "$cur_state" != "unlock" ]; then
|
||||
case "$identifier" in
|
||||
powerbutton|pickup)
|
||||
rm -f "$XDG_RUNTIME_DIR"/sxmo.multikey.count."$identifier"
|
||||
exec sxmo_hook_inputhandler.sh "$2"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
count_file="$XDG_RUNTIME_DIR"/sxmo.multikey.count."$identifier"
|
||||
|
||||
if [ -f "$count_file" ]; then
|
||||
read -r old_counter < "$count_file" 2>/dev/null || old_counter=0
|
||||
counter="$((old_counter+1))"
|
||||
else
|
||||
counter=1
|
||||
fi
|
||||
|
||||
printf %s "$counter" > "$count_file"
|
||||
|
||||
shift "$counter"
|
||||
if [ "$#" -eq 0 ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
sleep "$threshold"
|
||||
|
||||
read -r new_counter < "$count_file" 2>/dev/null || new_counter="$counter"
|
||||
if [ "$counter" != "$new_counter" ] && [ "$#" -ne 1 ]; then # Only the last count can overflow
|
||||
exit
|
||||
fi
|
||||
|
||||
eval sxmo_hook_inputhandler.sh "$1" &
|
||||
|
||||
if [ "$counter" != "$new_counter" ]; then # overflowed
|
||||
sleep "$threshold"
|
||||
sleep "$threshold"
|
||||
fi
|
||||
|
||||
rm -f "$count_file"
|
||||
Reference in New Issue
Block a user