Введение

Тип интерфейса, основанный на выводе или управлении текстовым дисплеем.

В вычислительной технике текстовые пользовательские интерфейсы (TUI) (также известные как терминальные пользовательские интерфейсы, что отражает зависимость от свойств компьютерных терминалов, а не только от текста) — это ретроним, описывающий тип пользовательского интерфейса (UI), который был распространен как ранняя форма взаимодействия человека и компьютера до появления растровых дисплеев и современных графических пользовательских интерфейсов (GUI). Как и современные GUI, они могут использовать всю область экрана и поддерживать ввод с помощью мыши и других устройств. Они также могут использовать цвет и часто структурируют отображение с помощью символов для рисования рамок, таких как ┌ и ╣. В настоящее время они обычно используются в эмуляторах терминала.

На терминалах, совместимых с ANSI

Стандарт ANSI X3.64 Института национальных стандартов США (ANSI) определяет стандартный набор управляющих последовательностей, которые можно использовать для управления терминалами с целью создания текстовых пользовательских интерфейсов (TUI, см. ANSI-код эскапирования). Управляющие последовательности могут поддерживаться во всех трех случаях, упомянутых в предыдущем разделе, обеспечивая произвольное перемещение курсора и изменение цвета. Однако не все терминалы соответствуют этому стандарту, и существует множество несовместимых, но функционально эквивалентных последовательностей.

Под DOS и Microsoft Windows

На персональных компьютерах IBM и совместимых с ними системах, Basic Input Output System (BIOS) и системные вызовы DOS предоставляли возможность вывода текста на экран, а драйвер ANSI.SYS мог обрабатывать стандартные ANSI-управляющие последовательности. Однако программисты вскоре обнаружили, что запись данных непосредственно в буфер экрана была значительно быстрее, проще в программировании и менее подвержена ошибкам; подробности см. в разделе «VGA-совместимый текстовый режим». Это изменение в методах программирования привело к появлению множества DOS TUI-программ. Консольная среда Windows известна своей эмуляцией некоторых функций текстового режима EGA/VGA, в частности, произвольным доступом к текстовому буферу, даже если приложение работает в окне. С другой стороны, программы, работающие в Windows (как собственные, так и DOS-приложения), имеют гораздо меньше контроля над дисплеем и клавиатурой, чем программы Linux и DOS, из-за вышеупомянутого уровня консоли Windows. Чаще всего в этих программах использовался синий фон для главного экрана с белыми или жёлтыми символами, хотя обычно была предусмотрена и пользовательская настройка цветов. Они часто использовали символы для рисования рамок из кодовой страницы 437 IBM. Позже интерфейс подвергся сильному влиянию графических пользовательских интерфейсов (GUI), с добавлением выпадающих меню, перекрывающихся окон, диалоговых окон и графических элементов GUI, управляемых мнемоническими правилами или сочетаниями клавиш. Вскоре была добавлена поддержка мыши – либо в текстовом разрешении в виде простой цветной рамки, либо в графическом разрешении благодаря возможности адаптеров Enhanced Graphics Adapter (EGA) и Video Graphics Array (VGA) переопределять формы текстовых символов программным путём, предоставляя дополнительные функции. Среди известных программ такого рода были Microsoft Word, DOS Shell, WordPerfect, Norton Commander, Borland Turbo Pascal и Turbo C на основе Turbo Vision (в последней использовалась библиотека conio), Lotus 1 2 3 и многие другие. Некоторые из этих интерфейсов сохранились даже в период Microsoft Windows 3.1x в начале 1990-х годов. Например, компилятор Microsoft C 6.0, использовавшийся для написания настоящих GUI-программ под 16-битную Windows, по-прежнему имеет свой собственный TUI. С момента своего появления Microsoft Windows включает в себя консоль для отображения программного обеспечения DOS. В более поздних версиях была добавлена консоль Windows как нативный интерфейс для интерфейса командной строки и программ TUI. Консоль обычно открывается в оконном режиме, но её можно переключить в полноэкранный текстовый режим и наоборот, одновременно нажав клавиши Alt и Enter. Полноэкранный режим недоступен в Windows Vista и более поздних версиях, но может быть реализован с помощью некоторых обходных путей. Windows Terminal — это многовкладочный эмулятор терминала, разработанный Microsoft для Windows 10 и более поздних версий в качестве замены Windows Console. Подсистема Windows для Linux, добавленная Microsoft в Windows в 2019 году, поддерживает запуск текстовых приложений Linux в Windows, в консоли Windows, Windows Terminal и других терминалах на основе Windows.

В Unix-подобных системах

В операционных системах, подобных Unix, TUI часто создаются с использованием библиотеки управления терминалом curses, или ncurses (в основном совместимой библиотеки), или альтернативной библиотеки S Lang. Появление библиотеки curses в составе Berkeley Unix создало переносимый и стабильный API для разработки TUI. Возможность взаимодействия с различными типами текстовых терминалов через единые интерфейсы привела к более широкому распространению "визуальных" Unix-программ, занимавших весь экран терминала вместо простого интерфейса командной строки. Это проявляется в текстовых редакторах, таких как vi, почтовых клиентах, таких как pine или mutt, инструментах системного администрирования, таких как SMIT, SAM, Sysinstall FreeBSD и веб-браузерах, таких как lynx. Некоторые приложения, например w3m, и более старые версии pine и vi используют менее функциональную библиотеку termcap, реализуя многие функции, обычно предоставляемые curses, непосредственно в приложении. Пользовательские TUI-приложения на основе виджетов можно легко разрабатывать с помощью программы dialog (на основе ncurses) или программы Whiptail (на основе S Lang). Кроме того, рост популярности Linux привёл на платформу Unix многих бывших пользователей DOS, что оказало влияние DOS на многие TUI. Например, программа minicom смоделирована по образцу популярной DOS-программы Telix. Некоторые другие TUI-программы, такие как окружение Twin, были портированы. Большинство Unix-подобных операционных систем (Linux, FreeBSD и т. д.) поддерживают виртуальные консоли, обычно доступные через комбинацию клавиш Ctrl+Alt+F. Например, в Linux можно получить доступ до 64 консолей (12 через функциональные клавиши), каждая из которых отображается в полноэкранном текстовом режиме. Программа свободного ПО GNU Screen позволяет управлять несколькими сессиями внутри одного TUI, и, таким образом, может рассматриваться как оконный менеджер для текстового режима и интерфейсов командной строки. Tmux также обладает подобной функциональностью. Проприетарный текстовый редактор macOS BBEdit включает в себя функцию рабочей области оболочки, которая работает как полноэкранное окно терминала. Бесплатный текстовый редактор Emacs может запускать оболочку внутри одного из своих буферов, обеспечивая аналогичную функциональность. В Emacs существует несколько реализаций оболочки, но только ansi term подходит для запуска TUI-программ. Другие распространенные режимы оболочки, shell и eshell, лишь эмулируют командные строки, и TUI-программы будут выдавать сообщение об ошибке "Терминал не полностью функционален" или отображать искаженный интерфейс. Бесплатные текстовые редакторы Vim и Neovim имеют окна терминала (эмулирующие xterm). Эта функция предназначена для запуска задач, параллельной сборки или тестов, но также может использоваться (с разделением окон и вкладками) как легковесный терминальный мультиплексор.

OpenVMS

VAX/VMS (позже известный как OpenVMS) располагал схожей системой с curses, называемой Screen Management Facility или SMG. К ней можно было обратиться из командной строки или вызвать из программ с использованием библиотеки SMG$.

Оберон

Другой тип TUI — основной интерфейс операционной системы Oberon, впервые выпущенной в 1988 году и до сих пор поддерживаемой. В отличие от большинства других текстовых пользовательских интерфейсов, Oberon не использует консоль или терминал в текстовом режиме, а требует большого растрового дисплея, на котором текст является основной целью для щелчков мышью. Команды в формате "Модуль.Процедура Параметры" ~ могут быть активированы средним щелчком мыши, как гиперссылки. Текст, отображаемый в любом месте экрана, можно редактировать, и при соответствующем форматировании синтаксиса команды его можно активировать средним щелчком мыши для выполнения. Любой текстовый файл, содержащий правильно отформатированные команды, может использоваться как так называемый "инструментальный текст", служащий пользовательским конфигурируемым меню. Даже вывод предыдущей команды можно отредактировать и использовать как новую команду. Этот подход радикально отличается как от традиционных диалоговых меню консоли, так и от интерфейсов командной строки. Поскольку он не использует графические виджеты, а только обычный текст, но предлагает функциональность, сопоставимую с графическим интерфейсом пользователя с менеджером окон, он называется текстовым пользовательским интерфейсом или TUI. Краткое введение можно найти во втором абзаце на странице четыре первого опубликованного отчета о системе Oberon. Пользовательский интерфейс Oberon оказал влияние на дизайн текстового редактора Acme и почтового клиента для операционной системы Plan 9 от Bell Labs.

В встроенных системах

Современные встраиваемые системы способны отображать текстовый пользовательский интерфейс (TUI) на мониторе, подобно персональным компьютерам. Эта функциональность обычно реализуется с помощью специализированных интегральных схем, модулей или ПЛИС (FPGA). Видеосхемы или модули обычно управляются с использованием набора команд, совместимого с VT100, через UART, а разработки на ПЛИС (FPGA) обычно обеспечивают прямой доступ к видеопамяти.

Другие применения

Полноэкранный редактор 8-битных компьютеров Commodore 64 был передовым для своего времени в своем сегменте рынка. Пользователи могли перемещать курсор по всей области экрана, вводя и редактируя строки программ BASIC, а также команды непосредственного режима. Все 8-битные компьютеры Commodore использовали набор символов PETSCII, который включал в себя символы, пригодные для создания текстового пользовательского интерфейса (TUI). Программирующая среда Macintosh Programmer's Workshop от Apple включала Commando – оболочку TUI, которая послужила вдохновением для рабочего листа shell в BBEdit. Более поздние модели Apple II включали MouseText – набор графических символов, используемых для создания TUI. Компьютер Corvus Concept 1982 года использовал текстовый интерфейс, управляемый функциональными клавишами, на полностраничном поворотном дисплее.