iOS 12 workflow 配合 AppleScript 實現 Mac 自動初始化

wk2015發表於2018-10-16

在 iOS 12 釋出以後,最好玩的功能莫屬整合到系統的捷徑,也就是之前的 workflow 了,配合 workflow 可以完成一連串的操作,在這裡主要演示下在手機上通過 Siri 語音控制 Mac 完成辦公環境的初始化。

注意

  • Mac 的 ip 應該固定,如果不固定的話,無法實現語音控制,但後邊的指令碼可以在 Mac 本機手動執行
  • 執行過程中,需要部分輔助功能的許可權,剛開始幾次的執行可能會失敗。

2018.11.08 更新

最近又研究了下,發現可以更進一步,配合語音完成 Mac 的解鎖並自動登入微信,解鎖 Mac 需要在 App Store 購買 Unlox(當然如果你有 Apple Watch 的話當我沒說)

AppleScript:

  1. 開啟 Mac 自帶的指令碼編輯器,輸入一下程式碼:

    -- active app
    on active(appName, isfull)
        if application appName is not running then
            tell application appName
                activate
            end tell
            if isfull is equal to 1 then
                fullScreen()
            end if
            if appName is equal to "iTerm" then
                initIterm()
            end if
            if appName is equal to "WeChat" then
             weChatLogin()
         end if
        end if
    end active
    
    -- init iTerm
    on initIterm()
        tell application "iTerm"
            tell current window
                create tab with default profile
                tell current tab
                    tell application "System Events"
                        keystroke "ssh user@ip"
                        keystroke return
                        delay 2
                        keystroke "password"
                        keystroke return
                    end tell
                end tell
            end tell
        end tell
    end initIterm
    
    -- full screen
    on fullScreen()
        delay 1
        tell application "System Events"
            keystroke "f" using {control down, command down}
        end tell
    end fullScreen
    
    -- init samba connect
    on initSamba()
        tell application "Finder"
            open location "smb://user:password@ip"
        end tell
    end initSamba
    
     -- WeChat Login
     on weChatLogin()
         tell application "System Events" to tell process "WeChat"
             set frontmost to true
             click at {640, 440}
         end tell
     end WeChatLogin
    
    -- main
    initSamba()
    active("iTerm", 0)
    active("Mail", 0)
    active("DingTalk", 0)
    active("Visual Studio Code", 1)
    active("Google Chrome", 1)
    active("WeChat", 0)

    說明:

    • initSamba handler 掛載開發機的程式碼目錄
    • active handler 有兩個引數,第一個引數是要開啟的 app,第二個引數是是否要全屏
    • 對於 iTerm 有特殊操作,需要自動新建 tab 並登陸到開發機
    • fullScreen handler 有 1s 的延遲,是因為在開啟某些 app 的時候,app 本身還在啟動中,是不會響應全屏操作的
    • initIterm handler 有 2s 的延遲,是因為需要時間來連線遠端伺服器,這個時間可以根據實際情況調整
    • 可以去掉不需要的 app 和功能,新增自己的操作
    • Mac 平臺的微信不是原生實現,而且也沒找到對應的 script 字典,所以登入的時候得模擬點選登入按鈕,weChatLogin handler 中的 {640, 440} 是微信在我的 Mac 上的登入按鈕的座標,在不同的螢幕上可能不太一樣
  2. 儲存以上程式碼到 /Users/username/Desktop/init.scpt,此時可以直接執行這個指令碼來驗證程式是否 OK,執行過程中可能回需要允許一些輔助功能的許可權

手機:

  1. 手機上購買安裝 unlox ,在完成該 App 和 Mac 的配對後,進入 Settings -> Create URL schemes -> 選擇自己的 Mac -> 選擇 Unlock -> 選擇 Copy URL schemes to clipboard,此時解鎖的 scheme 會複製到剪下板
  2. 開啟捷徑 App,選擇新增新的捷徑,在搜尋框中輸入 url, 選擇第一個,把操作一複製的 schemes 新增到 url 下的輸入框
  3. 再次搜尋 url, 選擇 開啟url
  4. 在搜尋框中輸入 ssh,選擇搜尋出來的選項
  5. 在對應的輸入框中輸入 Mac 的 ip,埠,使用者名稱,密碼
  6. 在密碼下邊的輸入框中輸入

    osascript /Users/username/Desktop/init.scpt
  7. 點選搜尋框選擇應用 -> 開啟應用 -> 點選右側的選擇按鈕選擇微信,這一步是為了讓手機自動跳轉到微信,我們只需要在手機上允許微信登入即可
  8. 新增捷徑到 Siri 的語音控制中
  9. 用語音執行測試,期間可能彈出錯誤,要求 Mac 上允許輔助功能許可權,允許即可

大功告成!

相關文章