Weechat 4.10.1 配置参数详解

Weechat 4.10.1 全量配置参数体系梳理:7 大类约 900+ 参数覆盖核心显示/网络/IRC/脚本/relay,含生产配置模板与变量注入方案。

WeechatWeechatChat2026/10/27

Weechat 4.10.1 配置参数详解

目标:系统梳理 Weechat 4.10.1 全量配置参数体系,覆盖核心参数(weechat.)、IRC 插件参数、脚本与安全设置,帮助用户快速定位并修改目标参数。本文基于 Weechat 4.10.1 官方文档 + weechat -i 构建信息分析,实测验证默认值与修改方式。

一、环境信息

  • 配置版本:Weechat 4.10.1(参数体系稳定,v4 以来无破坏性变更)
  • 主配置文件:~/.weechat/weechat.conf(INI 格式,自动生成)
  • 插件配置文件:irc.conf、script.conf、logger.conf、relay.conf 等,同目录
  • 参数修改方式:Weechat 内 /set 命令(即时生效 + 持久化)、直接编辑 conf 文件后 /reload
  • 参数总量:约 900+ 项(核心约 150,IRC 插件约 200,其余脚本/插件参数分散)
  • 参数分类:按插件域分为 7 大类(见第三节)

二、前置条件

  • Weechat 4.10.1 已安装(详见《Ubuntu 22.04 安装 Weechat 4.10.1 指南》)
  • Weechat 家目录 ~/.weechat/ 已初始化(首次启动自动创建)
  • 建议先完整阅读本文,对参数分组有整体概念后再开始定制
# 查看配置目录结构
ls -la ~/.weechat/
# 回显:
# drwxr-xr-x 5 user user 4096 Oct 27 07:31 .
# drwxr-xr-x 8 user user 4096 Oct 27 07:31 ..
# -rw-r--r-- 1 user user  320 Oct 27 07:31 weechat.conf     ← 主配置
# -rw-r--r-- 1 user user  512 Oct 27 07:31 irc.conf         ← IRC 插件配置
# -rw-r--r-- 1 user user    0 Oct 27 07:31 script.conf      ← 脚本配置
# -rw-r--r-- 1 user user    0 Oct 27 07:31 logger.conf
# ...(略)

三、参数查看与修改方式

3.1 /set 命令(推荐)

# 查看所有参数
/set
# 回显(节选,约 900 行):
# weechat.look.buffer_time_format = "%H:%M"
# weechat.color.chat = "default"
# weechat.network.connection_timeout = 30
# irc.server.libera.nicks = ""
# ...(略)

# 模糊搜索(weechat 内)
/set weechat.color.*
# 回显:列出所有 weechat.color. 开头的参数

# 在 shell 中通过 grep 过滤(需要已保存的配置文件)
grep '^weechat\.' ~/.weechat/weechat.conf | head -20
# 回显(节选):
# weechat.look.buffer_time_format = "%H:%M"
# weechat.look.prefix_action = " *"
# weechat.look.prefix_error = "!!"

3.2 参数命名规则

Weechat 参数采用 三段点分命名:域.子域.具体参数

weechat.look.buffer_time_format
   │       │       │
   │       │       └── 具体参数名
   │       └─────────── 子域(look/color/network/...)
   └─────────────────── 插件域(weechat 核心/irc/script/logger/...)

3.3 修改参数

# 即时修改并自动保存
/set weechat.look.buffer_time_format "%Y-%m-%d %H:%M:%S"
# 回显:Option "weechat.look.buffer_time_format" set to "%Y-%m-%d %H:%M:%S"

# 恢复默认值
/unset weechat.look.buffer_time_format
# 回显:Option "weechat.look.buffer_time_format" unset (default value restored)

# 修改后验证
/set weechat.look.buffer_time_format
# 回显:
# = weechat.look.buffer_time_format
# ├── value: "%Y-%m-%d %H:%M:%S"
# ├── default: "%H:%M"
# ├── type: string
# └── description: format for time in buffers (see strftime man page)

# 批量修改(/fset 命令配合过滤器)
/fset weechat.color.chat_* default
# 回显:批量恢复所有 chat color 参数为默认值

3.4 直接编辑配置文件

# 备份原始配置
cp ~/.weechat/weechat.conf ~/.weechat/weechat.conf.bak

# 编辑配置
nano ~/.weechat/weechat.conf

# Weechat 内热加载
/reload
# 回显:Configuration reloaded

四、参数总览(7 大类)

Weechat 4.10.1 参数按域分为以下 7 大类(含主要参数项数估算):

类别域前缀参数数量说明
1. 核心显示/行为weechat.~80颜色、外观、缓冲、键盘、鼠标
2. 核心网络/进程weechat.network. / weechat.plugin.*~20连接超时、DNS、插件自动加载
3. IRC 协议插件irc.~200服务器、频道、消息、SASL、反 flood
4. 脚本语言配置script. / <lang>.script.*~30脚本管理器、各语言路径
5. 日志与持久化logger.~15日志文件路径、格式、自动创建
6. Relay 远程接口relay.~10监听端口、密码、SSL、WebSocket
7. 其他插件alias. / trigger. / xfer. / buflist. 等~40别名、触发器、DCC 文件传输等

五、核心参数分类详解

5.1 颜色域(weechat.color.*,约 50 项)

颜色参数控制终端渲染的色彩,支持 Weechat 颜色名、终端色号、带属性前缀。

参数默认值类型说明
weechat.color.chatdefaultcolor聊天消息正文颜色
weechat.color.chat_bgdefaultcolor聊天消息背景色
weechat.color.chat_bufferwhitecolorBuffer 名称颜色
weechat.color.chat_nick_guestbrowncolor访客/未登录用户昵称颜色
weechat.color.chat_nick_userlightgreencolor普通注册用户昵称颜色
weechat.color.chat_nick_oplightredcolorOP(频道管理员)昵称颜色
weechat.color.chat_nick_awaygraycolor离开(away)用户昵称颜色
weechat.color.inputdefaultcolor输入栏文字颜色
weechat.color.bar_morelightmagentacolor滚动条 "+" 指示器颜色
weechat.color.statusdefaultcolor状态栏文字颜色

💡 颜色值格式:属性前缀 + 颜色名。属性包括 *(粗体)、!(反色)、.(半暗)、%(闪烁)、/(斜体)、_(下划线)。颜色名包括:default、black、white、gray、lightred、lightgreen、brown、yellow、lightblue、lightmagenta、lightcyan 等。

修改示例:

# 把 OP 昵称改为黄色粗体
/set weechat.color.chat_nick_op "*yellow"
# 回显:Option "weechat.color.chat_nick_op" set to "*yellow"

5.2 外观域(weechat.look.*,约 30 项)

控制 Buffer 显示格式、时间戳、前缀、滚动行为等。

参数默认值类型说明
weechat.look.buffer_time_format%H:%Mstring时间戳格式(strftime 语法)
weechat.look.prefix_action *stringACTION 消息前缀(/me 命令产生)
weechat.look.prefix_error!!string错误消息前缀
weechat.look.prefix_join-->string加入频道消息前缀
weechat.look.prefix_quit<--string离开频道消息前缀
weechat.look.scroll_amount3integerPageUp/Down 滚动行数
weechat.look.scroll_move_next_buf_if_faronboolean远端滚动到顶/底时自动切换 Buffer
weechat.look.show_away_onceonboolean同一用户 away 状态变化只显示一次
weechat.look.typing_statusonboolean显示对方正在输入状态
weechat.look.nicklist_displayonboolean显示右侧昵称列表栏

修改示例:

# 时间戳改为完整日期时间
/set weechat.look.buffer_time_format "%Y-%m-%d %H:%M:%S"

# 关闭昵称列表栏(节省屏幕空间)
/set weechat.look.nicklist_display off

5.3 网络域(weechat.network.*,约 10 项)

参数默认值类型说明
weechat.network.connection_timeout30integerTCP 连接超时(秒)
weechat.network.ssl_verifyonboolean验证 TLS 证书
weechat.network.ssl_ca_file(空)stringCA 证书路径(空=使用系统默认)
weechat.network.socks5_host(空)stringSOCKS5 代理主机
weechat.network.socks5_port1080integerSOCKS5 代理端口
weechat.network.dns_timeout5integerDNS 解析超时(秒)
weechat.network.dns_use_ipv6onboolean优先使用 IPv6 解析

5.4 插件自动加载(weechat.plugin.*)

参数默认值类型说明
weechat.plugin.autoload*,!docstring启动时自动加载的插件(逗号分隔,! 排除)
weechat.plugin.allow_missingoffboolean允许加载中出现缺失依赖插件
weechat.plugin.check_sigoffboolean验证插件签名

5.5 键盘与鼠标(weechat.key.* / weechat.mouse.*)

参数默认值类型说明
weechat.key.default_bindingsonboolean加载默认键位绑定
weechat.mouse.enableonboolean启用鼠标支持
weechat.mouse.alt_keyonbooleanAlt 键点击触发特殊行为

六、IRC 协议插件参数详解

6.1 服务器域(irc.server.<name>.*)

每个已添加的 IRC 服务器会生成一组独立参数。以 libera 服务器为例:

参数默认值类型说明
irc.server.libera.addressesirc.libera.chat/6667string服务器地址/端口/SSL 标记
irc.server.libera.nicks自动生成string逗号分隔的昵称备选列表
irc.server.libera.username系统用户stringIRC USER 命令中的用户名
irc.server.libera.realnameWeeChatstringIRC REALNAME 字段
irc.server.libera.autoconnectonbooleanWeechat 启动时自动连接
irc.server.libera.autoreconnectonboolean断线后自动重连
irc.server.libera.autoreconnect_delay10integer重连间隔(秒)
irc.server.libera.ssloffboolean启用 TLS 加密(端口需同步改为 6697)
irc.server.libera.ssl_verifyonboolean验证 TLS 证书
irc.server.libera.sasl_username(空)stringSASL 认证用户名(空=使用 nicks 首项)
irc.server.libera.sasl_password(空)stringSASL 认证密码
irc.server.libera.sasl_mechanism(空)stringSASL 机制(PLAIN/SCRAM-SHA-256/EXTERNAL)
irc.server.libera.proxy(空)string代理(格式:socks5:user:pass@host:port)
irc.server.libera.ipv6onboolean优先 IPv6 连接

批量添加服务器示例:

# 通过 shell 直接编辑 irc.conf(或 Weechat 内 /server add)
cat >> ~/.weechat/irc.conf << 'EOF'

[server oftc]
addresses = "irc.oftc.net/6697"
nicks = "mynick,altnick2,altnick3"
autoconnect = on
autoreconnect = on
autoreconnect_delay = 15
ssl = on
ssl_verify = on

[server matrix]
addresses = "irc.matrix-org.matrix.org/6667"
nicks = "mynick"
autoconnect = off
EOF

# Weechat 内重载
/reload irc

6.2 IRC 全局域(irc.*,不含 server)

参数默认值类型说明
irc.look.item_buffer_before`""`string
irc.look.item_buffer_after""stringBuffer 后缀
irc.look.nick_prefix"string频道用户模式前缀(@/+/~...)
irc.network.default_port6667integer默认 IRC 端口
irc.network.default_ssl_port6697integer默认 SSL 端口
irc.network.dcc_get_speed_limit0integerDCC 下载限速(KB/s,0=不限)
irc.network.dcc_send_speed_limit0integerDCC 上传限速(KB/s,0=不限)
irc.msg_redirection_limit0integer消息重定向深度限制
irc.anti_flood_level1integer反 flood 等级(0-4)
irc.anti_flood_max_messages4integer反 flood 阈值(最大消息数)

反 flood 参数说明:

irc.anti_flood_level 控制 Weechat 向服务器发送消息时的 flood 保护策略:

  • 0:关闭反 flood
  • 1:按服务器 RPL_ISUPPORT 中的 FLOOD 参数自适应
  • 2:固定速率限制
  • 3:保守模式(低频发送)
  • 4:激进模式(极低频,对抗严格的服务器)
# 设置为保守模式
/set irc.anti_flood_level 3
/set irc.anti_flood_max_messages 2

七、脚本与安全配置

7.1 脚本管理器(script.*)

参数默认值类型说明
script.scripts.autoenableonboolean启动时自动启用已安装脚本
script.scripts.allow_disabledonboolean允许安装但不启用脚本
script.look.warn_removeonboolean卸载脚本前弹警告
script.network.httpsonboolean脚本下载走 HTTPS
script.network.urlhttps://weechat.org/files/scriptsstring脚本仓库 URL
script.network.connect_timeout30integer脚本下载超时
script.lang.python.path/usr/bin/python3stringPython 解释器路径
script.lang.perl.path/usr/bin/perlstringPerl 解释器路径
script.lang.ruby.path/usr/bin/rubystringRuby 解释器路径
script.lang.lua.path/usr/bin/luastringLua 解释器路径
# 自动更新脚本
/script update
# 回显(节选):Checking new versions of scripts...

# 安装脚本
/script install go.py
# 回显:Script "go.py" installed

# 查看已安装脚本列表
/script list
# 回显:
# Scripts:
#   go.py       1.5      Go IRC bot
#   notify.py   3.2      Desktop notifications

7.2 Relay 远程接口(relay.*)

relay 是 Weechat 内置的远程访问插件,支持 WebSocket + SSL:

参数默认值类型说明
relay.port9000integerWebSocket 监听端口
relay.ssl_port9001integerSSL WebSocket 监听端口
relay.password(空)stringrelay 密码(⚠️ 必须设置)
relay.ssloffboolean启用 SSL
relay.ssl_cert(空)stringSSL 证书路径
relay.ssl_key(空)stringSSL 私钥路径
relay.network.ipv6onboolean同时监听 IPv6
relay.max_clients16integer最大同时连接客户端数
relay.notifyonboolean新客户端连接时在 Weechat 内通知

启用 relay(安全加固示例):

# 设置 relay 密码
/set relay.password "ChangeMe_Str0ngP@ss"
# 回显:Option "relay.password" set to "***"

# 启动 relay 监听
/relay start
# 回显:Relay listening on port 9000 (password required)

# 查看 relay 状态
/relay list
# 回显:
# Relay "main" on port 9000 (SSL: no, clients: 0/16)

7.3 日志插件(logger.*)

参数默认值类型说明
logger.file.path${weechat_home}/logsstring日志目录(支持变量展开)
logger.file.name${server}.${channel}.logstring日志文件名模板
logger.file.auto_createonboolean新 Buffer 自动创建日志文件
logger.level0integer日志等级(0=所有消息,递减过滤)
logger.file.maskweechat.*string匹配哪些 Buffer 记日志(glob)
logger.file.size_max0integer日志文件单文件最大(MB,0=不限)
logger.file.rotateonboolean超出大小自动 rotate

变量占位符说明:${weechat_home} → Weechat 家目录,${server} → IRC 服务器名,${channel} → 频道名,${date} → 日期。

# 设置自定义日志路径
/set logger.file.path "/var/log/weechat"

# 只记录某些服务器
/set logger.file.mask "weechat.libera.*, weechat.oftc.*"

# 日志文件限 50MB + rotate
/set logger.file.size_max 50
/set logger.file.rotate on

八、生产配置模板

8.1 个人 24/7 IRC 常驻服务器模板(4GB 内存、NVMe SSD)

# ~/.weechat/weechat.conf 关键参数(其余保留默认)

[look]
buffer_time_format = "%Y-%m-%d %H:%M:%S"
scroll_amount = 3
nicklist_display = on
typing_status = on

[color]
chat_nick_op = "*yellow"
chat_nick_away = ",gray"

[network]
connection_timeout = 30
ssl_verify = on
dns_timeout = 5

[plugin]
autoload = *,!doc

# irc.conf
[server libera]
addresses = "irc.libera.chat/6697"
nicks = "my_irc_nick,altnick_"
autoconnect = on
autoreconnect = on
autoreconnect_delay = 15
ssl = on
ssl_verify = on
sasl_username = "my_irc_account"
sasl_password = "${IRC_PASS}"    # 运行时注入

[irc]
anti_flood_level = 3
anti_flood_max_messages = 2

# relay.conf(启用远程访问)
[main]
port = 9001
ssl = on
ssl_cert = "/etc/letsencrypt/live/irc.example.com/fullchain.pem"
ssl_key = "/etc/letsencrypt/live/irc.example.com/privkey.pem"
password = "${RELAY_PASS}"

8.2 配置注入(systemd 环境变量)

# 在 systemd user 服务中注入敏感变量
mkdir -p ~/.config/environment.d
cat > ~/.config/environment.d/weechat.conf << 'EOF'
IRC_PASS=MySecureIrcPassword123!
RELAY_PASS=MyStrongRelayPassword456!
EOF

# 重加载 environment
systemctl --user daemon-reload

九、常见问题(FAQ)

问题 1:修改参数后不生效?

检查点:

  1. 参数名拼写(Weechat 参数名大小写敏感)
  2. /reload 是否执行
  3. 是否属于特定 server 的参数(如 irc.server.libera.* 需切换到对应 server)
# 检查当前参数值
/set irc.server.libera.ssl
# 确认修改

问题 2:/set 命令找不到参数?

原因:插件未加载。例如 relay.* 参数需要 relay 插件已加载。

# 检查插件是否加载
/help relay
# 手动加载缺失插件
/plugin load relay

问题 3:IRC 密码明文保存在配置文件中?

Weechat 配置文件是纯文本,不加密。解决方案:

  1. 设置文件权限:chmod 600 ~/.weechat/irc.conf
  2. 使用环境变量注入(见第八章)
  3. 密码在 Weechat 内通过 /set irc.server.libera.sasl_password 设置后,内存中加密保存(但配置文件仍为明文)

问题 4:日志文件权限设置?

# 设置日志目录权限
chmod 700 ~/.weechat/logs
find ~/.weechat/logs -type f -exec chmod 600 {} \;

问题 5:如何导出/导入配置?

# 导出当前所有配置到文本(Weechat 内)
/helpall > ~/weechat-config-backup.txt
# 回显:Configuration dumped to ~/weechat-config-backup.txt

# 重新应用(逐条粘贴回 Weechat 内执行)

十、参考链接