ncurses
ncurses (new curses) — бібліотека, яка реалізує API, що дозволяє програмісту створювати текстовий інтерфейс користувача для керуванням вводом-виводом на термінал в режимі консольного застосування. Це набір інструментів для розробки інтерфейсів, подібних до графічних програмних застосунків в режимі термінала. Вона оптимізована для роботи при зміні розмірів екрану, для зменшення затримки, яка виникає при використанні віддалених командних оболонок Unix.
Меню програми menuconfig, написаної з використанням ncurses | |
Тип | Widget toolkit |
---|---|
Розробник | GNU Project |
Перший випуск | 1993 |
Стабільний випуск | 6.3 (8 листопада, 2021 ) |
Репозиторій | invisible-mirror.net/archives/ncurses/ |
Операційна система | POSIX |
Мова програмування | C |
Ліцензія | X11 License[1] |
Вебсайт | invisible-island.net/ncurses/ |
ncurses у Вікісховищі |
Історія
Літера N в назві ncurses походить від англійського слова new (новий). Це тому що бібліотека ncurses є безкоштовною бібліотекою, яка є послідовником (копією) бібліотеки System V Release 4.0 (SVr4) curses, яка в свою чергу була вдосконаленою бібліотекою на базі класичної 4.4 BSD curses, яка припинила своє існування.[2] Стандарт XSI Curses використовувався X/Open безпосередньо і розроблювався для System V.
Використання бібліотеки ncurses
Для того, щоб зібрати свою C/C++ програму з використанням бібліотеки ncurses/curses вам необхідно підключити файл заголовку <curses.h>. Для ncurses, ви можете користуватися або <curses.h> або <ncurses.h>. На деяких системах, можна зібрати лише з підключенням заголовку <ncurses.h>.
#include <curses.h>
Для лінкування програми необхідно задати опцію компілятора -lcurses або -lncurses, у вигляді
gcc -lncurses prog.c
Ініціалізація
Перш ніж використовувати будь-які інші процедури, необхідно здійснити виклик процедури initscr().
initscr();
Якщо ваша програма буде працювати на декількох терміналах, замість неї слід викликати newterm.
Перед тим як відбудеться завершення програми потрібно визвати процедуру endwin() для відновлення параметрів терміналу.
Приклад мінімальної програми
В програмі використовується версія бібліотеки Ncurses, яка має підтримку юнікоду. Для роботи з нею треба встановити флаг компілятора -lncursesw
#include <ncursesw/curses.h>
#include <locale.h>
#define COLOR_BLUE_YELLOW 1
int main(int argc, char *argv[])
{
setlocale(LC_ALL, ""); // Включення підтримки юнікод
// Ініціалізація ncurses (зчитування конфігурації термінала)
WINDOW *stdscr = initscr();
// Ініціалізація кольорового режиму і створення пари кольорів для фону і тексту
start_color();
init_pair(COLOR_BLUE_YELLOW, COLOR_YELLOW, COLOR_BLUE);
// Початок відображення в заданому кольоровому режимі
attron(COLOR_PAIR(COLOR_BLUE_YELLOW));
//COLOR_YELLOW фактично є коричневим. Для того щоб отримати жовтий, використовують COLOR_YELLOW
//в поєднанні з атрибутом A_BOLD.
attron(A_BOLD);
printw("Текст має вивестись жовтим кольором на синьому фоні!\n");
attroff(A_BOLD);
// Вивести текст без налаштування кольору
attroff(COLOR_PAIR(1));
printw("Натисніть будь-яку клавішу для виходу\n");
// Оновлення екрану
refresh();
// Очікування натиснення клавіші перед завершенням програми
getch();
// Відновлення початкового налаштування терміналу
endwin();
}
Посилання
- Офіційна домашня сторінка
- Ncurses Programming Guide від X. Li
- NCURSES — Frequently Asked Questions (FAQ) від Thomas Dickey
Примітки
- NCURSES — Licensing. Процитовано 9 липня 2013.
- Eric S. Raymond (September 1995). ncurses: Portable Screen-Handling for Linux. Linux Journal.