xdotool не работает внутри сценария оболочки

Я пытаюсь упростить процесс смены обоев в 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).

Я знаю, что было бы лучше использовать функцию awesome.restart из rc.lua, но я не знаю, как реализовать или включить этот код в мой сценарий оболочки.


person xvlaze    schedule 04.02.2017    source источник


Ответы (2)


Если вы хотите установить обои, лучше просто используйте feh или другой внешний установщик обоев. Кроме того, вам не нужно (и не следует) перезапускать Awesome, чтобы установить обои. "Отличный способ" это

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

Где ${1} — путь. Но опять же, для этой работы лучше использовать feh или аналогичный инструмент. До версии 3.4 Awesome даже сам вызывал эту команду, пока не была добавлена ​​поддержка собственных обоев.

person Emmanuel Lepage Vallee    schedule 04.02.2017
comment
Замена строки xdotool на feh --bg-scale $1 заставила его работать отлично. - person xvlaze; 04.02.2017

Вам не нужно перезапускать круто. Вы можете использовать awesome-client для вызова функции внутри awesome для загрузки обоев.

person jtgd    schedule 02.04.2017