xdotool 在 shell 脚本中无法工作

我正在尝试用一个脚本来简化 AwesomeWM 中的更换壁纸过程,脚本会读取一个图像的路径并用该路径替换现有的壁纸,然后重新启动 WM。

我的代码如下:

#!/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 不起作用,我不知道为什么,因为如果我在终端(不在脚本中)中使用它,它会完美地重新启动我的窗口管理器 (super+ctrl+r 重新启动 AwesomeWM)。

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

点赞
用户1672598
用户1672598

如果你想要设置壁纸,最好使用 feh 或者其他外部的壁纸设置器。而且,你不需要(也不应该)重新启动 Awesome 来设置壁纸。"Awesome 的方式" 是

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

这里的 ${1} 是路径。但再一次强调,feh 或者类似的工具更适合这个任务。直到版本 3.4,Awesome 甚至要自己调用这条命令,直到有了本地的壁纸支持。

2017-02-04 16:02:25
用户3226324
用户3226324

你不需要重新启动 awesome。你可以使用 awesome-client 调用 awesome 中的函数来加载壁纸。

2017-04-02 03:45:14