Irken: un cliente IRC minimalista escrito en Tcl/Tk

Fuentes: Irken: a small Tcl/Tk IRC client

Irken es un proyecto de software que pretende construir un cliente IRC funcional y compacto en Tcl/Tk. Su objetivo es respetar en la mayor medida posible el protocolo IRC manteniendo al mismo tiempo un tamaño lo bastante reducido como para que los aficionados al código puedan entenderlo y modificarlo. La herramienta se ofrece como una alternativa ligera frente a clientes IRC más pesados.

Entre sus características principales figuran el soporte para múltiples servidores IRC simultáneos, una interfaz de tres paneles configurable, el resaltado de menciones al propio nick, hipervínculos clicables, edición del topic, hooks de eventos para personalizar el comportamiento, autocompletado de nicks, notificación de presencia, historial de comandos y compatibilidad con color y formato de texto.

La aplicación está pensada para funcionar en Linux y requiere Tcl 8.6 o superior, además de las dependencias tcllib, tcl-tls y bwidget, instalables en sistemas basados en Debian mediante el comando "sudo apt install tcl tcllib tcl-tls bwidget". Tras la instalación basta con ejecutar irken.tcl; en el primer arranque, si no existe, se genera un archivo de configuración en ~/.config/irken/irken.tcl que conecta por defecto al servidor freenode.net y entra al canal #irken.

La configuración se realiza mediante archivos Tcl estándar que se cargan en orden alfabético, lo que permite personalizar cualquier aspecto del cliente. Los servidores se definen con el comando "server" y opciones como -host, -nick, -port, -pass, -insecure, -noverify, -autoconnect, -autojoin y -services. Irken incorpora además un sistema de plugins implementados como scripts Tcl que registran hooks con prioridades y disparadores como handleMESSAGE, ctcpMESSAGE y cmdCOMMAND, lo que facilita añadir comandos propios, modificar mensajes o reaccionar ante eventos del protocolo.

El repositorio incluye plugins de ejemplo como aliases, chanlist, daybreak, dtnotify, filterjoins, friend, ignore, ijchain, inlineimages, popupmenus, restorewinpos, reconnect, rot13 y search, que ilustran cómo extender las funcionalidades del cliente. La licencia del proyecto y las instrucciones de uso se distribuyen junto al código fuente.