Computer >> 컴퓨터 >  >> 시스템 >> Linux

Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

Emacs는 확장성이 뛰어난 소프트웨어입니다. 텍스트 편집기, 이메일 클라이언트, 심지어 USENET 리더까지 다양한 용도로 활용할 수 있죠. 그리고 Elfeed를 사용하면 Emacs를 RSS 피드 리더로도 사용할 수 있습니다.

Elfeed란 무엇인가?

Elfeed는 Emacs용으로 개발된 가볍지만 강력한 RSS 피드 리더입니다. 간단한 태그 기반 시스템을 사용해 RSS 피드를 분류하며, 콘텐츠에 따라 피드에 자동으로 태그를 지정할 수 있는 강력한 '훅(hook) 기반' 태깅 시스템도 함께 제공합니다.

Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

이러한 기능 덕분에 수많은 RSS 피드를 구독하면서 자동으로 정리하고 싶은 사용자에게 Elfeed는 매우 유용한 도구가 됩니다.

왜 Emacs에서 피드 리더를 사용해야 할까?

Emacs는 상호 운용성이라는 개념 위에서 작동합니다. Emacs는 데이터를 받아들여 다양한 방식으로 해석하고 활용할 수 있게 해주죠.

Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

Emacs를 오직 텍스트 편집 용도로만 사용할 수도 있지만, 예를 들어 텍스트를 편집하는 동시에 이메일에 접근할 수 있다면, 작성 중인 텍스트를 이메일 작성 화면에서 그대로 가져다 쓰는 등 매끄러운 작업 흐름이 가능합니다.

Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

RSS 피드 리더를 Emacs에 통합하는 것이 매력적인 이유가 바로 여기에 있습니다. Emacs의 강력한 편집 기능을 활용해 피드를 자유롭게 조작하고, Emacs의 다른 기능과도 연동할 수 있습니다.

Emacs에 Elfeed 설치하기

Elfeed 설치는 정말 간단합니다. GNU ELPA 저장소에서 제공되기 때문에 init.el 파일을 별도로 수정하지 않아도 바로 설치할 수 있습니다.

Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

Elfeed를 설치하려면 Alt + X를 눌러 명령 버퍼를 연 후 package-install을 입력하세요. 패키지 이름으로 elfeed를 입력하고 Enter를 누르면 됩니다. 그러면 Emacs가 Elfeed의 소스 코드를 다운로드한 후 즉시 컴파일까지 진행합니다.

Emacs에서 첫 번째 RSS 피드 설정하기

설치가 완료되면 Alt + X를 누르고 명령 버퍼에 elfeed를 입력하여 Elfeed에 접속할 수 있습니다. 그러면 빈 Elfeed 버퍼가 열립니다.

Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

Elfeed에 RSS 피드를 추가하는 방법은 두 가지입니다.

  • init.el 파일을 직접 수정하는 방법
  • Emacs 내부에서 추가하는 방법

init.el 파일에서 직접 RSS 피드 추가하기

init.el 파일에 피드 URL을 직접 추가하면 손쉽게 Elfeed를 채울 수 있습니다. Elfeed는 'elfeed-feeds'라는 변수를 추적하며, 이 변수는 어떤 피드를 가져와서 요약 화면에 표시할지 결정합니다.

예를 들어, 아래는 필자의 init.el 파일에서 발췌한 코드입니다.

(setq elfeed-feeds
       '("https://feeds.maketecheasier.com/MakeTechEasier"
        "https://solar.lowtechmagazine.com/feeds/all-en.atom.xml"
        "https://old.reddit.com/r/f1technical.rss"))

setq는 특정 변수에 값을 설정하는 Emacs 함수입니다. 위 코드에서는 elfeed-feeds 변수에 세 개의 피드 링크를 값으로 지정하고 있습니다.

이렇게 하면 Elfeed가 해당 링크들을 내부 데이터베이스에 자동으로 추가하고, 프로그램을 실행할 때마다 불러옵니다.

Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

Emacs 안에서 RSS 피드 추가하기

Elfeed를 채우는 또 다른 방법은 프로그램이 실행 중일 때 피드 링크를 직접 입력하는 것입니다. 이 방법을 사용하면 Emacs를 재시작하지 않고도 실시간으로 피드 목록을 업데이트할 수 있습니다.

Alt + X를 눌러 명령 버퍼를 열고 elfeed-add-feed를 입력한 후 Enter를 누르세요. 그러면 Elfeed가 로드하려는 피드의 URL을 물어봅니다.

Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

필자의 경우 최신 기술 기사를 매일 받아보기 위해 사이트의 피드 URL을 Elfeed에 등록했습니다.

피드 URL을 복사한 뒤 URL 입력 창에서 Ctrl + Y를 눌러 클립보드의 링크를 붙여넣습니다. 붙여넣기가 완료되면 Enter만 누르면 해당 피드 URL이 Elfeed에 등록됩니다.

Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

Emacs에서 피드 자동 태그 및 필터링하는 방법

Elfeed는 RSS 피드를 나열하고 보는 것 외에도, 피드 목록을 세밀하게 관리할 수 있는 다양한 기능을 제공합니다.

그중 하나가 바로 자동 태깅 기능입니다. 이 기능을 사용하면 특정 피드에서 온 RSS 항목에 즉시 태그를 지정할 수 있습니다.

예를 들어, 같은 주제를 다루는 여러 피드를 구독 중이라면 모두 동일한 태그를 부여하도록 설정할 수 있습니다. 이렇게 하면 요약 화면에서 여러 피드를 쉽고 직관적으로 분류할 수 있습니다.

이를 위해서는 init.el 파일에서 RSS 피드 설정을 수정해야 합니다. 아래의 간단한 예제를 살펴보세요.

(setq elfeed-feeds
 '(("https://feeds.maketecheasier.com/MakeTechEasier" tech news)
   ("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" tech)
   ("https://old.reddit.com/r/f1technical.rss" tech f1)))

RSS 피드에 자동으로 태그를 지정하려면 기본 elfeed-feeds 형식에서 두 가지를 변경해야 합니다.

  • 피드 링크를 괄호로 묶습니다. 이렇게 하면 elfeed-feeds 변수의 해당 항목이 여러 부분으로 구성되어 있음을 알려줍니다.
  • 해당 링크의 태그 역할을 할 단어를 지정합니다. 각 태그를 공백으로 구분하기만 하면 여러 개의 태그를 함께 넣을 수 있습니다.
Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

Elfeed에서 RSS 피드 필터링하기

이러한 태그는 Elfeed의 강력한 필터링 시스템과 함께 작동합니다. 태그만으로 RSS 피드를 그룹화할 수 있죠.

예를 들어, "news", "news tech", "news gaming"으로 태그된 RSS 피드가 있다면, Elfeed를 통해 이 모든 피드를 "news" 태그 하나로 묶어볼 수 있습니다.

피드 목록을 필터링하려면 Elfeed 화면에서 S를 눌러 필터 입력창을 여세요. 기본값은 다음과 같습니다.

@6-months-ago +unread
  • @ 기호는 날짜 범위를 나타냅니다. "2022-02-22" 같은 절대 날짜나 "3-days-ago" 같은 상대 날짜를 사용할 수 있습니다.
  • + 기호는 태그 연산자로, 해당 태그를 가진 모든 피드를 명시적으로 포함하라고 Elfeed에 지시합니다.
Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

이를 바탕으로 다음과 같은 RSS 피드를 생각해 봅시다.

[0](setq elfeed-feeds
[1] '(("https://feeds.maketecheasier.com/MakeTechEasier" tech news)
[2]   ("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" tech)
[3]   ("https://old.reddit.com/r/f1technical.rss" tech f1)
[4]   ("https://www.autosport.com/rss/f1/photos/" f1)
[5]   ("https://www.philstar.com/rss/world" news)))

"tech" 태그로 필터링하려면 Elfeed의 필터 입력창에 "+tech"를 입력하면 첫 번째부터 세 번째 링크까지 요약 버퍼에 표시됩니다. 반면 "+news"를 추가하면 첫 번째와 다섯 번째 항목이 대신 표시됩니다.

이 원리를 알면 더욱 정교한 필터링도 가능합니다. 예를 들어, 모든 기술(tech) 링크를 포함하되 "f1"은 제외하고 싶다면 다음과 같이 입력하면 됩니다.

+tech -f1

URL 기반으로 피드를 자동 태그하는 방법

Elfeed에서 RSS 항목에 자동으로 태그를 지정하는 또 다른 방법은 URL을 기준으로 분류하는 것입니다. 비슷한 URL 구조를 가진 RSS 피드를 여러 개 구독할 때 특히 유용합니다.

Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

이를 위해서는 Elfeed의 elfeed-new-entry-hook을 사용합니다. 이는 특정 조건에 따라 사용자 지정 명령을 실행하는 훅 함수로, elfeed-add-feed 명령으로 항목이 추가될 때마다 실행됩니다.

이 훅 안에서 elfeed-make-tagger 함수를 사용할 수 있습니다. 이 함수는 설정한 옵션에 따라 링크에 태그를 지정하는 범용 함수입니다. 두 함수를 조합한 자동 태깅 설정은 다음과 같습니다.

(add-hook 'elfeed-new-entry-hook
        (elfeed-make-tagger :feed-url "medium\\.com"
                            :add '(medium)))
Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

이 함수는 URL에 "medium.com"이 포함된 모든 링크에 자동으로 태그를 지정합니다.

elfeed-make-tagger의 옵션을 더 구체적으로 설정할 수도 있습니다. 예를 들어, URL 기반 태그 지정과 함께 3개월 이상 지난 항목을 걸러내도록 설정할 수 있습니다.

(add-hook 'elfeed-new-entry-hook
        (elfeed-make-tagger :feed-url "medium\\.com"
                            :before "3 months ago"
                            :add 'medium))

태그별 사용자 지정 색상과 글꼴 만들기

자동 태깅 외에도, 처리 중인 태그에 따라 Elfeed의 화면 표시를 커스터마이즈할 수 있습니다. 특정 태그가 달린 피드를 눈에 띄게 만들고 싶을 때 유용합니다.

Emacs를 RSS 리더로 활용하는 방법: Elfeed 완벽 가이드

이를 위해서는 elfeed-search-face-alist 함수를 재정의해야 합니다. 이 함수는 Elfeed가 요약 버퍼의 모양을 변경할 때 사용하는 명령입니다. 이 함수를 재정의하려면 deffacepush 함수를 사용합니다.

  • defface 함수는 Emacs에 새로운 '페이스(face)'를 생성합니다. 페이스는 문자 글꼴과 배경색을 모두 담을 수 있는 값들의 집합입니다.
  • push 함수는 Emacs의 기존 명령에 새 정의를 추가합니다.

이 두 함수를 조합하면 Elfeed용 사용자 지정 '페이스'를 만들 수 있습니다. 예를 들어, 아래는 f1 태그를 빨간색으로 강조하는 사용자 지정 페이스입니다.

(defface elfeed-face-tag-f1
  '((t :foreground "#f00"))
  "This is a custom font face for the F1 tag in Elfeed.")
 
(push '(f1 elfeed-face-tag-f1)
      elfeed-search-face-alist)

축하합니다! 이제 Elfeed를 통해 Emacs를 RSS 리더로 사용하는 방법을 익혔습니다. 나아가 RSS 피드 환경에 맞게 Elfeed를 커스터마이즈하고 자동화하는 기본적인 방법도 알게 되었습니다.

Emacs로 무엇을 더 할 수 있을지 궁금해지셨다면, Emacs 생산성 향상에 좋은 패키지를 소개하는 글도 확인해 보세요.

자주 묻는 질문

1. Elfeed에서 피드를 삭제하려면 어떻게 해야 하나요?

피드를 제거하는 방법은 두 가지입니다. init.el 파일에서 해당 피드 항목을 삭제하거나, Emacs의 customize 기능을 사용해 제거하는 것입니다.

전자의 경우 elfeed-feeds 변수에서 해당 피드 URL만 지우면 됩니다. 후자의 경우 Alt + X를 눌러 명령 버퍼를 연 후 customize를 입력하세요. 그러면 Emacs의 customize 창이 열립니다.

검색 상자에 elfeed-feeds를 입력하면 현재 구독 중인 모든 피드가 표시됩니다.

피드 링크 옆의 DEL 버튼을 클릭하면 해당 피드를 삭제할 수 있습니다. 완료한 후 검색창 아래의 ApplySave 버튼을 클릭하면 피드 목록이 업데이트됩니다.

2. 피드를 모두 추가했는데 새로고침되지 않으면 어떻게 해야 하나요?

Elfeed는 피드 링크를 자동으로 새로고침하지 않습니다. 피드의 최신 항목을 가져오려면 Shift + G를 눌러 현재 구독 중인 모든 피드의 업데이트를 시작하세요.

또한 특정 RSS 피드만 업데이트하고 싶다면 elfeed-update-feed 함수를 실행하면 됩니다.

3. 자동 태그가 작동하지 않는 것 같습니다. 어떻게 해결하나요?

대부분 같은 RSS 피드에 서로 충돌하는 태그가 지정되어 있기 때문입니다. 수동 피드와 자동 피드 양쪽에 동일한 피드 URL을 등록한 경우 발생할 수 있습니다.

이 문제를 해결하려면 init.el 파일의 수동 항목이나 Emacs customize 버퍼의 자동 피드 항목 중 한쪽을 제거해야 합니다.