如何让irssi中的nicklist每次都出现?

Riv*_*asa 6 linux irssi tmux

我是 tmux 和 irssi 的狂热用户。我一直在尝试在 tmux 中使用带有 irssi 的 nicklist.pl,但只成功了一半。我目前正在按照此处的说明操作:使用 tmux 内的屏幕使用 irssi 运行 nicklist?

然而,它并不是每次都有效。如果我设置它,然后保存我的 irssi 配置,那么每次我在 tmux 中打开 irssi 时,脚本(位于 autorun 文件夹中)都不会创建 tmux 窗格并设置昵称。我该怎么做才能让它每次都起作用?

Dan*_*son 7

您链接的解决方案从未说它“自动”工作。您每次都需要手动拆分 tmux 窗口。irssi 本身无法控制 tmux 布局(尽管它可以编写脚本 - 请参阅结束语)。

如果要自动启动nicklistFIFO(这意味着“启动昵称列表的输出”——包括拆分 tmux 窗口和读取 FIFO),请添加nicklist fifo为启动命令,例如通过

echo "nicklist fifo" >> ~/.irssi/startup
Run Code Online (Sandbox Code Playgroud)

如果您从 tmux 会话中运行 tmux 命令:

:split-window -h -l 20 'cat ~/.irssi/nicklistfifo'
Run Code Online (Sandbox Code Playgroud)

您将在右侧打开一个新的拆分窗口,宽 20 个字符,并开始阅读其中的昵称。

您可以为 tmux 编写一个简单的启动脚本,它会自动执行最后一步(启动 irssi 并拆分窗口以读取 FIFO)。这是一个小例子:

#!/bin/sh
WNAME="irssi"
if ! tmux -L default attach-session -t ${WNAME}; then
    tmux new-session -d -s ${WNAME} 'irssi'
    tmux split-window -t ${WNAME} -h -l 20 'cat ~/.irssi/nicklistfifo'
    "${0}"
fi
Run Code Online (Sandbox Code Playgroud)

(也许在nicklist.pl没有及时创建 FIFO 以供第二个窗格读取它时会出现竞争条件;在这种情况下,请尝试sleep 1cat.之前添加一个或其他内容。)

作为奖励,此脚本将优雅地附加到可用会话(如果存在),而不是尝试启动重复的会话。

所有 tmux 操作都可用作 tmux 二进制文件的类似命令行参数。


假设您将窗格设置为某个终端大小。如果您从具有不同大小的终端附加到此会话,tmux 将调整窗格的大小,这将是有问题的,因为

  1. nicklist 需要知道演示窗口的宽度才能正确处理换行和滚动
  2. nicklist如果您希望能够处理全屏终端、25x80 和其他尺寸,窗格通常会变得太小而无法使用。

如果这是您经常做的事情,请参阅安装和设置 BitlBee 中的“自动更新 nicklist.pl 的 tmux 窗格大小”部分,以获取 irssi 插件,该插件可保持 tmux 窗格大小不变。