An open API service indexing awesome lists of open source software.

https://github.com/bourgeoisor/kaero

Lightweight and cozy terminal-based IRC client built in Golang.
https://github.com/bourgeoisor/kaero

internet-relay-chat irc irc-client terminal tui

Last synced: 4 months ago
JSON representation

Lightweight and cozy terminal-based IRC client built in Golang.

Awesome Lists containing this project

README

          

## What is Kaero?

Kaero is a lightweight and cozy terminal-based IRC client made in Golang. In Japanese, kaero 帰る means "to return (home)" which I find poetic for an IRC client. The name is also phonetically similar to kaeru かえる which means "frog" (thus the logo).

![screely-1736785076382](https://github.com/user-attachments/assets/a29c2621-36b5-4879-8f9c-fe0a5f89b00f)

## Features

These features are currently supported.

- 125 server replies (out of ~150 well known numerics) implemented
- 31 user commands implemented
- Can join up to 9 channels in one server network
- SSL/TLS support
- UTF-8 with full-width characters
- File-based configuration

## Not supported

These features are not supported yet but may be implemented in the future.

- User prefixes
- Channel prefixes
- Customizable colors
- Customizable keybinds
- Highlight mentions
- Timestamps in logs
- Direct messages
- CTCP
- DCC
- IRCv3
- CAP negotiations
- Identity registration
- User list as a side panel
- Multi-network support

## Keybinds

- `Ctrl + C`: quit the application
- `Enter`: toggle the input bar, or send message is non-empty
- `Alt + [0-9]`: swap between channels
- `PgUp` / `PgDown`: scroll through the chat log

## Commands

- `/ping`
- `/quit []`
- `/nick `
- `/oper `
- `/motd []`
- `/version []`
- `/admin []`
- `/connect [ []]`
- `/lusers`
- `/time []`
- `/stats []`
- `/help []`
- `/info`
- `/join {,} [{,}]`
- `/part {,} []` (alias: `/leave ...`)
- `/topic []`
- `/names {,}`
- `/list [{,}] [{,}]`
- `/invite `
- `/kick *( "," ) []`
- `/who `
- `/whois [] `
- `/whowas []`
- `/kill `
- `/rehash`
- `/restart`
- `/squit `
- `/away []`
- `/links`
- `/userhost { }`
- `/wallops `

## Config file

Kaero expects a config file named `config.json` located at the root of the executable.

Here's an example config:

```json
{
"servers": [
{
"host": "irc.libera.chat",
"port": 6697,
"ssl": true,
"nick": "myName",
"username": "myName",
"realName": "myName",
"defaultChannels": [
"#libera"
]
}
]
}
```

## How to run?

I am not currently publishing binaries, so they need to be built manually.

1. Clone the repository.

```sh
git clone https://github.com/bourgeoisor/kaero
cd kaero/
```

3. Fetch the required dependencies and build the binary.

```sh
go get
go build
```

5. Run the binary.

```sh
./kaero
```