Newsboat
是 TUI 下的 Rss 阅读器。
RSS
,即 RDF Site Summary ,中文翻译是 聚合内容 ,其目的是将新闻标题、摘要、内容按照要求向用户推送,如此一来,用户既可以快速摄取重要信息,还不再需要手动查看更新。
Newsboat 就是为 Unix 和类 Unix 系统的用户在终端上浏览 Rss 而设计的,好比一艘来往各网站与用户终端间的货船,为用户载来信息,恰如其名 News Boat
。
安装 1. 从源码编译安装 1.1. 下载源码 最新源码可从仓库中下载:
1
git clone https://github.com/newsboat/newsboat.git
也可以从官网
下载。
1.2. 安装依赖包 Newsboat 的源码需要一些依赖包才可正常编译:
1.3. 编译安装 有以下方法可供参考:
在 Docker 中编译 在 Chroot 中编译 从源码编译: 1
sudo make install # 将所有文件安装进目录 /usr/local/ 下
若要安装进不同目录,可通过prefix
实现,比如:
1
sudo make prefix = /opt/newsboat install
2. 下载安装已编译好的软件 2.1. Aur Arch 用户可从 Aur 下载安装:
1
sudo pacman -S newsboat
2.2. 软件仓库 各 Linux、BSD、和其他系统发行版的下载方式可参考此清单 从 Snap
下载安装 1
sudo snap install newsboat
使用 安装完成后,执行命令newsboat
即可获得帮助信息。
关于如何寻找有趣的Feeds
,可以参考 RssHub
和 Rss 订阅源推荐
。
此外,搭配 RssHub Radar
插件,浏览器将自动识别所访问网站提供的Rss Feed
。
1. 添加 Newsboat 须要设置 Rss 源才可正常使用。
编辑$XDG_CONFIG_HOME/newsboat/urls
来添加 Rss 源(也可以按快捷键E
),一行一个,比如: 1
2
https://archlinux.org/feeds/news
http://www.archdaily.cn/cn/feed
1
newsboat -i blogroll.opml
2. 整理 当 Rss feeds 达到一定数量后,若不加以整理,会十分混乱,可以编辑$XDG_CONFIG_HOME/newsboat/urls
,其中,以#
开头的字符会被注释,方便分类管理Feeds
,比如:
Newsboat url 整理
2.1. 添加标签 为Feed
添加标签:
1
2
3
# Linux
https://archlinux.org/feeds/news/ "Arch" "linux"
...
在每条 Feed 后添加的、双引号内字符会被视为标签,Newsboat
中,可使用快捷键t
浏览
2.2. 重命名 为Feed
重命名:
1
2
3
# Linux
https://archlinux.org/feeds/news/ "Arch" "linux" ~Arch_News
...
在每条 Feed 后添加的、~
后的字符会被视为此Feed
在Newsboat
中所显示的名称
2. 配置 UI 界面 编辑$XDG_CONFIG_HOME/newsboat/colour
,在其中写入配色代码,并在$XDG_CONFIG_HOME/newsboat/config
中引用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 编辑 $XDG_CONFIG_HOME/newsboat/colour
# Font Block
color background default default
color listnormal color2 default
color listnormal_unread color9 default bold
color listfocus color10 color4
color listfocus_unread color1 color4 bold
color info color8 default
color article color15 default bold
# highlights
highlight article "^(Title):.*$" blue default
highlight article "https?://[^ ]+" red default
highlight article "\\[image\\ [0-9]+\\]" green default
highlight all "---.*---" blue
highlight feedlist ".*(0/0))" black
highlight article "(^Feed:.*|^Title:.*|^Author:.*)" color2 default bold
highlight article "(^Link:.*|^Date:.*)" color1 default bold
highlight article "https?://[^ ]+" color4 default
highlight article "^(Title):.*$" color1 default bold
highlight article "\\[[0-9][0-9]*\\]" magenta default bold
highlight article "\\[image\\ [0-9]+\\]" green default bold
highlight article "\\[embedded flash: [0-9][0-9]*\\]" green default bold
highlight article ":.*\\(link\\)$" color1 default
highlight article ":.*\\(image\\)$" color2 default
highlight article ":.*\\(embedded flash\\)$" magenta default
feedlist-format "%?T?║%n %12u %t &╠ %t?"
highlight feedlist "[║│]" color3 default
highlight feedlist "╠.*" color3 default
在$XDG_CONFIG_HOME/newsboat/config
中引用:
1
2
include ~/.config/newsboat/colour
...
Dracula 主题的 Newsboat 主题配色最好与系统一致
3. 配置联动程序 仅有Newsboat
本身是无法满足需求的,比如浏览图片、观看视频等等,这需要我们为各类型内容配置打开方式,比如:
图片:sxiv 视频:mpv 动图:mpv 其他:chromium 为此,需要编辑$XDG_CONFIG_HOME/newsboat/config
:
1
2
3
4
5
6
7
8
9
include ~/.config/newsboat/dracula
...
browser linkhandler
macro , open-in-browser
macro t set browser "qndl" ; open-in-browser ; set browser linkhandler
macro a set browser "tsp yt-dlp --embed-metadata -xic -f bestaudio/best --restrict-filenames" ; open-in-browser ; set browser linkhandler
macro v set browser "setsid -f mpv" ; open-in-browser ; set browser linkhandler
macro w set browser "lynx" ; open-in-browser ; set browser linkhandler
macro c set browser "echo %u | xclip -r -sel c" ; open-in-browser ; set browser linkhandler
代码解释:
linkhandler 为判断脚本,我的判断脚本如下文所示,其位于用户的可执行文件基本目录下(~/.local/bin/) 绑定不同快捷键手动指定浏览 我的 linkhandler
脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if [ -z " $1 " ] ; then
url = " $( xsel -o) "
else
url = " $1 "
fi
case " $url " in
*mkv| *webm| *mp4| *youtube.com/watch*| *youtube.com/playlist*| *youtube.com/shorts*| *youtu.be*| *hooktube.com*| *bitchute.com*| *videos.lukesmith.xyz*| *odysee.com*| *bilibili.com*)
setsid -f mpv -quiet " $url " >/dev/null 2>& 1 ;;
*png| *jpg| *jpe| *jpeg| *gif)
curl -sL " $url " > "/tmp/ $( echo " $url " | sed "s/.*\///;s/%20/ /g" ) " && sxiv -a "/tmp/ $( echo " $url " | sed "s/.*\///;s/%20/ /g" ) " >/dev/null 2>& 1 & ;;
*pdf| *cbz| *cbr)
curl -sL " $url " > "/tmp/ $( echo " $url " | sed "s/.*\///;s/%20/ /g" ) " && zathura "/tmp/ $( echo " $url " | sed "s/.*\///;s/%20/ /g" ) " >/dev/null 2>& 1 & ;;
*mp3| *flac| *opus| *mp3?source*)
qndl " $url " 'curl -LO' >/dev/null 2>& 1 ;;
*)
if [ -f " $url " ] ; then
setsid -f " $TERMINAL " -e " $EDITOR " " $url " >/dev/null 2>& 1
else
setsid -f " $BROWSER " " $url " >/dev/null 2>& 1
fi
esac
4. 配置定时任务 可以将定时更新加入定时任务中,并使用dunst
发送更新通知(需要为dunst
设置开机自启),我的定时任务脚本位于$HOME/.local/bin/cron
下。
1
nvim $HOME /.local/bin/cron/newsup
1
2
3
4
#!/bin/sh
dunstify -i terminal " Updating RSS..."
/usr/bin/newsboat -x reload
dunstify -i terminal " RSS update complete."
执行crontab -e
,将脚本加入定时任务,每半小时执行一次更新: 1
*/30 * * * * /bin/bash ~/.local/bin/cron/newsup
参考链接 Newsboat Wiki RSS