ncurses (new curses) — бібліотека, яка реалізує API, що дозволяє програмісту створювати текстовий інтерфейс користувача для керуванням вводом-виводом на термінал в режимі консольного застосування. Це набір інструментів для розробки інтерфейсів, подібних до графічних програмних застосунків в режимі термінала. Вона оптимізована для роботи при зміні розмірів екрану, для зменшення затримки, яка виникає при використанні віддалених командних оболонок Unix.

ncurses
Меню програми menuconfig, написаної з використанням ncurses
Тип Widget toolkit
Розробник GNU Project
Перший випуск 1993; 31 років тому (1993)
Стабільний випуск 6.3 (8 листопада, 2021; 2 роки тому (2021-11-08))
Операційна система POSIX
Мова програмування C
Ліцензія X11 License[1]
Репозиторій invisible-mirror.net/archives/ncurses/
Вебсайт invisible-island.net/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();
}

Посилання ред.

Примітки ред.

  1. NCURSES — Licensing. Архів оригіналу за 2 серпня 2013. Процитовано 9 липня 2013.
  2. Eric S. Raymond (September 1995). ncurses: Portable Screen-Handling for Linux. Linux Journal. Архів оригіналу за 26 лютого 2012. Процитовано 29 січня 2015.