在 Ubuntu 14.04 上,第一次 Unity Dash 搜索比后续搜索慢得多。
使用 xdotool,我尝试在 Ubuntu 启动时打开然后关闭 Unity Dash 用户界面。
〜/.config/自动启动/unity_dash_update.desktop
[Desktop Entry]
Type=Application
Exec=~/.config/autostart/unity_dash_update.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[it]=Unity Dash Update
Name=Unity Dash Update
Comment[it]=
Comment=
〜/.config/自动启动/unity_dash_update.sh
#!/bin/bash
sleep 1
xdotool key Alt+F2
sleep 3
window="$(xdotool getactivewindow)"
xdotool key --window $window "Escape"
exit 0
如果我手动运行 bash 脚本,它可以工作,但在系统启动期间 Dash 会出现并且不会消失。
我尝试过在 xdotool 执行之间设置或不设置休眠时间,但都没有成功。
我做错了什么?
更新
正如 Jacob Vlijm 所说,该Exec
参数是错误的,因为它必须是绝对路径。
这是我的错,因为我尝试以一种快速(太快)的方式从我发布的代码中删除我的名字。
对不起。
因此,更正后的 .desktop 文件将是
[Desktop Entry]
Type=Application
Exec=/home/myname/.config/autostart/unity_dash_update.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[it]=Unity Dash Update
Name=Unity Dash Update
Comment[it]=
Comment=
感谢 Jacob 的帮助。
答案1
dbus
实际上有一个关闭 Dash 菜单的方法。使用qdbus
您的脚本可以进行如下更改:
#!/bin/bash
DISPLAY=:0
sleep 10
xdotool key Alt+F2
sleep 0.25
qdbus com.canonical.Unity /com/canonical/Unity/Dash \
com.canonical.Unity.Dash.HideDash
exit 0
请注意,我另外将睡眠时间增加到 10 秒,因为 Unity 可能需要一些时间才能启动。因此,如果 Unity 尚未启动,这将使脚本运行命令,但这些命令不会产生任何效果。
答案2
您的设置中存在一些问题:一个问题肯定会导致它无法工作,另一个问题最有可能发生:
1.最重要的一点:
在该.desktop
文件中,您使用:
Exec=~/.config/autostart/unity_dash_update.sh
但~
在文件中不起作用.desktop
,您需要使用绝对路径,除非您的脚本已存在$PATH
(并可执行),然后只需通过其名称运行它。
2. 最有可能的是,你需要在命令运行之前设置一个中断
现在它运行得太早,要么会中断,要么会错过目标。通常情况下,情况如下:
- 触摸板、鼠标和键盘(设置)相关命令。
xrandr
命令,尤其是当连接了第二台显示器时- 指标
还有一些... Unity 相关的命令按照定义位于列表中,因为它本质上与桌面相关。
结论:将您的Exec=
线路改为:
Exec=/bin/bash -c "sleep 15 && /absolute/path/to/unity_dash_update.sh
编辑
重要笔记
在你的问题中你提到“Unity Dash 搜索速度太慢”。但是,你的
xdotool
命令不会调用 Unity搜索,而是命令入口。要调用 Unity搜索只需(虚拟地)按下Super即可。然后编写脚本:xdotool key Super && sleep 3 && xdotool key Super
或者最好不要使用脚本根本,并将其添加到启动应用程序中,包括运行之前需要的中断:
/bin/bash -c "sleep 15 && xdotool key Super && sleep 3 && xdotool key Super"
当然你可以尝试一下
sleep 15
时间。您的
.desktop
文件非常扩展,而对于像在启动时运行脚本这样的基本工作来说:[Desktop Entry] Name=name Exec=command Type=Application
就足够了。
如果你用得少,可能会出错 :)也可以看看这里。
如果你坚持使用单独的脚本,请不要将其存储在 中
~/.config/autostart
。该目录专门用于启动(登录)启动器。