xdotool, abra e feche o Unity Dash na inicialização

0

no Ubuntu 14.04, a primeira pesquisa do Unity Dash é muito mais lenta que as seguintes pesquisas.

Com o xdotool, estou tentando abrir e fechar a interface do usuário do Unity Dash na inicialização do Ubuntu.

~ / .config / autostart / 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 / autostart / unity_dash_update.sh

#!/bin/bash
sleep 1
xdotool key Alt+F2
sleep 3
window="$(xdotool getactivewindow)"
xdotool key --window $window "Escape"
exit 0

Se eu executar manualmente o script bash, a coisa funciona, mas durante a inicialização do sistema, o Dash aparece e não desaparece.

Eu tentei com ou sem tempo de espera entre a execução do xdotool, sem sucesso.

O que estou fazendo de errado?

atualizar

Como Jacob Vlijm sugere, o parâmetro Exec estava errado, porque deve ser um caminho absoluto.

Isso foi culpa minha, porque tentei uma maneira rápida (rápida demais) de remover meu nome do código que estava postando.

Sinto muito.

Portanto, um arquivo .desktop corrigido seria

[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=

Obrigado Jacob por sua ajuda.

    
por nulll 01.02.2016 / 21:30

2 respostas

1

dbus na verdade tem um método para fechar o menu Dash. Usando qdbus seu script pode ser alterado da seguinte forma:

#!/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

Note que, além disso, aumentei o tempo de sono para 10 segundos, pois o Unity pode demorar para ser iniciado. Assim, se Unity não tiver iniciado ainda, isso fará com que o script execute comandos, mas esses comandos não terão efeito.

    
por Sergiy Kolodyazhnyy 03.02.2016 / 21:34
1

Você tem alguns problemas em sua configuração: um definitivamente fará com que não funcione, o outro mais provável:

1. O mais importante:

No arquivo .desktop , você usa:

Exec=~/.config/autostart/unity_dash_update.sh

mas ~ não funciona em um arquivo .desktop , você precisa usar o caminho absoluto, a menos que seu script esteja em $PATH (e executável), então simplesmente execute-o nome.

2. Provavelmente, você precisa definir uma pausa antes de o comando ser executado

Agora, ele é executado muito cedo e pode falhar ou perder o alvo. Este é frequentemente o caso com:

  • comandos relacionados ao touchpad, mouse e teclado (configurações).
  • Comandos xrandr , especialmente quando um segundo monitor está conectado
  • Indicadores

e mais alguns ... Comandos relacionados à unidade estão na lista por definição, já que é relacionado à área de trabalho por natureza.

Concluindo: altere sua linha Exec= para:

Exec=/bin/bash -c "sleep 15 && /absolute/path/to/unity_dash_update.sh

EDITAR

Notas Importantes

  1. Na sua pergunta, você menciona que "a pesquisa do Unity Dash é muito mais lenta" . No entanto, o comando xdotool não chama Unity Search , mas a entrada de comando. Para chamar Unity Search , basta pressionar (virtualmente) Super . Então faça o script:

    xdotool key Super && sleep 3 && xdotool key Super
    

    Ou melhor, não use um script , , e adicione isso a aplicativos de inicialização, incluindo a quebra que você precisa antes de executar:

    /bin/bash -c "sleep 15 && xdotool key Super && sleep 3 && xdotool key Super"
    

    Claro que você pode experimentar o sleep 15 time.

  2. Seu arquivo .desktop é bastante estendido, enquanto para um trabalho básico como executar um script na inicialização:

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

    é suficiente.
    Se você usa menos, menos pode dar errado:)

    Veja também aqui .

  3. Se você insistir em usar um script separado, não o armazene em ~/.config/autostart . Esse diretório é especificamente destinado a inicializadores de inicialização (log in).

por Jacob Vlijm 03.02.2016 / 21:48