Option de menu contextuel pour verrouiller / déverrouiller des fichiers plus rapidement dans le Finder

3

Je peux modifier le statut de verrouillage de fichier ("lecture seule") dans le menu contextuel d'un fichier:

enter image description here

Il n'y a pas d'élément de menu pour cela.

Comment créer un élément de menu Finder (contextuel) pour définir, supprimer ou basculer plus rapidement cet indicateur?

Daniel Beck
la source

Réponses:

4

Vous pouvez créer un nouvel élément de menu qui le fait en créant un Un service qui reçoit fichiers et dossiers comme entrée dans toute application dans Automator.

Vous avez deux options de mise en œuvre. Choisissez l'une des deux actions Automator pour créer le flux de travaux du service avec:

  • Exécuter un script shell
  • Exécuter AppleScript

Le code ci-dessous implémente le Basculer commande, car c'est le plus complexe.

Exécuter un script shell

Cette variante utilise stat pour lire les drapeaux définis pour le fichier. Ce sont les mêmes valeurs que celles habituellement affichées en exécutant ls -lO, mais stat est une solution plus propre pour lire les valeurs. Le drapeau verrouillé, ou uchg, a la valeur 0x2C'est ce que nous recherchons.

chflags est utilisé pour changer la valeur, et growlnotify, partie optionnelle de Grognement , utilisé pour afficher des messages de succès ou d’erreur.

enter image description here

Utilisez l'extrait de code de script bash suivant dans le cadre de l'action Exécuter un script 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

Configurez l'action pour recevoir une entrée comme arguments .

Exécuter AppleScript

Utilisez l'extrait de code AppleScript suivant dans le cadre de l'action Exécuter 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

Si l'action échoue, par exemple des autorisations étant manquantes, une boîte de dialogue est affichée par fichier qui n'a pas pu être modifié.

enter image description here

Daniel Beck
la source