Esta es una aplicación de terminal (TUI), solo un poco de diversión … ¡y un poco experimental en esta etapa!
| Resumen | Una interfaz de terminal para navegar y publicar en foros de Discourse con listas de temas, vistas completas de temas, respuestas, me gusta, búsqueda y un compositor integrado. | |
| Enlace al repositorio | GitHub - merefield/termcourse: A terminal based client to access Discourse instances, supporting API keys, username/password (and with MFA token) · GitHub | |
| Guía de instalación | README.md en el repositorio (sección Quickstart) | |
| Patrocinio | Por favor, considera convertirte en un patrocinador continuo de mi trabajo de código abierto (Sponsor @merefield on GitHub Sponsors · GitHub) en un nivel que se ajuste a los recursos y necesidades de ti o de tu organización, para asegurar que este proyecto reciba el mantenimiento que merece y siga funcionando para tu sitio en el futuro. |
¿Disfrutando termcourse? Por favor, dale
en GitHub
Resumen
termcourse es un cliente de Discourse basado en terminal, reconstruido como un único ejecutable en Go. Puede utilizar una sesión de cookies ligera de estilo navegador con nombre de usuario/correo electrónico y contraseña, incluyendo MFA con TOTP y códigos de respaldo. La autenticación con clave de API está disponible para sitios donde el inicio de sesión interactivo no sea adecuado.
La interfaz utiliza la pila actual de Charm y funciona tanto con teclado como con ratón. Su navegación de estilo carpeta, filtros contextuales, paneles responsivos, controles con temas, renderizado de Markdown e imágenes en línea están diseñados para hacer la navegación por un foro cómoda sin salir de la terminal.
Características
- Navega por las listas de temas de Últimos, Calientes, Nuevos, No leídos, Top y Mensajes Privados, con cambio de período para Top.
- Navega por las carpetas persistentes de Temas, Búsqueda, Notificaciones y Compositor, con filtros de segundo nivel contextuales.
- Usa el teclado en todo momento, o haz clic en pestañas, filas de temas, controles del pie de página y botones resaltados al pasar el cursor.
- Abre temas visibles con Enter o las teclas numéricas
1–0. - Lee temas completos con carga perezosa de publicaciones, extractos compactos, publicaciones seleccionadas expandidas y desplazamiento responsivo.
- Haz clic en la pista de progreso de un tema para saltar directamente a ese punto en el flujo de publicaciones.
- Crea temas, elige categorías, responde a temas o publicaciones individuales, y da o quita “me gusta” a las publicaciones.
- Busca publicaciones y salta directamente a la publicación coincidente en su contexto de tema.
- Navega y filtra notificaciones, incluyendo insignias de no leídos y mensajes privados.
- Compone contenido de varias líneas con movimiento del cursor, inserción, ajuste de línea, soporte para pegar y validación en vivo.
- Renderiza Markdown GFM incluyendo enlaces, listas, citas, código, listas de tareas y tablas.
- Muestra imágenes en línea y a pantalla completa de alta calidad con el protocolo gráfico de Kitty, con símbolos
chafade colores oviucomo alternativas portátiles. - Recibe actualizaciones en tiempo real de listas de temas, temas, notificaciones y mensajes privados al utilizar una sesión de cookies.
- Usa credenciales por sitio desde el entorno o
credentials.yml, con solicitud de campos de inicio de sesión faltantes. - Elige entre los temas
default,slate,fairground,rustyhacker, añade temas YAML y cambia de tema mientras la aplicación está en ejecución. - Usa salida a color verdadero, 256 colores o 16 colores con detección automática de capacidades de la terminal.
- Ejecuta la interfaz en inglés, francés, alemán o español.
- Redimensiona la terminal libremente: los diseños, colores, listas de temas e imágenes de Kitty responden al espacio disponible.
- Ve el tiempo de reintento proporcionado por el servidor cuando Discourse limita por tasa una acción, con diagnósticos opcionales de HTTP, UI e imágenes.
Instalación y ejecución
En Linux o macOS, el instalador recomendado descarga la versión precompilada para el sistema operativo y la arquitectura actuales, verifica su suma de control SHA-256 y la versión informada, y luego la instala:
curl -fsSL https://raw.githubusercontent.com/merefield/termcourse/master/install-release.sh | sh
termcourse your.discourse.host
Termcourse solicita un nombre de usuario y una contraseña cuando las credenciales no se han configurado previamente. La entrada de la contraseña está oculta.
Usa termcourse --version para mostrar la versión semántica instalada; la misma versión aparece en el encabezado amplio de la terminal.
Para una instalación local de usuario que no requiere sudo:
curl -fsSL https://raw.githubusercontent.com/merefield/termcourse/master/install-release.sh |
TERMCOURSE_BIN_DIR="$HOME/.local/bin" sh
Cada GitHub Release proporciona sumas de control SHA-256 y archivos precompilados para Linux, macOS y Windows en AMD64 y ARM64. Linux/macOS usan .tar.gz; Windows usa .zip. Las versiones precompiladas no requieren Go.
En Windows, descarga e inspecciona el instalador y luego ejecútalo sin cambiar la política de ejecución de todo el sistema:
Invoke-WebRequest https://raw.githubusercontent.com/merefield/termcourse/master/install-release.ps1 -OutFile install-release.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File .\install-release.ps1
Por defecto, se instala en %LOCALAPPDATA%\Programs\termcourse\bin y realiza la misma verificación de suma de control y versión. Los instaladores también pueden fijar una versión con --version o -Version. Go 1.26.6 o superior solo es necesario al instalar desde el código fuente.
Para compilar un ejecutable local desde un clon en su lugar:
git clone https://github.com/merefield/termcourse.git
cd termcourse
make build
./termcourse your.discourse.host
Para uso repetido, coloca los datos de inicio de sesión en un .env local o usa el credentials.yml por host descrito en el README.
Inicio de sesión con nombre de usuario/contraseña (recomendado)
El inicio de sesión con nombre de usuario/contraseña habilita las actualizaciones en tiempo real:
DISCOURSE_USERNAME="you@example.com" \
DISCOURSE_PASSWORD="your_password" \
termcourse your.discourse.host
Alternativa con clave de API
DISCOURSE_API_KEY="your_key" \
DISCOURSE_API_USERNAME="your_username" \
termcourse your.discourse.host
Consulta el README más reciente para configuración, temas, controles, motores de imagen y solución de problemas.
Notas de autenticación
- El inicio de sesión con nombre de usuario/contraseña sigue el flujo CSRF y de cookies de Discourse y habilita las actualizaciones en tiempo real de MessageBus.
- Se admiten MFA con TOTP y códigos de respaldo.
- La autenticación con clave de API mantiene la funcionalidad HTTP pero no establece una sesión de navegador en tiempo real.
- Algunos sitios deshabilitan o restringen el inicio de sesión con nombre de usuario/contraseña mediante guiones; las credenciales de API son la alternativa para esos sitios.
Seguridad
- Termcourse no escribe las credenciales solicitadas ni las cookies de sesión en el disco; las cookies de sesión permanecen en memoria.
- La solicitud de contraseña mantiene la contraseña fuera del historial de la shell.
- Las credenciales persistentes son opcionales y permanecen bajo el control del usuario en archivos de entorno o YAML.
- El registro de diagnóstico es opcional, deshabilitado por defecto, y no registra credenciales ni cuerpos de respuesta.
Limitaciones
- Los sitios que prohíben los flujos de inicio de sesión remoto pueden requerir autenticación con clave de API.
- Las actualizaciones en tiempo real requieren autenticación con cookies de nombre de usuario/contraseña.
- La calidad de las imágenes en línea nativas depende del soporte de la terminal; se prefiere Kitty, con renderizado de símbolos disponible en otros lugares.
- Vive en la terminal.

Créditos
Parcialmente inspirado en Dumbcourse: interfaz amigable con navegadores antiguos en pantallas pequeñas/d-pad. ![]()





