diff options
-rw-r--r-- | contrib/pass.applescript | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/contrib/pass.applescript b/contrib/pass.applescript new file mode 100644 index 0000000..4720fff --- /dev/null +++ b/contrib/pass.applescript @@ -0,0 +1,92 @@ +--------------------------------------------------------------------------------------------- +-- Applescript for easy invocation of 'pass' +--------------------------------------------------------------------------------------------- +-- +-- Author: Steffen Vogel <post@steffenvogel.de> +-- Tested with: OS X 10.10 Yosemite +-- +-- Installation: +-- +-- 1. Copy this script to /Library/Scripts/pass.applescript +-- +-- 2. Use the Automator to create a service which starts the following AppleScript: +-- +-- on run {input, parameters} +-- run script POSIX file "/Library/Scripts/pass.applescript" +-- end run +-- +-- 3. Install the application 'Notifications Scripting' from: +-- http://www.cooperative-fruitiere.com/notifications/NotificationsScripting.dmg +-- +-- 4. Go to 'System Settings' -> 'Keyboard' to create a short cut for the service +-- you created before +-- +-- 5. Go to 'System settings' -> 'Notifications' -> choose 'Notifications Scripting' +-- -> and switch from 'Banners' to 'Alerts' +-- +--------------------------------------------------------------------------------------------- + +-- Configuration +property defPass : "root" +property clearAfter : 45 +property shellPath : "/opt/local/bin:/usr/local/bin:$PATH" + +-- Translation +set lang to user locale of (get system info) +if (lang = "de_DE") then + set nTitle to "Password-store" + set nPrompt to "Welches Password wird benštigt?" + set nClear to "Vergesse" +else -- if (lang = "en") + set nTitle to "Password-store" + set nPrompt to "Which password do you want?" + set nClear to "Forget" +end if + +try + set entity to the text returned of (display dialog nPrompt default answer defPass buttons {"OK"} with title nTitle default button 1) + set pw to do shell script "export PATH=" & shellPath & "; pass " & entity + + set the clipboard to pw + + -- Wait until clipboard changed then close notification + repeat with secsLeft from 0 to clearAfter + if pw is equal to (the clipboard) then + tell application "Notifications Scripting" + set event handlers script path to (path to me) + display notification nTitle id "pass" message "Password copied to clipboard (" & (clearAfter - secsLeft) & " secs left)" action button nClear with has action button + end tell + delay 1 + else + exit repeat + end if + end repeat +on error errMsg + display dialog errMsg with title nTitle with icon stop +end try + +-- Clear clipboard +set the clipboard to "" +closeNotifications() + +-- Handle click to notification: +using terms from application "Notifications Scripting" + on notification activated + set the clipboard to "" + end notification activated +end using terms from + +-- Close all Notifications +on closeNotifications() + tell application "System Events" + tell process "NotificationCenter" + set theWindows to every window + repeat with i from 1 to number of items in theWindows + set this_item to item i of theWindows + try + click button 1 of this_item + end try + end repeat + end tell + end tell +end closeNotifications |