단축키를 이용하여 URL을 북마킹, 태그 부여, 검색, 실행할 수 있습니다.
pinboard.in 검색하고 관리하는 alfred-pinboard를 만들어 사용하다, 버전업을 하면서 pinboard.in 계정이 없더라도 사용할 수 있도록 확장했습니다.
pinboard.in 계정 연동 후에는 pinboard.in에서 수정한 내용을 pbreload
명령을 통해 읽어올 수 있습니다.
다음 기능을 제공합니다.
- 북마크 등록 - safari, chrome에서 보고 있는 페이지를 hotkey로 등록
- 등록 시 북마크에 여러 태그를 부여할 수 있습니다
- 북마크 검색 - 부분검색 지원
- 북마크 삭제
- 북마크마다 [private], [star] 속성을 지정할 수 있습니다
- 검색 시 [private], [star]로 조건을 부여할 수 있습니다.
- 태그 별 북마크 검색
- 다양한 정렬 옵션
- 최근 사용
- 자주 사용
- 등록 순서 별
- pinboard 연동
- 첫 연동 시에 pinboard 데이타로 교체되며 local 저장된 북마크는 지워집니다
- 연동 후에는 등록, 삭제가 pinboard와 연동하여 동작합니다.
pbreload
명령으로 pinboard에서 내용을 local db에 반영합니다.
인스톨
Workflow를 인스톨하고 난 후, 초기화된 키 설정을 다시 합니다.
- Cmd-Shift-Ctrl-P : Workflow launch (검색 조건은 설정에 따릅니다)
- Cmd-Shift-Ctrl-K : 모든 북마크를 검색에 포함(private, mark 설정 무시)
- Cmd-Shift-Ctrl-L : Mark 설정된 북마크만 검색
- Cmd-Shift-Ctrl-; : 북마크 추가 (브라우저가 활성화된 상태에서만 동작합니다)
북마크 속성 별 검색
북마크는 private, mark 속성을 지정할 수 있습니다. 기본 검색은 private 지정되지 않는 북마크만 검색합니다. 검색 조건은 설정 메뉴에서 변경 가능합니다.
- private : [shift] modifier로 변경할 수 있습니다.
- star : [ctrl] modifier로 변경할 수 있습니다.
- [태그 검색] 메뉴에서 해당 태그 속성을 가진 모든 북마크를 private, mark on/off 가능합니다.
- ctrl: set mark, shift: unset mark, alt: set private, cmd: unset private
설정
- mark[filter] - mark 속성을 지닌 북마크를 검색에 포함시킬 것인지 지정. all - 모두 검색, on - mark 만 검색, off - mark 지정되지 않는 것만 검색
- private[filter] - private 속성을 지닌 북마크를 검색에 포함시킬 것이지 지정. all - 모두 검색, on - private 만 검색, off - private 지정되지 않는 것만 검색
- sort - 정렬 옵션
- accessed, launch_count, time - 최근 호출 booker 별 정렬 (default)
- launch_count, accessed, time - 북마크 호출 횟수 별 정렬
- time, accessed - 북마크 등록 순서별 정렬
명령어
-
bm (ctrl-shift-cmd-p) - 메인 검색. 설정에 지정된 값을 기반으로 검색합니다.
-
bm으로 구동된 후 명령어
- ! (ctrl-shift-cmd-k) - private 지정된 북마크 도 검색에 포함
- * (ctrl-shift-cmd-l) - start 지정된 북마크 만 검색
- + (ctrl-shift-cmd-;) - 웹 브라우저가 활성화 되었을 경우에만 동작합니다. 북마크 추가 단축키.
- # - 태그 검색. tab이나 enter 누르면 해당 태그에 속한 북마크만 검색
alfred-bookmark의 각 북마크에는 다음과 같은 명령을 내릴 수 있습니다.
- Enter : 북마크를 구동합니다
- Ctrl : mark 설정을 on/off 바꿉니다
- Shift : private 설정을 on/off 바꿉니다
- Alt : 북마크를 지웁니다
- Cmd : URL을 복사합니다
Mark, Private 설정은 tag 검색 메뉴에서 소속된 모든 북마크에 적용 가능합니다. 예를 들어 #mac tag에 포함된 북마크 모두를 private로 변경이 가능합니다.
Alfred 3 사용중이고 jmjeong님의 기존 alfred-pinboard 워크플로우를 사용중,
이 게시글에서 bookmark 워크플로우를 받아 설치했는데 전혀 작동을 하지 않습니다.
본문과 같이 hotkey를 설정하고 hotkey로 동작을 했습니다.
pbreload 역시 아무런 반응이 없는데 혹시 왜그런지 알 수 있을까요?
ps. 기존 alfred-pinboard 워크플로우를 지우고 재부팅하고 캐쉬며 인덱싱도 다시 해봤지만 여전히 아무런 반응이 없습니다
Starting debug for 'bookmark'
[2016-07-11 11:13:22][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
File "main.py", line 416, in
main()
File "main.py", line 390, in main
conn = util.opendb()
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.20CB3210-12D6-4140-B86B-C6F4F44BD92A/util.py", line 102, in opendb
conn = sqlite3.connect(os.path.expanduser(dbname))
sqlite3.OperationalError: unable to open database file
[2016-07-11 11:13:45][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
File "main.py", line 416, in
main()
File "main.py", line 390, in main
conn = util.opendb()
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.20CB3210-12D6-4140-B86B-C6F4F44BD92A/util.py", line 102, in opendb
conn = sqlite3.connect(os.path.expanduser(dbname))
sqlite3.OperationalError: unable to open database file
그리고 pbreload 작동시 뜬 내용입니다.
[2016-07-11 11:15:47][ERROR: action.script] Traceback (most recent call last):
File "reload.py", line 96, in
conn = util.opendb()
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.20CB3210-12D6-4140-B86B-C6F4F44BD92A/util.py", line 102, in opendb
conn = sqlite3.connect(os.path.expanduser(dbname))
sqlite3.OperationalError: unable to open database file
혹시나해서 화면녹화해봤습니다만, 모든 키 입력후에는 엔터를 쳤습니다(제겐 이걸 보여드리는 기능이 없네요 ;;)
기존의 핀보드 워크플로우는 모든기능이 정상작동합니다만, bookmark 워크플로우만 아무런 반응이 없습니다.
Debug창 메세지입니다.
Starting debug for 'bookmark'
[2016-07-11 11:42:29][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
File "main.py", line 416, in
main()
File "main.py", line 390, in main
conn = util.opendb()
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 100, in opendb
dbpath = get_dbpath();
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 97, in get_dbpath
return os.path.exppanduser(workflow_dir)
AttributeError: 'module' object has no attribute 'exppanduser'
[2016-07-11 11:42:38][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
File "main.py", line 416, in
main()
File "main.py", line 390, in main
conn = util.opendb()
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 100, in opendb
dbpath = get_dbpath();
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 97, in get_dbpath
return os.path.exppanduser(workflow_dir)
AttributeError: 'module' object has no attribute 'exppanduser'
[2016-07-11 11:42:44][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
File "main.py", line 416, in
main()
File "main.py", line 390, in main
conn = util.opendb()
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 100, in opendb
dbpath = get_dbpath();
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 97, in get_dbpath
return os.path.exppanduser(workflow_dir)
AttributeError: 'module' object has no attribute 'exppanduser'
[2016-07-11 11:42:46][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
File "main.py", line 416, in
main()
File "main.py", line 390, in main
conn = util.opendb()
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 100, in opendb
dbpath = get_dbpath();
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 97, in get_dbpath
return os.path.exppanduser(workflow_dir)
AttributeError: 'module' object has no attribute 'exppanduser'
[2016-07-11 11:42:46][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
File "main.py", line 416, in
main()
File "main.py", line 390, in main
conn = util.opendb()
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 100, in opendb
dbpath = get_dbpath();
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 97, in get_dbpath
return os.path.exppanduser(workflow_dir)
AttributeError: 'module' object has no attribute 'exppanduser'
[2016-07-11 11:42:47][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
File "main.py", line 416, in
main()
File "main.py", line 390, in main
conn = util.opendb()
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 100, in opendb
dbpath = get_dbpath();
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 97, in get_dbpath
return os.path.exppanduser(workflow_dir)
AttributeError: 'module' object has no attribute 'exppanduser'
[2016-07-11 11:42:47][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
File "main.py", line 416, in
main()
File "main.py", line 390, in main
conn = util.opendb()
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 100, in opendb
dbpath = get_dbpath();
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 97, in get_dbpath
return os.path.exppanduser(workflow_dir)
AttributeError: 'module' object has no attribute 'exppanduser'
[2016-07-11 11:42:48][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
File "main.py", line 416, in
main()
File "main.py", line 390, in main
conn = util.opendb()
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 100, in opendb
dbpath = get_dbpath();
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 97, in get_dbpath
return os.path.exppanduser(workflow_dir)
AttributeError: 'module' object has no attribute 'exppanduser'
[2016-07-11 11:42:48][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
File "main.py", line 416, in
main()
File "main.py", line 390, in main
conn = util.opendb()
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 100, in opendb
dbpath = get_dbpath();
File "/Users/seed/Dropbox/Backup/OS X-Mac/BackUp for Mac/Alfred Workflow/Alfred.alfredpreferences/workflows/user.workflow.91F29479-2441-45B0-A773-B87CED66C80F/util.py", line 97, in get_dbpath
return os.path.exppanduser(workflow_dir)
AttributeError: 'module' object has no attribute 'exppanduser'
핀보드 계정 토큰 넣는 방법을 몰라 한참을 찾다가 혹시 저와 같을 다른분들을 위해 덧글 남깁니다.
bm(또는 핫키)으로 호출 후, _ (언더바)를 입력하니 세팅 메뉴들이 뜨는군요.
이게 다중태그 입력시 키보드만으로 만지기엔 좀 불편했습니다.
그런데 이 워크플로우에서는 다중태그 입력시 정말 편하네요. ^^
매뉴얼에는 따로 명시를 하지 않았는데, Dropbox를 통해 db를 공유해서 사용할 수 있습니다.
~/Library/Application Support/Alfred 3/Workflow Data/com.jmjeong.bookmark directory 내에
config.json 파일을 하나 만들고, 아래와 같이 지정하면 Dropbox folder로 사용하는 DB를 옮길 수 있습니다.
{
"DBPATH": "~/Dropbox/bin"
}