WeeChat
WeeChat 是一个高度可扩展且功能丰富的 IRC 客户端。
安装
安装 weechat 软件包,或者 weechat-gitAUR 以获取开发版本。
使用
WeeChat 提供了两个可执行文件
- weechat(1), curses 界面;
- weechat-headless(1),无头版本。
配置
默认情况下,WeeChat 将其配置文件存储在 XDG 目录中。不建议直接编辑这些文件,因为 WeeChat 可能会随时写入它们。[1]
相反,您应该使用 /set 命令。您可以通过在 WeeChat 缓冲区窗口中运行 /set
来获取所有可配置选项的列表。由于有近 600 个默认可配置选项,您可以使用通配符语法搜索它们:例如 /set irc.server.*
或 /set *server*
。您可以使用 /help
命令获取每个选项的帮助。
/help irc.server.libera.autoconnect
~/.weechat
中),请使用此选项:$ weechat -d $HOME/.weechat
或设置环境变量 WEECHAT_HOME
。连接到服务器
您可以通过添加 IRC 服务器,然后使用 /connect
连接到它。
/server add libera irc.libera.chat/6697 /connect libera
有关更多信息,请参阅 WeeChat 文档和 /help server
。
/connect
临时连接服务器,而无需事先添加服务器。要启用此功能,请先使用 /set irc.look.temporary_servers on
。配置 SSL
包括 Libera.Chat 在内的许多 IRC 服务器都支持 SSL,Arch IRC 频道 也位于 Libera.Chat 上。
如果您使用 /server
创建服务器,请在行尾添加 SSL 端口(通常为 6697)和 -tls
。例如
/server add libera irc.libera.chat/6697 -tls
技巧与提示
升级
WeeChat 可以在不与 IRC 服务器断开连接的情况下升级(仅限非 SSL 连接)
/upgrade
这将加载新的 WeeChat 二进制文件并重新加载当前配置。
别名
可以创建别名以简化常用的命令。一个不错的例子是 Wraithan 的 智能过滤器 别名
首先,我们需要启用智能过滤器
/set irc.look.smart_filter "on"
接下来,我们将创建 “sfilter” 别名
/alias add sfilter filter add irc_smart_$server_$channel irc.$server.$channel irc_smart_filter *
我们现在可以输入
/sfilter
在任何缓冲区中,智能过滤器将仅在该缓冲区中启用。
以下别名将删除当前缓冲区中先前启用的智能过滤器。添加别名
/alias add rmsfilter filter del irc_smart_$server_$channel
并通过以下方式执行它
/rmsfilter
Exec 命令
一个名为 “exec” 的插件可用,带有命令 /exec
。它将执行外部命令,并且可以使用 -o
选项或本地(默认)将输出显示到当前缓冲区。
快捷键绑定
参见 /help key
。
添加基本 irssi 样式窗口滚动的示例
/key bind meta-p /window page_up /key bind meta-n /window page_down
如果您正在使用 vimode 插件,则大多数默认绑定将不起作用,并且将具有类似 vim 的替代方案。查看 绑定
SSH 连接空闲时断开
如果您通过远程 shell 使用 SSH 连接到您的 WeeChat,例如在 GNU Screen 或 tmux 中运行它,您可能会在空闲一段时间后断开连接。有很多因素可能导致这种情况发生,但最简单的更改方法是在远程 shell 上的 SSH 配置中附加以下内容,以强制保持连接活动。
这与 WeeChat 本身无关,但是对于那些转换为 WeeChat 的人来说,空闲时失去连接的情况不会发生在它的替代品 irssi 中,因此这是一个常见的情况。
# /etc/ssh/sshd_config
ClientAliveInterval 300
或者查看 Mosh。
表情符号
表情符号是 Unicode 集的一部分。表情符号的要求
- 终端模拟器必须支持 Unicode 和表情符号子集。
- 终端模拟器中使用的字体必须支持表情符号子集。
支持表情符号的终端的不完整列表
鼠标支持
终端模拟器将传递鼠标滚动事件,weechat 将 在区域中滚动
- 聊天区域
- 昵称列表栏
Tmux 中的鼠标
在 tmux 中运行时,在 ~/.tmux.conf
中启用鼠标支持
set -g mouse on
Matrix
weechat-matrixAUR 脚本允许您连接到 Matrix 服务器。安装它,然后
- 在 WeeChat 中运行
/script load weechat-matrix.py
, - 配置 weechat-matrix,并且
- 在 Matrix 缓冲区中使用
/join
命令加入 Matrix 频道,例如/join #archlinux:archlinux.org
。
要在 WeeChat 启动期间自动加载脚本,请运行
$ mkdir -p ~/.local/share/weechat/python/autoload $ ln -s /usr/share/weechat/python/weechat-matrix.py -t ~/.local/share/weechat/python/autoload
Slack
有一个用于 Slack 的原生客户端:wee-slack
桌面通知
要接收提及或私信的桌面通知,可以安装 Petr Zemek 的 weechat-notify-sendAUR 脚本。
该脚本使用 libnotify,并且已知可与 KDE 和 Gnome 一起使用。
内置 trigger
插件的另一个替代方法是为 trigger.trigger.beep.command
设置一个值。
/set trigger.trigger.beep.command "/print -beep;/exec -bg notify-send -i '/usr/share/icons/hicolor/32x32/apps/weechat.png' 'IRC Notification' "${tg_tag_nick}: ${tg_message_nocolor}""
移动设备通知
要接收提及或私信到 Android 移动设备的通知,您可以使用 官方网站 上的 IrssiNotifier 到 WeeChat 的端口。此脚本需要 Google 帐户,以及向服务提供商注册步骤以获取 API 密钥。然后,安装插件
$ cd ~/.local/share/weechat/python $ curl -O https://www.weechat.org/files/scripts/irssinotifier.py $ ln -s ../irssinotifier.py autoload/
并在 WeeChat 中初始化 API 令牌和端到端加密密码
/set plugins.var.python.irssinotifier.api_token your-api-token-from-website /set plugins.var.python.irssinotifier.encryption_password your-password-same-as-in-andoid-app /save
不需要 Google 帐户的替代方案是 GitHub 上的 NotifyMyAndroid.com 的 Ruby 脚本,其安装步骤与上述类似,但安装到 ~/.local/weechat/ruby
中。
使用 systemd 用户服务进行 WeeChat 中继
要将您的 WeeChat 实例用作其他 WeeChat 客户端的 WeeChat 中继(不要与 IRC 中继功能混淆),您可以使用 WeeChat 中继插件和 systemd 用户服务(如果您只需要无头操作),或者使用 systemd 用户服务和 tmux 的组合来维护完整的命令行功能。
两种方法都涉及到在 ~/.config/systemd/user/
目录中创建一个服务文件
tmux 方法
由于 systemd 管理作业的方式与 tmux 的客户端-服务器行为之间存在不兼容性,因此您需要使用 -L
选项将默认 tmux 会话与 systemd 管理的 WeeChat 会话分开。如果这是使用默认套接字启动的第一个 tmux 会话,则停止并重新启动 WeeChat 用户服务将杀死连接到默认 tmux 套接字的所有会话。如果 WeeChat tmux 会话在另一个默认 tmux 会话之后启动,则 WeeChat 会话将在 systemd 移动到下一个服务单元后死亡。将 WeeChat tmux 服务器隔离到其自己的套接字会强制在调用 systemctl 时的预期行为。但这确实意味着您在使用 tmux 时不会看到 WeeChat 会话,除非使用 -L
选择正确的套接字。
~/.config/systemd/user/weechat.service
[Unit] Description=A WeeChat client and relay service using Tmux After=network.target [Service] Type=forking RemainAfterExit=yes ExecStart=/usr/bin/tmux -L weechat new -d -s weechat weechat ExecStop=/usr/bin/tmux -L weechat kill-session -t weechat [Install] WantedBy=default.target
一旦服务就位,您需要做的就是 启动/启用 用户单元并运行 loginctl enable-linger
。
从那里您可以连接到 tmux 会话以配置 weechat 中继插件
$ tmux -L weechat attach
从那里您可以在控制台上使用所需的设置配置 WeeChat 中继插件:https://www.weechat.org/files/doc/stable/weechat_user.en.html#relay
如果您想隐藏 tmux 状态栏,可以将此选项附加到 ExecStart
\; set-option status off
为了在会话中显示 256 色,可能需要将此附加到 tmux 配置文件
set -g default-terminal screen-256color
无头方法
此方法的一个主要区别是,您要么需要正常启动 WeeChat,配置中继插件,停止 WeeChat,然后启动服务,要么在 WeeChat 未运行时手动编辑您的 relay.conf
文件,然后启动您的服务。无论哪种方式,您都需要在启动 systemd WeeChat 服务之前配置您的中继设置:https://www.weechat.org/files/doc/stable/weechat_user.en.html#relay。
~/.config/systemd/user/weechat-headless.service
[Unit] Description=A headless WeeChat client and relay service After=network.target [Service] Type=forking ExecStart=/usr/bin/weechat-headless --daemon [Install] WantedBy=default.target
一旦服务就位,您需要做的就是 启动/启用 用户单元并运行 loginctl enable-linger
。
请注意,我们不需要定义 ExecStop
,因为 systemd 将自动跟踪 PID 并向守护程序发送适当的关闭信号。
一旦用户单元就位,启用 它。当您准备好启动您的无头中继时,启动 用户单元。
故障排除
加载插件时出错
启动 weechat 后,您可能会在主窗口中看到如下输出
13:26:10 =!= | Error: unable to load plugin "/usr/lib/weechat/plugins/ruby.so": libruby.so.2.4: cannot open shared object file: No such file or directory 13:26:10 =!= | If you're trying to load a script and not a C plugin, try command to load scripts (/perl, /python, ...) 13:26:10 =!= | Error: unable to load plugin "/usr/lib/weechat/plugins/lua.so": liblua.so.5.3: cannot open shared object file: No such file or directory 13:26:10 =!= | If you're trying to load a script and not a C plugin, try command to load scripts (/perl, /python, ...) 13:26:10 =!= | Error: unable to load plugin "/usr/lib/weechat/plugins/aspell.so": libaspell.so.15: cannot open shared object file: No such file or directory 13:26:10 =!= | If you're trying to load a script and not a C plugin, try command to load scripts (/perl, /python, ...) 13:26:10 =!= | Error: unable to load plugin "/usr/lib/weechat/plugins/tcl.so": libtcl8.6.so: cannot open shared object file: No such file or directory 13:26:10 =!= | If you're trying to load a script and not a C plugin, try command to load scripts (/perl, /python, ...)
weechat 的默认配置尝试加载在 /usr/lib/weechat/plugins
中找到的所有插件,在本例中包括 ruby、lua、aspell 和 tcl。weechat 软件包不需要这些软件包,并且可能未安装在您的机器上。如果这些错误困扰您,则有两种选择
- 安装 ruby、lua、aspell 和/或 tcl。
- 或者,运行
/set weechat.plugin.autoload "*,!ruby,!lua,!aspell,!tcl"
,这将阻止加载带有感叹号 (!) 前缀的那些插件。
加载 multiline.pl 时出现问题
此问题发生在 perl 版本 >= 5.31.1
脚本 multiline.pl
依赖于 Pod::Select
模块。但是,由于 perl 版本 v5.31.1 Pod::Select
已被删除。
要解决此问题,请安装 perl-pod-parser。
参见
指南
- 官方 WeeChat 快速入门指南 - 一个好的开始
- FiXato 的 WeeChat 指南 - Weechat 贡献者指南
- 我始终保持最新的 WeeChat 配置 - r3m (weechat-dev)