Alfred에서 범위 선택한 문자열을 단축키로 가져올 때 클립 보드 기록을 더럽히지 않는 방법

TL; DR



Alfred에서 번역 워크플로를 사용할 때 클립보드 기록에 저장하지 않는 방법을 찾아서 해결책을 찾았으므로 지식으로 요약합니다.

실례로서 하기 번역 워크플로우를 사용하고 있습니다(작가님께 감사).
Alfred의 번역 워크플로 v2 릴리스(DeepL 번역 및 언어 선택 등에 대응)

환경


  • macOS Catalina 10.15.5
  • Alfred 4.1

  • 전제 지식



    Alfred는 범위 선택한 문자열을 단축키로 가져올 때 클립보드에 일시적으로 저장합니다.


    따라서 Workflow 내에서 Hotkey 액션 인수에 Selection in macOS를 지정하면 Copy to Clipboard 액션을 사용하지 않고 클립보드에 저장되므로 항상 클립보드 기록에 남아 있습니다.


    이것은 Selection Hotkeys를 Restore previous clipboard item로 설정해도 피할 수 없습니다.


    해결책



    현재의 Alfred 기능은 클립보드 히스토리에 저장하지 않는 방법이 없기 때문에 클립보드 히스토리에 저장된 직후에 직접 삭제합니다.

    Alfred 포럼 에도 게시되었지만 Alfred의 클립보드 기록은 SQLite3에 저장되어 있으므로 직접 쉘 스크립트에서 삭제 쿼리를 실행하면 Workflow에서 삭제할 수 있습니다.

    실례



    아래와 같은 쉘 스크립트를 Run Script에 쓰고 Hotkey 액션에 연결합니다.
    sql="DELETE FROM clipboard WHERE dataType = 0 ORDER BY ts DESC LIMIT 1;"
    /usr/bin/sqlite3 ~/Library/Application\ Support/Alfred/Databases/clipboard.alfdb $sql
    
    echo -n $1
    



    스크립트 자체는 매우 간단하며 SQLite3의 clipboard 테이블에서 가장 최근의 하나를 삭제합니다.
    그 밖에 처리할 필요도 없기 때문에, 나머지는 echo 로 Hotkey 액션으로부터 받은 인수를 출력해 그대로 후속의 액션에 건네줄 뿐입니다.

    요약



    직접 DB를 조작하고 있으므로 업데이트로 사용할 수 없게 될 가능성도 있습니다만, 번역 워크플로에 한정하지 않고, 범위 선택한 캐릭터 라인을 여러가지 가공하고 싶을 때에 가공전의 캐릭터 라인이 클립보드 이력에 불필요한 경우는, 이번 의 방법으로 회피할 수 있으므로 꼭 활용해 보세요.
    (원래 클립보드 이력에 보존되어 버리는 현상 자체.

    좋은 웹페이지 즐겨찾기