В настоящее время я разрабатываю консольное приложение с текстовым пользовательским интерфейсом на языке python, которое должно стать альтернативой UNIX с открытым исходным кодом для серии программного обеспечения промышленного стандарта и минимизировать, на мой взгляд,требования к аппаратному / программному обеспечению для программного обеспечения такого масштаба.
Однако я не предпочитаю использовать curses / ncurses для того, чтобы понять принципы работы таких библиотек и реализовать их для своих собственных целей. Для этого я какое-то время - скажем, - экспериментировал с Escape-последовательностями ANSI.
В какой-то момент я почувствовал необходимость разделить (или описать в терминологии UNIX,мультиплекс) мой терминал в сессиях, окнах или панелях, как в GNU Screen или tmux.Однако по причинам, которые я упомянул выше, вместо того, чтобы использовать их в своем проекте, я попытался найти их источник, чтобы вдохновиться.Но правда в том, что им обоим требуются обширные знания C, по крайней мере для меня на данном этапе, и поиск по исходным кодам является исчерпывающим.
Я недавно обнаружил, что документация по GNU Screen относится к ECMA48 и ANSI X3.64.
Экран Руководство пользователя
Каждый виртуальный терминал обеспечивает функции терминала DEC VT100 и, кроме того, несколько функций управленияиз стандартов ISO 6429 (ECMA 48, ANSI X3.64) и ISO 2022 (например, вставить / удалить строку и поддержку нескольких наборов символов).Существует буфер истории прокрутки для каждого виртуального терминала и механизм копирования и вставки, который позволяет пользователю перемещать текстовые области между окнами.
Я также проверил ECMA 48 и ANSI X3.64, для чегоЯ хочу достичь, не могу найти подсказку.
Мои вопросы на самом деле возникают в этот момент.
Как я могу узнать, какие кодированные наборы символов в этих стандартахреализованы?Например, в §8.3.123 ECMA 48 говорится о РЕЖИМЕ ВЫБОРА КОМПОНЕНТА УСТРОЙСТВА, в котором я не нашел никаких признаков его реализации или использования.
Каков принцип работы Screen или tmuxв создании окна и панели?Какой путь они используют для создания окон или панелей.
Время, которое я потратил на второй вопрос, довольно много и никуда меня не привело.Я подумал, что они могут охватывать весь экран, рисовать границы, разделять линии или столбцы кодированными символами каждый раз, когда требуется обновление (изменение размера, создание новой панели и т. Д.).Я считал, что этот вариант может быть основным, но разочаровывающим решением.И я не мог быть уверен, что screen или tmux работают таким образом.Но я почти уверен, что мне не хватает критической точки здесь.
Любая помощь, мнение или рекомендации приветствуются.