https://github.com/rockorager/comlink
An experimental IRC client
https://github.com/rockorager/comlink
irc irc-client zig zig-package
Last synced: 3 months ago
JSON representation
An experimental IRC client
- Host: GitHub
- URL: https://github.com/rockorager/comlink
- Owner: rockorager
- License: mit
- Created: 2024-05-31T01:17:58.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-21T17:31:48.000Z (4 months ago)
- Last Synced: 2025-03-21T18:24:53.563Z (4 months ago)
- Topics: irc, irc-client, zig, zig-package
- Language: Zig
- Homepage:
- Size: 2.05 MB
- Stars: 45
- Watchers: 3
- Forks: 8
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# comlink
An experimental IRC client written in zig. Join the discussion in #comlink on
libera.chat.
## Installation
### Arch Linux
[comlink](https://aur.archlinux.org/packages/comlink) is available as a package in the AUR. It can be installed using an AUR helper (e.g. paru).
```sh
paru -S comlink
```### Zig Build System
`comlink` is written in zig and can be installed using the zig build system,
version 0.14.0.```sh
git clone https://github.com/rockorager/comlink
cd comlink
zig build -Doptimize=ReleaseSafe --prefix ~/.local
```## Configuration
Configuration is loaded from `$HOME/.config/comlink/init.lua`
Works best with `soju`. [irctoday](https://irctoday.com) runs a paid instance of `soju`, and
another paid alternative is [pico.sh](https://pico.sh/irc)```lua
local comlink = require("comlink")local config = {
server = "chat.sr.ht",
user = "rockorager",
nick = "rockorager",
password = "password",
real_name = "Tim Culverhouse",
tls = true,
}-- Pass the server config to connect. Connect to as many servers as you need
comlink.connect(config)-- Bind a key to an action
comlink.bind("ctrl+c", "quit")
```Storing passwords in configuration files is generally considered a poor
security practice. The following example reads the password from an external
password manager:```lua
local comlink = require("comlink")local proc =
assert(io.popen("hiq -dFpassword proto=irc address=irc.example.com nickname=alex", "r"))
local password = proc:read("*l")
proc:close()local config = {
-- …other fields here…
password = password,
}
```## Contributing
Patches accepted on the [mailing list](https://lists.sr.ht/~rockorager/comlink)
Pull requests accepted on [Github](https://github.com/rockorager/comlink)