Digamos que você queira instalar o seguinte script encontrado durante a navegação no Ask Ubuntu:
#!/bin/bash
## Sample Script 0.1
## Dependencies: notify-osd
notify-send "Sample nautilus script" "You Selected $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
Dependências
A primeira coisa que você notará é que muitos scripts não serão simplesmente executados fora da caixa. Às vezes, eles dependem de outros pacotes que você pode ou não ter instalado. Nesse caso, nosso script depende de notify-osd
, que vem com o Ubuntu por padrão.
Em outras distros, isso pode não ser o caso e você terá que instalar as dependências antes de usar o script. Se a dependência fizer parte dos repositórios oficiais, você poderá instalá-lo facilmente com apt-get
, por exemplo:
sudo apt-get install notify-osd
Definindo o script
Agora que estamos satisfeitos com todas as dependências, podemos seguir em frente e copiar o script para o nosso sistema. Para fazer isso, primeiro criamos um novo documento em nossa pasta de scripts, que é ~/.gnome2/nautilus-scripts
ou ~/.local/share/nautilus/scripts/
no Ubuntu 13.04 e acima. Esta é uma pasta oculta. A fim de acessá-lo, você terá que abrir o gerenciador de arquivos, pressionar CTRL + L e colar o caminho do diretório na barra de localização.
Em seguida, criaremos um novo documento vazio clicando com o botão direito e selecionando Criar novo documento → Documento vazio . Nomeie o que quiser, mas cuidado: O título escolhido é como a entrada do script aparecerá mais tarde no menu de contexto do Nautilus. Então é melhor escolher um nome descritivo para o documento:
Abraonovodocumentoemumeditordetextodesuaescolhaecontinuecopiandoecolandooconteúdodacaixadecódigoacimanele.Salveesaiadoeditordetexto.
Tornando-oexecutável
Nesteponto,seuscriptestáconfiguradocorretamente,masaindanãofuncionará,jáqueosistemaaindanãooreconhececomoumarquivoexecutável.Paratorná-loexecutável,cliquecomobotãodireitonoseuarquivoeváparaPropriedades→Permissões.MarqueamarcadeseleçãoPermitirExecuçãocomoprogramaefecheodiálogo:
Uso
Agora você deve conseguir acessar o script no seu menu de contexto do Nautilus. Basta clicar com o botão direito do mouse em um arquivo de sua escolha e ir para Scripts - > Nome do script (aqui: Script de exemplo ). Clique na entrada para executar o script nos arquivos selecionados:
Atribuindoumatalhodetecladoaoscript
OsatalhosdetecladoparascriptsNautiluspodemseratribuídoseditandooarquivoaceleradordetecladodoNautilus.NoUbuntu12.04eabaixo,estearquivopodeserencontradoem~/.gnome2/accels/nautilus
.Emversõesmaisrecentes,essearquivofoimovidopara~/.config/nautilus/accels
.Porfavor,notequeoseuscriptsóapareceránoarquivoaceleradordepoisdereiniciaroNautilus(executenautilus-q
,depoisabraoNautilusnovamenteclicandoemseulançador).
Asintaxedoarquivoaceleradorpodeparecerumpoucoavassaladoranocomeço,masnaverdadeébemfácil.Dêumaolhadanestetrecho,porexemplo:
;(gtk_accel_path"<Actions>/ShellActions/ZoomInAccel2" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/ShellActions/TabsNext" "<Primary>Page_Down")
; (gtk_accel_path "<Actions>/ScriptsGroup/script_file:\s\s\shome\sglutanimate\s.gnome2\snautilus-scripts\sSample%20script" "")
; (gtk_accel_path "<Actions>/ShellActions/Search" "<Primary>f")
; (gtk_accel_path "<Actions>/ShellActions/Forward" "<Alt>Right")
Cada linha representa uma atribuição de chave única. O primeiro segmento com aspas duplas designa a ação, o segundo, a combinação de teclas atribuída. Linhas iniciadas com um ponto-e-vírgula são comentadas e atualmente inativas.
Para atribuir um atalho ao seu script, você terá que pesquisar este arquivo pelo nome do script e descomentar a linha correspondente removendo o ponto-e-vírgula. Em seguida, digite o atalho de teclado que você deseja atribuir.
Estes são os modificadores disponíveis e seus códigos de teclas correspondentes:
-
CTRL =
<Primary>
-
ALT =
<Alt>
-
SHIFT =
<Shift>
Você pode encontrar códigos de tecla válidos para todas as outras chaves usando usando xev .
Veja como você teria que modificar a seção acima para atribuir seu script de exemplo a ALT + SHIFT + S :
; (gtk_accel_path "<Actions>/ShellActions/ZoomInAccel2" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/ShellActions/TabsNext" "<Primary>Page_Down")
(gtk_accel_path "<Actions>/ScriptsGroup/script_file:\s\s\shome\sglutanimate\s.gnome2\snautilus-scripts\sSample%20script" "<Alt><Shift>s")
; (gtk_accel_path "<Actions>/ShellActions/Search" "<Primary>f")
; (gtk_accel_path "<Actions>/ShellActions/Forward" "<Alt>Right")
No Ubuntu 12.04 (e talvez versões posteriores também) o Nautilus algumas vezes sobrescreve o arquivo acelerador antes que você possa fazer qualquer alteração. Por isso, pode ser uma boa ideia executar todas as alterações feitas enquanto o Nautilus não está em execução ( nautilus -q
). De qualquer forma, você precisará reiniciar o Nautilus para ver as alterações.
Automatizando a instalação
Este script do Nautilus instalará automaticamente os scripts do Nautilus para você. Por favor, dê uma olhada nos comentários para ver o que está acontecendo nos bastidores:
#!/bin/bash
# AUTHOR: Glutanimate (https://askubuntu.com/users/81372/)
# LICENSE: GNU GPLv3 (http://www.gnu.de/documents/gpl-3.0.en.html)
# NAME: Nautilus Scripts Installer
#
# DESCRIPTION: This script will install Nautilus scripts on Ubuntu 12.04 and above.
# Note: scripts of the same name in the destination folder will be
# overwritten without warning
# general purpose notification function
gui_notify(){
notify-send -i gnome-app-install "Nautilus Scripts Installer" "$1"
}
# check if any files selected
if [[ -z "$@" ]]
then
gui_notify "Error: No files selected."
exit 1
fi
RELEASE="$(lsb_release -r | cut -f2)" # detect Ubuntu release
if [[ "$RELEASE" = "12.04" ]] # set script folder accordingly
then
ScriptFolder="$HOME/.gnome2/nautilus-scripts"
else
ScriptFolder="$HOME/.local/share/nautilus/scripts/"
fi
for Script in "$@"; do
ScriptFilename="${Script##*/}" # get filename via bash string manipulation
cp "$Script" "$ScriptFolder/" # Move script to destination
chmod u+x "$ScriptFolder/$ScriptFilename" # Make it executable for the user
done
gui_notify "The following scripts have been installed: $@"
Como um aparte: Aqui está o script do nautilus Eu costumava gravar os screencasts desta resposta.