我正在尝试在 Skype 运行时停止屏幕保护程序。我试图在 bash 脚本中执行此操作(我想在 Bash 中执行此操作)。bash 脚本非常简单:我启动 Skype,当 Skype 运行时,我希望脚本关闭屏幕保护程序。当我关闭 Skype 时,我希望屏幕保护程序打开。我想获得我提到的方法(bash 脚本)。
我的脚本如下:
##############
my_script.sh
#!/bin/bash
skype &
screensaver.sh &
PID=$(ps -opid= -C mousepad)
while [[ ( -d /proc/$PID ) && ( -z `grep zombie /proc/$PID/status` ) ]]; do
sleep 1
done && killall screensaver.sh && xdotool mousemove 100 100
##############
screensaver.sh # It's a script to move the mouse every 300s
#!/bin/bash
while [ 1 ]; do
xdotool mousemove 000 000 &
sleep 300
xdotool mousemove 000 001 &
sleep 300
done
在 skype 运行时,脚本会通过 while 子句而不会停止。我对编程的了解有限,因此希望得到简单的解释。感谢您的任何想法。
答案1
此命令禁用 Ubuntu 中的屏幕锁定:
gsettings set org.gnome.desktop.lockdown disable-lock-screen true
您可以跳过第二个脚本并直接执行:
#!/bin/bash
skype &
gsettings set org.gnome.desktop.lockdown disable-lock-screen true
{
while pgrep -x skype >/dev/null; do
sleep 1
done
gsettings reset org.gnome.desktop.lockdown disable-lock-screen
} &
编辑:
对于 Xubuntu,有四个命令可以禁用屏幕锁定:
gsettings set apps.light-locker light-locker-enabled false
gsettings set apps.light-locker late-locking false
gsettings set apps.light-locker lock-on-lid false
gsettings set apps.light-locker lock-on-suspend false
我不知道是否所有四个都是需要的,但是这些是用于访客会话的。
答案2
最后,感谢 DopeGhoti,我找到了解决方案:https://unix.stackexchange.com/questions/342936/bash-how-to-make-a-process-works-while-skype-is-working
#!/bin/bash
skype &
skype_PID=$!
screensaver.sh &
process_PID=$!
wait $skype_PID
kill $process_PID
感谢 Gunnar 的帮助。