我希望在网络环境发生变化时,使用不同的配置运行wtome wm。因此我在网络管理器调度程序中编写了一个脚本,以便在网络环境发生变化时执行脚本;
#!/bin/bash
# Restart awesome through awesome-client
USER=dreamingo
awesome_restart(){
/bin/su $USER -c "echo 'local awful = require (\"awful\"); return awful.util.restart()' | awesome-client"
}
#To check the cable insert or not
wire_insert_state=$(cat /sys/class/net/eth0/carrier)
#Check which config the current awesome taking(wired or wireless)
current_config=$(cat ~/.config/awesome/flag)
# if [[ $wire_insert_state = 1 ]] && [[ $current_config == "wireless" ]];then
if [[ $wire_insert_state = 1 ]];then
cp /home/dreamingo/.config/awesome/rc.lua.wire /home/dreamingo/.config/awesome/rc.lua
echo wired > ~/.config/awesome/flag
awesome_restart
# elif [[ $wire_insert_state = 0 ]] && [[ $current_config == "wired" ]];then
elif [[ $wire_insert_state = 0 ]];then
cp /home/dreamingo/.config/awesome/rc.lua.wireless /home/dreamingo/.config/awesome/rc.lua
echo wireless > ~/.config/awesome/flag
awesome_restart
fi
然而,这个脚本确实在环境发生变化时运行,但很棒的wm不会重新启动。
我认为这是脚本由root执行的原因,因此我使用以下命令:
/bin/su $USER -c "echo 'local awful = require (\"awful\"); return awful.util.restart()' | awesome-client"
当我su到root时,这个命令会起作用(重启awesome wm);但是,当我使用时:
sudo ./02check_wireless #02check_wireless was the name of the script
运行脚本,脚本无法重启wm;但是当我把它作为当前用户(dreamingo)运行时,它可以工作;
此外,无论上述结果(成功与否),脚本都会输出:
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.naquadah.awesome.awful was not provided by any .service files
我认为失败者也试图重新启动真棒,但覆盖或阻止它......
答案 0 :(得分:0)
当我以root身份运行
时,这个变种对我来说非常好用3.5.5#!/bin/bash
# Restart awesome through awesome-client
USER=my_username_here
awesome_restart(){
/bin/su $USER -c "echo 'awesome.restart()' | awesome-client"
}
awesome_restart