Questa è un’applicazione per terminale (TUI), solo un po’ di divertimento… e in questa fase è un po’ sperimentale!
| Panoramica | Un’interfaccia a terminale per sfogliare e pubblicare su forum Discourse con elenchi di argomenti, viste complete degli argomenti, risposte, like, ricerca e un compositore integrato. | |
| Link al repository | GitHub - merefield/termcourse: A terminal based client to access Discourse instances, supporting API keys, username/password (and with MFA token) · GitHub | |
| Guida all’installazione | README.md nel repository (sezione Quickstart) | |
| Sponsorizzazione | Si prega di considerare la possibilità di diventare uno sponsor continuativo del mio lavoro open source (Sponsor @merefield on GitHub Sponsors · GitHub) a un livello adatto alle risorse e alle esigenze tue o della tua organizzazione, per garantire che questo progetto riceva la manutenzione che merita e continui a funzionare per il tuo sito in futuro. |
Stai apprezzando termcourse? Ti preghiamo di
su GitHub
Panoramica
termcourse è un client Discourse basato su terminale, ricostruito come un unico eseguibile Go. Può utilizzare una sessione cookie leggera in stile browser con nome utente/e-mail e password, inclusa la MFA con TOTP e codici di backup. L’autenticazione tramite chiave API è disponibile per i siti in cui il login interattivo non è appropriato.
L’interfaccia utilizza lo stack Charm attuale e funziona sia con la tastiera che con il mouse. La sua navigazione a cartelle, i filtri contestuali, i pannelli reattivi, i controlli tematici, il rendering Markdown e le immagini inline sono progettati per rendere la navigazione di un forum comoda senza uscire dal terminale.
Funzionalità
- Sfoglia le liste degli argomenti Latest, Hot, New, Unread, Top e Private Message, con ciclaggio del periodo Top.
- Naviga tra le cartelle persistenti Topics, Search, Notifications e Compose, con filtri di secondo livello contestuali.
- Usa la tastiera in tutto l’applicazione, oppure fai clic su schede, righe degli argomenti, controlli nel piè di pagina e pulsanti evidenziati al passaggio del mouse.
- Apri gli argomenti visibili con Invio o con i tasti numerici
1–0. - Leggi argomenti completi con caricamento pigro dei post, estratti compatti, post selezionati espansi e scorrimento reattivo.
- Fai clic sulla barra di avanzamento di un argomento per saltare direttamente a quel punto nel flusso dei post.
- Crea argomenti, scegli categorie, rispondi ad argomenti o singoli post, e metti like o toglie like ai post.
- Cerca post e salta direttamente al post corrispondente nel contesto del suo argomento.
- Sfoglia e filtra le notifiche, inclusi i badge per non lette e messaggi privati.
- Componi contenuti multilinea con movimento del cursore, inserimento, a capo, supporto per incolla e convalida in tempo reale.
- Renderizza Markdown GFM inclusi link, elenchi, citazioni, codice, elenchi di attività e tabelle.
- Mostra immagini inline e a schermo intero di alta qualità con il protocollo grafico Kitty, con simboli
chafacolorati oviucome alternative portatili. - Ricevi aggiornamenti in tempo reale delle liste degli argomenti, degli argomenti, delle notifiche e dei messaggi privati quando si utilizza una sessione cookie.
- Usa credenziali per sito dall’ambiente o da
credentials.yml, con prompt per i campi di accesso mancanti. - Scegli tra i temi
default,slate,fairground,rustehacker, aggiungi temi YAML e cambia tema mentre l’app è in esecuzione. - Usa output truecolor, a 256 colori o a 16 colori con rilevamento automatico delle capacità del terminale.
- Esegui l’interfaccia in inglese, francese, tedesco o spagnolo.
- Ridimensiona liberamente il terminale: layout, colori, liste degli argomenti e immagini Kitty rispondono allo spazio disponibile.
- Vedi i tempi di重试 forniti dal server quando Discourse applica limiti di frequenza a un’azione, con diagnostica facoltativa HTTP, UI e immagini.
Installazione ed esecuzione
Su Linux o macOS, l’installer consigliato scarica la release precompilata per il sistema operativo e l’architettura correnti, ne verifica il checksum SHA-256 e la versione riportata, quindi la installa:
curl -fsSL https://raw.githubusercontent.com/merefield/termcourse/master/install-release.sh | sh
termcourse your.discourse.host
Termcourse chiede un nome utente e una password quando le credenziali non sono già state configurate. L’inserimento della password è nascosto.
Usa termcourse --version per mostrare la versione semantica installata; la stessa versione appare nell’intestazione larga del terminale.
Per un’installazione locale per l’utente che non richiede sudo:
curl -fsSL https://raw.githubusercontent.com/merefield/termcourse/master/install-release.sh |
TERMCOURSE_BIN_DIR="$HOME/.local/bin" sh
Ogni GitHub Release fornisce checksum SHA-256 e archivi precompilati per Linux, macOS e Windows su AMD64 e ARM64. Linux/macOS usa .tar.gz; Windows usa .zip. Le release precompilate non richiedono Go.
Su Windows, scarica e ispeziona l’installer, quindi eseguilo senza modificare la policy di esecuzione di tutta la macchina:
Invoke-WebRequest https://raw.githubusercontent.com/merefield/termcourse/master/install-release.ps1 -OutFile install-release.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File .\install-release.ps1
Per impostazione predefinita viene installato in %LOCALAPPDATA%\Programs\termcourse\bin e esegue la stessa verifica di checksum e versione. Gli installer possono anche fissare una release con --version o -Version. Go 1.26.6 o superiore è richiesto solo quando si installa da sorgente.
Per costruire un eseguibile locale da un checkout invece:
git clone https://github.com/merefield/termcourse.git
cd termcourse
make build
./termcourse your.discourse.host
Per un uso ripetuto, metti i dettagli di accesso in un file .env locale o usa il credentials.yml per host descritto nel README.
Login con nome utente/password (consigliato)
Il login con nome utente/password abilita gli aggiornamenti in tempo reale:
DISCOURSE_USERNAME="you@example.com" \
DISCOURSE_PASSWORD="your_password" \
termcourse your.discourse.host
Fallback con chiave API
DISCOURSE_API_KEY="your_key" \
DISCOURSE_API_USERNAME="your_username" \
termcourse your.discourse.host
Consulta l’ultimo README per configurazione, temi, controlli, backend per immagini e risoluzione dei problemi.
Note sull’autenticazione
- Il login con nome utente/password segue il flusso CSRF e cookie di Discourse e abilita gli aggiornamenti in tempo reale di MessageBus.
- Sono supportate MFA con TOTP e codici di backup.
- L’autenticazione tramite chiave API mantiene la funzionalità HTTP ma non stabilisce una sessione browser in tempo reale.
- Alcuni siti disabilitano o limitano il login con nome utente/password scriptato; le credenziali API sono il fallback per quei siti.
Sicurezza
- Termcourse non scrive su disco le credenziali richieste o i cookie di sessione; i cookie di sessione rimangono in memoria.
- La richiesta della password mantiene la password fuori dalla cronologia del shell.
- Le credenziali persistenti sono opzionali e rimangono sotto il controllo dell’utente in file di ambiente o YAML.
- La registrazione diagnostica è opzionale, disabilitata per impostazione predefinita e non registra credenziali o corpi delle risposte.
Limitazioni
- I siti che vietano i flussi di login remoti potrebbero richiedere l’autenticazione tramite chiave API.
- Gli aggiornamenti in tempo reale richiedono l’autenticazione cookie con nome utente/password.
- La qualità delle immagini inline native dipende dal supporto del terminale; Kitty è preferita, con rendering a simboli disponibile altrove.
- Vive nel terminale.

Crediti
Parzialmente ispirato a Dumbcourse: vecchia interfaccia amichevole per browser su schermi piccoli/d-pad. ![]()





