#hacker-news #tui #command-line-interface

程序 hackernews

终端用户界面,用于浏览 Hacker News

31 个版本

0.13.4 2023年10月21日
0.13.2 2023年6月4日
0.12.0 2023年2月3日
0.11.0 2022年10月7日
0.3.1 2021年3月30日

命令行工具 中排名 45

MIT 许可证

235KB
5K SLoC

hackernews-TUI

hackernews_tui 是一个快速且 可自定义 的应用程序,用于在终端中浏览 Hacker News。

hackernews_tui 使用 Rust 编写,并借助 Cursive TUI 库。它使用 HN Algolia APIsHN 官方 APIs 获取 Hacker News 数据。

目录

安装

二进制文件

应用程序的预构建二进制文件可在 发布页面 找到。

使用 cargo

通过运行 cargo install hackernews_tui --lockedcrates.io 安装最新版本。

Docker 镜像

您可以通过运行以下命令从 master 分支下载最新构建的二进制镜像:

docker pull aome510/hackernews_tui:latest

然后运行

docker run -it aome510/hackernews_tui:latest

来运行应用程序。您还可以在运行镜像时使用本地配置文件,通过运行以下命令实现:

docker run --rm -v ${CONFIG_FILE_PATH}:/app/hn-tui.toml -it aome510/hackernews_tui:latest

其中 ${CONFIG_FILE_PATH} 是本地配置文件的路径。

从源码构建

运行

git clone https://github.com/aome510/hackernews-TUI.git
cd hackernews-TUI
cargo build --release

来构建应用程序,然后运行

./target/release/hackernews_tui

来运行应用程序,或

ln -sf $PWD/target/release/hackernews_tui /usr/local/bin

将可执行二进制文件链接到 /usr/local/bin 文件夹。

Windows

通过 Scoop

运行 scoop install hackernews-tui 来安装应用程序。

macOS

通过 MacPorts

运行 sudo port install hackernews-tui 来安装应用程序。

Arch Linux

运行 yay -S hackernews_tui 来以 AUR 包的形式安装应用程序。

NetBSD

使用包管理器

pkgin install hackernews-tui

从源码构建

cd /usr/pkgsrc/www/hackernews-tui
make install

示例

演示

hackernews_tui v0.9.0 的演示视频可在 youtubeasciinema 上找到。

asciicast

故事视图

Example of a Story View

文章视图

Example of an Article View

搜索视图

Example of a Search View

评论视图

Example of a Comment View

默认快捷键

在每个 View 中,按 ? 查看支持的快捷键列表及其功能。

Example of a Help View

以下部分将列出应用程序的默认快捷键,这些快捷键可以通过更改用户配置文件中的 键映射 进行自定义。

有关配置应用程序键映射或定义自定义快捷键的更多信息,请参阅 配置文档

全局快捷键

命令 描述 默认快捷键
open_help_dialog 打开帮助对话框 ?
close_dialog 关闭对话框 esc
quit 退出应用程序 [q,C-c]
goto_previous_view 转到上一个视图 [backspace,C-p]
goto_search_view 转到搜索视图 [/,C-s]
goto_front_page_view 转到首页视图 F1
goto_all_stories_view 转到所有故事视图 F2
goto_ask_hn_view 转到 Ask HN 视图 F3
goto_show_hn_view 转到 Show HN 视图 F4
goto_jobs_view 转到工作视图 F5

Edit shortcuts

命令 描述 默认快捷键
move_cursor_left 将光标移到左边 [left,C-b]
move_cursor_right 将光标移到右边 [right,C-f]
move_cursor_to_begin 将光标移到行的开头 [home,C-a]
move_cursor_to_end 将光标移到行的末尾 [end,C-e]
backward_delete_char 删除前面的一个字符 backspace

滚动快捷键

命令 描述 默认快捷键
up 向上滚动 [k,up]
down 向下滚动 [j,down]
page_down 向上滚动半页 [d,page_down]
page_up 向下滚动半页 [u,page_up]
top 滚动到顶部 [g,home]
bottom 滚动到底部 [G,end]

每个 View 的快捷键

故事视图快捷键

命令 描述 默认快捷键
next_story 聚焦下一个故事 j
prev_story 聚焦上一个故事 k
next_story_tag 转到下一个故事标签 l
previous_story_tag 转到上一个故事标签 h
goto_story 聚焦第 {story_id} 个故事 {story_id}g
goto_story_comment_view 转到与聚焦故事关联的评论视图 enter
open_article_in_browser 在浏览器中打开聚焦故事的文章 o
open_article_in_article_view 在文章视图中打开聚焦故事的文章 O
open_story_in_browser 在浏览器中打开聚焦的故事 s
next_page 转到下一页 n
prev_page 转到上一页 p
cycle_sort_mode 循环故事排序模式 d

文章视图快捷键

命令 描述 默认快捷键
open_article_in_browser Open article in browser a
open_link_in_browser 在浏览器中打开第 {link_id} 个链接 {link_id}o
open_link_in_article_view 在文章视图中打开第 {link_id} 个链接 {link_id}O
open_link_dialog 打开链接对话框 l
命令 描述 默认快捷键
next 聚焦下一个链接 [j,down]
prev 聚焦上一个链接 [k,up]
open_link_in_browser Open in browser the focused link [o,enter]
open_link_in_article_view 在文章视图中打开聚焦的链接 O

评论视图快捷键

命令 描述 默认快捷键
next_comment 聚焦下一个评论 j
prev_comment 聚焦上一个评论 k
next_leq_level_comment 聚焦下一个级别或更低的评论 l
prev_leq_level_comment 聚焦上一个级别或更低的评论 h
next_top_level_comment 聚焦下一个顶级评论 n
prev_top_level_comment 聚焦上一个顶级评论 p
parent_comment 聚焦父级评论(如果存在) u
toggle_collapse_comment 切换聚焦项的展开/折叠状态 tab
vote 切换聚焦项的投票状态(需要认证 v
open_article_in_browser 在浏览器中打开讨论的文章 a
open_article_in_article_view 在文章视图中打开讨论的文章 A
open_story_in_browser 在浏览器中打开讨论的故事 s
open_comment_in_browser 在浏览器中打开聚焦的评论 c
open_link_in_browser 在浏览器中打开聚焦评论中的 {link_id}-th 链接 {link_id}o
open_link_in_article_view 在文章视图中打开聚焦评论中的 {link_id}-th 链接 {link_id}O

搜索视图快捷键

SearchView 中,有两种模式:NavigationSearch。默认模式是 Search

Search 模式类似于 Vim 的插入模式,用户可以输入查询字符串。

Navigation 模式允许 SearchView 类似于 StoryView 处理匹配的故事。

SearchView 特定的键盘快捷键

命令 描述 默认快捷键
to_search_mode Navigation 模式进入 Search 模式 i
to_navigation_mode Search 模式进入 Navigation 模式 <esc>

配置

默认情况下,hackernews-tui 会查找用户配置目录内的 hn-tui.toml 用户定义配置文件

如果没有找到这样的文件,应用程序将回退到使用一组默认配置

用户也可以在运行应用程序时通过使用 -c--config 选项来指定配置文件的路径。

hackernews_tui -c ~/.config/hn-tui.toml

有关应用程序配置的更多信息,请参阅示例配置文件配置文档

身份验证

用户可以通过在 hn-auth.toml 文件中指定 usernamepassword 来验证他们的账户

username=""
password=""

默认情况下,认证文件应该位于通用配置文件(hn-tui.toml)相同的文件夹中,可以通过指定 ---auth 选项来配置。

日志记录

hackernews-tui 使用 RUST_LOG 环境变量来定义应用程序的 日志级别(默认为 INFO)。

默认情况下,应用程序将在 用户的缓存目录 内创建 hn-.log 日志文件,可以通过指定 ---log 选项来配置。

路线图

  • 使所有命令可定制
  • 添加一个 View 以在终端的阅读模式下阅读链接的故事。可以在此找到可能的建议列表这里
  • 添加命令以导航父级评论并折叠评论
  • 将所有配置选项设置为可选
  • 集成HackerNews官方API,用于实时更新、懒加载评论和排序故事
    • 懒加载评论
    • 首页故事类似于官方网站
    • 实时更新
  • 实现更智能的懒加载评论功能
  • 添加认证支持以允许
    • 认证
    • 点赞/踩
    • 添加评论
    • 发布
  • 改进应用程序的UI
    • 改进应用程序的整体外观
    • 包含有用的字体高亮显示
    • 重写主题解析器以支持更多主题,并允许从已知的颜色方案解析主题
    • 添加一些额外的过渡效果
  • 改进键绑定处理器
    • 允许将多个键绑定到单个命令
    • 添加前缀键支持(类似于Emacs的键链 - C-x C-c ...

依赖项

~19–33MB
~458K SLoC