aboutsummarylogtreecommitdiffstats
path: root/wakeup-triggers.sh
diff options
context:
space:
mode:
authorSávio Carlos Martins Costa2018-06-14 15:13:26 -0300
committerSávio Carlos Martins Costa2018-06-14 15:13:26 -0300
commita8516573f70cc5001b6b31849d79acd5a63edce9 (patch)
tree299c805f8ba76bece896a95c2d51096171933a36 /wakeup-triggers.sh
downloadaur-a8516573f70cc5001b6b31849d79acd5a63edce9.tar.gz
version 0.2.2
Diffstat (limited to 'wakeup-triggers.sh')
-rw-r--r--wakeup-triggers.sh60
1 files changed, 60 insertions, 0 deletions
diff --git a/wakeup-triggers.sh b/wakeup-triggers.sh
new file mode 100644
index 000000000000..5a5c6e75d55c
--- /dev/null
+++ b/wakeup-triggers.sh
@@ -0,0 +1,60 @@
+#!/usr/bin/bash
+
+# This is a script to disable all wakeup triggers but the power button (PWRB)
+# Based on the workaround provided for the problem described on Arch Wiki
+# https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate#Instantaneous_wakeups_from_suspend
+#
+# @author Sávio Carlos Martins Costa (saviocmc at protonmail dot com)
+
+# Sets the character of separation to be the new line \n (the default is a space)
+IFS=$'\n'
+
+WAKEUP=/proc/acpi/wakeup
+CONFIG=/etc/wakeup-triggers.conf
+BACKUP=/tmp/wakeup-triggers
+
+backupAndDisableAllCurrentTriggers() {
+ enabledTriggers=($(cat $WAKEUP | grep "enable"))
+ for trigger in "${enabledTriggers[@]}"; do
+ triggerCode=${trigger:0:4}
+ echo $triggerCode >> $BACKUP
+ echo $triggerCode > $WAKEUP
+ done
+}
+
+enableSelectedTriggers() {
+ selectedTriggers=($(cat $CONFIG | grep --invert-match '#' ))
+ for trigger in "${selectedTriggers[@]}"; do
+ echo $trigger > $WAKEUP
+ done
+}
+
+restoreBackup() {
+ enabledTriggers=($(cat $WAKEUP | grep "enable"))
+ for trigger in "${enabledTriggers[@]}"; do
+ triggerCode=${trigger:0:4}
+ echo $triggerCode > $WAKEUP
+ done
+ backupTriggers=($(cat $BACKUP))
+ for trigger in "${backupTriggers[@]}"; do
+ echo $trigger > $WAKEUP
+ done
+ rm $BACKUP
+}
+
+start() {
+ backupAndDisableAllCurrentTriggers
+ enableSelectedTriggers
+ exit 0
+}
+
+stop () {
+ restoreBackup
+ exit 0
+}
+
+case "$1" in
+ "start") start;;
+ "stop") stop;;
+ *) exit 1;;
+esac \ No newline at end of file