Este é um aplicativo de terminal (TUI), apenas um pouco de diversão … e um pouco experimental nesta fase!
| Resumo | Uma interface de terminal para navegar e publicar em fóruns Discourse, com listas de tópicos, visualização completa de tópicos, respostas, curtidas, busca e um compositor embutido. | |
| Link do Repositório | GitHub - merefield/termcourse: A terminal based client to access Discourse instances, supporting API keys, username/password (and with MFA token) · GitHub | |
| Guia de Instalação | README.md no repositório (seção Quickstart) | |
| Patrocínio | Considere se tornar um patrocinador contínuo do meu trabalho de código aberto (Sponsor @merefield on GitHub Sponsors · GitHub) em um nível que atenda aos recursos e necessidades de você ou da sua organização, para garantir que este projeto receba a manutenção que merece e continue funcionando para o seu site no futuro. |
Gostando do termcourse? Por favor, dê uma
no GitHub
Visão Geral
O termcourse é um cliente Discourse baseado em terminal, reconstruído como um executável único em Go. Ele pode usar uma sessão de cookies leve, estilo navegador, com nome de usuário/e-mail e senha, incluindo MFA com TOTP e códigos de reserva. A autenticação por chave de API está disponível para sites onde o login interativo não é adequado.
A interface usa o stack atual da Charm e funciona tanto com teclado quanto com mouse. Sua navegação em estilo de pastas, filtros contextuais, painéis responsivos, controles com temas, renderização de Markdown e imagens inline foram projetados para tornar a navegação em um fórum confortável sem sair do terminal.
Funcionalidades
- Navegue pelas listas de tópicos Latest, Hot, New, Unread, Top e Private Message, com alternância do período de Top.
- Navegue pelas pastas persistentes Topics, Search, Notifications e Compose, com filtros de segundo nível contextuais.
- Use o teclado em todo o aplicativo ou clique em abas, linhas de tópicos, controles do rodapé e botões destacados ao passar o mouse.
- Abra tópicos visíveis com Enter ou teclas de número
1–0. - Leia tópicos completos com carregamento preguiçoso de posts, trechos compactos, posts selecionados expandidos e rolagem responsiva.
- Clique na trilha de progresso de um tópico para pular diretamente para aquele ponto no fluxo de posts.
- Crie tópicos, escolha categorias, responda a tópicos ou posts individuais e curta ou deixe de curtir posts.
- Busque posts e vá diretamente para o post correspondente no contexto do seu tópico.
- Navegue e filtre notificações, incluindo badges de não lidas e mensagens privadas.
- Componha conteúdo de várias linhas com movimento de cursor, inserção, quebra de linha, suporte a colar e validação em tempo real.
- Renderize Markdown GFM, incluindo links, listas, citações, código, listas de tarefas e tabelas.
- Exiba imagens inline e em tela cheia de alta qualidade com o protocolo gráfico Kitty, com símbolos coloridos
chafaouviucomo alternativas portáteis. - Receba atualizações em tempo real de listas de tópicos, tópicos, notificações e mensagens privadas ao usar uma sessão de cookies.
- Use credenciais por site a partir do ambiente ou
credentials.yml, com solicitação para campos de login ausentes. - Escolha entre os temas
default,slate,fairground,rustehacker, adicione temas YAML e alterne temas enquanto o aplicativo está em execução. - Use saída truecolor, 256 cores ou 16 cores com detecção automática de capacidade do terminal.
- Execute a interface em inglês, francês, alemão ou espanhol.
- Redimensione o terminal livremente: layouts, cores, listas de tópicos e imagens Kitty respondem ao espaço disponível.
- Veja o tempo de repetição fornecido pelo servidor quando o Discourse limita a taxa de uma ação, com diagnósticos opcionais de HTTP, UI e imagem.
Instalação e execução
No Linux ou macOS, o instalador recomendado baixa a release pré-compilada para o sistema operacional e arquitetura atuais, verifica seu checksum SHA-256 e a versão relatada, e então a instala:
curl -fsSL https://raw.githubusercontent.com/merefield/termcourse/master/install-release.sh | sh
termcourse your.discourse.host
O Termcourse solicita um nome de usuário e senha quando as credenciais ainda não foram configuradas. A entrada da senha é oculta.
Use termcourse --version para mostrar a versão semântica instalada; a mesma versão aparece no cabeçalho largo do terminal.
Para uma instalação local de usuário que não requer sudo:
curl -fsSL https://raw.githubusercontent.com/merefield/termcourse/master/install-release.sh |
TERMCOURSE_BIN_DIR="$HOME/.local/bin" sh
Cada GitHub Release fornece checksums SHA-256 e arquivos pré-compilados para Linux, macOS e Windows em AMD64 e ARM64. Linux/macOS usam .tar.gz; Windows usa .zip. As releases pré-compiladas não requerem Go.
No Windows, baixe e inspecione o instalador, e então execute-o sem alterar a política de execução da máquina:
Invoke-WebRequest https://raw.githubusercontent.com/merefield/termcourse/master/install-release.ps1 -OutFile install-release.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File .\install-release.ps1
Ele instala em %LOCALAPPDATA%\Programs\termcourse\bin por padrão e executa a mesma verificação de checksum e versão. Os instaladores também podem fixar uma release com --version ou -Version. Go 1.26.6 ou mais novo é necessário apenas ao instalar a partir do código-fonte.
Para construir um executável local a partir de um checkout em vez disso:
git clone https://github.com/merefield/termcourse.git
cd termcourse
make build
./termcourse your.discourse.host
Para uso repetido, coloque os detalhes de login em um .env local ou use o credentials.yml por host descrito no README.
Login com nome de usuário/senha (recomendado)
O login com nome de usuário/senha habilita atualizações em tempo real:
DISCOURSE_USERNAME="you@example.com" \
DISCOURSE_PASSWORD="your_password" \
termcourse your.discourse.host
Fallback com chave de API
DISCOURSE_API_KEY="your_key" \
DISCOURSE_API_USERNAME="your_username" \
termcourse your.discourse.host
Veja o README mais recente para configuração, temas, controles, backends de imagem e solução de problemas.
Notas de autenticação
- O login com nome de usuário/senha segue o fluxo CSRF e de cookies do Discourse e habilita atualizações em tempo real do MessageBus.
- MFA com TOTP e códigos de reserva é suportado.
- A autenticação por chave de API mantém a funcionalidade HTTP, mas não estabelece uma sessão de navegador em tempo real.
- Alguns sites desativam ou restringem o login com nome de usuário/senha via script; as credenciais de API são o fallback para esses sites.
Segurança
- O Termcourse não grava credenciais solicitadas ou cookies de sessão em disco; os cookies de sessão permanecem na memória.
- A solicitação de senha mantém a senha fora do histórico do shell.
- Credenciais persistentes são opcionais e permanecem sob o controle do usuário em arquivos de ambiente ou YAML.
- O registro de diagnóstico é opt-in, desativado por padrão e não registra credenciais ou corpos de resposta.
Limitações
- Sites que proíbem fluxos de login remoto podem requerer autenticação por chave de API.
- Atualizações em tempo real requerem autenticação por cookie com nome de usuário/senha.
- A qualidade de imagens inline nativas depende do suporte do terminal; Kitty é preferido, com renderização de símbolos disponível em outros lugares.
- Ele vive no terminal.

Créditos
Parcialmente inspirado por Dumbcourse: old browser friendly UI at dumb/d-pad/small screens. ![]()





