Newsboat
関連記事
プロジェクトのウェブページ より:
- Newsbeuter はテキストターミナル用のオープンソースの RSS/Atom フィードリーダーです。Linux, FreeBSD, macOS などの Unix ライクなオペレーティングシステムで動作します。Newsbeuter は設定が自由自在で優れた機能を多数備えていることから、全てキーボードで動作できる高速かつスマートなフィードリーダーを望んている人にうってつけです。
Newsbeuter の開発は中止され、フォークされて newsboat が生まれました。[1]
インストール
newsboat は公式リポジトリからインストールできます。開発版は newsbeuter-gitAUR または newsboat-gitAUR パッケージでインストールできます。
使用方法
Newsboatは、設定済みのフィードなしでは起動できません。 フィードは、~/.config/newsboat/urls
で構成できます。
インストールしたら、コマンドラインから newsboat を起動することができます:
newsboat
ナビゲーションはとてもわかりやすいものになっています。キーバインディングの完全なリストは man ページを見るか、newsbeuter の中から ?
キーを押して下さい。
フィードの管理
フィードの追加・削除・タグ管理は全て urls ファイルの編集で行います。デフォルトでは ~/.config/newsboat/urls
に存在します。
フィードの追加・削除
URL を追加するには、~/.config/newsboat/urls
をお好きなテキストエディタで開いて、一行ごとに URL を追加します:
http://rss.cnn.com/rss/cnn_topstories.rss http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml
ユーザー名/パスワードを入力しないとアクセスできない URL を追加するときは、以下のようにしてユーザー名/パスワードを指定します:
http://username:password@hostname.domain.tld/feed.rss
ユーザー名とパスワードが流出しないように、~/.config/newsboat/urls
には適切なパーミッションを設定してください。
また、Newsbeuter は URL に含まれているユーザー名とパスワードをユーザーインターフェイスに表示しません。ユーザー名に @ が含まれる場合、ユーザー名・パスワードとホスト名を区切る @ と区別が付くように %40 を使ってください。
ローカルのファイルをフィードとして設定することもでき、その場合はローカルパスの前に file://
を付けて ~/.newsbeuter/urls
ファイルに追加します:
file:///var/log/rss_eventlog.xml
フィードを削除したいときは、urls ファイルからそのフィードの行を消して下さい。
フィードのタグ管理
全てのフィードにはタグを割り当てることができます。タグ付けすることでフィードのカテゴライズが簡単になるだけでなく、一度に複数のフィードを対象としてコマンドを適用することができるようになります。
通常、~/.newsbeuter/urls
ファイルには一行ごとに一つの RSS フィードの URL を記述します。RSS フィードにタグを付けるには、スペースやタブなどの空白で区切って、単語を後ろに付け加えて下さい。タグの中に空白を入れたいときは、タグをクォート (") で括って下さい (下の例を参照)。例:
http://blog.fefe.de/rss.xml?html interesting conspiracy news "cool stuff" http://rss.orf.at/news.xml news orf http://www.heise.de/newsticker/heise.rdf news interesting
上記のように設定したら、newsbeuter を起動してから t
を押すことでタグを選択できます。"news" タグを選択した場合、3つの RSS フィード全てが表示されます。もう一度、t
を押して "conspiracy" タグを選択すると、http://blog.fefe.de/rss.xml?html
の RSS フィードしか表示されなくなります。Ctrl-T
を押すとタグの選択が解除され、全ての RSS フィードが表示されるように戻ります。
特殊なタグ
フィードのカスタム名称
urls ファイルで特殊なタグを使うことでフィードの名前を定義することができます。タグの名前の前に ~
記号を付けると、タグの名前がフィードの名前になります。例:
http://rss.cnn.com/rss/cnn_topstories.rss "~CNN Top stories"
上記の設定で "CNN Top stories" がフィードの名前として定義されます。
非表示のフィード
タグの名前の前に !
を付けることで、そのフィードを通常のフィードのリストから非表示にすることができます。例:
http://rss.orf.at/news.xml "!ORF News (hidden)"
非表示フィードのコンテンツはクエリしないかぎり表示されません。
クエリフィード
カスタムフィードは、いわゆる クエリフィード を作成することで既存のフィードから作成できます。クエリフィードと記事を照合することによって生成されるフィードです。クエリフィードは、通常のフィードと同様に、~/.config/newsboat/urls
ファイルで定義されます。
構文は次のとおりです:
query:FEEDNAME:FILTER_EXPRESSION [TAG ...]
通常のフィードと同様、クエリフィードには FEEDNAME
という名前があり、フィードリストに表示されます。
FILTER_EXPRESSION
のフィルター式言語は、newsboat マニュアル で定義されています。
クエリフィードには、通常のフィードと同様に、オプションでタグを付けることができます。フィードのタグ付け を参照してください。
基本的な例
~/.config/newsboat/urls
"query:Example1:age > 1" "query:Example2:(tags # \"example2\") and (title =~ \"example2\")" "query:Example3:(rssurl =~ \"example3\") or (total_count > 3)"
最初の例では、1 日以上前の記事をすべて含む Example1
という名前のフィードを定義します。
2 番目の例では、フィードに example2
のタグが付けられたすべての記事を含む、Example2
という名前のフィードを定義します。
記事タイトルが example2
と一致する "および" ここで、#
は 含む 演算子です。
3 番目の例では、フィード URL が一致するすべての記事を含む、Example3
という名前のフィードを定義します。
正規表現 example3
または 3 つ以上の記事を含むフィードの一部であるすべての記事。
未読の記事
すべての未読記事を含む 未読記事
という名前のフィードを作成するには、次のように定義します。
~/.config/newsboat/urls
"query:Unread Articles:unread = \"yes\""
複数のフィードを 1 つに統合する
クエリフィードは、複数のフィードにコンテンツが分散されているクリエイターをフォローする場合に有効に使用できます。クエリフィードを使用すると、すべてのコンテンツを 1 か所に統合できます。
~/.config/newsboat/urls
"query:Metafeed:tags # \"metafeed\"" https://feed.url/1 metafeed ! https://feed.url/2 metafeed ! https://feed.url/3 metafeed !
コツは、個々のフィードに一意のタグを割り当てることです (ここでは metafeed
を使用しました) これにより、フィルター式で照合できるようになります。また、個々のフィードがフィードリストに表示されないように、非表示のフィード (各フィードの末尾にある !
) を使用します。
特定のフィードのフィルタリング
フィードに表示したくないコンテンツが含まれている場合は、クエリフィードを使用してフィルタリングできます。 たとえば、関心のあるパッケージの更新を監視するには、次のコマンドを使用できます。
~/.config/newsboat/urls
"query:Package Updates:(tags # \"packageupdates\") and (title =~ \"linux [0-9]|newsboat\")" https://archlinux.org/feeds/packages/ packageupdates !
これで、このフィードには、linux と newsboat の更新のみが表示されます。
記事を無視する
クエリフィード と同様に、フィードをフィルタリングするもう 1 つの方法は、~/.config/newsboat/config
で ignore-article
コマンドを使用することです。次の構文があります
ignore-article FEEDURL FILTER_EXPRESSION
例
~/.config/newsboat/config
ignore-article "https://feed/url1" "content =~ \"tele(phone|communications)\"" ignore-article "https://feed/url2" "title =~ \"text_1|text_2\""
最初の例では、コンテンツが一致する https://feed/url1
内のすべての記事を無視します。
tele(phone|communications)
2 番目の例では、タイトルが text_1|text_2
と一致する https://feed/url2
内のすべての記事を無視します。
無視モード
クエリフィードによるフィルタリングとは対照的に、Newsboat では、ignore-article
コマンドに一致する記事をどう処理するかを決定できます。記事を削除したり、表示しなかったりすることができます。
~/.config/newsboat/config
# ignore-mode "download" # Default: Delete them. # ignore-mode "display" # Do not show them.
クエリフィードとの比較
純粋なフィルタリングに関して言えば、ignore-article
で実行できることはすべて、クエリフィード でも実行できます。
クエリフィードは ~/.config/newsboat/urls
ファイルで定義され、ignore-article
コマンドは ~/.config/newsboat/config
に配置されます。したがって、すべてのフィード関連のものを 1 か所にまとめておきたい場合は、次のようにすることをお勧めします。
ただし、スペースを節約したい場合など、Newsboat が特定の記事をダウンロードしないようにしたい場合は、
ignore-article
を使用することが唯一の選択肢です。
設定
Newsboat は、デフォルトで ~/.newsboat/config
または ~/.config/newsboat/config
にある設定ファイルを介して設定できます。この設定ファイルは以下のような形式で記述されます:
<config-command> <arg1> ...
カラースキーム
パッケージには、/usr/share/doc/newsboat/contrib/colorschemes/
に多数のスキームが同梱されており、次のように include コマンドでロードできます。
include /usr/share/doc/newsboat/contrib/colorschemes/inkpot
追加オプション
設定ファイルにはコメントも付けられます。コメントの先頭には #
記号をつけて、以下行末までコメントになります。空白が含まれた設定引数を入力する必要があるときは、クォート "
を使って引数全体を括って下さい。外部コマンドの出力を設定に組み入れることも可能です。バッククォート `
で囲まれたテキストはシェルコマンドとして評価され、その場所にはコマンドの出力が入ります。Bourne 互換シェルのバッククォートと同じように使うことができ、外部の情報を設定の中で使えるようになっています。
ヒントとテクニック
フィードの自動リロード
cron や systemd を使うことで自動的にフィードをリロードすることができます。crontab に行を追加するか、systemd のサービス/タイマーのコンボを作って以下のコマンドを実行してください:
/usr/bin/newsbeuter -x reload
もしくは、以下の設定をすることで Newsbeuter の起動時にフィードを全て自動的にリロードするように設定することもできます:
auto-reload yes
上記の設定をすると、Newsbeuter は定期的に自動リロードを行います。デフォルトでは60分に設定されています。自動リロードの間隔は以下のように設定できます:
reload-time <desired number of minutes>
フィードを並行ロードして更新を高速化する
デフォルトでは、Newsboat は ~/.newsboat/urls
内のエントリを順番に更新しようとします。ただし、次の設定では、一度に n 個ずつ並行して更新されます。nはお好みに合わせて調整してください。
reload-threads 100
記事の URL を外部のコマンドに渡す
外部のコマンドに記事の URL を渡すハックです。newsbeuter で記事を開くときのブラウザを設定する macro を使って他のコマンドのパスを利用して、その後、元の macro に戻します。
例えば、youtube のチャンネルを購読して mpv で動画を開きたい場合、以下のように設定します:
macro y set browser "mpv %u" ; open-in-browser ; set browser "elinks %u"
副題
ユーザーが副題を追加してフィードをより効率的に並べ替えることができる、もう 1 つの小さなハックがあります。このハッキングには、次のように偽のフィードを urls
ファイルに追加することが含まれます。
---Heading---
次に、~/.config/newsboat/config
に次の 2 行を追加します:
highlight feedlist "---.*---" COLOR_OF_YOUR_CHOOSING default bold highlight feedlist ".*0/0.." default default invis
COLOR_OF_YOUR_CHOOSING
を newsboat がサポートする色 に置き換えます。
このトリックは、---Heading---
を次のように置き換えることでタグと対話することもできます:
"query:---Heading---:tags # \"Tag\""
次に、見出しの下にあるすべてのフィードに Tag
をタグ付けします。
トラブルシューティング
Newsbeuter が起動しない
何もフィードを設定していないと Newsbeuter は起動しません。以下のようなエラーが表示される場合:
Error: no URLs configured. Please fill the file /home/ak/.newsbeuter/urls with RSS feed URLs or import an OPML file.
#フィードの管理 を見て URL を追加してください。
上記が問題ではない場合、おそらく newsbeuter の別のインスタンスが実行中です。Newsbeuter はデータベースにロックをかけるため一度にデータベースにアクセスできるインスタンスは一つのみとなっています。そのため、インスタンスを2つ開こうとしてもできません。