Cliente IRC completo en C con interfaz de terminal, diseñado para ser ligero, rápido y funcional.
- Múltiples ventanas: Sistema, canales y mensajes privados
- Lista de usuarios: Muestra usuarios en canales con prefijos de modo (@, +, %, ~, &)
- Word wrap inteligente: Los mensajes largos se ajustan automáticamente al ancho de terminal
- Preservación de colores: Los formatos ANSI (colores, negrita, etc.) se mantienen al hacer wrap
- Continuidad visual: Las líneas continuadas mantienen el mismo formato que la línea original
- Sin pérdida de formato: Colores, negrita, subrayado se preservan entre líneas
- Scroll: Desplazamiento en buffer de mensajes y lista de usuarios
- UTF-8: Soporte completo para caracteres UTF-8
- Colores mIRC: Renderiza códigos de color mIRC (^C, ^B, ^U, etc.)
- Timestamps configurables: Muestra hora en mensajes de canales y privados
- Formatos disponibles: HH:MM:SS o HH:MM
- Comando:
/timestamp on|offy/ttformat HH:MM:SS|HH:MM - En logs: Siempre se usa formato HH:MM:SS
- Logs automáticos: Guarda conversaciones en
~/.irclogs/ - Formato de archivos:
tipo_nombre_DD-MM-YY_HH:MM.txt- Ejemplo:
canal_music_12-03-25_21:33.txt - Ejemplo:
privado_alice_23-04-22_03:24.txt
- Ejemplo:
- Timestamps siempre incluidos: Formato [HH:MM:SS] en cada línea
- Cambio de día: Se indica automáticamente en el log
- Sin códigos ANSI: Los logs se guardan limpios
- Comando:
/log on|off
- Sistema NOTIFY: Vigila nicks específicos cada minuto
- Indicador C (verde, parpadeante): Nick vigilado se conectó
- Indicador M (magenta, parpadeante): Te mencionaron en un canal
- Indicador * (rojo, parpadeante): Nueva ventana privada
- Indicador + (amarillo, parpadeante): Mensajes sin leer
- Múltiples simultáneos: Todos los indicadores activos se muestran juntos (ej:
C M +) - Parpadeo visual: Alternan entre normal y reverse video para máxima visibilidad
- Comando:
/okpara limpiar todas las notificaciones (C, M, *, +)
- TAB en canales: Autocompleta nicks de usuarios
- Rotación: Presiona TAB múltiples veces para rotar opciones
- Auto-colon: Si el nick está al inicio, añade
:automáticamente - Case-insensitive: Funciona sin importar mayúsculas/minúsculas
- Oculta ruido: JOIN, QUIT, PART y PRIVMSG no aparecen en ventana sistema
- Eventos visibles: JOIN, QUIT, PART siempre se muestran en canales respectivos
- Logs completos: Todos los eventos se registran en logs independientemente del modo
- Comando:
/silent on|off
- Conexión automática: Únete a canales al conectar
- Configuración:
AUTOJOIN=#linux,#python,programming - # opcional: El programa lo añade si falta
# Clonar el repositorio
git clone https://github.com/tu-usuario/ircchat.git
cd ircchat
# Compilar
make
# El binario estará en bin/ircchat
./bin/ircchatCopia el archivo de ejemplo a tu home:
cp .ircchat.rc.example ~/.ircchat.rcEdita ~/.ircchat.rc con tu editor favorito:
# Conexión
NICK=minick
SERVER=irc.libera.chat:6667
# Opciones
BUFFER=on
SILENT=off
LOG=on
TIMESTAMP=on
TTFORMAT=HH:MM:SS
# Auto-join
AUTOJOIN=#linux,#python,programming
# Notify
NOTIFY=alice,bob,charlie| Parámetro | Valores | Descripción |
|---|---|---|
NICK |
texto | Nick por defecto |
SERVER |
servidor[:puerto] | Servidor IRC |
BUFFER |
on/off | Buffer de mensajes |
SILENT |
on/off | Modo silencioso |
LOG |
on/off | Logging automático |
TIMESTAMP |
on/off | Timestamps en mensajes |
TTFORMAT |
HH:MM:SS o HH:MM | Formato de timestamp |
AUTOJOIN |
#canal,#canal | Canales auto-join |
NOTIFY |
nick,nick | Nicks a vigilar |
/connect [servidor] [puerto]- Conectar a servidor/nick <nickname>- Cambiar nickname/exito/quit- Salir del programa
/join <#canal>- Unirse a un canal/part- Salir del canal actual/list [num <n>] [users <n>|<min>-<max>] [order] [search <patrón>]- Listar canales del servidornum <n>- Limitar a n resultados (cuántos canales mostrar)users <n>- Filtrar por número exacto de usuariosusers <min>-<max>- Filtrar por rango de usuariosorder- Ordenar por número de usuarios (mayor a menor)search <patrón>- Filtrar por patrón (wildcards * y ?)- Ejemplos:
/list- Listar todos los canales/list order- Ordenar por usuarios/list num 10 users 10-40 order search *linux*- Máximo 10 canales con 10-40 usuarios, ordenados, que contengan "linux"/list users 50- Solo canales con exactamente 50 usuarios/list users 20-100 order- Canales con 20-100 usuarios, ordenados
/msg <nick> <mensaje>- Enviar mensaje privado- Escribe directamente en canales sin comando
/wl- Listar ventanas abiertas/wc [n]- Cerrar ventana (actual o número)/w1,/w2, etc. - Cambiar a ventana específica/clear- Limpiar pantalla actual
/buffer on|off- Activar/desactivar buffer/silent on|off- Activar/desactivar modo silencioso/log on|off- Activar/desactivar logging/timestamp on|off- Activar/desactivar timestamps/ttformat HH:MM:SS- Formato largo de timestamp/ttformat HH:MM- Formato corto de timestamp
/ok- Borrar todas las notificaciones (C, M, *, +)/help- Mostrar ayuda/whois <nick>- Obtener información de un usuario conectado- Ejemplos:
/whois alice - Muestra información del servidor sobre el usuario (host, canales, idle time, etc.)
- Ejemplos:
/wii <nick>- Obtener información completa (WHOIS + WHOWAS)- Ejemplos:
/wii bob - Ejecuta WHOIS (usuario actual) y WHOWAS (historial)
- Útil para usuarios que ya no están conectados
- Ejemplos:
/raw <comando>- Enviar comando IRC raw al servidor- Ejemplos:
/raw WHOIS usuario,/raw MODE #canal +m,/raw TOPIC #canal :Nuevo topic - Permite usar cualquier comando IRC no implementado directamente
- Ejemplos:
Alt+0-9- Cambiar a ventana 0-9Alt+→- Siguiente ventana (cíclico)Alt+←- Ventana anterior (cíclico)Alt+.- Limpiar pantalla actual
Ctrl+↑- Scroll up en mensajesCtrl+↓- Scroll down en mensajesCtrl+B- Ir al inicio del bufferCtrl+E- Ir al final del buffer
Ctrl+Shift+↑- Scroll up en lista usuariosCtrl+Shift+↓- Scroll down en lista usuariosCtrl+Shift+←- Scroll izquierda (nicks largos)Ctrl+Shift+→- Scroll derecha (nicks largos)
↑/↓- Navegar historial de comandosTAB- Autocompletar nicks en canalesCtrl+L- Redibujar interfazCtrl+C- Salir del programa
El cliente soporta los siguientes códigos de formato mIRC:
| Código | Efecto |
|---|---|
^C + número |
Color (0-15) |
^B |
Negrita |
^U |
Subrayado |
^O o ^R |
Reset |
^V |
Video reverso |
0=Blanco, 1=Negro, 2=Azul, 3=Verde, 4=Rojo, 5=Marrón, 6=Magenta, 7=Naranja, 8=Amarillo, 9=Verde claro, 10=Cyan, 11=Cyan claro, 12=Azul claro, 13=Rosa, 14=Gris, 15=Gris claro
/connect irc.libera.chat
/nick miusuario
/join #linux
/timestamp on
/ttformat HH:MM
# Ahora los mensajes aparecerán con formato: 14:35> <usuario> mensaje
/log on
# Los logs se guardarán en ~/.irclogs/
# Ejemplo: ~/.irclogs/canal_linux_12-03-25_14:35.txt
# En un canal, escribe las primeras letras de un nick y presiona TAB
Al<TAB> -> Completa a "Alice: " si estás al inicio de línea
# Configura NOTIFY en ~/.ircchat.rc
NOTIFY=alice,bob
# Cuando alice o bob se conecten, verás:
> [comando] C
# Presiona /ok para limpiar
# Ver información de usuario conectado
/whois alice
# Respuesta del servidor muestra:
# - Hostname y dirección
# - Nombre real
# - Canales donde está
# - Tiempo idle
# Ver información completa (conectado + historial)
/wii bob
# Ejecuta WHOIS y WHOWAS:
# - Información actual si está conectado
# - Historial de conexiones previas
# - Funciona incluso si el usuario ya se desconectó
# Caso de uso: verificar usuario desconectado
/wii charlie
# Muestra cuando charlie estuvo conectado por última vez
ircchat/
├── src/
│ ├── main.c - Bucle principal y procesamiento IRC
│ ├── terminal.c/.h - Manejo de terminal y rendering
│ ├── windows.c/.h - Gestión de ventanas y mensajes
│ ├── buffer.c/.h - Buffer de mensajes con scroll
│ ├── irc.c/.h - Protocolo IRC
│ ├── commands.c/.h - Comandos de usuario
│ ├── input.c/.h - Manejo de entrada y teclas
│ ├── config.c/.h - Configuración
│ └── common.h - Definiciones comunes
├── doc/ - Documentación adicional
├── bin/ - Binarios compilados (ignorado por git)
├── Makefile - Script de compilación
├── .ircchat.rc.example - Configuración de ejemplo
├── .gitignore - Archivos ignorados por git
├── LICENSE - Licencia MIT
└── README.md - Este archivo
- Compilador GCC con soporte C11
- Sistema Unix/Linux (probado en Termux)
- Terminal con soporte ANSI y UTF-8
El proyecto usa un Makefile simple:
# Compilar
make
# Limpiar
make clean
# Recompilar todo
make clean && makeEste proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
- Word wrap con preservación de colores (v1.1.0)
- Comando /whois para información de usuarios (v1.1.0)
- Comando /wii con WHOIS + WHOWAS (v1.1.0)
- Filtrado avanzado en /list por rango de usuarios (v1.1.0)
- Sistema de notificaciones visual (C, M, *, +)
- Autocompletado de nicks con TAB
- Logging automático con timestamps
- Soporte completo UTF-8 y colores mIRC
- Soporte SSL/TLS
- Configuración de colores personalizables
- Temas de color
- Búsqueda en buffer
- Scripts de automatización
- Notificaciones de sistema (libnotify)
- Alias de comandos configurables
- Macros y bindings personalizados
Desarrollado con Claude Code - Cliente IRC moderno en C.