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 .

★★★★★

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

Нет, схема правильная.

Схема неправильная, так как там не указано, как VT выводит данные на дисплей.

Для ядра фреймбуфер - это драйвер фреймбуфера и /dev/fbN

Для ядра фреймбуфер - это слой абстракции, который предоставляет интерфейс для доступа к непосредственно фреймбуферу, который является областью памяти, где хранится фрейм, выводимый на дисплей в данный момент времени.

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

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

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

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

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

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

У X Window System нет интерфейса командной строки. У vt есть. Вот когда юзер, например, из xterm'а запускает программу, которая сама по себе создаёт иксовое окошко и в этом окошке рисует картинку - это уже опять рисование из tty, поскольку xterm - эмулятор терминала, и у него есть командная строка.

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

VT - часть ядра. Драйвер фреймбуфера - тоже часть ядра.

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

там не указано, как VT выводит данные на дисплей

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

Нет вообще никакой разницы, из tty или не из tty команда даётся.

Есть разница где сидит юзер. Если он запустил программу из GUI файлового менеджера щелчком мыши - это не tty. А если он сидит в эмуляторе терминала с командной строкой - это tty.

думаешь, что растр гоняется именно по интерфейсу tty.

В случае фреймбуфера - нет. Я и на схеме нарисовал - напрямую во фреймбуфер.

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

У X Window System нет интерфейса командной строки. У vt есть.

А как же xterm? И с каких пор у vt есть командная строка? Командную строку даёт shell, если ты не знал.

Вот когда юзер, например, из xterm'а запускает программу, которая сама по себе создаёт иксовое окошко и в этом окошке рисует картинку - это уже опять рисование из tty

Нет - это рисование не из tty, а из окошка.

VT - часть ядра. Драйвер фреймбуфера - тоже часть ядра.

Обезьяна - это животное. Ты тоже животное. Какой вывод из этого?

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

В данном случае это совсем не важно, поскольку картинку выводит не vt.

VT как раз отвечает за ввод и вывод. Это терминал. Не знаешь, что такое терминал?

Но, юзер сидит в vt и дал команду на запуск программы по интерфейсу tty.

Юзер может сидеть в VT и дать команду по интерфейсу tty отправить с помощью программы mutt письмо твоему соседу с просьбой дать тебе по роже. По твоим суждениям ты получишь по роже через tty.

В случае фреймбуфера - нет.

Ты себе противоречишь. Сначала заявляешь, что картинка рисуется через tty, а теперь - нет.

Я и на схеме нарисовал - напрямую во фреймбуфер.

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

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

Ты себе противоречишь. Сначала заявляешь, что картинка рисуется через tty, а теперь - нет.

Это Вы неправильно читаете. Я говорил, что юзер сидит в tty. А картинка при этом рисуется не через tty. Но, юзер сидит в tty.

VT как раз отвечает за ввод и вывод. Это терминал.

vt - это эмулятор терминала. Все эмуляторы терминала, включая vt и xterm, отвечают за ввод и вывод текста. Что и позволяет организовывать CLI. А нет CLI - нет и текстовых команд от юзера. Нет текстовых команд от юзера - tty становится урезанным - остаётся только вывод текста. Если, конечно, перед отключением CLI в памяти не осталась ранее запущенная софтина, в которую можно вводить текст.

По твоим суждениям ты получишь по роже через tty.

Ключевой предлог, кстати, был не «через», а «в». Изначально диалог не о том, что юзер может _через tty_, а о том, что юзер может _сидя в tty_. Конкретно - в tty1, который vt.

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

Это Вы неправильно читаете.

Кто вы-то? Кто - ВЫ? К кому ты обращаешься во множественном числе?

Я говорил, что юзер сидит в tty.

Демагогия на ровном месте.

Все эмуляторы терминала, включая vt и xterm, отвечают за ввод и вывод текста.

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

Что и позволяет огранизовывать CLI. А нет CLI - нет и текстовых команд от юзера. Нет текстовых команд от юзера - tty становится урезанным - остаётся только вывод текста.

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

Если, конечно, перед отключением CLI в памяти не осталась ранее запущенная софтина, в которую можно вводить текст.

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

Ключевой предлог, кстати, был не «через», а «в».

Демагогия уровня «в и на».

Изначально диалог не о том, что юзер может _через tty_, а о том, что юзер может _сидя в tty_. Конкретно - в tty1, который vt.

Враньё. Изначально было от тебя:

OpenGL не нужен, DirectX не нужен, Vulkan не нужен. ANSI-последовательностей хватит всем.

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

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

Я отвечал разным людям. Один человек пошутил про Wayland. Ему в ответ я тоже пошутил. А другой человек привёл конкретное ТЗ: он сидит в tty1, который vt, в котором запущена программа на ncurses, а в этом окошке картинка. Вот я и привёл одно из практических решений без задействования других терминалов и эмуляторов терминала: пусть эта программа вычисляет где область этого окошка и рисует непосредственно через фреймбуфер. Но, можно спаять свой аппаратный терминал, который будет обрабатывать графику в ANSI-последовательностях, или взять эмулятор терминала с таким функционалом. И тогда ANSI-последовательностей точно хватит.

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

Кто вы-то? Кто - ВЫ? К кому ты обращаешься во множественном числе?

Множественное число - это «вы» (с маленькой буквы). А «Вы» (с большой буквы) - это единственное число. Это вежливое обращение к собеседнику в интернетах, распространённое в т.ч. и потому, что есть люди, у которых начинается боль в заднице, когда к ним обращаются на «ты» - «Мы с Вами на брудершафт не пили, чтобы Вы мне здесь тыкали».

То есть, модем, цепляемый по интерфейсу tty, не может принимать данные?

Да, модем может работать (и работает) по терминальному интерфейсу, но он является терминалом лишь по принципу «что находится на конце кабеля - то и терминал».

«tty» - это сокращение от «teletype». А телетайп - это одно из 2-х: 1) устройство, которое объединяет в себе клавиатуру и рулон бумаги с печатающим устройством; 2) устройство, которое объединяет в себе клавиатуру и дисплей.

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

А человек работает с машиной через конкретный терминал с клавиатурой и устройством вывода.

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

Один человек пошутил про Wayland. Ему в ответ я тоже пошутил.

Ага. И про OpenGL, и про Vulkan пошутил, когда их никто не упоминал.

tty1, который vt

Нет.

А другой человек привёл конкретное ТЗ: он сидит в tty1, который vt, в котором запущена программа на ncurses, а в этом окошке картинка. Вот я и привёл одно из практических решений без задействования других терминалов и эмуляторов терминала: пусть эта программа вычисляет где область этого окошка и рисует непосредственно через фреймбуфер.

И внезапно оказалось, что терминал это терминал, а интерфейс передачи данных это интерфейс передачи данных. То есть, ты опять облажался. Потому, что VT это не tty, и картинка выводится не по tty.

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

Только это будет уже не tty, а костыльный терминал.

И тогда ANSI-последовательностей точно хватит.

Нет, не хватит. Потому, что тормоза графики будут (как и во всех случаях, когда гоняешь растр по интерфейсу для этого не предназначенному). X11 не просто так придумали.

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

Множественное число - это «вы» (с маленькой буквы). А «Вы» (с большой буквы) - это единственное число. Это вежливое обращение к собеседнику в интернетах, распространённое в т.ч. и потому, что есть люди, у которых начинается боль в заднице, когда к ним обращаются на «ты» - «Мы с Вами на брудершафт не пили, чтобы Вы мне здесь тыкали».

Ты кто по табелю о рагнах?

Да, модем может работать (и работает) по терминальному интерфейсу, но он является терминалом лишь по принципу «что находится на конце кабеля - то и терминал».

Это единственный принцип, если что.

«tty» - это сокращение от «teletype». А телетайп - это одно из 2-х: 1) устройство, которое объединяет в себе клавиатуру и рулон бумаги с печатающим устройством; 2) устройство, которое объединяет в себе клавиатуру и дисплей.

«Я познаю мир». Наконец-то начал читать, да? И даже после этого ты несёшь дичь потому, что нет никакой разницы, рулон бумаги там или дисплей - не имеет никакого значения, как физически реализована работа с этим интерфейсом.

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

И где я утверждал, что модем это телетайп? Да нигде. Ты опять хренью маешься и в очередной раз позоришься на весь ЛОР.

А человек работает с машиной через конкретный терминал с клавиатурой и устройством вывода.

Внезапно да. Только это никак тебе не поможет.

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

Ага. И про OpenGL, и про Vulkan пошутил, когда их никто не упоминал.

Потому, что я противопоставил Wayland'у возможности юзера, когда он сидит в vt без иксов и Wayland'а. А тогда нет ни OpenGL, ни Vulkan'а.

VT это не tty

Если говорить максимально точно, то, конечно, vt - это эмулятор терминала, который обрабатывает ввод-вывод через /dev/ttyN. Но, суть в том, что если юзер запустит не vt, а другой эмулятор терминала (или даже терминальный мультиплексор screen), то команда «tty» напечатает ему уже нечто наподобие «/dev/pts/N». А в виртуальном терминале /dev/tty1 сидят через vt. И я уже много-много раз подчёркивал и соглашался с тем, что при этом юзеру доступен не только интерфейс tty, но и все другие подсистемы ядра, возможности имеющихся у него библиотек,... и т.д. Никто этого не отрицал и изначально, и, более того, именно об этом и была речь. Но, Вы почему-то продолжаете приписывать мне именно своё прочтение.

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

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

Только это будет уже не tty, а костыльный терминал.

Нет, это будет полноценный аппаратный терминал, как, например, DEC VT240/VT241/VT330/VT340/VT282/VT284/VT286/VT382, которые прекрасно знали и понимали упоминаемый выше формат растровой графики в ASCII с escape-последовательностями sixel. Именно из них этот формат и перекочевал в современные эмуляторы терминалов, такие как, например, XTerm, mlterm, yaft/yaftx и виндовый RLogin. Но, они не работают с /dev/tty1. И если задача стоит работать именно с /dev/tty1 без иксов и вейланда и других эмуляторов терминала помимо vt, но выводить графику через tty, то придётся паять свою плату терминала. Именно поэтому я и предлагал изначально второй вариант. Если графика и так выводится через tty, то зачем ещё что-то нужно? Но, при текущей реализации, когда юзер сидит в терминале /dev/tty1 она выводится через драйвер фреймбуфера в ядре.

тормоза графики будут

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

X11 не просто так придумали.

Его придумали для оконных GUI интерфейсов.

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

Нет, это Вы в рамках решения конкретной задачи про вывод графики в /dev/tty1 начинаете метаться из стороны в сторону и приплетать всё подряд, при этом приписывая другим своё прочтение, в то время как писалось про другое.

Понятное дело, что если вспоминать про всё-всё-всё, то максимально корректные формулировки будут несколько другими. Но, тут конкретная задача: один юзер, один эмулятор терминала, одна программа на ncurses с окошком, куда надо выводить графику. Какие ещё модемы и прочее?

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

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

Потому, что я противопоставил Wayland'у возможности юзера, когда он сидит в vt без иксов и Wayland'а. А тогда нет ни OpenGL, ни Vulkan'а.

При этом я подразумевал, что во время работы с ncurses юзеру графика не нужна. Совсем.

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

Не составляет великого труда сделать на одном vt 2 tty. Но рисовать графику ты сможешь лишь в vt, а не в 2 tty.

И к какому tty будет тогда относиться графика, а?

cvs-255 ★★★★★
()

Это очень все блаародно, а вот как там насчет кои8?

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

С точки зрения юзера «вот прямо сейчас рисуемая графика» относится к тому виртуальному терминалу, о котором сообщает команда «tty». В конечном итоге именно в этот виртуальный терминал он и переключился, например, при помощи команды chvt (change foreground virtual terminal). И юзер вполне может, например, на tty1 запустить mplayer, на tty2 запустить «links -g», а на tty3 смотреть PDF'ку JPEG'ами при помощи fbi. И переключаться между всем этим. И если он из tty4 выполнит команду «chvt 1», то она переключит его в виртуальный терминал tty1 с mplayer'ом, если команду «chvt 2», то она переключит его в tty2 с links'ом, а если команду «chvt 3», то она переключите его в tty3 с просмотрщиком картинок.

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

Ну так можно немного модифицировать код vt, чтобы он 2 tty на себе держал. И тогда команда tty будет выводить /dev/ttyN

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

Т.е. 2 виртуальных терминала будут объединены в один? Но, зачем? От этого нет пользы, один вред. У юзера их (/dev/ttyN) и так не больше 64-х. Приходится юзать терминальные мультиплексоры, чтобы умножить кол-во виртуальных терминалов (а заодно и получить дополнительные удобства).

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

Нет текстовых команд от юзера - tty становится урезанным - остаётся только вывод текста.

То есть по-твоему ввод текста в login(1) невозможен?

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

А дальше что, если нет шелла?

В качестве «шелла» юзеру может быть назначен, скажем, mcedit — возможности вводить shell-команды не будет, но текстовый ввод останется.

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

Ну так примерно про это я и говорил там выше в том контексте:

Если, конечно, перед отключением CLI в памяти не осталась ранее запущенная софтина, в которую можно вводить текст.

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

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

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

…то разница между vt и tty не перестанет быть таковой.

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

Как я уже говорил выше, tty - это широкая категория. Но, vt на то и vt, что предоставляет интерфейс tty. И именно поэтому его реализация и находится в ядре в drivers/tty/vt/. А команда «tty» в конкретной виртуальной ядерной консоли выводит «/dev/ttyN». И именно с этим виртуальным терминалом /dev/ttyN и связан vt в данный момент.

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

man chvt

chvt - change foreground virtual terminal
...
       The  command chvt N makes /dev/ttyN the foreground terminal.  (The corresponding screen is created if
       it did not exist yet.  To get rid of unused VTs, use deallocvt(1).)  The key combination (Ctrl-)Left‐
       Alt-FN (with N in the range 1-12) usually has a similar effect.

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