kokoirc 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +227 -0
- package/docs/commands/alias.md +42 -0
- package/docs/commands/ban.md +26 -0
- package/docs/commands/close.md +25 -0
- package/docs/commands/connect.md +26 -0
- package/docs/commands/deop.md +24 -0
- package/docs/commands/devoice.md +24 -0
- package/docs/commands/disconnect.md +26 -0
- package/docs/commands/help.md +28 -0
- package/docs/commands/ignore.md +47 -0
- package/docs/commands/items.md +95 -0
- package/docs/commands/join.md +25 -0
- package/docs/commands/kb.md +26 -0
- package/docs/commands/kick.md +25 -0
- package/docs/commands/log.md +82 -0
- package/docs/commands/me.md +24 -0
- package/docs/commands/mode.md +29 -0
- package/docs/commands/msg.md +26 -0
- package/docs/commands/nick.md +24 -0
- package/docs/commands/notice.md +24 -0
- package/docs/commands/op.md +24 -0
- package/docs/commands/part.md +25 -0
- package/docs/commands/quit.md +24 -0
- package/docs/commands/reload.md +19 -0
- package/docs/commands/script.md +126 -0
- package/docs/commands/server.md +61 -0
- package/docs/commands/set.md +37 -0
- package/docs/commands/topic.md +24 -0
- package/docs/commands/unalias.md +22 -0
- package/docs/commands/unban.md +25 -0
- package/docs/commands/unignore.md +25 -0
- package/docs/commands/voice.md +25 -0
- package/docs/commands/whois.md +24 -0
- package/docs/commands/wii.md +23 -0
- package/package.json +38 -0
- package/src/app/App.tsx +205 -0
- package/src/core/commands/docs.ts +183 -0
- package/src/core/commands/execution.ts +114 -0
- package/src/core/commands/help-formatter.ts +185 -0
- package/src/core/commands/helpers.ts +168 -0
- package/src/core/commands/index.ts +7 -0
- package/src/core/commands/parser.ts +33 -0
- package/src/core/commands/registry.ts +1394 -0
- package/src/core/commands/types.ts +19 -0
- package/src/core/config/defaults.ts +66 -0
- package/src/core/config/loader.ts +209 -0
- package/src/core/constants.ts +20 -0
- package/src/core/init.ts +32 -0
- package/src/core/irc/antiflood.ts +244 -0
- package/src/core/irc/client.ts +145 -0
- package/src/core/irc/events.ts +1031 -0
- package/src/core/irc/formatting.ts +132 -0
- package/src/core/irc/ignore.ts +84 -0
- package/src/core/irc/index.ts +2 -0
- package/src/core/irc/netsplit.ts +292 -0
- package/src/core/scripts/api.ts +240 -0
- package/src/core/scripts/event-bus.ts +82 -0
- package/src/core/scripts/index.ts +26 -0
- package/src/core/scripts/manager.ts +154 -0
- package/src/core/scripts/types.ts +256 -0
- package/src/core/state/selectors.ts +39 -0
- package/src/core/state/sorting.ts +30 -0
- package/src/core/state/store.ts +242 -0
- package/src/core/storage/crypto.ts +78 -0
- package/src/core/storage/db.ts +107 -0
- package/src/core/storage/index.ts +80 -0
- package/src/core/storage/query.ts +204 -0
- package/src/core/storage/types.ts +37 -0
- package/src/core/storage/writer.ts +130 -0
- package/src/core/theme/index.ts +3 -0
- package/src/core/theme/loader.ts +45 -0
- package/src/core/theme/parser.ts +518 -0
- package/src/core/theme/renderer.tsx +25 -0
- package/src/index.tsx +17 -0
- package/src/types/config.ts +126 -0
- package/src/types/index.ts +107 -0
- package/src/types/irc-framework.d.ts +569 -0
- package/src/types/theme.ts +37 -0
- package/src/ui/ErrorBoundary.tsx +42 -0
- package/src/ui/chat/ChatView.tsx +39 -0
- package/src/ui/chat/MessageLine.tsx +92 -0
- package/src/ui/hooks/useStatusbarColors.ts +23 -0
- package/src/ui/input/CommandInput.tsx +273 -0
- package/src/ui/layout/AppLayout.tsx +126 -0
- package/src/ui/layout/TopicBar.tsx +46 -0
- package/src/ui/sidebar/BufferList.tsx +55 -0
- package/src/ui/sidebar/NickList.tsx +96 -0
- package/src/ui/splash/SplashScreen.tsx +100 -0
- package/src/ui/statusbar/StatusLine.tsx +205 -0
- package/themes/.gitkeep +0 -0
- package/themes/default.theme +57 -0
- package/tsconfig.json +19 -0
package/README.md
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# kokoIRC
|
|
2
|
+
|
|
3
|
+
A modern terminal IRC client built with [OpenTUI](https://github.com/anomalyco/opentui), React, and Bun. Inspired by irssi, designed for the future.
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
┌─ Buffers ─┬─────────────────────────────────────────┬─ Users ──┐
|
|
7
|
+
│ IRCnet │ 12:34:05 <kofany> hey everyone │ @kofany │
|
|
8
|
+
│ #chat │ 12:34:08 <alice> welcome back! │ +alice │
|
|
9
|
+
│ #dev │ 12:34:12 * kofany waves │ bob │
|
|
10
|
+
│ #music │ 12:34:15 <bob> what's new? │ charlie │
|
|
11
|
+
│ │ │ │
|
|
12
|
+
│ ├──────────────────────────────────────────┤ │
|
|
13
|
+
│ │ [IRCnet❱ /msg alice check this out │ │
|
|
14
|
+
│ ├──────────────────────────────────────────┤ │
|
|
15
|
+
│ │ 12:34 | kofany(+i) | #chat(+nt) | lag:2 │ │
|
|
16
|
+
└───────────┴──────────────────────────────────────────┴──────────┘
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Features
|
|
20
|
+
|
|
21
|
+
- **Full IRC protocol** — channels, queries, CTCP, SASL, TLS, channel modes, ban lists
|
|
22
|
+
- **irssi-style navigation** — `Esc+1-9` window switching, `/commands`, aliases
|
|
23
|
+
- **Mouse support** — click buffers/nicks, drag to resize sidepanels
|
|
24
|
+
- **Netsplit detection** — batches join/part floods into single events
|
|
25
|
+
- **Flood protection** — blocks CTCP and nick-change spam from botnets
|
|
26
|
+
- **Persistent logging** — SQLite with optional AES-256-GCM encryption, FTS5 full-text search
|
|
27
|
+
- **Theming** — irssi-compatible format strings with 24-bit color, custom abstracts
|
|
28
|
+
- **Scripting** — TypeScript scripts with event bus, custom commands, IRC access
|
|
29
|
+
- **Single binary** — compiles to a standalone executable with `bun build --compile`
|
|
30
|
+
|
|
31
|
+
## Requirements
|
|
32
|
+
|
|
33
|
+
- [Bun](https://bun.sh) v1.2+
|
|
34
|
+
- A terminal with 256-color or truecolor support
|
|
35
|
+
|
|
36
|
+
## Install
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
git clone https://github.com/kofany/OpenIRC.git
|
|
40
|
+
cd OpenIRC
|
|
41
|
+
bun install
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Run directly
|
|
48
|
+
bun run src/index.tsx
|
|
49
|
+
|
|
50
|
+
# Or build a standalone binary
|
|
51
|
+
bun run build
|
|
52
|
+
./openirc
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Configuration
|
|
56
|
+
|
|
57
|
+
Config lives at `~/.kokoirc/config.toml`. Created on first run with defaults.
|
|
58
|
+
|
|
59
|
+
```toml
|
|
60
|
+
[general]
|
|
61
|
+
nick = "mynick"
|
|
62
|
+
username = "mynick"
|
|
63
|
+
realname = "kokoIRC user"
|
|
64
|
+
theme = "default"
|
|
65
|
+
flood_protection = true
|
|
66
|
+
|
|
67
|
+
[display]
|
|
68
|
+
nick_column_width = 8
|
|
69
|
+
scrollback_lines = 2000
|
|
70
|
+
|
|
71
|
+
[servers.libera]
|
|
72
|
+
label = "Libera"
|
|
73
|
+
address = "irc.libera.chat"
|
|
74
|
+
port = 6697
|
|
75
|
+
tls = true
|
|
76
|
+
autoconnect = true
|
|
77
|
+
channels = ["#kokoirc"]
|
|
78
|
+
# sasl_user = "mynick"
|
|
79
|
+
# sasl_pass = "hunter2"
|
|
80
|
+
|
|
81
|
+
[logging]
|
|
82
|
+
enabled = true
|
|
83
|
+
encrypt = false # AES-256-GCM (key auto-generated in ~/.kokoirc/.env)
|
|
84
|
+
retention_days = 0 # 0 = keep forever
|
|
85
|
+
exclude_types = [] # filter: "event", "notice", "ctcp", etc.
|
|
86
|
+
|
|
87
|
+
[aliases]
|
|
88
|
+
wc = "/close"
|
|
89
|
+
j = "/join"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Commands
|
|
93
|
+
|
|
94
|
+
33 built-in commands. Type `/help` for the full list, `/help <command>` for details.
|
|
95
|
+
|
|
96
|
+
| Category | Commands |
|
|
97
|
+
|----------|----------|
|
|
98
|
+
| Connection | `/connect`, `/disconnect`, `/quit`, `/server` |
|
|
99
|
+
| Channel | `/join`, `/part`, `/close`, `/topic`, `/list` |
|
|
100
|
+
| Messaging | `/msg`, `/me`, `/notice`, `/action`, `/slap` |
|
|
101
|
+
| Moderation | `/kick`, `/ban`, `/unban`, `/kb`, `/mode` |
|
|
102
|
+
| Nick/Ops | `/nick`, `/op`, `/deop`, `/voice`, `/devoice` |
|
|
103
|
+
| User | `/whois`, `/wii`, `/ignore`, `/unignore` |
|
|
104
|
+
| Config | `/set`, `/alias`, `/unalias`, `/reload` |
|
|
105
|
+
| Logging | `/log status`, `/log search <query>` |
|
|
106
|
+
| Scripts | `/script load`, `/script unload`, `/script list` |
|
|
107
|
+
|
|
108
|
+
## Keyboard Shortcuts
|
|
109
|
+
|
|
110
|
+
| Key | Action |
|
|
111
|
+
|-----|--------|
|
|
112
|
+
| `Esc+1-9` | Switch to window 1-9 |
|
|
113
|
+
| `Esc+0` | Switch to window 10 |
|
|
114
|
+
| `Esc+Left/Right` | Previous/next window |
|
|
115
|
+
| `Page Up/Down` | Scroll chat history |
|
|
116
|
+
| `Tab` | Nick completion |
|
|
117
|
+
| `Ctrl+Q` | Quit |
|
|
118
|
+
|
|
119
|
+
## Theming
|
|
120
|
+
|
|
121
|
+
Themes use TOML with an irssi-inspired format string language. Place custom themes in `~/.kokoirc/themes/` and set `theme = "mytheme"` in config.
|
|
122
|
+
|
|
123
|
+
```toml
|
|
124
|
+
[meta]
|
|
125
|
+
name = "Nightfall"
|
|
126
|
+
description = "Modern dark theme with subtle accents"
|
|
127
|
+
|
|
128
|
+
[colors]
|
|
129
|
+
accent = "#7aa2f7"
|
|
130
|
+
fg = "#a9b1d6"
|
|
131
|
+
|
|
132
|
+
[abstracts]
|
|
133
|
+
timestamp = "%Z6e738d$*%N"
|
|
134
|
+
msgnick = "%Z565f89$0$1%Z7aa2f7>%N%| "
|
|
135
|
+
action = "%Ze0af68* $*%N"
|
|
136
|
+
|
|
137
|
+
[formats.messages]
|
|
138
|
+
pubmsg = "{msgnick $2 $0}$1"
|
|
139
|
+
action = "{action $0} $1"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Format codes: `%r` red, `%g` green, `%ZRRGGBB` hex color, `%_` bold, `%u` underline, `$0 $1 $2` positional args, `{abstract $args}` template references.
|
|
143
|
+
|
|
144
|
+
## Scripting
|
|
145
|
+
|
|
146
|
+
Scripts are TypeScript files loaded from `~/.kokoirc/scripts/`. See `examples/scripts/` for samples.
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
import type { KokoAPI } from "kokoirc-client/api"
|
|
150
|
+
|
|
151
|
+
export default function slap(api: KokoAPI) {
|
|
152
|
+
api.command("slap", ({ args, buffer }) => {
|
|
153
|
+
const target = args[0] ?? "everyone"
|
|
154
|
+
api.irc.action(buffer.connectionId, buffer.name,
|
|
155
|
+
`slaps ${target} around a bit with a large trout`)
|
|
156
|
+
})
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Scripts can register commands, listen to IRC events, send messages, and interact with the store:
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
export default function highlights(api: KokoAPI) {
|
|
164
|
+
api.on("irc.privmsg", (event) => {
|
|
165
|
+
if (event.message.highlight) {
|
|
166
|
+
api.ui.addLocalEvent(event.bufferId,
|
|
167
|
+
`Highlight from ${event.nick}: ${event.text}`)
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Configure autoloading in `config.toml`:
|
|
174
|
+
|
|
175
|
+
```toml
|
|
176
|
+
[scripts]
|
|
177
|
+
autoload = ["slap", "spam-filter"]
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Logging
|
|
181
|
+
|
|
182
|
+
Messages are stored in `~/.kokoirc/logs.db` (SQLite WAL mode). The log system supports:
|
|
183
|
+
|
|
184
|
+
- **Batched writes** — flushes at 50 messages or every second
|
|
185
|
+
- **Full-text search** — FTS5 index for instant `/log search` results
|
|
186
|
+
- **Optional encryption** — AES-256-GCM per message, key auto-generated
|
|
187
|
+
- **Read markers** — per-client unread tracking (ready for web frontend)
|
|
188
|
+
- **Retention** — auto-purge messages older than N days
|
|
189
|
+
|
|
190
|
+
## Architecture
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
src/
|
|
194
|
+
├── index.tsx # Entry point — creates OpenTUI renderer
|
|
195
|
+
├── app/
|
|
196
|
+
│ └── App.tsx # Lifecycle: config → storage → theme → connect
|
|
197
|
+
├── core/
|
|
198
|
+
│ ├── irc/ # IRC client, event binding, middlewares
|
|
199
|
+
│ ├── state/ # Zustand store (UI-agnostic)
|
|
200
|
+
│ ├── commands/ # Command registry and parser
|
|
201
|
+
│ ├── config/ # TOML loader, defaults, merge logic
|
|
202
|
+
│ ├── storage/ # SQLite logging, encryption, queries
|
|
203
|
+
│ ├── scripts/ # Script loader, API, event bus
|
|
204
|
+
│ └── theme/ # Format string parser, theme loader
|
|
205
|
+
├── ui/ # React components (no IRC imports)
|
|
206
|
+
│ ├── AppLayout.tsx # 3-column layout with resizable panels
|
|
207
|
+
│ ├── ChatView.tsx # Message scrollback
|
|
208
|
+
│ ├── BufferList.tsx # Left sidebar
|
|
209
|
+
│ ├── NickList.tsx # Right sidebar
|
|
210
|
+
│ ├── CommandInput.tsx # Input line with prompt
|
|
211
|
+
│ └── StatusLine.tsx # Status bar
|
|
212
|
+
└── types/ # TypeScript definitions
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
The UI layer never imports from `core/irc/` — all communication goes through the Zustand store. This keeps the architecture clean and makes it possible to drive the same store from a web frontend.
|
|
216
|
+
|
|
217
|
+
## Development
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
bun run dev # Start with --watch (auto-reload on file changes)
|
|
221
|
+
bun test # Run test suite
|
|
222
|
+
bun run build # Compile to standalone binary
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## License
|
|
226
|
+
|
|
227
|
+
MIT
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Configuration
|
|
3
|
+
description: Define, list, or remove user aliases
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /alias
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/alias [[-]name] [body]
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Define custom command aliases. Aliases expand before execution and support
|
|
15
|
+
template variables and command chaining with semicolons.
|
|
16
|
+
|
|
17
|
+
With no arguments, lists all defined aliases.
|
|
18
|
+
With just a name, shows that alias's body.
|
|
19
|
+
With `-name`, removes the alias.
|
|
20
|
+
With name and body, defines or replaces the alias.
|
|
21
|
+
|
|
22
|
+
Template variables:
|
|
23
|
+
- `$0`-`$9` — positional arguments
|
|
24
|
+
- `$*` — all arguments
|
|
25
|
+
- `$C` — current channel name
|
|
26
|
+
- `$N` — current nick
|
|
27
|
+
- `$S` — current server label
|
|
28
|
+
- `$T` — current buffer name
|
|
29
|
+
|
|
30
|
+
Cannot override built-in commands.
|
|
31
|
+
|
|
32
|
+
## Examples
|
|
33
|
+
|
|
34
|
+
/alias
|
|
35
|
+
/alias ns /msg NickServ $*
|
|
36
|
+
/alias cs /msg ChanServ $*
|
|
37
|
+
/alias j /join $0; /msg $0 hello everyone
|
|
38
|
+
/alias -ns
|
|
39
|
+
|
|
40
|
+
## See Also
|
|
41
|
+
|
|
42
|
+
/unalias
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Moderation
|
|
3
|
+
description: Ban a user or hostmask
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /ban
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/ban <nick|mask>
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Ban a user or hostmask from the current channel. If a plain nick is
|
|
15
|
+
given, it's converted to `nick!*@*`. If the argument contains `!` or `@`,
|
|
16
|
+
it's used as a literal hostmask.
|
|
17
|
+
|
|
18
|
+
## Examples
|
|
19
|
+
|
|
20
|
+
/ban troll
|
|
21
|
+
/ban *!*@bad.host.com
|
|
22
|
+
/ban *!*ident@*.isp.net
|
|
23
|
+
|
|
24
|
+
## See Also
|
|
25
|
+
|
|
26
|
+
/unban, /kick, /kb, /mode
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Channel
|
|
3
|
+
description: Close current buffer
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /close
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/close [reason]
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Close the current buffer. For channels, parts the channel with an
|
|
15
|
+
optional reason. For query windows, closes the window. Server buffers
|
|
16
|
+
cannot be closed.
|
|
17
|
+
|
|
18
|
+
## Examples
|
|
19
|
+
|
|
20
|
+
/close
|
|
21
|
+
/close Window closed
|
|
22
|
+
|
|
23
|
+
## See Also
|
|
24
|
+
|
|
25
|
+
/part, /quit
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Connection
|
|
3
|
+
description: Connect to a server by id, label, or address
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /connect
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/connect <server-id|label|address>[:<port>] [-tls] [-bind=<ip>]
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Connect to an IRC server. Accepts a configured server ID, label, or a
|
|
15
|
+
raw address for ad-hoc connections. If the server is already configured,
|
|
16
|
+
flags override its settings for this connection only.
|
|
17
|
+
|
|
18
|
+
## Examples
|
|
19
|
+
|
|
20
|
+
/connect libera
|
|
21
|
+
/connect irc.libera.chat:6697 -tls
|
|
22
|
+
/connect mynet -bind=192.168.1.100
|
|
23
|
+
|
|
24
|
+
## See Also
|
|
25
|
+
|
|
26
|
+
/server, /disconnect, /quit
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Moderation
|
|
3
|
+
description: Remove operator status
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /deop
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/deop <nick> [nick2 ...]
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Remove channel operator status (-o) from one or more users in the current
|
|
15
|
+
channel. You must be a channel operator to use this command.
|
|
16
|
+
|
|
17
|
+
## Examples
|
|
18
|
+
|
|
19
|
+
/deop troublemaker
|
|
20
|
+
/deop user1 user2
|
|
21
|
+
|
|
22
|
+
## See Also
|
|
23
|
+
|
|
24
|
+
/op, /devoice, /mode
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Moderation
|
|
3
|
+
description: Remove voice status
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /devoice
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/devoice <nick> [nick2 ...]
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Remove voice status (-v) from one or more users in the current channel.
|
|
15
|
+
You must be a channel operator to use this command.
|
|
16
|
+
|
|
17
|
+
## Examples
|
|
18
|
+
|
|
19
|
+
/devoice user1
|
|
20
|
+
/devoice user1 user2
|
|
21
|
+
|
|
22
|
+
## See Also
|
|
23
|
+
|
|
24
|
+
/voice, /deop, /mode
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Connection
|
|
3
|
+
description: Disconnect from a server
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /disconnect
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/disconnect [server-id|label] [message]
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Disconnect from an IRC server. With no arguments, disconnects from the
|
|
15
|
+
server associated with the current buffer. Optionally specify a server
|
|
16
|
+
by ID or label, and a quit message.
|
|
17
|
+
|
|
18
|
+
## Examples
|
|
19
|
+
|
|
20
|
+
/disconnect
|
|
21
|
+
/disconnect libera
|
|
22
|
+
/disconnect libera Goodbye!
|
|
23
|
+
|
|
24
|
+
## See Also
|
|
25
|
+
|
|
26
|
+
/connect, /quit, /server
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Info
|
|
3
|
+
description: Show help for commands
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /help
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/help [command] [subcommand]
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Show help for commands. With no arguments, lists all commands grouped
|
|
15
|
+
by category. With a command name, shows detailed usage, subcommands,
|
|
16
|
+
and examples. With a command and subcommand, shows help for that
|
|
17
|
+
specific subcommand.
|
|
18
|
+
|
|
19
|
+
## Examples
|
|
20
|
+
|
|
21
|
+
/help
|
|
22
|
+
/help server
|
|
23
|
+
/help server add
|
|
24
|
+
/help items format
|
|
25
|
+
|
|
26
|
+
## See Also
|
|
27
|
+
|
|
28
|
+
/set
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Moderation
|
|
3
|
+
description: Add an ignore rule
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /ignore
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/ignore [mask] [levels...] [-channels #a,#b]
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Add an ignore rule to suppress messages and events from matching
|
|
15
|
+
users. Without arguments, lists current ignore rules.
|
|
16
|
+
|
|
17
|
+
A bare nick pattern (e.g., `troll`) matches the nick only.
|
|
18
|
+
A pattern containing `!` (e.g., `*!*@bad.host`) matches the
|
|
19
|
+
full `nick!user@host` mask with wildcard support (`*`, `?`).
|
|
20
|
+
|
|
21
|
+
## Levels
|
|
22
|
+
|
|
23
|
+
MSGS Private messages
|
|
24
|
+
PUBLIC Channel messages
|
|
25
|
+
NOTICES Notices
|
|
26
|
+
ACTIONS CTCP ACTIONs (/me)
|
|
27
|
+
JOINS Join events
|
|
28
|
+
PARTS Part events
|
|
29
|
+
QUITS Quit events
|
|
30
|
+
NICKS Nick change events
|
|
31
|
+
KICKS Kick events
|
|
32
|
+
CTCPS CTCP requests and responses
|
|
33
|
+
ALL All of the above
|
|
34
|
+
|
|
35
|
+
If no levels are specified, ALL is assumed.
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
/ignore
|
|
40
|
+
/ignore troll
|
|
41
|
+
/ignore *!*@bad.host.com
|
|
42
|
+
/ignore spammer PUBLIC NOTICES
|
|
43
|
+
/ignore bot CTCPS -channels #help,#support
|
|
44
|
+
|
|
45
|
+
## See Also
|
|
46
|
+
|
|
47
|
+
/unignore
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Statusbar
|
|
3
|
+
description: Manage statusbar items and formats
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /items
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/items [list|add|remove|move|format|separator|available|reset] [args...]
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Manage the statusbar layout. Add, remove, reorder items and customize
|
|
15
|
+
their format strings. Use `/items available` to see all possible items
|
|
16
|
+
and their format variables.
|
|
17
|
+
|
|
18
|
+
## Subcommands
|
|
19
|
+
|
|
20
|
+
### list
|
|
21
|
+
|
|
22
|
+
Show current statusbar items with their positions and formats.
|
|
23
|
+
|
|
24
|
+
/items list
|
|
25
|
+
|
|
26
|
+
This is the default when no subcommand is given.
|
|
27
|
+
|
|
28
|
+
### add
|
|
29
|
+
|
|
30
|
+
Add an item to the statusbar.
|
|
31
|
+
|
|
32
|
+
/items add <item>
|
|
33
|
+
|
|
34
|
+
### remove
|
|
35
|
+
|
|
36
|
+
Remove an item from the statusbar.
|
|
37
|
+
|
|
38
|
+
/items remove <item>
|
|
39
|
+
|
|
40
|
+
Aliases: del
|
|
41
|
+
|
|
42
|
+
### move
|
|
43
|
+
|
|
44
|
+
Move an item to a new position.
|
|
45
|
+
|
|
46
|
+
/items move <item> <position>
|
|
47
|
+
|
|
48
|
+
Position is 1-based.
|
|
49
|
+
|
|
50
|
+
### format
|
|
51
|
+
|
|
52
|
+
View or set the format string for an item.
|
|
53
|
+
|
|
54
|
+
/items format <item> [format_string]
|
|
55
|
+
|
|
56
|
+
Format variables: `$win`, `$activity`, `$nick`, `$modes`, `$name`, `$lag`, `$time`.
|
|
57
|
+
|
|
58
|
+
Aliases: fmt
|
|
59
|
+
|
|
60
|
+
### separator
|
|
61
|
+
|
|
62
|
+
View or set the separator string between items.
|
|
63
|
+
|
|
64
|
+
/items separator [string]
|
|
65
|
+
|
|
66
|
+
Aliases: sep
|
|
67
|
+
|
|
68
|
+
### available
|
|
69
|
+
|
|
70
|
+
List all available statusbar items and their default formats.
|
|
71
|
+
|
|
72
|
+
/items available
|
|
73
|
+
|
|
74
|
+
Shows which items are currently active and which are unused.
|
|
75
|
+
|
|
76
|
+
### reset
|
|
77
|
+
|
|
78
|
+
Reset statusbar to default items, formats, and separator.
|
|
79
|
+
|
|
80
|
+
/items reset
|
|
81
|
+
|
|
82
|
+
## Examples
|
|
83
|
+
|
|
84
|
+
/items list
|
|
85
|
+
/items add clock
|
|
86
|
+
/items remove lag
|
|
87
|
+
/items move clock 1
|
|
88
|
+
/items format window_name [$win] $name
|
|
89
|
+
/items separator |
|
|
90
|
+
/items available
|
|
91
|
+
/items reset
|
|
92
|
+
|
|
93
|
+
## See Also
|
|
94
|
+
|
|
95
|
+
/set
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Channel
|
|
3
|
+
description: Join a channel
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /join
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/join <channel> [key]
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Join an IRC channel. A `#` prefix is auto-added if missing.
|
|
15
|
+
Optionally provide a channel key for key-protected channels.
|
|
16
|
+
|
|
17
|
+
## Examples
|
|
18
|
+
|
|
19
|
+
/join #linux
|
|
20
|
+
/join linux
|
|
21
|
+
/join #secret mysecretkey
|
|
22
|
+
|
|
23
|
+
## See Also
|
|
24
|
+
|
|
25
|
+
/part, /close
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Moderation
|
|
3
|
+
description: Kickban a user (kick then ban *!*ident@host)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /kb
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/kb <nick> [reason]
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Kick and ban a user from the current channel. Looks up the user's
|
|
15
|
+
ident and host via USERHOST to create a proper `*!*ident@host` ban mask,
|
|
16
|
+
then kicks with the given reason. Falls back to `nick!*@*` if the
|
|
17
|
+
lookup times out after 5 seconds.
|
|
18
|
+
|
|
19
|
+
## Examples
|
|
20
|
+
|
|
21
|
+
/kb troll
|
|
22
|
+
/kb spammer Enough is enough
|
|
23
|
+
|
|
24
|
+
## See Also
|
|
25
|
+
|
|
26
|
+
/kick, /ban, /unban, /mode
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Moderation
|
|
3
|
+
description: Kick a user from the channel
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /kick
|
|
7
|
+
|
|
8
|
+
## Syntax
|
|
9
|
+
|
|
10
|
+
/kick <nick> [reason]
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Kick a user from the current channel. If no reason is given, the
|
|
15
|
+
user's nick is used as the reason. You must be a channel operator
|
|
16
|
+
to use this command.
|
|
17
|
+
|
|
18
|
+
## Examples
|
|
19
|
+
|
|
20
|
+
/kick troll
|
|
21
|
+
/kick spammer Stop spamming
|
|
22
|
+
|
|
23
|
+
## See Also
|
|
24
|
+
|
|
25
|
+
/ban, /kb, /mode
|