alfred-2do는 2do에서 할 일 입력할 때 자연어 입력에 가깝게 만들어보자는 의도로 만들어졌습니다. 때문에 맨 앞에 시작 키워드인 2d와 할 일 내용을 맨 앞에 순서대로 놓는 것 외에는 생각나는대로 입력할 수 있도록 하고 싶었죠.

입력 방식

제 Alfred 사용 환경은 영어 입력으로 강제 전환하도록 맞추어져 있기 때문에 .split() 함수를 써서 전치사들을 기준으로 입력을 분해하도록 했습니다. on을 기준으로 뒤에 붙는 건 날짜, at 뒤에 붙는 건 시간, in 뒤에 붙는 건 장소 같은 식이죠.

여기에는 근본적으로 한 가지 문제가 있는데 이런 전치사들의 활용이 때때로 바뀐다는 점입니다. 예를 들어 at은 시간을 나타내기도 하지만 위치를 나타낼 때에도 쓰이고 in도 장소 뿐만 아니라 시간을 나라내도록 기능할 수 있죠. 그렇기 때문에 사실은 이런 접근방식은 편법이고 입력하는 값의 형식을 기준으로 판단하는 게 가장 바람직하겠습니다만 거기까지는 제 능력 밖에더군요.

1.1

v 1.1에서 가장 크게 바뀐 점은 입력을 받는 방식입니다. 기존에는 script filter를 써서 입력과 동시에 처리를 하도록 하는 방식이었습니다. 실시간으로 결과를 볼 수 있다는 점에서는 분명한 강점이 있지만 입력을 마치고 스크립트가 입력값 파싱을 끝낼 때까지 종료를 할 수 없다는 사용상의 치명적인 단점이 있었죠. 만약 파싱이 끝나기 전에 엔터를 치게 되면 아직 파싱이 안 된 부분의 데이터는 소실되어 입력되게 됩니다. 때문에 편법으로 할 일을 입력하고 약간의 텀(0.7초에서 1초 가량)을 두고 엔터를 치도록 했었습니다.

알프레드를 이용해서 할 일을 입력하는 건 바로 그 자리에서 할 일을 쉽게 추가하자는 취진데 그 다음에 1초를 기다리는 것은 기본적으로 방향성이 글러먹었따고 생각했습니다. 능력이 모자라 해결하는 데 시간이 좀 걸리긴 했지만요.

v 1.1에서는 script filter 대신 키워드 방식으로 2d 입력 외에 뒤에 따라오는 내용은 argument로 받아서 다음 element로 넘기도록 했습니다. 이런 경우 실시간으로 확인은 불가능하지만 입력 후에 텀을 두어야 하는 단점은 없게 됩니다. 빠르게 할 일을 작성하는 것에 초점을 두는 alfred-2do의 취지와 이 쪽이 더 어울린다고 생각해서 워크플로우를 변형하게 되었습니다. 구 버전들은 깃헙에 올라가 있으니 내려받아서 사용하시면 됩니다.

기타

워크플로우 변경 중에 hylo님이 몇 가지 제안을 해주셨습니다.

1. 미리 입력해 둔 리스트 명 자동 완성

2. next week 키워드

3. 할 일 입력 전에 입력 내용 검토.

이 중 3. 항목은 script filter에 기반하는 기능이라 배제하였습니다. 1. 항목 또한 전체 리스트를 가져오는 것이 아닌1 미리 입력해 둔 리스트로만 자동 완성이 가능하기 때문에 일단은 적용하지 않았습니다. 2. 항목은 일요일을 기점으로 해당 요일을 넘으면2 다음 주로 넘기도록 설계했기 때문에 따로 옵션을 두지는 않았습니다만 생각해보니 필요한 경우도 종종 있을 것 같아서 넣어야 할 것 같네요.

할 일 내용에 non-ascii 캐릭터가 있는 경우에 인코딩을 하도록 pr해주셨는데 저같은 경우는 그렇게 하니 입력한 할 일 사이에 whitespace가 전부 %20로 인코딩되어 버리는 일이 있어서 도로 뺐습니다.3 혹여나 알프레드에서 한글로 입력하시는 분 중에 제 워크플로우거 작동하지 않는다면 hylo님의 워크플로우를 써보시는 것도 좋을 듯 합니다.

이후

사실 이제 제 능력으로는 여기에 더 추가할 수 있는 게 없을 것 같습니다. 각 구분자 뒤에 오는 형식을 구분해서 구분자를 할 일 내용에 추가시켜야 할 지 argument로 분류해야 할 지 정도가 마지막 업데이트가 될 것 같네요.

  1. 해당 기능은 2Do에서 애초에 지원하지 않는 기능이어서 구현하기 위해서는 이 방법이 거의 유일한 방법입니다. 

  2. 예를 들어 금요일에 on thu 하면 자동으로 다음 주로 입력하는 식입니다. 지난 일을 입력하는 경우는 없을 테니까요. 

  3. 예를 들어 태그에 macbook air라고 치면 macbook%20air라고 태그가 입력되어버리는 식인거죠