linux KDE (xdotool) 不用输密码实现快速关机

关机有很多种方式, 常用的可能就是以下几种

配置按下电源键关机

这个方法其实很快, 但是位置太远了 🤥

通过命令行

1
sudo shutdown -h now

但这个的缺点是要输密码

通过快捷键加鼠标

如上图所示, 先点第一个点再点第二个点, 或者先按Super 再点第二个点

使用xdotool 来模拟鼠标事件, 实现自动关机

安装 xdotool

1
yay -S xdotool

编写关机脚本

~/install_shell/sd.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
#进程名称列表
processes=("WXWork.exe" "WeChat.exe" "chrome" "krusader" "dolphin" "konsole" "emacs")
# 循环检查每个进程
for process in "${processes[@]}"
do
    # 使用pgrep命令检查进程是否存在
    if pgrep "$process" >/dev/null
    then
        # 进程存在,使用killall命令杀死它
        echo "Killing process: $process"
        killall "$process"
    fi
done

xdotool mousemove 2768 10
xdotool click 1
xdotool mousemove 3120 528
sleep 0.5s
xdotool click 1
sleep 1.5s
xdotool key Return

其中的坐标可以通过命令 xdotool getmouselocation 得到
更多用法参考 xdotool --help

编写/home/xxx/Desktop/sd.desktop 文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[Desktop Entry]
Categories=Development;
Exec=/home/xxx/install_shell/shutdown.sh
GenericName=System Utility
Icon=emblem-unmounted
Name[en_US]=sd
Name=sd
StartupNotify=true
Terminal=false
Type=Application

创建个软链接以便按Super 键的时候可以找到 sd.desktop

1
ln -s /home/xxx/Desktop/sd.desktop /home/xxx/.local/share/applications/sd.desktop

使用

Super => sd => Enter