2017-02-04 141 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來調用真棒內的函數來加載壁紙。