an experimental irc client
Zig 98.9%
Lua 1.1%
363 1 0

Clone this repository

https://tangled.org/rockorager.dev/comlink
git@tangled.org:rockorager.dev/comlink

For self-hosted knots, clone URLs may differ based on your setup.

README.md

comlink#

An experimental IRC client written in zig. Join the discussion in #comlink on libera.chat.

screenshot of comlink

Installation#

Arch Linux#

comlink is available as a package in the AUR. It can be installed using an AUR helper (e.g. paru).

paru -S comlink

Zig Build System#

comlink is written in zig and can be installed using the zig build system, version 0.14.0.

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 runs a paid instance of soju, and another paid alternative is pico.sh

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:

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

Pull requests accepted on Github

Pull requests accepted on tangled.sh