更新

更新

在 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

编辑

重要笔记

  1. 在你的问题中你提到“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时间。

  2. 您的.desktop文件非常扩展,而对于像在启动时运行脚本这样的基本工作来说:

    [Desktop Entry]
    Name=name
    Exec=command
    Type=Application
    

    就足够了。
    如果你用得少,可能会出错 :)

    也可以看看这里

  3. 如果你坚持使用单独的脚本,请不要将其存储在 中~/.config/autostart。该目录专门用于启动(登录)启动器。

相关内容