Я совсем новичок в этом деле, так что надеюсь никого не обидеть. Я пытаюсь создать значки Desktop.desktop для моего HTPC (домашнего кинотеатра). Каждый значок при нажатии должен открывать URL и разворачивать экран. Мой код ниже делает это, но xdotool не разворачивает. Однако, когда я запускаю свой xdotool на терминале, он работает! Я предполагаю, что коду нужна какая-то задержка между открытием URL и разворачиванием?
[Desktop Entry]
Name=YouTube
Type=Link
URL=https://www.youtube.com/
Comment Terminal=false
Icon=/home/babak/Myicons/YouTube.png
Exec=xdotool search "google chrome" windowactivate --sync key F11
Заранее спасибо.
решение1
Файл .desktop либо откроет URL, либо выполнит команду, но не то и другое одновременно. Чтобы он открыл URL и сделал что-то с созданными окнами, объедините оба действия в строке exec =
.
Есть два способа объединить два действия в одной Exec =
строке.
- Передача нескольких команд в оболочку с помощью такой конструкции, как
sh -c "command 1; command 2". This is a way to pass two commands through a single command: an
Exec=`, обрабатывает только одну команду. - Создайте bash-скрипт, содержащий необходимые команды, и вызовите этот bash-скрипт в своей
Exec=
строке.
Таким образом, удалите строку URL=
и измените Exec=
строку на
sh -c 'google-chrome https://www.youtube.com/ && xdotool search "google chrome" windowactivate --sync key F11'
Вы можете заменить sh
на bash
. Вместо &&
вы также можете использовать ;
, но первый вариант гарантирует, что xdotool
команда будет выполнена только в том случае, если первая команда будет выполнена успешно.
Если есть проблема со временем, попробуйте вставить паузу, например
...&& sleep 0.3 && xdotool
будет ждать 0,3 секунды перед выполнением xdotool
. xdotool
Также имеет встроенную команду sleep, так что && xdotool sleep 0.3 search
тоже должна подойти.