我对此很陌生,所以希望不要冒犯。我正在尝试为我的 HTPC(家庭影院电脑)创建 Desktop.desktop 图标。每个图标一旦按下,就会打开 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 =
。
- 使用诸如 Exec=` 之类的构造将多个命令传递给你的 shell,
sh -c "command 1; command 2". This is a way to pass two commands through a single command: an
该行只处理单个命令。 - 创建一个包含所需命令的 bash 脚本,并在您的
Exec=
行中调用该 bash 脚本。
因此,删除该行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
也有一个内置的睡眠命令,所以&& xdotool sleep 0.3 search
也可以解决问题。