iOS 12 workflow 配合 AppleScript 实现 Mac 自动初始化

在 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 上允许辅助功能权限,允许即可

大功告成!

相关推荐