2011-12-23 13 views
7

Sto sviluppando un'applicazione C++ che verrà eseguita su un server headless e tenere traccia di alcune statistiche. L'applicazione verrà eseguita in un terminale in una sessione di schermata in modo che possa accedere tramite SSH e controllare tali statistiche.Grafica basata su pixel nell'applicazione terminale Linux

Ora, quello che voglio fare è visualizzare grafici di vari dati. Per questo ho bisogno di un accesso pixel per pixel, cosa che non è possibile con ncurses o S-Lang. Ho scoperto circa DirectFB (ed è wrapper C++ DFB++ & ++DFB), ma non riesco a trovare prove conclusive se è possibile disegnare grafici con esso all'interno di un terminale.

DirectFB è la strada da percorrere? Funzionerà bene all'interno di una sessione dello schermo senza creare finestre aggiuntive? Se no, c'è qualche biblioteca là fuori che può ottenere ciò che voglio?

Edit: Idealmente, avrei ovviamente preferirebbe una libreria che ha un qualche tipo di supporto widget e, in modo che non ho per creare tonnellate di classi di emulare i campi di testo/barre di scorrimento/...

+0

Ricordo che anche SDL era in grado di disegnare su console, il che era un avvenimento divertente allora perché non mi aspettavo di vedere i miei tracciati su un terminale a schermo intero. –

+1

perché non usi X con l'inoltro della rete? Ragioni di prestazioni? – akappa

+0

@ akappa Funzionerebbe se disconnettessi dal server remoto e login da qualche altra parte in seguito? La finestra verrebbe correttamente inoltrata? Anche se funzionasse, preferirei non ingombrare il mio desktop con finestre aggiuntive, l'applicazione è in esecuzione all'interno di un terminale e mi piacerebbe che rimanesse lì. – Darhuuk

risposta

7

Si potrebbe fare in modo che l'applicazione abbia un'interfaccia web . Potresti usare per es. Wt o Onion per rendere la tua applicazione un server HTTP (o potresti farne un'applicazione FastCgi), e usare SVG (magari con trucchi Javascript e Ajax) per visualizzare grafica vettoriale (o generare un'immagine PNG o JPEG o GIF basata su pixel; ci sono diverse librerie per questo).

Non penso che DirectFB funzioni con SSH e credo che diventi obsoleto (ad esempio GTK3 non lo supporta più).

È inoltre possibile generare grafici Gnu Plot (generando i comandi appropriati), ma non è molto interattivo.

Non credo che fare grafica con ssh senza X abbia senso, a meno che non si desideri solo l'arte ASCII (che credo non sia la strada giusta per le proprie esigenze).

+0

sì, questo è l'approccio naturale e più pratico – akappa

+0

Queste due strutture sono davvero molto belle, specialmente Wt. E ho già nginx in esecuzione sul server, quindi potrei usarlo come proxy per l'applicazione. – Darhuuk

+0

Il tuo CGI per generare i grafici delle statistiche potrebbe essere semplicemente un semplice script di shell che chiama gnuplot. Per prima cosa, modificherei qualcosa in questo senso. –

Problemi correlati