Ich habe das folgende Skript, um eine Diensteverknüpfung festzulegen:
set serviceName to "(null) - VimAnywhere - runWorkflowAsService"
set libPrefPath to POSIX path of (path to preferences folder from user domain as text)
set plistFile to "pbs.plist"
set plistPath to libPrefPath & plistFile as text
set mainPropertyItem to "NSServicesStatus"
set keyBindingKey to "key_equivalent"
set keyBinding to "^@v"
tell application "System Events"
set gp to (get property list item serviceName of property list item mainPropertyItem of property list file plistPath)
tell gp
set value of property list item keyBindingKey to keyBinding
end tell
end tell
do shell script "defaults read > /dev/null"
Dadurch wird ein Tastaturkürzel für einen Dienst festgelegt, den ich in der entsprechenden Eigenschaftsliste definiert habe, und es wird sogar korrekt angezeigt, wenn es in den Systemeinstellungen angezeigt wird. Das Problem ist, dass die Änderung anscheinend nicht wirksam wird . Das Aufrufen der Tastenkombination hat keine Wirkung.
Wie kann ich diese Verknüpfung festlegen und sofort wirksam werden lassen (vollständig über Shell/Applescript)?
Die von AppleScript vorgenommenen Änderungen werden für mich übernommen, nachdem ich Anwendungen beendet und erneut geöffnet habe. Gleiches gilt für diesen Befehl:
/usr/libexec/PlistBuddy -c 'Delete NSServicesStatus:"(null) - VimAnywhere - runWorkflowAsService"' ~/Library/Preferences/pbs.plist 2>/dev/null;defaults write pbs NSServicesStatus -dict-add '"(null) - VimAnywhere - runWorkflowAsService"' '{key_equivalent = "~@v";}'
Ich kenne keine Möglichkeit, die Änderungen anzuwenden, ohne Anwendungen erneut zu öffnen. Ausführen /System/Library/CoreServices/pbs -flush
oder Beenden pbs
scheint nicht zu funktionieren.
Chris Knadler
Lri
sudo killall loginwindow
. Wenn es überhaupt nicht funktioniert, überprüfen Sie, ob es einen Menüpunkt gibt, der Strg-Befehl-V als Abkürzung hat. Die Shortcuts für Menüpunkte haben Vorrang vor den Shortcuts für Dienste.Chris Knadler