Автор Гілка: ghostty — швидкий та функціональний емулятор терміналу  (Прочитано 1521 раз)

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3972
  • Карма: +20/-0
  • Програміст
ghostty — це емулятор терміналу, написаний на Zig, який підтримує багато стандартів і може використовуватися для щоденної роботи, і в той же час демонструє високу швидкість роботи, за рахунок використання графічного процесора. Термінал підтримує вкладки та поділ вікна, а також графічний протокол Kitty (можна подивитися зображення з допомогою chafa).

Домашня: https://ghostty.org/
Проєкт: https://github.com/ghostty-org/ghostty
[Fedora Linux]

Відсутній BeSiDa

  • Кореспондент
  • ***
  • дописів: 146
  • Карма: +1/-0
Чафа, то бібліотека, що виводить зображення у вигляді тексту всіма можливими символами юнікод. Наприклад, можна дивитися Ютуб в тексті у довільній роздільній здатності при розмірі шрифту 1-5 пікселів та ширині терміналу у тисячі пікселів (тому й швидкий термінал з підтримкою графічної карти, щоб відео з високою частотою оновлення могло бути)... можете нагуглити скріншоти...

От зробили б рендеринг ТеХ файлів з формулами та малюнками через Аскіі-графіку :)))
(через ту ж саму бібліотеку чафа)

Але... навіщо?
Якщо ми вже й так знаємо що термінал використовує відеоарту (не текстовий режим монітору) та в нього є свій термкап (не чийсь інший) та ще й інші "протоколи", а з іншого боку чафа отримує малюнок як є в пікселах, то чому б їм не "домовитися" та не відтворити відразу піксельний малюнок у вказаних (текстових?) координатах екрану? :)))

А Кітті таке вміє? (то теж софт-термінал)

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3972
  • Карма: +20/-0
  • Програміст
Цікаво було б зробити щось подібне на Iron Python Notebook, але для терміналу, щоб можна було запускати код в терміналі та відразу бачити графічний вивід внизу, під командою, так само я к в bash але з підтримкою графіки.  ::)
[Fedora Linux]

Відсутній yvs115

  • Кореспондент
  • ***
  • дописів: 235
  • Карма: +7/-0
Цікаво було б зробити щось подібне на Iron Python Notebook, але для терміналу, щоб можна було запускати код в терміналі та відразу бачити графічний вивід внизу, під командою, так само я к в bash але з підтримкою графіки.  ::)
arcan way (plan9 like), було тут https://linux.org.ua/index.php?topic=12196.msg205471#msg205471 демка з cat9 fossil https://user-images.githubusercontent.com/5888792/161494402-9e5636e3-dd78-4fcf-bff0-fe5c3dd0a369.mp4

Відсутній yvs115

  • Кореспондент
  • ***
  • дописів: 235
  • Карма: +7/-0
Цитата
емулятор терміналу, написаний на zig
Найбільш цікава частина - на чому написаний, в ряду нових мов приблизно з сі ніши: rust, zig, ... - тобто як демонстрація можливостей останнього

Цитата
демонструє високу швидкість роботи, за рахунок використання графічного процесора
Частина відносно графіки - чесно кажучи і не пам'ятаю щоб будь-які термінали в *nix десь повільно працювали - тому граф.частина сприймається більш як промо.
З усіх терміналів що зустрічалися та юзав трохи - функціонально принципіально нового вже давно нічого не очікується, стд набір фіч - десь більше трохи, десь менше, тому раніш базовим з необхідним мені набором фічастості був gnome-terminal (gtk3), зараз вже ptyxis (gtk4).

upd: який набір фіч зазвичай дивлюсь щоб були присутні в тому чи іншому терміналі - таби, можливість фонт-налаштувань, кольорові теми, регулювання прозорості - мабуть все.

p.s. з новими ідеями що бачив це тільки термінальна робота на деривативах з plan9, нажаль особливо не розповсюджена і не мігрувала в linux
« Змінено: 2025-10-16 10:33:18 від yvs115 »

Відсутній BeSiDa

  • Кореспондент
  • ***
  • дописів: 146
  • Карма: +1/-0
Ви ж розумієте, що "термінал" це інтерпретатор потокової (без циклів) мови програмування роботів? :)
Так, наразі більшість роботів віртуальні (програмні), але раніше більша їх частина була фізичною (принтери з моторами та сенсорами позиціювання та точного промотування (папір був у листках та рулонах) та переміщення каретки і керування механічними паличками матричних принтерів та лапами з літерами електронних друкарських машинок).
Дійсно більшість з "команд" тієї мови то є "показати символ", але є ще й "перемістити курсор", та "змінити стан" (кольори, підкреслювання, стилі, ...) або (для юнікод) поєднання команд (є окремі "ю" + "а" які разом призводять до малювання прапора країни або "колір" + "символ" змінить колір смайлика чи навіть є різнокольорові малюнки смайликів як "символи").
А команди для пайпів (греп, сед, кат, ...) то є мова програмування "процесорів мови програмування" :))
Але ця мова може бути використана для керування будь якими роботами через провід (з послідовним передаванням байтів), юсб чи віддалено (через мережу та тсп/іп). Наприклад, ви можете зробити "термінал" який не тільки покаже текст, але й перемістить робо-руку, що під'єднана до вашого комп'ютера. І все це зі звичайної програми, що робить "прінт" в "стдоут" і не знає куди саме йде вивід (локально чи по ссш через пів світу).
Навіть можна створити робота що розкладає пластикові літери на стрічку транспортеру, який може прокрутити її як буфер тексту терміналу :)))
Мова "символів керування терміналом" буде та сама.


Відсутній BeSiDa

  • Кореспондент
  • ***
  • дописів: 146
  • Карма: +1/-0
Цікаво було б зробити щось подібне на Iron Python Notebook, але для терміналу, щоб можна було запускати код в терміналі та відразу бачити графічний вивід внизу, під командою, так само я к в bash але з підтримкою графіки.  ::)
А ви ж читали й зрозуміли новину яку самі ж запостили? :D
Гляньте документацію що таке "графічний протокол терміналу Кітті" :)))
Це саме про "графічний вивід" (і під командою, і над командою, і в координатах пікселів чи символів і з вказуванням висоти (зед-індексу) та поєднання прозорості малюнків разом з накладанням по висоті та як фонове зображення під текстом і видалення тих малюнків так само потоком команд).
Є пдф читалка для терміналу з графікою під цей протокол.

І він може передавати графіку локально (файл, шаред меморі) або віддалено (пакувати (пнг чи зліб та типу базе64) у потік байтів термінальної мови програмування для ссш чи іншого виду пересилання). Тобто замість Х11 можна використати. Чи, наприклад, можна просту консольну гру зробити з елементами графіки (замість сдл та іншого).

І "термінал" це про спілкування в обидві сторони. Тобто програма може запитувати розмір терміналу в символах та пікселах та чи вміє він графічний протокол.

А також Кітті вміє розширювати функції терміналу на Пайтоні через свій варіант додатків (кіттенс).

Відсутній yvs115

  • Кореспондент
  • ***
  • дописів: 235
  • Карма: +7/-0
Цитата
Ви ж розумієте, що "термінал" це
не тільки
Цитата
і̶н̶т̶е̶р̶п̶р̶е̶т̶а̶т̶о̶р̶ ̶.̶.̶.̶   цінний мєх
Цитата
роботів,
Цитата
але є ще й
три.. ні.. чотири.. кілограми
Цитата
пластикових літер на стрічку
;)

Відсутній BeSiDa

  • Кореспондент
  • ***
  • дописів: 146
  • Карма: +1/-0
три.. ні.. чотири.. кілограми
 ;)
Ну потролили :)))  от тільки що то дало?

Фактично ви написали що ваше особисте сприйняття терміналу важливіше за документацію з протоколу опису роботи з терміналами (термкап, термінфо та ін). Ваш вибір залишатися у своїй особистій інформаційній бульбашці :) в якій "нічого нового для терміналу не може бути".
А от в емуляторі терміналу Кітті є нові протоколи.
Які ... вам особисто не потрібні, а тому для вас їх ... не існує :))))

Навіть підкреслення тексту хвилястою лінією (коли в тексті помилка, наприклад) вам не потрібне.
І відображення графіки в терміналі вам не потрібно (а гістрограмки пінгів символами малювати).

п.с. головна відмінність мови програмування терміналу (від тих самих Х-ів) це відсутність прив'язки до часу. Якщо команда відправлена то колись вона буде виконана і програмі пофіг коли. Так само коли термінал щось відправив програмі.
Без помилок "ваша програма не відповідає" та "таймаутів".
Хоч є й мінуси... коли мишкою клікнули в текстові координати, а там вже зовсім інші символи (з точки зору програми). Не так як в Х11 (де "вікно" що отримає клік мишки на стороні сервера, а не клієнта).

А що саме з План9 вам сподобалося?

Відсутній BeSiDa

  • Кореспондент
  • ***
  • дописів: 146
  • Карма: +1/-0
А взагалі все те що навколо терміналів та їх протоколів це намагання створити "один єдиний простий АПІ" що запхали в потік байтів.
І оте "запихання в дуже обмежений потік обмеженої кількості команд (0-255)" і є головна перевага та сила протоколу обміну.

Вона призвела до ідеї "перемикання режимів" і, відповідно, ідеї "Ескейп" (вийти з одного режиму в інший).

Так користувач з однієї й тієї ж клавіатури керує і "програмою", і "терміналом" (програмою чи апаратним) в тому самому режимі або в "ескейп режимі" (керування терміналом, що замість відсилати натискання кнопок "програмі" виконує ті команди самостійно).

Наприклад, користувач може сам змінити колір наступних символів чи зупинити "потік" (контрол флов) з клавіатури без інформування про те "програму".
А от в Х-ах майже все керування Х-сервером йде через якусь "програму-клієнта Х-ів", а не напряму з клавіатури користувачем. Тільки деякі Х-сервери мають окреме "меню налаштувань" вбудоване.

А от терміналом можна керувати напряму без "меню" (відповідно до можливостей термкап). Так само (повний список байт-команд 0-255) як це може робити "програма-клієнт".
Тобто користувач з "програмою" рівноправні.

А ще в один й той самий потік байтів можна вмістити різні застосування (за допомогою різних "ескейп"). От є з-модем для передавання файлів крізь потік байтів терміналу. Та інше.

І ще це середовище для багатьох програм одночасно. Шатдаун пише месаджі в усі термінали.

І при тому для вивчення людиною того АПІ спочатку достатньо знати одну команду "новий рядок". Все. Один байт. Дуже просто. Дуже проста команда "прінт('Хелло ворд')".
А все інше потім.
Не як в Х-ах тонни текстів протоколу.
Чи в ссш з їх прокидуванням конектів та плагінами с-фтп та іншими, чи ІРЦ. Все як цибулина. Шари вкладені один в одне. І для всього 0-255 команд.
:)

Відсутній yvs115

  • Кореспондент
  • ***
  • дописів: 235
  • Карма: +7/-0
Цитата
Цитата
три.. ні.. чотири.. кілограми
от тільки що то дало?
своєрідний recap?

о, тут
Цитата
Навіть підкреслення тексту хвилястою лінією (коли в тексті помилка, наприклад)
питання напевно навколо uiux?

З утилітарної точки зору:
кольорове блочне сприйняття нп like в (n)vim

проти
:) вертикальних рухів головою під час пробігання очима вздовж горизонтальної
Цитата
хвилястої лінії
~~~~~~~~~~~~~~~
Хоча кольорова хвиляста лінія використовується нп з warns від компайлерів де вона виглядає на виході більш-менш природно.
Як такого роду uiux релевантно пов'язати з конкретизацією який саме термінал у використанні - не ясно.

Цитата
А що саме з План9
Не з утилітарної точки зору:
"unix в квадраті" чим цікавим може бути? Нп тим що "everything is a file" на екстрималках - проявляється іноді в несподіваних напрямках як нп namespaces per process, per window. Трохи з оглядових відео трохи покрутивши якісь частини того - виглядає що там достатньо багато цікавих ідей було, і умовно термінал цікавий.
« Змінено: 2025-10-17 13:27:53 від yvs115 »

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3972
  • Карма: +20/-0
  • Програміст
arcan way (plan9 like), було тут https://linux.org.ua/index.php?topic=12196.msg205471#msg205471 демка

З ghostview можна реалізувати велику частину цього: розбивати вікно на панелі, дивитися відео (через mpv -vo kitty , хоча у мене воно не запустилося).

Цитата
Найбільш цікава частина - на чому написаний, в ряду нових мов приблизно з сі ніши: rust, zig, ... - тобто як демонстрація можливостей останнього

Ну так, Zig та V — це краща версія C, тому цікаво на них подивитися. Мені подобається Rust (крім перших двох літер), але конкуренція має бути, бо Раст почав потрохи перетворюватися на Сі++, особливо в асинхронній версії.

Цитата
Частина відносно графіки - чесно кажучи і не пам'ятаю щоб будь-які термінали в *nix десь повільно працювали - тому граф.частина сприймається більш як промо.
Мене теж більше цікавить час життя від батареї і підтримка Унікоду, так як все частіше попадаються в тексті то ієрогліфи то емоційки. Але без прискорювача, сучасний код буде повільним доки в нього не вкласти купу часу, щоб оптимізувати алгоритми під процесор, кеш, буфери, розмір екрану, масштабування, тоді як прискорювач дає готові алгоритми і швидкий код для графіки з коробки.

Цитата
upd: який набір фіч зазвичай дивлюсь щоб були присутні в тому чи іншому терміналі - таби, можливість фонт-налаштувань, кольорові теми, регулювання прозорості - мабуть все.

У мене те саме (без прозорості мені незручно — потрібно переключатися між терміналом та переглядачем, а так можна читати інструкцію крізь термінал, чи відео якесь дивитися на фоні).

Але а) я все ще сподіваюся що в mc можна буде дивитися картинки по F3, б) мені немає про що постити на головній сторінці — всі побігли клепати щось для/з ШІ, а я зараз більше цікавлюся новинами про Раст (і ШІ). Чогось радикально нового, щоб зацікавило хоча б мене, у світі значно поменшало останнім часом.
[Fedora Linux]

Відсутній yvs115

  • Кореспондент
  • ***
  • дописів: 235
  • Карма: +7/-0
Цитата
розбивати вікно на панелі
виглядає як задача для screen чи tmux

Цитата
Раст почав потрохи перетворюватися на Сі++, особливо в асинхронній версії.
по ідеї для цього він спочатку і створювався mozilla-firefox як замінити плюси в рамках проекту, тому то мало би виглядати цілком логічно

Цитата
Але без прискорювача, сучасний код буде повільним доки в нього не вкласти купу часу, щоб оптимізувати алгоритми під процесор, кеш, буфери, розмір екрану, масштабування, тоді як прискорювач дає готові алгоритми і швидкий код для графіки з коробки.
Зновуж по ідеї це відноситься до фреймворка з яким він зроблений, якщо нп gtk4 використовує gpu для рендерінгу, то і будь-який термінал який використовує gtk4 можна сказати що з - прискорювачем і з швидкою графікою з коробки. Як протилежного типу промо десь нещодавно бачив з якимось проектом - It works even without GPU!

Цитата
без прозорості мені незручно ... можна читати інструкцію крізь термінал
Cаме для цього і я також використовую прозорість в терміналах.
Ще додам тоді що зручного використовую (нп в ptyxis) - підтримка сесій - тобто нп щоб всі таби знову відкрилися з тими current dirs в них які були до закриття терміналу.

Відсутній BeSiDa

  • Кореспондент
  • ***
  • дописів: 146
  • Карма: +1/-0
питання напевно навколо uiux?
Ні, тема "розвитку терміналів" та "нового в терміналах".
Хоч хвилясті лінії підкреслення є в інших, але окрема зміна кольору є в Кітті, наприклад.
Текстові редактори можуть помилки в тексті підсвітити так само як в х11 та тулкітах.

кольорове блочне сприйняття нп like в (n)vim
:) вертикальних рухів головою під час пробігання очима вздовж горизонтальної
хвилястої лінії
~~~~~~~~~~~~~~~
Ви про що? Це одна лінія. І це "оформлення", а отже не копіюється в кліпбоард, наприклад. Так само як колір тексту в консолі. Чи таби (інколи замість них пробіли).

Як такого роду uiux релевантно пов'язати з конкретизацією який саме термінал у використанні - не ясно.
Ви про що?
Тепмкап і термінфо бази можливих команд терміналу.

Відсутній BeSiDa

  • Кореспондент
  • ***
  • дописів: 146
  • Карма: +1/-0
Цитата
А що саме з План9
Нп тим що "everything is a file" на екстрималках
А можете надати ваше визначення слова "файл"?
Що саме ви маєте на увазі?
Бо в мен-ці по файловим системам написано про "файлові вузли" серед яких тільки частина "звичних файлів".
Наприклад, інші неможливо скопіювати до іншого компа чи відправити поштою, чи скачати з фтп.
Тоді який сенс в тому "все є файл"? Казка тільки.
Он в Лінуксах в /проц багато чого "є файл". Ті ж файлові дескриптори кожного процесу... і що з того?
А в мен-ці по ф-опен взагалі про те що програма не тільки назву файла передає кернелу, а працює не з "файлом", а "потоком" (стрим) на який вказує файл дескриптор.
Чи ви про кернел АПІ "файловий"? А чи всі команди з нього? От "сіік" (зміщення позиції) для всіх тих "файлів" діє?
Чи то лише як його в мови програмування вписати? Через які функції стандартні взаємодія з "усім"?
Та і "усе" то ж не усе? :) От інший комп в інеті то тоже "файл" в план9?

і умовно термінал цікавий.
Чим?
Наприклад?