6 个版本

使用旧的 Rust 2015

0.1.5 2018 年 9 月 1 日
0.1.4 2018 年 7 月 30 日
0.1.3 2017 年 11 月 18 日
0.1.2 2017 年 9 月 18 日
0.1.0 2017 年 7 月 14 日

#2 in #terminals

24 每月下载量
用于 termbox_simple

MIT 许可证

14KB
249 行代码

tiny - 另一个终端 IRC 客户端

tiny 是一个用 Rust 编写的 IRC 客户端。

功能

  • 干净的 UI:连续的 join/part/quit 消息显示在同一行,如果消息时间与之前相同则省略时间戳。(受 irc-core 启发)

  • 将所有提及用户的信息收集在“提及”标签中,包括服务器和频道信息。“提及”标签解决了长时间不活跃后,在频道中未提及您的问题。

  • 在频道中提及用户将被突出显示(标签页列表中的频道标签页也会突出显示)

  • 简单的配置文件格式,用于自动连接服务器、加入频道、注册昵称等。请参阅下方的配置部分

  • 在频道中进行昵称自动完成

  • 频道中的昵称被着色。

  • 断开连接检测和自动重新连接。您可以在笔记本电脑上运行 tiny,并在睡眠后自动重新连接。

  • 受终端仿真器和 vim 启发的可配置快捷键。请参阅下方的快捷键部分

  • 可配置颜色

  • SASL 身份验证

  • 在新消息上可配置的桌面通知(作为功能标志后的可选功能,请参见下文)

  • 与 znc 兼容

  • TLS 支持

安装

tiny 在 Linux 和 OSX 上运行。Windows 用户可以在 Windows Subsystem for Linux 下运行它。

有关预构建的二进制文件,请参阅发布。要从源代码构建,请确保您有 Rust 1.48 或更高版本。默认情况下,tiny 使用 rustls 进行 TLS 支持,并且禁用桌面通知。

  • 要使用系统 TLS 库(OpenSSL 或 LibreSSL),请向您的命令添加 --no-default-features --features=tls-native。请注意,这需要在 Linux 上安装 OpenSSL 或 LibreSSL 的头文件和运行时库。

  • 要启用桌面通知,请添加 --features=desktop-notifications。这需要在 Linux 上安装 libdbus。

在克隆中安装

cargo install --path crates/tiny

如果您不想克隆存储库,您可以使用

cargo install --git https://github.com/osa1/tiny

如果您已安装了较旧版本,请向您的命令添加 --force

Arch Linux 用户可以通过 AUR 安装 tiny 的最新稳定版开发版

tiny已在Linux和OSX上进行了测试。

配置

tiny会在以下位置查找配置文件

  • 在Linux上:$XDG_CONFIG_HOME/tiny/config.yml,在macOS上:$HOME/Library/Application Support/tiny/config.yml
  • (如果找不到)$HOME/.config/tiny/config.yml
  • (如果找不到,已弃用)$HOME/.tinyrc.yml

如果在这些位置中找不到配置文件,tiny会在上面的第一个路径中创建一个默认的配置文件并退出,打印配置文件路径。在重新运行tiny之前编辑该文件以更改默认值。

关于昵称识别的说明:一些IRC服务器,如ircd-seven(由Freenode使用)和InspIRCd(由Mozilla使用),支持通过PASS命令进行识别。当一些自动加入的频道需要识别时,这种识别方式(而不是向像NickServ这样的服务发送消息)更好。要使用此方法,在服务器的pass字段中输入您的昵称密码。

使用外部命令密码

当配置文件中的密码字段是一个具有command键的映射时,其值用作运行以获取密码的shell命令。

例如,在这个配置中

sasl:
  username: osa1
  password:
    command: 'pass show "my irc password"'

tiny运行pass ...命令,并使用该命令打印的最后一行作为密码。

命令行参数

默认情况下(即没有传递命令行参数时),tiny连接到配置中列出的所有服务器。tiny将命令行参数视为要匹配的服务器地址的模式,因此您可以将命令行参数传递给仅连接到配置中指定的服务器子集。例如,在这个配置中

servers:
    - addr: irc.libera.chat
      ...

    - addr: irc.gnome.org
      ...

默认情况下,tiny连接到两个服务器。您可以通过传递libera作为命令行参数仅连接到第一个服务器。

您可以使用--config <路径>来指定您的配置文件位置。

键盘快捷键

可以在配置文件中配置键盘快捷键,有关详细信息,请参阅维基页面

默认键盘快捷键

  • C-a/C-e将光标移动到输入字段的开始/结束位置

  • C-k删除整行剩余内容

  • C-w删除一个单词

  • C-left/C-right向后/向前移动一个单词

  • page up/page downshift-up/shift-downC-u/C-d进行滚动

  • C-n/C-p下一个/上一个标签页

  • C-c enter退出(请求确认)

  • alt-{1,9} 切换到第n个标签

  • alt-{char} 切换到下一个带有下划线的标签 char

  • alt-0 切换到最后一个标签

  • alt-left/right 将标签移动到左侧/右侧

  • C-x$EDITOR 中编辑当前消息

命令

命令以 / 字符开头。

  • /help:显示以下列出的命令的帮助信息。

  • /msg <nick> <message>:向用户发送消息。创建新的标签。

  • /join <channel>:加入频道

  • /close:关闭当前标签。如果当前标签是频道,则离开频道。如果标签是服务器,则离开服务器。您可以使用 /close <reason> 发送告别消息。

  • /connect <hostname>:<port>:连接到服务器。使用配置文件中的默认值(昵称、真实姓名、主机名和自动命令)。

  • /connect:重新连接到当前服务器。如果您不想在连接问题后等待一小段时间自动重新连接,请使用它。

  • /away <msg>:设置忙碌状态

  • /away:移除忙碌状态

  • /nick <nick>:更改昵称

  • /names:列出当前频道中的所有昵称。您可以使用 /names <nick> 检查特定昵称是否在频道中。

  • /reload:重新加载TUI配置

  • /clear:清除标签内容

  • /switch <string>:切换到第一个名称中包含给定字符串的标签。

  • /ignore:忽略频道中的 join/quit 消息。在服务器标签中运行此命令将应用于该服务器的所有频道。您可以在状态行中检查您的忽略状态。

  • /notify [off|mentions|messages]:启用和禁用桌面通知。在服务器标签中运行此命令将应用于该服务器的所有频道。您可以在状态行中检查您的通知状态。

  • /quit:退出。您可以使用 /quit <reason> 发送告别消息。

服务器命令

对于tiny不支持作为斜杠命令的命令,在服务器标签中发送命令将直接将消息发送到服务器。

示例

  • LIST 将列出服务器上的所有频道
  • MOTD 将显示服务器的每日消息
  • RULES 将显示服务器规则
  • 等等...

社区

加入我们在 irc.oftc.net 的 #tiny,畅谈与 tiny 相关的任何话题!


lib.rs:

解释我们关心的终端事件

  • 调整大小事件。
  • 键盘输入。

通过注册 SIGWINCH 信号处理程序来处理调整大小事件。

从 stdin 读取键盘事件。我们寻找我们关心的键组合的字节字符串。例如,Alt-箭头键、C-w 等。

依赖项

~1.5MB
~37K SLoC