TinIRC ("Teenee RC") is a simple, minimalist, TUI IRC Client made in Haskell.
It's fun and I like it :3c
Simply install Cabal and execute cabal run exes -- config.yaml
The config.yaml file should look like this:
server:
hostname: irc.awesome.cool
port: 443
use_tls: true
check_certificates: true
channels:
- "#general"
- '#off-topic'
user:
username: Isidore
mode: 0
realname: Isidore Beautrelet
client:
sent_history_length: 65536
channel_history_length: 65536.
|- app
|- IrcParsing -> Everything related to the parsing of IRC messages
|- Parsing.hs -> Code for parsing IRC messages
|- Types.hs -> Structure for parsed IRC messages
|- UserInterface -> Everything related to the User Interface (including inputs and outputs)
|- Events.hs -> Event handling (i.e: displaying received messages, sending messages when enter is pressed, changing and joining channels etc.)
|- JoinDialog.hs -> DialogBox for joining a new channel or entering a DM
|- Main.hs -> The main entrypoint for the UserInterface. This is where the App is defined as well as the draw function
|- MessageHandling.hs -> Everything related to handling of newly received messages (calling the parser and putting the messages at the right place)
|- PartDialog.hs -> DialogBox for leaving a channel or a DM
|- Types.hs -> Types for the App (Form and State, as well as channels) and utility functions on these types
|- Widgets.hs -> Widget creation for the App
|- Client.hs -> Client handling the networking
|- Config.hs -> Parsing of the configuration file
|- Main.hs -> The entrypoint, connecting to TCP/TLS and creating the client and UI App.
|- config/example.yaml -> There's no better documentation than an example :3
|- .gitignore
|- CHANGELOG.md
|- LICENSE
|- README.md
|- TinIRC.cabal
No. 100% of the code was handwritten!
This is a side project that I made for fun. I don't find using AI fun. I like having to think hard about the code I write. I like learning new things, making mistakes, and understanding what I do. I enjoy spending time looking for documentation and trying to understand it. It's fun, it's fulfilling.
If my goal was to have an IRC client, I would just download one!
So, I'm proud to say: for the better or for worse, this project was made with no AI! :3c
