Trotz aller Kontroversen bin ich nach wie vor ein sehr großer Fan des Passwortmanagers 1Password.
Vor etwas mehr als zwei Jahren hatte ich auf die verfügbaren Tastaturkürzel der App aufmerksam gemacht und gezeigt, wie man sich über 1Password mini relativ einfach in Webseiten und Apps einloggen kann.
Während das Einloggen auf Webseiten (meistens) mit einem nur einem Klick oder Sprachbefehl erledigt ist, sind zum Einloggen in eine App schon mehrere Schritte notwendig.
Um diesen Workflow abzukürzen, hatte unser geschätzter Kollege Alexander vor gut zwei Wochen ein erstes Video-Tutorial erstellt, in dem er erklärt, wie man sich mit Hilfe von Keyboard Maestro und nur einem Mausklick, einem Shortcut oder auch nur durch das Starten einer App in Accounts einloggen kann.
Damit dieses erste Tutorial problemlos funktioniert, muss 1Password mini allerdings ständig entsperrt sein. Ist es das nicht, was bei vielen Nutzern der Standardfall sein sollte, funktioniert das Makro nicht und man muss sich etwas Neues einfallen lassen. Das hat Alexander auch getan und mit Hilfe des Keyboard Maestro Forums eine Lösung gefunden, die auf nur einem einzigen AppleScript basiert 😲
use AppleScript version "2.4" -- Yosemite (10.10) or later use framework "Foundation" use scripting additions on run set searchTerm to "icloud" tell application "System Events" set preClip to (the clipboard) as text set elements to every UI element whose creator type is "1Ph*" if elements is {} then log "1Password Mini is not running" return false end if set mini to (first item of elements) set miniName to short name of mini log miniName & " is running as " & name of mini set isLocked to my isOPMiniLocked(miniName) open location "x-onepassword-helper://search/" & searchTerm if isLocked then if not (my waitForUnlock(miniName, 10)) then return false end if end if tell its UI element (name of mini) set frontmost to true set i to 0 repeat try if (focused of text field 1 of window 1) is true then tell text field 1 of window 1 set value to searchTerm perform action "AXConfirm" end tell delay 1.0 keystroke "c" using {command down, shift down} delay 0.5 set thePass to (the clipboard) as text exit repeat end if end try delay 0.1 set i to i + 1 if i > 100 then return false end if end repeat tell application "App Store" to activate delay 0.5 keystroke thePass key code 36 set the clipboard to preClip end tell end tell end run on isOPMiniLocked(miniName) tell application "System Events" tell application process miniName perform action "AXPress" of menu bar item 1 of menu bar 1 set isLocked to (subrole of text field 1 of window 1 is "AXSecureTextField") delay 0.1 key code 53 -- Escape key to close 1PMini window if isLocked then log "1Password Mini is locked" return true end if log "1Password Mini is unlocked" return false end tell end tell end isOPMiniLocked on waitForUnlock(pProcessName, pMaxTimeSec) local startTime, elapTime, errMsg set startTime to current application's NSDate's |date|() log startTime tell application "System Events" repeat set elapTime to (-(round ((startTime's timeIntervalSinceNow()) * 100)) / 100.0) if (elapTime > pMaxTimeSec) then set errMsg to "Max Time of " & pMaxTimeSec & " seconds exceeded waiting for " & pProcessName log errMsg return false end if try set roleMode to (subrole of text field 1 of window 1) of (application process pProcessName) if roleMode is "AXSearchField" then return true end if end try delay 0.1 end repeat end tell end waitForUnlock
Ohne jetzt in die Tiefen des Codes einzusteigen, muss gesagt werden, dass dieses Skript nur bedingt universell verwendbar ist. Je nachdem in welche App man sich einloggen möchte, muss das AppleScript an zwei Stellen angepasst werden.
Zum einen direkt am Anfang bei der Suche nach dem in 1Password hinterlegten Login. Zum anderen bei der App, für die ein Login benötigt wird.
Ist nun alles gut?! Mitnichten, denn für Leute wie mich, die eines dieser neumodischen MacBook Pro mit Touch ID verwenden, funktioniert das AppleScript nicht; zumindest wenn man Touch ID zum Entsperren von 1Password verwendet.
Aber auch hier kamen Alexander und ich nach einigen Überlegungen zum Ziel: Keyboard Maestro hat nämlich den Vorteil, dass man Bedingungen an am Bildschirm angezeigte Fenster bzw. Grafiken knüpfen kann.
Somit ist das vorherige AppleScript jetzt in zwei Teile zerhackt, funktioniert aber auch mit Touch ID 😎
Auch hier gilt wieder: das Makro ist nicht universell verwendbar, sondern muss für jeden App-Login an drei Stellen angepasst werden. Zu den aus dem ersten AppleScript bekannten Stellen kommt jetzt noch eine Grafik hinzu, die den gefundenen Login in 1Password mini identifiziert.
Zum finalen Anzeigen bzw. Nutzen der verschiedenen Logins empfiehlt es sich auf die von Keyboard Maestro zur Verfügung gestellten globalen Makro Paletten zu setzen. Hier genügt dann im Endeffekt ein Mausklick und man ist in App X oder App Y eingeloggt.
Um jetzt das ganze Prozedere besser nachverfolgen und auch live in Aktion sehen zu können, hatte Alexander vor ein paar Tagen ein zweites Video erstellt, das das erste Tutorial ergänzt bzw. aktualisiert.
Viel Spaß beim Anschauen 📼
youtube/watch?v=_WVz_Oq4sAE
Die beiden hier vorgestellten Makros können übrigens hier heruntergeladen werden.