Win*_*nix 5 scripts lock-screen dbus 16.04
我有一个来自(unix.stackexchange.com - 在屏幕锁定/解锁时运行脚本)的代码片段,我计划修改它,因为 PulseAudio“未记录的功能”在屏幕锁定时将声音从电视切换到笔记本电脑。
代码非常简单:
dbus-monitor --session "type='signal',interface='com.ubuntu.Upstart0_6'" | \
(
while true; do
read X
if echo $X | grep "desktop-lock" &> /dev/null; then
SCREEN_LOCKED;
elif echo $X | grep "desktop-unlock" &> /dev/null; then
SCREEN_UNLOCKED;
fi
done
)
Run Code Online (Sandbox Code Playgroud)
我真的不能说我理解程序/子程序自上而下的流程或循环,但这里有人评论说它有效,我相信他的判断。
问题是我的脚本的命名约定是什么?放置脚本的行业标准目录是什么?我如何调用它?即启动应用程序、rc.local、cron @reboot 等。调用后我相信它会一直运行到下一次重新启动。
即使它只在每周三洗衣之夜使用,它也将永远运行,因此理想情况下它不应该占用太多 CPU 周期。
正如评论中提到的,这里发布了一个稍微改进的版本(在@Serg和@muru的帮助下):
dbus-monitor --session "type='signal',interface='com.ubuntu.Upstart0_6'" | \
(
while read X; do
if [[ "$X" =~ desktop-lock ]]; then
SCREEN_LOCKED;
elif [[ "$X" =~ desktop-unlock ]]; then
SCREEN_UNLOCKED;
fi
done
)
Run Code Online (Sandbox Code Playgroud)
如果它仅供您的用户使用,您可以将其存储在$HOME目录中的任何位置;如果您希望它可供其他用户使用,则可以将其存储在/usr/local/bin中。
dbus-monitor 在本地运行。因此,我只需将脚本添加到启动应用程序:Dash > 启动应用程序 > 添加。添加命令来运行脚本,最好使其可执行,然后只需添加命令:
/path/to/script
Run Code Online (Sandbox Code Playgroud)
可能,由于脚本涉及GUI,因此您需要等待UI完全加载。在这种情况下,请使用:
/bin/bash -c "sleep 10 && /path/to/script"
Run Code Online (Sandbox Code Playgroud)
该脚本所做的只是等待状态更改,监听系统上进程之间的通信。它不会给您的系统增加任何明显的负担。
| 归档时间: |
|
| 查看次数: |
2050 次 |
| 最近记录: |