Ajuda com script bash para Docky

5

Vou atribuir este script a um atalho de teclado para que eu possa alternar rapidamente o Autohide para o Docky.

Vou criar um segundo script que desative o Autohide novamente e atribua um atalho de teclado diferente para ele.

O motivo para encerrar e relançar o Docky é porque o Docky não atualiza as configurações da configuração de outra forma. Eu escrevi um comando sudo e suspeito que não funcionará.

Eu quero:

  1. Faça isso sem nenhum comando sudo
  2. Se for possível (não importante), tenha um script unificado que alterne entre "Nenhum" e "Intellihide", para que eu não precise de duas chaves separadas.
  3. Se possível, faça com que o Docky atualize os valores da configuração sem precisar sair e iniciar novamente.
#!/bin/bash 
gconftool-2 -t string -s /apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide "Intellihide" & 
sudo killall dockey & 
docky
    
por Revetahw 16.10.2015 / 12:52

1 resposta

4

Bem, antes de tudo, você está matando o programa errado. Seu script tem sudo killall dockey & , mas você quer matar docky , não dockey . Dito isto, não há absolutamente nenhuma razão para que sudo , docky tenha sido iniciado por seu usuário para que você possa eliminá-lo sem privilégios especiais. Você também não precisa enviá-lo para o segundo plano (isso é o que o & faz).

Você não explicou por que seu roteiro não funciona, mas o que provavelmente está acontecendo é que você o executa e não vê nada acontecendo (por favor, explique sempre quais são os sintomas ao fazer perguntas). Isso porque você está enviando o comando sudo ... para o plano de fundo com & . sudo espera uma senha:

$ sudo ls
[sudo] password for terdon: 

Assim, quando você executá-lo, ele fornecerá uma solicitação solicitando uma senha. Como você o está executando em segundo plano, nunca verá esse prompt e o script ficará parado, esperando que você responda.

Eu não uso docky e não tenho idéia se você pode fazer isso sem reiniciá-lo, mas reiniciar parece ser a opção mais simples. Basta alterar seu script para:

#!/bin/bash

gconftool-2 --get  /apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide | grep -q None &&
    gconftool-2 -t string -s /apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide "Intellihide" ||
    gconftool-2 -t string -s /apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide "None"    

killall docky && docky

O && significa AND , em outras palavras, "execute o próximo comando somente se o anterior tiver sido bem-sucedido". O || ( OR ) é o oposto, "execute o próximo comando se o anterior falhar. Portanto, o script acima consultará primeiro gconf para o estado atual de Autohide . O grep somente ser bem-sucedido se corresponder a None . Se estiver, ele será definido como Intellihide e, caso contrário, será definido como None

Observe que && não é o mesmo que & . O & envia comandos para o segundo plano, conforme descrito acima, e não é necessário, a menos que você queira enviar algo para o segundo plano. Para obter mais detalhes sobre os vários operadores de shell, consulte aqui .

    
por terdon 16.10.2015 / 13:28