我正在尝试在从挂起状态恢复后运行一个脚本。我需要这个脚本来禁用触摸板上的右键单击并修复我的 wifi 问题。因此如何在恢复后和解锁屏幕后运行脚本我在 /etc/pm/sleep.d 中放置了一个名为 autorun.sh 的脚本:
#! /bin/bash
case "$1" in
hibernate|suspend)
sudo -u giorgio env DISPLAY=:0 zenity --info synclient TapButton2=0
sudo -u giorgio env DISPLAY=:0 zenity --info modprobe iwlagn 11n_disable=1
exit
;;
thaw|resume)
sudo -u giorgio env DISPLAY=:0 zenity --info synclient TapButton2=0
sudo -u giorgio env DISPLAY=:0 zenity --info modprobe iwlagn 11n_disable=1
exit
;;
esac
exit
问题是,当我恢复时,我意识到脚本实际上并没有起作用(右键单击没有被禁用)并且在日志文件 /var/log/pm-suspend.log 中我有以下几行:
Running hook /etc/pm/sleep.d/autorun.sh resume suspend:
(process:15304): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
(process:15310): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
我遗漏了什么?提前致谢。
答案1
尝试这个:
#!/bin/bash
case "$1" in
hibernate|suspend|thaw|resume)
export DISPLAY=:0.0
sudo -u giorgio synclient TapButton2=0
sudo -u giorgio modprobe iwlagn 11n_disable=1
;;
esac
一些东西。
- 您的
case
语句有两个分支,但它们都执行相同的操作,因此我将其缩短为单个分支。我认为除了 之外您没有其他选择hibernate|suspend|thaw|resume
,但为了以防万一,我将其保留在那里。 - 根据我的评论,你不需要
exit
。 - 我不是 100% 确定它的
env DISPLAY=:0
作用是什么,但是我用我知道有效的东西(并且更简洁)替换了它。 - 根据我的评论,
zenity
是为了创建对话框,所以我认为你一定在某些地方有点困惑。