Item de menu de contexto para bloquear / desbloquear arquivos no Finder mais rapidamente

3

Posso alterar o status de bloqueio de arquivo ("somente leitura") no menu de contexto de um arquivo:

enter image description here

Não há item de menu para isso.

Como posso criar um item de menu do Finder (contexto) para definir, remover ou alternar esse sinalizador mais rapidamente?

    
por Daniel Beck 23.01.2012 / 23:07

1 resposta

4

Você pode criar um novo item de menu que faz isso criando um Serviço que recebe arquivos e pastas como entrada em qualquer aplicativo no Automator .

Você tem duas opções de implementação. Escolha uma das duas ações do Automator para criar o fluxo de trabalho do Serviço com:

  • Executar script de shell
  • Executar o AppleScript

O código abaixo implementa o comando Toggle , já que é o mais complexo.

Executar script de shell

Esta variante usa stat para ler os sinalizadores definidos para o arquivo. Estes são os mesmos valores normalmente exibidos executando ls -lO , mas stat é uma solução mais limpa para ler os valores. O sinalizador bloqueado, ou uchg , tem o valor 0x2 , e é isso que estamos verificando.

chflags é usado para alterar o valor e growlnotify , parte opcional de Growl , usado para exibir mensagens de sucesso ou de erro.

enter image description here

Use o seguinte trecho de código de script bash como parte da ação Executar script de shell:

for f in "$@"
do
    let "$( stat -f "%f" "$f" ) & 0x2"
    if [ $? -ne 0 ] ; then
        chflags uchg "$f" || /usr/local/bin/growlnotify "Error" -m "Failed to lock $f!"
        /usr/local/bin/growlnotify "Locked File" -m "$f was locked!"
    else
        chflags nouchg "$f" || /usr/local/bin/growlnotify "Error" -m "Failed to unlock $f!"
        /usr/local/bin/growlnotify "Unlocked File" -m "$f was unlocked!"
    fi
done

Configure a ação para receber a entrada como argumentos .

Executar o AppleScript

Use o seguinte snippet de código AppleScript como parte da ação Executar AppleScript:

on run {input, parameters}
repeat with f in input
        try
            tell application "Finder" to set locked of f to (not locked of f)
        on error errmsg
            tell application "Finder" to display alert errmsg
        end try
    end repeat
end run

Se a ação falhar, por ex. porque as permissões estão faltando, um diálogo é exibido por arquivo que não foi alterado.

enter image description here

    
por 23.01.2012 / 23:07