2017-02-04 153 views
0

我正在尝试使AwesomeWM中的壁纸更改过程更轻松,该脚本读取图像的路径并用我给出的路径替换现有的壁纸;然后重新启动WM。xdotool不能在shell脚本中工作

我的代码如下所示:

#!/bin/bash 

if [[ $1 != "" ]] && [ -f $1 ]; then 
     cp $1 /usr/local/share/awesome/themes/modded/background.png 
     xdotool key super+ctrl+r 
else 
     echo 'Invalid file!' 
fi 

不幸的是,xdotool将无法正常工作,我不知道是什么原因,因为如果我从终端发出它(脚本之外),它将重新启动我的窗口管理器完美(超+ ctrl + r重新启动AwesomeWM)。

我知道使用rc.lua的awesome.restart函数会更好,但我不知道如何在shell脚本中实现或包含此代码。

回答

0

如果你想设置壁纸,最好只使用feh或其他外部壁纸设置。此外,您不必(也不应该)重新启动Awesome来设置壁纸。 “真棒方式”是

echo 'require("gears.wallpaper").maximized("'${1}'")' | awesome-client 

其中$ {1}是路径。但再次,feh或类似的工具更适合这份工作。在版本3.4之前,Awesome甚至直接调用了该命令,直到添加了本机墙纸支持。

+0

用'feh --bg-scale $ 1'代替'xdotool'行使它完美工作。 – xvlaze

0

您不必重新启动真棒。您可以使用awesome-client来调用真棒内的函数来加载壁纸。