Exploring the roots and future of Internet Relay Chat

Configuracion avanzada de irssi

Empece a usar irssi en 2002. Antes usaba BitchX, que era el cliente \"cool\" en aquel momento. BitchX murio. XChat murio. mIRC sigue vivo pero atado a Windows. Irssi sigue exactamente donde estaba, haciendo exactamente lo que tiene que hacer, sin intentar ser nada mas. Es el vi de los clientes IRC: feo al principio, indispensable una vez que lo dominas.

Por que irssi en 2025

Irssi corre en terminal. Esto significa que funciona en cualquier servidor remoto via SSH. Combinado con tmux o screen, tu sesion IRC vive en el servidor permanentemente. Abres SSH, te conectas al tmux, y ahi esta tu IRC exactamente donde lo dejaste. No necesitas bouncer si tienes un servidor donde correr irssi + tmux. El bouncer esta implicito en la persistencia de la sesion.

La alternativa moderna es WeeChat, que tambien corre en terminal y tiene mas funcionalidades de serie. WeeChat es objetivamente mas completo. Pero irssi es mas ligero, mas estable, y mas predecible. Si quieres un cliente que no te sorprenda nunca, irssi. Si quieres mas features out of the box, WeeChat. No hay una respuesta incorrecta.

Lo que no recomiendo es usar irssi directamente en tu maquina local sin tmux/screen. Sin persistencia de sesion, pierdes los mismos mensajes que sin bouncer. El flujo correcto es: servidor remoto + tmux + irssi. O si prefieres: servidor remoto + irssi como bouncer con el modulo proxy, y un cliente local que se conecta a el.

La configuracion base que funciona

La configuracion de irssi vive en ~/.irssi/config. Es un archivo de texto plano con formato propio (no JSON, no YAML, no TOML — formato irssi). Puedes editarlo a mano o usar los comandos /SET dentro de irssi.

# Configuracion base — ejecutar dentro de irssi:

# Identidad:
/SET real_name Marco Pellegrini
/SET user_name marco
/SET nick marco
/SET alternate_nick marco_

# Apariencia:
/SET theme default
/SET timestamps ON
/SET timestamp_format %H:%M:%S
/SET show_nickmode_empty OFF
/SET autocreate_windows ON
/SET autocreate_split_windows OFF
/SET autoclose_windows OFF

# Comportamiento:
/SET beep_msg_level HILIGHT MSGS
/SET bell_beeps ON
/SET activity_hide_level JOINS PARTS QUITS NICKS
/SET lag_check_time 60
/SET lag_max_before_disconnect 300

# Logging:
/SET autolog ON
/SET autolog_path ~/.irssi/logs/$tag/$0/%Y-%m-%d.log
/SET autolog_level ALL -CRAP -CLIENTCRAP -CTCPS

# Guardar toda la configuracion:
/SAVE

La linea clave es activity_hide_level. Por defecto, irssi muestra joins, parts, quits y cambios de nick en la barra de actividad. En canales grandes, esto genera ruido constante. Esconder esos eventos de la actividad (sin esconderlos del canal) mantiene la barra limpia.

Los logs se organizan por red (tag), canal, y fecha. Esto produce archivos como ~/.irssi/logs/Libera/#debian/2025-01-15.log. Buscables con grep, manejables con find, sin base de datos.

Consejo: Antes de editar ~/.irssi/config a mano, haz backup. Un error de sintaxis en el archivo puede hacer que irssi no arranque. Usa /SAVE despues de cada cambio para que el archivo refleje el estado actual.

Temas y apariencia

Irssi soporta temas que cambian como se muestra la informacion: colores, formatos de mensajes, separadores, la barra de estado. Los temas no cambian la funcionalidad, solo la presentacion.

# Instalar un tema:
mkdir -p ~/.irssi
cd ~/.irssi
# Descargar un tema popular:
wget https://irssi-import.github.io/themes/solarized-universal.theme

# En irssi:
/SET theme solarized-universal
/SAVE

# Temas recomendados:
# - solarized-universal: adaptado para terminales solarized
# - weed: limpio, minimalista, buena legibilidad
# - xchat: imita la apariencia de XChat
# - fear: oscuro, compacto, bueno para canales con mucho trafico

Si ningun tema te convence, puedes crear el tuyo. Un tema de irssi es un archivo de texto donde cada linea define como se formatea un tipo de mensaje. El formato es poco intuitivo al principio — usa codigos de color y variables — pero una vez que entiendes la logica, puedes personalizar cada pixel de texto.

# Ejemplo de formato en un .theme:
# Mensaje publico:
pubmsg = "{pubmsgnick $2 {pubnick $0}}$1";
# Mensaje privado:
msg = "{privmsg $0 $1}";
# Nick de quien habla:
pubnick = "%c$*%n";

# Codigos de color:
# %r rojo, %g verde, %b azul, %c cyan, %m magenta, %y amarillo
# %w blanco, %k negro, %n reset, %_ negrita, %U subrayado

Scripts Perl esenciales

Irssi tiene un sistema de scripting en Perl. Los scripts se guardan en ~/.irssi/scripts/ y los que quieres que carguen automaticamente van en ~/.irssi/scripts/autorun/ (como symlinks).

# Instalar un script:
mkdir -p ~/.irssi/scripts/autorun
cd ~/.irssi/scripts
wget https://scripts.irssi.org/scripts/nickcolor.pl

# Carga automatica:
cd autorun
ln -s ../nickcolor.pl .

# Cargar manualmente en irssi:
/SCRIPT LOAD nickcolor.pl

# Descargar:
/SCRIPT UNLOAD nickcolor

# Ver scripts cargados:
/SCRIPT

Los scripts que cargo siempre:

  • nickcolor.pl: Asigna un color unico a cada nick. En canales con muchas personas, distinguir quien dice que es mucho mas facil con colores que con texto plano.
  • trackbar.pl: Dibuja una linea horizontal donde dejaste de leer. Cuando vuelves a un canal despues de estar en otro, sabes exactamente donde estaban los mensajes nuevos.
  • adv_windowlist.pl (awl): Reemplaza la barra de ventanas por defecto con una version mas informativa. Muestra actividad, hilights, y el nombre del canal en vez del numero.
  • hilightwin.pl: Crea una ventana separada donde aparecen solo los mensajes que te mencionan. Indispensable si estas en muchos canales.
  • smartfilter.pl: Filtra joins/parts/quits de usuarios que no han hablado recientemente. Reduce el ruido sin perder contexto de los participantes activos.
  • screen_away.pl: Automaticamente te pone /away cuando desconectas del screen/tmux y te quita el away cuando vuelves.
# Configurar adv_windowlist (awl):
/SET awl_display_key $Q%K|%n$H$C$S
/SET awl_block -15
/SET awl_sbar_maxlength ON
/SET awl_maxlines 3

# Configurar trackbar:
/SET trackbar_string —
/SET trackbar_style %r

# Configurar nickcolor:
/SET neat_colors rRgGybBmMcC
/SET neat_ignorechars _-^`

Multiples servidores y redes

Irssi maneja multiples conexiones simultaneas de forma nativa. Cada red tiene su tag, y puedes tener ventanas de canales de diferentes redes abiertas al mismo tiempo.

# Anadir redes:
/NETWORK ADD Libera
/NETWORK ADD OFTC
/NETWORK ADD EFnet

# Anadir servidores a cada red:
/SERVER ADD -auto -tls -network Libera irc.libera.chat 6697
/SERVER ADD -auto -tls -network OFTC irc.oftc.net 6697
/SERVER ADD -auto -tls -network EFnet irc.efnet.org 6697

# Canales automaticos:
/CHANNEL ADD -auto #debian Libera
/CHANNEL ADD -auto #sysadmin OFTC
/CHANNEL ADD -auto #networking EFnet

# SASL por red:
/NETWORK ADD -sasl_mechanism PLAIN -sasl_username tunick -sasl_password tupassword Libera

# Conectar a una red especifica:
/CONNECT Libera
/CONNECT OFTC

# Cambiar de red activa:
Ctrl+X

# Ver conexiones:
/SERVER LIST

/SAVE

El flag -auto hace que irssi conecte automaticamente a esos servidores y se una a esos canales al arrancar. Con tres redes y diez canales cada una, irssi arranca, se conecta, se identifica con SASL, y se une a todo en segundos. Sin intervencion manual.

El proxy integrado

Irssi tiene un modulo proxy que lo convierte en un bouncer basico. Cargas el modulo, configuras un puerto y una contrasena, y puedes conectar otros clientes IRC a tu irssi como si fuera un ZNC simplificado.

# Cargar el modulo proxy:
/LOAD proxy

# Configurar:
/SET irssiproxy_password tu_contrasena_segura
/SET irssiproxy_ports Libera=2777 OFTC=2778

# Ahora otros clientes pueden conectar a:
# tu.servidor:2777 con password tu_contrasena_segura -> Libera
# tu.servidor:2778 con password tu_contrasena_segura -> OFTC

/SAVE

Esto es util si quieres usar irssi como tu cliente principal en el servidor pero tambien conectarte desde el movil o desde otro equipo. El proxy reenvia los mensajes a los clientes conectados y mantiene el buffer. No es tan completo como ZNC (no tiene playback con timestamps, no tiene clientbuffer), pero para un uso basico funciona sin necesidad de instalar software adicional.

Notificaciones remotas

Si irssi corre en un servidor remoto, no vas a ver las notificaciones de escritorio. Hay varias soluciones:

# Opcion 1: fnotify.pl — escribe highlights a un fichero
# que puedes monitorizar desde tu maquina local
/SCRIPT LOAD fnotify.pl
# En tu maquina local, un script que lee el fichero via SSH:
# ssh tuservidor tail -f ~/.irssi/fnotify | while read line; do
#   notify-send "IRC" "$line"
# done

# Opcion 2: irssi-notifier (servicio push)
# Envia notificaciones a tu movil via un servicio web
/SCRIPT LOAD notify.pl
/SET notify_remote ON

# Opcion 3: terminal bell
# Si tu terminal soporta bell y tu tmux esta configurado:
/SET bell_beeps ON
/SET beep_msg_level HILIGHT MSGS
# En .tmux.conf:
# set-option -g visual-bell off
# set-option -g bell-action any

La opcion 1 (fnotify + SSH) es la mas fiable porque no depende de servicios externos. Funciona completamente bajo tu control. La desventaja es que necesitas mantener la conexion SSH abierta (o usar autossh para reconectar automaticamente).

Atajos y trucos

# Atajos de teclado esenciales:
Alt+1-9,0     -> Ir a ventana 1-10
Alt+q,w,e...  -> Ir a ventana 11-19 (con script)
Ctrl+N / Ctrl+P -> Siguiente / anterior ventana
Alt+A          -> Ir a ventana con actividad
Ctrl+X         -> Cambiar de servidor activo
PgUp / PgDn    -> Scroll en el buffer
/SCROLLBACK END -> Ir al final del buffer

# Buscar en el buffer:
/LASTLOG patron
/LASTLOG -regexp patron
/LASTLOG -count 50 patron  ;# Ultimas 50 coincidencias

# Window management:
/WINDOW MOVE 5    -> Mover ventana actual a posicion 5
/WINDOW CLOSE     -> Cerrar ventana actual
/WINDOW LIST      -> Listar ventanas
/WINDOW GOTO nick -> Ir a ventana de query con nick

# Formato especial de texto:
Ctrl+B  -> Negrita
Ctrl+U  -> Subrayado
Ctrl+O  -> Reset formato
Ctrl+C seguido de numero -> Color (Ctrl+C3 = verde)

# Aliases utiles:
/ALIAS ns /msg NickServ $*
/ALIAS cs /msg ChanServ $*
/ALIAS j /join $*
/ALIAS wc /window close

# Ignorar a alguien:
/IGNORE *!*@host.del.molesto ALL
/IGNORE nick ALL
/UNIGNORE nick
Atencion: /WINDOW CLOSE cierra la ventana y pierde el buffer. Si es una query, la conversacion desaparece (a menos que tengas autolog activo). No hay undo. Acostumbrate a usar /wc con cuidado.

Preguntas frecuentes

Irssi o WeeChat?

Ambos corren en terminal, ambos soportan scripts, ambos son estables. WeeChat tiene mas funcionalidades de serie: relay protocol (cliente web nativo), soporte de mouse, configuracion mas granular. Irssi es mas ligero, mas predecible, y tiene una base de scripts Perl enorme. Si ya sabes irssi, no hay razon urgente para migrar. Si empiezas de cero, prueba ambos.

Puedo usar irssi sin tmux/screen?

Puedes, pero pierdes la persistencia. Cuando cierras la terminal, irssi se cierra y te desconectas de IRC. Si quieres un cliente local sin persistencia, funciona. Pero pierdes la principal ventaja de un cliente de terminal.

Como actualizo irssi?

Desde el gestor de paquetes de tu distro: apt update && apt upgrade irssi. Si compilas desde fuente, descarga la nueva version, compila, e instala. Los scripts y la configuracion no se tocan durante la actualizacion — estan en tu home, no en los directorios del sistema.

Puedo usar irssi con Tor?

Si. Configura un proxy SOCKS en irssi: /SET proxy_address 127.0.0.1, /SET proxy_port 9050, /SET use_proxy ON. Asegurate de que el servidor IRC permite conexiones desde Tor — muchos bloquean nodos de salida de Tor por abuso.