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

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

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

insira a descrição da imagem aqui

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?

Responder1

Você pode criar um novo item de menu que faça isso criando umServiçoque recebearquivos e pastascomo entrada emqualquer aplicativono 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:

  • Execute o ShellScript
  • Execute o AppleScript

O código abaixo implementa oAlternarcomando, pois é o mais complexo.

Execute o ShellScript

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

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

insira a descrição da imagem aqui

Use o seguinte snippet de código de script bash como parte da ação Executar Shell Script:

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 entradacomo argumentos.

 Execute o AppleScript

Use o seguinte trecho 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 exemplo, porque faltam permissões, uma caixa de diálogo será exibida por arquivo que não foi alterado.

insira a descrição da imagem aqui

informação relacionada