内容简介:Alfred是一款Mac系统必装软件,他提供快速启动App、全文查找文件、workflow自动化流程等功能。本文介绍如何使用Alfred Workflow+Apple Script实现快速启动开发环境。先梳理下,我在日常启动前端的工作环境时,需要手动操作的步骤:
Alfred是一款Mac系统必装软件,他提供快速启动App、全文查找文件、workflow自动化流程等功能。本文介绍如何使用Alfred Workflow+Apple Script实现快速启动开发环境。
问题 & 设想
先梳理下,我在日常启动前端的工作环境时,需要手动操作的步骤:
-
打开Webstorm并选择开发项目(10秒)
-
打开iterm命令行工具,并cd到项目下(5秒)
-
打开whistle代理(5秒)
-
打开chrome浏览器工作必须的插件,比如代理插件、react、vue调试插件(20秒)
-
打开chrome inspect和whistle代理配置页面(10秒)
-
开发完成后,逐一关闭浏览器工作插件(20秒)
从“日常使用”切换到“工作环境”整个过程 大概半分钟 左右,非常繁琐,在开始写代码前就让人产生劝退情绪。开发完成切换回“日常使用”也是痛苦的,要一个个去关闭浏览器插件,否则可能会遇到代理插件看视频卡顿、调试插件报错影响等等问题。
所以我们的设想是,通过Alfred实现 一条指令 自动完成上述的所有操作,最终效果如下:
Alfred Workflows是什么?
Alfred Workflows提供一个可拖拽的流程图界面,让我们将指令、系统动作、脚本等关联起来,构建我们想要的工作流程。
Alfred Workflows 支持的编程语言 有Bash、 Python 、 PHP 、JS(osacript)、Apple Script等等。
我们需要按照使用场景来选择编程语言,比说Python是mac 系统预装 的语言,Python内置很多实用的方法,比如http请求、文件读写等等接口,所以用Python来写Workflows会非常方便,PHP同理。
但如果想用JS来写,Mac系统预装的JS是osacript-JS,主要是用来调用封装好的Mac原生接口,没有发请求的功能,涉及到请求、命令行相关的操作就比较麻烦。而如果我们想用NodeJS来写,编写出来的指令就会有局限性,因为系统没有预装NodeJS编译工具,要求用户在使用前必须安装NodeJS。
所以不同的场景用不同的编程语言。
通过Alfred强大的定制,我们可以实现二维码生成、打开书签、页面爬虫展示等等指令。下面展示 Open Google
指令流程图,可以清晰看到看到指令触发脚本,再对脚本结果判断,最后执行特定动作的整个过程:
Open Google
指令实现“启动VPN并查询谷歌”,我们在Alfred中输入指令 gg alfred
,ExpressVPN启动后自动进行连接,连接成功后,再打开Safari浏览器,并访问谷歌查询alfred信息:
编写Apple Script
大家都是开发,可以嚣张点,像编程语言、命令行等内容就无需赘述了。这里主要介绍下Apple Script的基本格式、如何查询App接口文档、如何调试Apple Script。
Apple Script是一套非常简单、高度语义化的编程语言,支持调用系统和App软件操作接口,格式如下:
tell application "Google Chrome" activate end tell
我们能看到,Apple Script表达非常直白:告诉应用“Google Chrome”去启动,即启动Chrome浏览器。
语法也足够简单,用关键字 tell
进入应用作用域,在作用域中我们就可以调用该应用的API了,比如上述的 activate
,还可以通过关键字 get
获取应用的属性,或通过关键字 set
设置应用的属性。
为了展示这些基本用法,下面让我们打开Chrome浏览器并跳转到全民K歌的首页:
tell application "Google Chrome" activate get front window's active tab set front window's active tab's URL to "https://kg.qq.com" end tell
这段代码如果在Alfred Workflows中进行调试会比较麻烦,其中既没有语法高亮和格式化,也没有报错提示。
所以推荐使用Mac系统自带的 Script Editor.app
(脚本编辑器)来调试Apple Script代码,其中代码编译后会自动的格式化和高亮,并有日子输出报错信息,满足开发基础条件。我们用Alfred呼起脚本编辑器:
将上面的代码拷贝进去后点击执行就可以看到运行效果:
调试成功后,就可以把代码拷贝到Alfred Workflows中了:
那应用的API文档在哪里查阅呢?
我们可以在 Script Editor.app
的 文件->打开字典
找到所有应用的API文档介绍,比如Chrome浏览器的文档中就列举了我们用到的 active tab
、 get
、 set
等语法介绍:
如何初始化工作环境
经过上面章节我们都了解Apple Script基本语法后,这里开始介绍 如何自动启动Chrome浏览器插件 。这里利用了两个前提条件:
-
chrome“扩展程序”页面提供 JS接口 开启/关闭插件
-
chrome浏览器的Apple Script接口提供 执行JS代码 的能力
首先我们打开chrome://extensions/扩展程序页面,在F12控制台下运行以下命令就可以开启/关闭扩展插件:
chrome.management.setEnabled("padekgcemlokbadohgkifijomclgjgif", true)
其中第一个参数 padekgcemlokbadohgkifijomclgjgif
是插件的ID,我们可以 在插件详情页面 中找到:
那么接下来就是打开Apple Script字典,查看Chrome执行JS代码接口的调用方式,我们能找到 excute
指令用来执行JS代码片段:
知道这两个必要的知识点后,我们就可以编写出完整的Apple Script代码如下:
to splitString(aString, delimiter) set retVal to {} set prevDelimiter to AppleScript's text item delimiters log delimiter set AppleScript's text item delimiters to {delimiter} set retVal to every text item of aString set AppleScript's text item delimiters to prevDelimiter return retVal end splitString # 这里填写你要开启/关闭的插件ID,用逗号分隔,ID在插件详情页中查找 set extensionID to "padekgcemlokbadohgkifijomclgjgif,lmhkpmbekcpmknklioeibfkpmmfibljd,nhdogjmejiglipccpnnnanhbledajbpd" set tmp to splitString(extensionID, ",") tell application "Google Chrome" activate try get front window's active tab on error make new window with properties {visible:true} end try tell front window # 新建标签页并打开扩展程序页面 make new tab at after (get active tab) with properties {URL:"chrome://extensions"} # 等待0.5秒扩展页面渲染 delay (0.5) # 遍历插件ID,执行JS代码启动插件 repeat with anItem in tmp set js_code to ("chrome.management.setEnabled('" & anItem & "', true);") execute active tab javascript js_code end repeat # 关闭扩展程序页面 close active tab end tell end tell
上述代码很浅白,关键代码是 execute active tab javascript js_code
让当前标签页面执行JS代码,其他不过多介绍。
最后我们把代码拷贝到Alfred Workflows并绑定 wwon
指令,最终运行效果如下, 注意观察 浏览器地址栏右侧 插件的状态 :
关于”快速启动开发环境“的其他环节,就留给大家自行尝试实现了:
-
通过find命令遍历项目列表,并在alfred上展示并提供选择
-
用Webstorm打开开发项目
-
打开命令行工具,并定位到开发项目路径
-
打开whistle代理
-
打开chrome Inspect页面和whistle代理配置页面,要判断是否已存在,不重复打开
-
自动关闭浏览器工作插件
最后Alfred workflows流程图和运行效果:
总结
Alfred工具提升效率是很明显的,简单到快速启动APP,复杂到调用系统命令,既能足够的简单,又能高度的自定义,适合不同的人群使用,推荐大家尝试下。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- XCode启动参数和环境变量
- 使用 Docker 启动 Grafana 环境
- 技术指南:Fabric 网络环境启动过程详解
- Hyperledger Fabric(V1.3) 环境设置与快速启动
- PowerShell 的命令行启动参数(可用于执行命令、传参或进行环境配置)
- macOS Catalina 10.15.1环境下编译的ffmpeg无法运行,启动就崩溃
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Operating Systems
Remzi Arpaci-Dusseau、Andrea Arpaci-Dusseau / Arpaci-Dusseau Books / 2012-8-19 / USD 21.00
A book about modern operating systems. Topics are broken down into three major conceptual pieces: Virtualization, Concurrency, and Persistence. Includes all major components of modern systems includin......一起来看看 《Operating Systems》 这本书的介绍吧!