macOS 神器 Workflow ,让效率翻倍!

实现


来看一下 workflow 的排版:

通过三个关键字的Alfred命令,分别实现设置alias(sal, set alias),删除alias(dal, delete alias),查找(gal, get alias)。

其中sal和dal使用简单的keyword输入,而gal为了使用Alfred通过的展示候选列表和搜索匹配的能力,而使用了Script Filter作为输入。三者都通过shell调用了一个实现主要功能的python脚本easy_alias.py,通过传入不同的action参数来区分行为。

sal:

python easy_alias.py set {query}

dal:

python easy_alias.py del {query}

gal:

python easy_alias.py show {query}cat filter.output

easy_alias.py

coding=utf8

import sys

import json

from os import listdir, makedirs

from os.path import isfile, join, exists, expanduser

base_path = expanduser(“~/.easy_alias”)

file_name = “alias_conf”

file_path = join(base_path, file_name)

alias_map = dict()

def init():

if not exists(base_path):

makedirs(base_path)

if not exists(file_path):

open(file_path, ‘w’).close()

def get_key_and_value(text):

seqs = text.strip().split(’ ')

if len(seqs) < 2:

return None, None

key = seqs[0];

value = reduce(lambda x, y: x.strip() + ’ ’ + y.strip(), seqs[1:])

return key, value

def get_alias_map():

with open(file_path, ‘r’) as f:

for line in f.readlines():

k, v = get_key_and_value(line)

if k == None or v == None:

continue

alias_map[k] = v

def set_alias():

if len(sys.argv) < 3:

return

text = sys.argv[2].strip()

k, v = get_key_and_value(text)

if k == None or v == None:

return

alias_map[k] = v

def del_alias():

if len(sys.argv) < 3:

return

key = sys.argv[2].strip()

new_content = “”

if key in alias_map:

alias_map.pop(key)

def show_alias():

items = list()

for k, v in alias_map.iteritems():

d = {

“uid”: k,

“type”: “default”,

“title”: k,

“subtitle”: v,

“arg”: v,

“autocomplete”: k,

“icon”: {

“type”: “fileticon”,

“path”: “icon.png”

}

}

items.append(d)

show = {“items”: items}

with open(‘filter.output’, ‘w’) as f:

f.write(json.dumps(show))

def write_map_to_file():

file_content = ‘’

for k, v in alias_map.iteritems():

file_content += k + ’ ’ + v + ‘\n’

with open(file_path, ‘w’) as f:

f.write(file_content)

if name == ‘main’:

init()

get_alias_map()

action = sys.argv[1]

with open(join(base_path, ‘logs’), ‘a’) as f:

f.write(str(sys.argv) + ‘\n’)

if (action == ‘set’):

set_alias()

if (action == ‘del’):

del_alias()

if (action == ‘show’):

show_alias()

write_map_to_file()

效果


设置一个alias

查找一个alias

删除一个alias

如果觉得通过sal设置和dal删除的方式太麻烦,也可以直接编辑~/.easy_alias/alias_conf

保存文件再查询

作业



这个 workflow 本身很简单很好实现。本文也希望不仅仅只是一个简单分享,希望能与读者有所互动,所以打算留个回家作业。

可以发现现在 dal 命令现在需要使用者盲打key,而不是像gal这样可以搜索补全。这会给使用者带来一定烦恼。回家作业就是将 dal 命令也改造成像 gal 一样可以搜索补全的形式。

后台回复:workflow  领取你的课外作业吧!另外还有目前功能齐全的 Release 版本,欢迎大家使用!

总结



让我们回过头看一下我们再开始时面对的问题是否得到了很好的解决。

  1. 我们无法改变工作中频繁需要冗长信息的状况,但是我们通过访问剪切板的方式让输入变得简单。

  2. 我们用一个文件将这些信息集中在一起,并且通过工具打打提升了我们检索这些信息的效率。

  3. Alfred提供给我们一个在检索并获取这些信息上无需切换窗口,并且操作非常简单的方式。

很高兴,我们很大程度上解决了我们先前提出的这些问题!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值