blog-site

git clone git://git.lin.moe/blog-site.git

  1---
  2title: "WeeChat 配置"
  3date: 2022-03-27T08:00:43+08:00
  4---
  5
  6这篇文章是 Lindsay 的 weechat 配置记录,包含以下内容  
  71. 注册登陆 LiberaChat  
  82. 修改外观  
  93. 启用 Weechat Relay  
 104. 安装使用扩展脚本  
 11
 12## 使用 LiberaChat
 13
 14参考 Libera.Chat 的  [weechat 教程](https://libera.chat/guides/weechat)
 15
 161. 添加 libera 服务器并连接,使用东亚域名
 17   ```
 18   /server add libera irc.ea.libera.chat/6697 -ssl
 19   /connect libera
 20   ```
 21
 222. 注册 Libera.Chat 帐号
 23   需要选用一个没有被占用的 nickname,设置密码和邮箱后,根据验证邮件内容操作注册。
 24    ```
 25    /nick <nickname>
 26    /msg NickServ REGISTER <libera_passphrase> <youremail@example.com>
 27    ```
 28
 293. 设置 libera登陆密码 (SASL 模式)
 30   ```
 31   /set irc.server.libera.sasl_mechanism PLAIN
 32   /set irc.server.libera.sasl_username <nickname>
 33   /set irc.server.libera.sasl_password <libera_passphrase>
 34   /save
 35   ```
 36   
 37   
 38   更安全的替代方式是设置 weechat 启动密码,并将 IRC 服务器密码加密存储:
 39   ```
 40   /secure passphrase <passphrase>
 41   /secure set libera_password <password>
 42   /set irc.server.libera.sasl_mechanism PLAIN
 43   /set irc.server.libera.sasl_username <nickname>
 44   /set irc.server.libera.sasl_password "${sec.data.libera_password}"
 45   /save
 46   ```
 47   这样每次启动 weechat,都会要求输入密码。可以通过设置 `passphrase_command` 来从 shell 命令读入密码来间接跳过。
 48   下面以 `pass` 命令为例
 49   ```
 50   /set sec.crypt.passphrase_command "/usr/bin/pass tools/weechat"
 51   ```
 52
 534. 使用 User Cloak 隐藏登陆 ip 
 54    ```
 55    /join #libera-cloak
 56    !cloakme
 57    /reconnect libera
 58    /whois
 59    ```
 60
 615. 连接服务器自动加入频道
 62   以 `#archlinux-cn` 和 `#libera` 频道为例   
 63    ```
 64    /set irc.server.libera.autojoin "#archlinux-cn,#libera"
 65    ```
 66
 67
 68## 修改外观配置
 69* 离开频道自动关闭 buffer : `/set irc.look.part_closes_buffer on`   
 70* 设置用户栏最大宽度: `/set weechat.bar.nicklist.size_max 30 `   
 71* 设置 buffer 栏最大宽度: `/set weechat.bar.buflist.size_max 30  `  
 72* 限制聊天栏中用户名宽度 `/set weechat.look.prefix_align_max 15`  
 73* 设置 buffer 展示样式: 
 74    ```
 75    /set buflist.format.buffer "${format_number}${indent}${format_nick_prefix}${color_hotlist}${format_name}"
 76    ```
 77
 78* 设置状态栏样式: 
 79    ```
 80    /set weechat.bar.status.items "buffer_name:+buffer_number+ |,hotlist |,completion,[spell_suggest]"
 81    ```
 82
 83* 使用 smart_fileter 过滤消息(主要过滤用户进入/离开频道的消息)
 84    ```
 85    /set irc.look.smart_filter on
 86    /filter add irc_smart * irc_smart_filter *
 87    /set irc.look.smart_filter_delay 5
 88    ```
 89
 90* 设置常用快捷键
 91    ```
 92    /key bind meta-! /buffer close
 93    /key bind meta-c /window merge
 94    /key bind meta-h /window splith
 95    /key bind meta-v /window splitv
 96    ```
 97## 启用 Relay 
 98以 websocket over nginx tls 为例。  
 99
100在 9000 端口上开启 Relay 监听
101```
102/set relay.network.password <relay_passphare>
103/relay add weechat 9000
104```
105
106如果启用的 weechat 密码,加密存储 relay 密码,可以改为下面的命令
107```
108/secure set relay <relay_passphare> 
109/set relay.network.password "${sec.data.relay}" 
110/relay add weechat 9000
111```
112
113weechat relay 端口可以同时接收 raw tcp 和 websocket 连接,只要在 nginx 中反代到 relay 端口即可。  
114
115个人认为使用 nginx 管理 tls 更加方便,如需要用 weechat 自身管理 tls ,请查阅官方的[用户指导](https://weechat.org/files/doc/stable/weechat_user.en.html#relay)  
116
117nginx 配置文件如下
118```
119server {
120    listen 443 http2 ssl ;
121    listen [::]:443 http2 ssl;
122    server_name example.com;
123    
124    ssl_certificate <cert_location>;
125    ssl_certificate_key <key_location>;
126    location /weechat {
127        proxy_http_version 1.1;
128        proxy_set_header Upgrade $http_upgrade;
129        proxy_set_header Connection "upgrade";
130        proxy_set_header X-Forwarded-For $remote_addr;
131        proxy_pass http://localhost:9000/weechat;
132    }
133}
134```
135
136
137
138## 安装功能和外观脚本
139允许从 weechat 服务器下载脚本
140```
141/set script.scripts.download_enabled on
142```
143
144### go.py
145作用为快速跳转 buffer,当加入过多的频道,`Alt + <Num>` 快捷键不够用时,这个脚本就能发挥作用。
146```
147/script install go.py
148/key bind meta-g /go
149```
150
151### colorize_lines.pl
152作用是调整消息颜色,使其与用户 nickname 的颜色一致,在聊天时,更容易区分不同用户的发言。  
153```
154/script install colorize_lines.pl
155
156/set weechat.color.chat_nick_colors 33,38,42,45,48,51,63,69,75,80,84,87,99,103,105,106,113,117,118,120,130,132,123,139,141,143,147,149,152,159,170,174,176,180,182,204,207,209,213,217,219,220,226
157/set irc.look.color_nicks_in_nicklist on
158```
159
160使用的颜色代码需要根据终端背景色决定,通过下面的命令,可以打印出所有的 256 colors 然后从中选择
161```
162for COLOR in {1..255}; do echo -en "\e[38;5;${COLOR}m${COLOR} "; done; echo;
163```
164
165### autosort.py
166buffer 自动归类排序
167```
168# 需要关闭服务器合并
169irc.look.server_buffer independent
170
171/script install autosort.py
172```
173
174关闭脚本下载
175```
176/set script.scripts.download_enabled off
177```
178
179