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 .

★★★★★

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

Поддержку Wayland добавили?

dogbert ★★★★★
()

Требую графический терминал в ядро.

Хочу смотреть в mc картинки в труЪ ncurses-окошке.

UPD: Упс, а mc от ncurses не зависит. Ну всё равно: хочу картинки в tty и всё тут.

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

Это другое. Нет стандартного способа в терминале картинку показать.

Вроде у Enlightenment был свой какой-то эмулятор терминала, который умел, но это же всё не стандартизировано, какое-то своё API.

Я говорю о картинке, которую сдампили в терминал c неким escape-префиксом, а он уже понял, что от него хотят.
Как сейчас с цветами текста, например.

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

У фреймбуфера свой API, который позволяет выводить картинку в указанной области. Именно через него и работают SDL, DirectFB и другие библиотеки.

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

Какое отношение имеет фреймбуфер к терминалу? Ну кроме того, что его там можно нарисовать?
Ещё его можно нарисовать в веб-браузере, и там тоже можно картинки постить.

Терминал от этого как не умел в графику, так и не умеет.

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

Это еще только обкатывается. Классическое решение называется Tektronix.

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

У меня в Wayland работает Cursive(библиотека для rust для написания приложений на ncurses)

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

Упс, а mc от ncurses не зависит

Как собирать. Он может собираться с s-lang, а может с ncurses.

redgremlin ★★★★★
()

После qml описание интерфейса на языке программирования выглядит печально.

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

Можно собрать с ncurses. Работает. Интересно было бы узнать какие приемущества у S-lang, почему он в mc по умолчанию.

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

Фреймбуфер это область памяти, где хранится изображения на дисплее. Под терминалом же тут подразумевается tty унаследованный от телетайпов. Стандартизированный способ передачи информации для последующего его вывода. Для текста такое есть, а для растровых и векторных изображений tty не подходит. Только для псевдографики. Все имеющиеся для вывода такой графики через tty расширения либо на костылях сделаны, либо очень ограничены.

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

Никто не запрещает реализовать, например, аппаратный векторный терминал в формфакторе PCI-E видеокарты. С HDMI видеовыходом и USB разъёмом для клавиатуры. Потом останется написать и добавить драйвер в ядро.

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

От каких слов? Был такой диалог:

- Хочу графику в tty1.
- Она там есть.
- Нет, хочу не через отдельный API, а именно на уровне терминала.
- Ну, так никто не запрещает сделать свой аппаратный терминал с нужным функционалом.

А графика во фреймбуферовской ядерной консоли таки есть, хоть и через отдельный API.

Если бы сразу было сформулировано как «Хочу графику в tty1, но не через фреймбуферовское API, а управляющими кодами на уровне самого терминала», то я бы сразу перешёл к «Ну, так никто не запрещает сделать свой аппаратный терминал с нужным функционалом.».

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

От каких слов?

От таких, что ANSI хватит всем.

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

- Нет, хочу не через отдельный API, а именно на уровне терминала.

Уже есть X11. OpenGL, DirectX, Vulkan и т.д. (всё, против чего ты высказался) это всего лишь API для использования аппаратных возможностей видеокарты. Как графика будет выводиться на терминал - уже дело другое.

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

Если бы сразу было сформулировано как «Хочу графику в tty1, но не через фреймбуферовское API

Фреймбуфер к терминалу вообще никакого отношения не имеет. Это область памяти. А доступ к нему через API в данном случае ничем не отличается от ненавидимого тобой OpenGL (по факту через фреймбуфер на дисплее и отрисовывается результат).

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

Ядерная консоль умеет выводиться графикой поверх фреймбуфера. И здесь текст поверх графики, и графика поверх текста. В любой области экрана можно вывести картинку поверх текста. В т.ч. и поверх окна ncurses. А это и было изначальное ТЗ (см. выше).

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

Всего этого нет в tty1. Если речь именно о терминалах без графических сред, то здесь варианта два: либо юзать фреймбуферовское API, либо паять свой аппаратный терминал.

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

А при чём тут тогда «OpenGL не нужен, DirectX не нужен, Vulkan не нужен. ANSI-последовательностей хватит всем.» ? Особенно в контексте ncurses, который создан вообще для псевдографики.

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

Всего этого нет в tty1.

А при чём тогда фреймбуфер, если схема телетайпа не регламентирует даже графику?

Если речь именно о терминалах без графических сред, то здесь варианта два: либо юзать фреймбуферовское API, либо паять свой аппаратный терминал.

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

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

При том же, при чём и «640 Кб хватит всем». Вместо «640 Кб» в эту шутку можно подставлять что угодно.

Вся эта цитата является противопостовлением той шутке про Wayland, и читается как: «Не всем и не всегда нужен софт с GUI, да ещё и через мощное аппаратное ускорение».

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

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

Как это не может? При включении фреймбуфера все tty* становятся графическими терминалами. Текст выводится графикой, и можно рисовать графику поверх текста.

Если речь идёт о терминалах без графических сред, то берётся X11 и получается графическая среда

Это уже не терминал без графической среды.

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

Как это не может? При включении фреймбуфера все tty* становятся графическими терминалами.

Нет. Как минимум потому, что tty не имеет в себе графических возможностей в принципе - это просто удалённая передача последовательности нажатий клавиш на печатной машинке.

Текст выводится графикой, и можно рисовать графику поверх текста.

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

Это уже не терминал без графической среды.

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

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

Ему надо просто стать разработчиком вяленда. Эти мудаки споткнулись ровно на том же, на чём saahriktu тут падает: абсолютное непонимание того, как работает ввод-вывод, и как следствие про ненужнизмы возгласы.

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

Turbo Vision - более поздняя и более высокоуровневая реализация под MS DOS.

ncurses - это новая реализация классической библиотеки curses. Curses изначально была заточена под мир Unix'ов, и поставлялась в составе BSD UNIX. Curses изначально заточена на оптимизацию действий с терминалом, и этот код изначально был позаимствован автором - Ken'ом Arnold'ом - из текстового редактора vi. Ну, а дальше библиотека уже пошла развиваться самостоятельно.

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

Ну и? Ты показал картинку, которая наложена поверх текста графическими средствами. К tty это никакого отношения не имеет.

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

Вот из за таких заявлений и приходится вводить новые термины наподобие «ядерная консоль».

Да, исторически tty - это телетайп. Но, линуксовые tty* (именно линуксовые, а не сферические в вакууме) - это ядерные консоли, которые умеют работать через фреймбуфер. И вот тут уже получаются полноценные графические терминалы, которые позволяют рисовать графику поверх текста.

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

Я спрашивал чем лучше, а не об истории.

И да, TV старше:

Turbo Vision

Initial release: 1990
License: Public domain software

ncurses

Initial release: 1993
License: X11 License

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

Библиотека curses уходит корнями в 80-е. Та же игра rogue была написана в начале 80-х для демонстрации возможностей curses. А ncurses, как я написал выше, - это новая реализация библиотеки curses.

А лучше она, как я уже написал, тем, что она более низкоуровневая, и изначально заточено под мир Unix'ов.

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

Вот из за таких заявлений и приходится вводить новые термины наподобие «ядерная консоль».

Если что, она может и в текстовом режиме видеокарты работать. И даже через UART.

Да, исторически tty - это телетайп.

Не только исторически, но и практически.

Но, линуксовые tty* (именно линуксовые, а не сферические в вакууме) - это ядерные консоли, которые умеют работать через фреймбуфер.

Если точнее, то выводиться через фреймбуфер умеет.

И вот тут уже получаются полноценные графические терминалы

Нет.

которые позволяют рисовать графику поверх текста.

Это вообще бред. Терминал от этого графику поверх текста рисовать не научился. Просто ядро умеет выводить текст во фреймбуфер - не более того. Графика через tty от этого рисоваться не стала.

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

Это сторонняя реализация, даже не оригинальный TurboVision. Кстати, TurboVision нельзя использовать с языками, которые не поддерживают ООП.

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

Интересно было бы узнать какие приемущества у S-lang, почему он в mc по умолчанию.

да нет там никаких преимуществ особых
видимо просто исторически так сложилось

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

А лучше она, как я уже написал, тем, что она более низкоуровневая, и изначально заточено под мир Unix'ов.

Я не понял чем низкоуровневость лучше и в чем она заключается. В TV можно делать свои элементы управления. TV работает через ssh.

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

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

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

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

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

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

В полноценном контроле над каждым знакоместом. (n)curses - это не набор TUI виджетов. Для этого есть CDK. А вот CDK и порты Turbo Vision'а на юниксы для отрисовки себя используют (n)curses.

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

Это сторонняя реализация, даже не оригинальный TurboVision.

Это порт оригинального кода 1997 года от Borland.

Кстати, TurboVision нельзя использовать с языками, которые не поддерживают ООП.

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

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

как ты себе представляешь картинки в tty? Ведь tty это же виртуальный serial порт. Это нужен какой-то хитрый протокол передачи картинки через serial порт вместе с ansi данными

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

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

Поддержка терминалов через serial порт находится в drivers/tty/serial/, а реализация vt в drivers/tty/vt/.

Это в ранних реализациях ядра не было отдельной директории drivers/tty/. Тогда была свалка в drivers/char/ из vt.c, serial.c, tty_io.c и keyboard.c.

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