LINUX.ORG.RU
ФорумTalks

Состоялся очередной релиз самого лучшего тулкита всех времён и народов - ncurses 6.1

 ,


1

2

Сабж. Предыдущий релиз 6.0 был в августе 2015-го года.

Из значимых изменений:

  • _nc_tracebits(), _tracedump() и _tracemouse() теперь в curses.priv.h, поскольку они не являются частью рекомендованного ABI6;
  • Новая функция unfocus_current_field();
  • Для setcchar() и getcchar() отрицательная цветовая пара теперь является ошибкой;
  • Дропнуты _nc_check_termtype и _nc_resolve_uses;
  • Новая функция reset_color_pairs();
  • Поддержка нового бинарного формата для terminfo, который поддерживает знаковые 32-х битные целые числа; 8-ми битные программы тоже могут читать этот формат, но будут ограничивать значения до 32767;

Скачать: ftp://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz .

★★★★★

Ответ на: комментарий от cvs-255

Так vt (который при этом также tty) умеет рисоваться поверх фреймбуфера, а во фреймбуфере поверх vt можно рисовать картинки. При этом рисующий софт будет запущен из vt и может иметь интерфейс на ncurses.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 2)
Ответ на: комментарий от saahriktu

виртуальный терминал умеет, а сам по себе tty* нет.

В комменте, на который я отвечал, было:

Ну всё равно: хочу картинки в tty и всё тут.

Для справки, ttyS0 это тоже tty

cvs-255 ★★★★★
()
Последнее исправление: cvs-255 (всего исправлений: 2)
Ответ на: комментарий от cvs-255

Для справки, ttyS0 это тоже tty

Ну так и зачем некорректно обобщать? ttyS0 - не vt, а tty1 - vt. И то и другое - tty, но возможности разные.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

В вопросе был именно tty, а не vt.

Ответ, как мне кажется, совершенно однозначен: интерфейс tty не предоставляет такой возможности.

И автору вопроса надо выводить, соответственно, картинки не через tty а через другой интерфейс, например, vt

cvs-255 ★★★★★
()
Последнее исправление: cvs-255 (всего исправлений: 2)
Ответ на: комментарий от cvs-255

Повторяю, vt - это тоже tty. И когда люди говорят про tty, то чаще всего они говрят про tty1, tty2, tty3,... которые vt.

См. исходники ядра (drivers/tty/vt/).

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 3)
Ответ на: комментарий от saahriktu

vt является tty. Но это больше, чем просто tty. vt предоставляет как интерфейс tty, так и дополнительные интерфейсы.

Картинку можно вывести, используя эти самые дополнительные интерфейсы.

cvs-255 ★★★★★
()
Ответ на: комментарий от cvs-255

Тем не менее, как я уже говорил выше, для обычного юзера tty (или «ядерная консоль») - это всё, что ему доступно, когда он сидит в ttyN, который vt.

Это уже технические детали что через интерфейс tty, а что через дополнительные интерфейсы. Среда-то у юзера ttyN, который vt.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

Некорректное сравнение. Ни системник, ни процессор не являются рабочей средой юзера. А ttyN, с которыми в ядре свазана подсистема vt, являются.

Та же команда last показывает хронологически залогинившихся юзеров. И, при этом, выводит конкретные ttyN куда они вошли. При этом юзер оказывается в vt.

> last | head -n 3
saahrikt tty3                          Mon Jan 29 16:04    gone - no logout
saahrikt tty2                          Mon Jan 29 16:04    gone - no logout
saahrikt tty1                          Mon Jan 29 16:04    gone - no logout
>

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

Ну так и вот. Юзер сидит, например, в tty1, который vt (и никогда не будет терминалом через COM порт, который всегда ttySN), со включенным фреймбуфером, и смотрит картинки во фреймбуфере. Но, среда-то для него tty1, которая vt!

Поэтому я и говорю: не надо некорректно обобщать.

Никто не говорит, что конкретно через интерфейс tty, а что - нет. Это уже детали. Главное, что юзер сидит в tty1 и у него есть картинки. То, что они должны быть именно через интерфейс tty, никто в начале темы не говорил.

Другой вопрос, что можно сделать свой аппаратный векторно-растровый терминал, который будет принимать картинки именно через интерфейс tty.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

И что, теперь vt нельзя называть tty при том, что в нём реализовано API tty, да и представляется он как tty? Расширенные возможности перечёркивают базовые настолько, что надо вводить другое название?

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от cvs-255
.-----------------------.
|          Ядро         |
| .----. .------------. |
| | VT | | Фреймбуфер | |
| `----' `------------' |
|    |          ^       |
| .------.      |       |
| | tty1 |      |       |
| `------'      |       |
`----|----------|-------'
     |          |
.-----------.   |
| Программа |---'
`-----------'

При этом юзер сидит в виртуальном терминале tty1.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

Но, потому у vt и есть интерфейс tty1, что vt - это tty. Да, у vt больше функционала чем только базовый tty, но от этого vt не перестаёт быть tty.

Это как если машину переоборудовать так, чтобы она могла не только ездить по дорогам, но и летать как самолёт. Кто-то скажет: «Ну, это теперь не машина. Машины через функционал машины летать не могут.». А никто и не говорил, что она должна летать через функционал машины. Через функционал машины она ездит, а летает через дополнительный функционал. Но, это машина.

Так и здесь.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

Существовало множество графических терминалов, как векторных, так и растровых. По сути — классические tty с последовательным интерефейсом и ESC-последовательностями. Одни из самых интересных, наверное — Tektronix 4010 с запоминающей трубкой (память всё ещё очень дорогая была).

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

Да, сделать графический терминал с tty интерфейсом можно, но он потребует некий нетипичный софт итп.

cvs-255 ★★★★★
()
Ответ на: комментарий от saahriktu

Но не любой tty умеет в фичи vt.

А когда человек спрашивает, как ему вывести картинку через tty, это значит, что он хочет использовать именно апи tty.

Если тебя спрашивают, как передать аналоговый сигнал через ethernet, ты же не будешь приводить пример некоторого расширенного ethernet, где в дополнение к цифровым линиям идут аналоговые? Хотя, да, это будет реализацией интерфейса ethernet, потому что полностью поддерживает все требуемое по стандарту ethernet. Ну и некоторые доп фичи

cvs-255 ★★★★★
()
Последнее исправление: cvs-255 (всего исправлений: 2)
Ответ на: комментарий от cvs-255

Да, сделать графический терминал с tty интерфейсом можно

Почему «можно»? Они долгое время существовали и были основным устройством ввода/вывода. Сразу после телетайпов. Причем первыми графическими терминалами были, и долго оставались единственными — векторные. Некоторые даже текст отображали вектором, как IBM 2250, например.

но он потребует некий нетипичный софт итп.

Издеваешься? Самый типичный софт 60–80-х годов на них и был рассчитан. Даже ставшие стандартом де-факто DEC-овские ESC-последовательности терминалов серии VT содержали графические команды начиная в VT55 ЕМНИП. А VT240 и дальше поддерживали ReGIS — достаточно высокоуровневый векторный язык, разработанный DEC. И одновременное отображение графики и текста. Переключение осуществлялось последовательностью ESCP0p, как сейчас помню.

Кстати, если кто не в курсе, xterm поддерживает как эмуляцию Tektronix 4014, так VT340 с поддержкой ReGID и битмапов Sixel.

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

вот только софта, умеющего сейчас рисовать в esc последовательностях, как то нету, насколько я знаю

cvs-255 ★★★★★
()
Ответ на: комментарий от baka-kun

Для тех реализаций, что не умеют в графику (konsole, привет) собрал ещё такую забавную игрушку как tiv:

https://i.imgur.com/In8aOKj.png

Исходники: https://github.com/stefanhaustein/TerminalImageViewer
Для ленивых, пакеты под Stretch слепленные с помощью checkinstall:

http://omicroneridani.com/public/tiv_20180129-1_amd64.deb
http://omicroneridani.com/public/tiv_20180129-1_i386.deb

aidaho ★★★★★
()
Ответ на: комментарий от saahriktu

Это всё технические придирки.

Нет.

Человек под tty* или ядерными консолями подразумевает то, что видит перед собой, когда сидит в tty* или ядерных консолях.

Ты прямо написал про ANSI.

А Ваши слова можно прочитать и так, что, якобы, в ядерной консоли без иксов и вейланда юзеру доступен только один текст, и никакой графики. «Потому, что tty, а tty - это текст».

Ты приписываешь мне то, что я не говорил. И ты не понимаешь, что фреймбуфер это не терминал, а область памяти.

Но, извините, это эмулятор терминала, который может рисоваться через графику, и тогда из него можно запускать тот софт, который через ядро таки будет рисовать на экране картинки.

И что с того? Эмулятор терминала это не tty, а программа, которая способна в данном случае эмулировать tty.

И именно про эту суть я уже который пост и говорю.

Это утверждение равносильно тезису о том, что тормозят иксы, а не тулкиты и софт.

Quasar ★★★★★
()
Ответ на: комментарий от NULL

Староверы и хаскеллисты должны страдать.

ООП-быдло должно страдать. Оверхед не везде нужен, а ООП - не универсальный принцип.

Quasar ★★★★★
()
Ответ на: комментарий от cvs-255

Это нужен какой-то хитрый протокол передачи картинки через serial порт вместе с ansi данными

На самом деле об этом протоколе выше упомянули, но он не является частью tty и по сути это надстройка, которая использует tty как средство передачи данных.

Quasar ★★★★★
()

в MC перестала работать мышка

44M109;44M109;44M109;44M109;44M5;56M75;56M75;56M75;56M75;56M75;56M75;56M75;56M75;56M75;56M74;56M74;56M74;56M74;56M74;56M74;56M74;56M74;56M74;56M74;56M73;56M73;56M73;56M73;56M73;56M73;56M73;56M73;56M73;56M73;56M73;56M72;56M72;56M72;56M72;56M72;56M72;56M72;56M72;56M72;56M71;56M71;56M71;56M71;56M71;56M71;56M71;56M71;56M71;56M70;56M70;56M70;56M70;56M70;56M70;56M70;56M70;56M70;56M69;56M69;56M69;56M69;56M69;56M69;56M69;56M69;56M69;56M68;56M68;56M68;56M68;56M68;56M68;56M68;56M68;56M67;56M67;56M67;56M67;56M67;56M67;56M67;56M67;56M67;57M66;57M66;57M6;57m69;55M69;55M69;55M69;55M69;55M69;55M

Deleted
()
Ответ на: комментарий от saahriktu

Ещё один... vt (virtual terminal) - это тоже tty.

VT это VT. tty это tty. То, что VT у себя локально рисует - это уже другой вопрос и к tty никакого отношения не имеет.

Quasar ★★★★★
()
Ответ на: комментарий от saahriktu

Ну так и зачем некорректно обобщать? ttyS0 - не vt, а tty1 - vt. И то и другое - tty, но возможности разные.

Возможности как раз идентичные. VT - это эмуляция кучи дисплеев со средством ввода. tty - это уже сам интерфейс передачи данных.

Quasar ★★★★★
()
Ответ на: комментарий от saahriktu

Повторяю, vt - это тоже tty.

Повторяю: VT это средство отображения вывода и направления ввода с/на интерфейс tty. VT это НЕ tty.

И когда люди говорят про tty, то чаще всего они говрят про tty1, tty2, tty3,... которые vt.

А некоторые говорят, что андроид это линукс. Кое-кто даже ляпнул, что Windows - это свободное ПО.

Quasar ★★★★★
()
Ответ на: комментарий от saahriktu

Тем не менее, как я уже говорил выше, для обычного юзера tty (или «ядерная консоль») - это всё, что ему доступно, когда он сидит в ttyN, который vt.

Напоминаю, что ядерная консоль бывает не только с поддержкой фреймбуфера, но и с поддержкой текстового режима, где графики нет и быть не может. А ещё к tty можно просто по UART подключиться к ядерной консоли. Там уж точно никакой графики нет, не было и не будет.

Quasar ★★★★★
()
Ответ на: комментарий от saahriktu

Юзер сидит, например, в tty1, который vt (и никогда не будет терминалом через COM порт, который всегда ttySN), со включенным фреймбуфером

А ещё юзер может сидеть в tty1 без фреймбуфера, и никакой графики не будет. И это будет тоже tty.

Другой вопрос, что можно сделать свой аппаратный векторно-растровый терминал, который будет принимать картинки именно через интерфейс tty.

Конечно можно. Через escape-последовательности и base64. Только это будет уже не tty, а терминал, использующий tty как транспорт. Вместо этого говна сделали X Window System.

Quasar ★★★★★
()
Ответ на: комментарий от saahriktu

И что, теперь vt нельзя называть tty

Да.

при том, что в нём реализовано API tty

В иксах можно запустить эмулятор терминала. Но иксы ведь tty от этого не становятся.

да и представляется он как tty?

Нет. Для него создаётся интерфейс tty. Картинки, которые ты во фреймбуфере выводишь на VT, ты не можешь передать напрямую через tty, как передаётся текст.

Расширенные возможности перечёркивают базовые настолько, что надо вводить другое название?

Вообще-то название этому - virtual terminal. Или ты будешь называть порт терминалом?

Quasar ★★★★★
()
Ответ на: комментарий от saahriktu

Если что, фреймбуфер должен быть выше VT на этой схеме, и стрелка от VT должна идти к фреймбуферу, как сейчас идёт стрелка от программы. VT производит вывод в данном случае в фреймбуфер, программа взаимодействует с пользователем через интерфейс tty, а VT выводит вывод этой программы, но программа также может производить вывод самостоятельно в обход tty, и VT реализован так, чтобы не конфликтовать с выводящей программой.

Quasar ★★★★★
()
Ответ на: комментарий от baka-kun

Существовало множество графических терминалов, как векторных, так и растровых. По сути — классические tty с последовательным интерефейсом и ESC-последовательностями

Другими словами, они использовали tty как канал передачи данных, но не текста в ANSI, что неудивительно.

Quasar ★★★★★
()
Ответ на: комментарий от saahriktu

Да, у vt больше функционала чем только базовый tty, но от этого vt не перестаёт быть tty.

В VT можно выводить окошки приложений для X11. Значит ли это, что VT это X11?

Quasar ★★★★★
()
Ответ на: комментарий от baka-kun

Почему «можно»? Они долгое время существовали и были основным устройством ввода/вывода. Сразу после телетайпов. Причем первыми графическими терминалами были, и долго оставались единственными — векторные. Некоторые даже текст отображали вектором, как IBM 2250, например.

Но ведь это был не фреймбуфер, да?

Quasar ★★★★★
()
Ответ на: комментарий от baka-kun

Ты не понимаешь. saahriktu тут заявляет, что tty умеет выводить графику сам по себе, и что tty это и есть фреймбуфер.

Quasar ★★★★★
()
Ответ на: комментарий от saahriktu

Более того, это также практически работает и в ядерной консоли без иксов.

А теперь попробуй в текстовом режиме это проделать.

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

Давай определимся с терминами.

TTY (TeleTYpe) — это

  1. Телетайп, телепринтер и так далее. Нам интересен только как разновидность терминала.
  2. Терминал как внешнее устройство ввода/вывода на интерфейсе связи.
  3. Эмулятор терминала. ПО (подсистема ОС), прикидывающиеся существующим терминалом на виртуальном или физическом интерфейсе (ptsXY, ptyXY, ttyXY и т.д.)
  4. Вся подсистема pty (POSIX terminal interface) в общем: устройства, адаптеры, протоколы, API, утилиты, окружения среды, сигналы…
  5. Жаргонное: сам интерфейс /dev/ttyXY

VT:

  1. Virtual Terminal — ПО, эмулирующее некий абстрактный терминал, описанный соответствующей записью termcap/terminfo: системная консоль Linux, xterm и так далее.
  2. Video display Terminat — серия терминалов производства DEC.
  3. VTxxx — протокол обмена информацией терминалов DEC

они использовали tty как канал передачи данных, но не текста в ANSI, что неудивительно.

Ошибаешься. Того же самого текста, что и сейчас. Того же самого ANSI с командами управления. Архитектурно совершенно ничего не поменялось: ПО общается с терминалом через интерфейс (логический или физический), узнавая возможности терминала через переменную срезы из termcap/terminfo, настраивая терминал и порт с помощью stty и т.п. Для некоторых терминалов, в том числе виртуальных, существуют расширенные (нестандартные) утилиты.

В VT можно выводить окошки приложений для X11. Значит ли это, что VT это X11?

Система может использовать один монитор как для эмулятора терминала, так и для X-сервера. Между ними можно переключаться.

Но ведь это был не фреймбуфер, да?

Это был именно фреймбуфер. Тогда он содержался в железном терминале в виде магнитной памяти в IBM 2250 или запоминающей трубки в Tektronix 4010, привычного нам полупроводникового ОЗУ в DEC VTxxx… Некоторые более современные системы могли быть связаны с терминалом не только последовательным каналом и имели быстрый доступ к этой памяти, как к фреймбуферу виртуального терминала.

Сейчас фреймбуфер — часть эмулятора терминала, выполняющая ту же роль: хранить и использовать для отображения данные в промежутках между их обновлением системой.

заявляет, что tty умеет выводить графику сам по себе, и что tty это и есть фреймбуфер

Смотря в каком значении использован термин tty.

А теперь попробуй в текстовом режиме это проделать.

А теперь попробуй подключить реальный VT340. А теперь пишмашинку «Консул». Чего сказать-то хотел? Терминалов множество, и все с разными возможностями. Поэтому и изобрели termcap/terminfo. Как это отменяет графику на реальном VT340 или в его эмуляции в xterm?

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

Ошибаешься. Того же самого текста, что и сейчас. Того же самого ANSI с командами управления.

В том и дело, что не фреймбуфер этот интерфейс пробрасывает и не изображения даже, а текст в ANSI. А уж терминал отображает то, что наинтерпретирует командами. А saahriktu показал, как поверх текстового терминала, который эмулируется через графику, он отрисовал отдельной командой изображение, и заявил, что это всё tty.

Смотря в каком значении использован термин tty.

В корректном.

Терминалов множество, и все с разными возможностями.

О чём и речь. Но возражающий на невозможность передачи графики посредством текстовой консоли линукса в силу своей абсолютной безграмотности и нежелании эту грамотность обретать начинает с пеной у рта доказывать, что сам интерфейс текстового терминала, который не способен ни на что кроме как передавать информацию текстом, якобы передаёт растровую графику.

Quasar ★★★★★
()
Последнее исправление: Quasar (всего исправлений: 1)
Ответ на: комментарий от Quasar

saahriktu тут заявляет, что tty умеет выводить графику сам по себе, и что tty это и есть фреймбуфер.

Нет. И я даже приводил схему выше.

Я утверждаю, что tty - это широкая категория, и к ней относятся _все_ аппаратные терминалы и эмуляторы терминалов. Независимо от функционала. А потому, соответственно, vt вполне можно называть tty, тем более, что он и представляется юзеру как ttyN. При этом vt может рисоваться через фреймбуфер. И тогда юзер сидя в vt, который можно (и нужно) называть tty, может рисовать графику _в обход tty_ _непосредственно во фреймбуфер_, который является частью того же ядра, куда входит и vt, который представляется как ttyN.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Я утверждаю, что tty - это широкая категория, и к ней относятся _все_ аппаратные терминалы и эмуляторы терминалов. Независимо от функционала.

Терминалы и эмуляторы - это терминалы и эмуляторы. Как они интерпретируют поступающий на них текст - дело десятое.

А потому, соответственно, vt вполне можно называть tty

Нет. Иначе X Window System - это разновидность tty.

При этом vt может рисоваться через фреймбуфер.

А может и не рисоваться.

И тогда юзер сидя в vt, который можно (и нужно) называть tty

Нет.

может рисовать графику _в обход tty_ _непосредственно во фреймбуфер_

Вот тут-то ты отказываешься от своих слов и приписываешь мои слова себе. У тебя с головой всё в порядке?

_непосредственно во фреймбуфер_, который является частью того же ядра

Серьёзно? Как железо может быть частью софта?

куда входит и vt

Нет. VT не может быть частью фреймбуфера.

который представляется как ttyN.

Который даёт доступ через интерфейсу tty.

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

Нет, схема правильная. Мы говорим про ядро. Для ядра фреймбуфер - это драйвер фреймбуфера и /dev/fbN. От того, что юзер включает

CONFIG_FRAMEBUFFER_CONSOLE=y
у его железа не вырастает внезапно фреймбуфер. Но, внезапно в ядре включается драйвер фреймбуфера. И в этом же ядре у юзера работает vt.

Юзер запускает программу из tty1, а она начинает обращаться к подсистеме фреймбуфера в ядре и начинает рисовать туда картинки.

saahriktu ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.