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 0x2
C'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.
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é.