Quando eseguo sudo dpkg-reconfigure lightdm
nel terminale vedo un listmenu semplicistico simile a una finestra. C'è un modo per creare qualcosa del genere in C++?
Sembra qualcosa del tipo:
Risposta accettata:
L'interfaccia testuale simile a una finestra, contenuta all'interno di un terminale, che vedi quando esegui sudo dpkg-reconfigure lightdm
è codificato utilizzando ncurses biblioteca. Quindi, se vuoi che il tuo programma fornisca un'interfaccia simile a quella, puoi usare anche ncurses.
-
Ecco la pagina del progetto ncurses.
-
Ecco un HOWTO alla programmazione di NCURSES.
-
Puoi installare alcuni file di documentazione di ncurses con ncurses-doc Pacchetto
.
Ciò include la manpage di ncurses, che puoi anche visualizzare online qui. Include anche pagine di manuale per tutte le funzioni fornite dalla libreria ncurses (alcuni condividono una pagina di manuale). Quelle pagine di manuale non attualmente online su manpages.ubuntu.com.
Per creare software utilizzando ncurses in Ubuntu, dovresti ottenere il pacchetto di file di intestazione appropriato. A meno che tu non stia compilando in modo incrociato, questo sarà:
-
Per i programmi che utilizzano stringhe tradizionali in cui la maggior parte dei caratteri è rappresentata da un singolo byte (ad esempio, UTF-8), utilizzare libncurses5
.
Questo è probabilmente quello che vuoi se le tue stringhe sono array di
char
(in C e altri linguaggi basati su C) ostd::string
(in C++). -
Per i programmi che richiedono il supporto di caratteri ampi, utilizzare libncursesw5
.
Ne avrai particolarmente bisogno se le tue stringhe sono array di
wchar_t
(in C e altri linguaggi basati su C) ostd::wstring
,std::u16string
ostd::u32string
(in C++).
Facoltativamente, per assistenza nel debug del tuo programma, potresti anche vuoi simboli di debug (per debugger come gdb). Per questo, installa libncurses5-dbg o libncursesw5-dbg
.
Quando crei il tuo programma con GCC (ad es. con il gcc
o g++
comandi), assegnagli l'argomento -lncurses
o -lncursesw
, di solito alla fine del comando. Questo collega il tuo programma alla libreria ncurses. Ad esempio:
g++ -Wall -g -o hello hello.cpp -lncurses
Questo compila hello.cpp per produrre un eseguibile con simboli di debug (-g
), chiamato ciao (-o hello
), avviso sulla maggior parte delle cose su cui potresti volere un avviso (-Wall
), e il collegamento alla libreria ncurses regolare (non a caratteri larghi) (-lncurses
).