LINUX.ORG.RU
ФорумTalks

Леннарт теперь до эмуляторов терминала добрался

 , , ,


0

3

После очередного обновления systemd я обнаружил, что при входе в учетную запись рута под одним из эмуляторов терминала отображается вот такая абракадабра:

]8003;start=18dcf83c-b8a1-49a6-a824-d7a793edfd2c;user=root;hostname=aquila;machineid=609fc63f07736a785af67b1600000438;bootid=6bd8c743-1bf9-4965-88f0-5326eca7fc15;pid=661805;type=shell;cwd=/root[root@aquila ~]# 

Конкретно у меня - проблема со старой версией vte, на которой работают эмуляторы терминала, собранные под gtk2.

Поиск виновника привёл меня к следующим файлам:

/usr/lib/systemd/profile.d/70-systemd-shell-extra.sh
/usr/lib/systemd/profile.d/80-systemd-osc-context.sh

Потом к этому багрепорту: https://github.com/systemd/systemd/issues/39133

К этому: https://bugs.kde.org/show_bug.cgi?id=500842

И наконец к сути: https://github.com/systemd/systemd/blob/main/docs/OSC_CONTEXT.md

Машинный перевод для тех, кто плохо понимает английский: https://translate.google.com/?sl=en&tl=ru&text=https%3A%2F%2Fgithub.com%2Fsystemd%2Fsystemd%2Fblob%2Fmain%2Fdocs%2FOSC_CONTEXT.md&op=translate

В целом идея мне показалась не особо полезной, но направление мысли мне понравилось. Более содержательное общение приложения с эмулятором терминала - это хорошо. Я всегда приветствую развитие протоколов обмена обмена данными с терминалом.

★★★

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

Леннарт вываливает в стдаут нечитаемую крякозябру, а терминалы должны научиться её не показывать юзеру.

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

Леннарт предложил новый вид информационного пакета, который приложение посылает эмулятору терминала, сообщая о «контексте», в котором осуществляется работа. Контексты организованы иерархически.

POSSIBLE USE CASES
- paint the background in dark red when running run0/sudo or blue when unvoking ssh
- setting the window title based on some of the emitted values (e.g. the "vm=..." and "container=..." fields)
- detecting the currently invoked command and working dir (while Konsole already scans them from /proc this would still be relevant where that is not accessible, i.e. Flatpak or Windows)
- provide some kind of shell-history minimap (similar to ones in IDEs) with colored regions to see where on was in a container etc
- provide bookmarks/jumps to previous context switches
wandrien ★★★
() автор топика

Жесть какая. Текстовые интерфейсы превращаются не просто в псевдографику, а ещё дополнительно в какой-то HTML.

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

Они в любом случае обязаны не показывать юзеру OSC-пакеты. Терминалу следует игнорировать OSC-пакеты, которые он не понимает.

Это в старой версии vte баг. Сегодня попробую её пропатчить и выложу патч куда-нибудь у себя на гитхабе.

wandrien ★★★
() автор топика

Будет дёргать sed на каждом выплёвывании промпта - хитрый план?

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

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

Я работаю без сустемд, так что мне пофик :)

Но да, есть системы со считанными мегабайтами памяти, есть ОС с минимумом утилит, есть не-ГНУ альтернативы.

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

Но да, есть системы со считанными мегабайтами памяти, есть ОС с минимумом утилит, есть не-ГНУ альтернативы.

Какое всё это имеет отношение к systemd?

systemd предназначен для машин иного типа.

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

Он предназначен для серверов красношапки, но страдают то все

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

Лучше бы Lennart взялся за Bash.

Там только выкинуть целиком.

Я вот хочу попытаться для lua сделать обвязку для скриптинга уровня оболочки. Подобные либы на Lua есть, но качество и объем фич мне не нравится. Надо лучше.

Тебе бы был интересен такой проект?

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

Жесть какая. Текстовые интерфейсы превращаются не просто в псевдографику, а ещё дополнительно в какой-то HTML.

Всегда было, не? Вспомни абсолютно угрёбищные и незапоминаемые без документации цветовые теги типа \033[33m, \033[43m ; или всякие Sixel-причмочки прилепленные изолентой сбоку.

Уж лучше HTML-like было ей-богу.

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

paint the background in dark red when running run0/sudo or blue when unvoking ssh

Не, ну вот с этим пускай идёт нах, что, если я под рутом в ссх буду, он мне фон в полосочку сделает?

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

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

GAMer ★★★★★
()

sh-скрипты в наличии, но ничего такого не вываливается. Попробовал без ~/.bashrc и с ним. Созданы с последним обновлением systemd (258-4), но может просто пересозданы. xfce4-terminal и консоль.

dmitry237 ★★★★★
()

Лучше бы он от символьного ввода к скан-кодам ушёл )

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

Там только выкинуть целиком.

Действительно.

Тебе бы был интересен такой проект?

Мне интересна любая замена Bash и Bash-скриптов на что-то более вменяемое и логичное.

Lua, Ruby и даже пусть Python на каких-нибудь DSL-стероидах с возможностью использования из оболочки и Shell-скриптов всё их богатство библиотек, батареек и инструментов было бы отличным решением. Что-то типа Premake или Meson но в качестве Shell’а с удобностью выполнения как однострочных-команд, так и разных простых и сложных скриптов с нормальными функциями хотя бы, а не как в Bash.

Но проблемы то не в этом. Ты можешь создать свой действительно удобный и логичный Shell на Lua или Ruby, но это будет ещё один проект «в стол» для нескольких заинтересованных человек. Индустрия продолжит пыхтеть на Bash’е с его наркоманией.

Вот если бы какая-то компания по типу RedHat или даже Canonical взялась за проблему актуализации языка командной оболочки в 2025 году и повела за собой индустрию. Условно – чтобы я поставил на сервер новый Debian, Ubuntu, или RHEL а там все мои скрипты на их новеньком Shell-языке просто взяли и заработали как systemd-юниты, лол.

Bash плохо выполняет свои функции в 2025 году, скриптовать на нём даже простые вещи по типу «скрипта с тремя функциями» жутко неудобно. Встроенные команды пестрят mindfuck’ами по типу IFS и прочего барахла даже для простейших вещей типа разбития строки, а синтаксис адовый и пестрит двадцатью видами кавычек и закорючек про которые нужно читать талмуды. Плюс это всё ещё перемешивается со всякими похожими синтаксисами Makefile тех же, все эти какерские кавычки там и здесь перемешиваются в голове в итоге чтобы быстро написть самому – иди читай доки, маны или спрашивай нейросеть об очередном mindfuck’е из 80-ых.

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

Вот если бы какая-то компания по типу RedHat или даже Canonical взялась

Знаю одну такую компанию, небольшую и мягкую. Сделали свой шелл, осень постарались. Но баш всё равно остался лучше.

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

Но проблемы то не в этом. Ты можешь создать свой действительно удобный и логичный Shell на Lua или Ruby, но это будет ещё один проект «в стол» для нескольких заинтересованных человек. Индустрия продолжит пыхтеть на Bash’е с его наркоманией.

Зато мне не придётся изучать вот этакую магию. Один скрипт написать - это даже увлекательно. Часто это делать - нахрен.

Идея в том, чтобы сделать максимально портабельное, но при этом максимально мощное решение. Lua - это чистый си с минимумом зависимостей, который компилируется даже чайником.

Продукт собираем с musl в статический бинарь, или даже можно cosmopolitan libc использовать.

И я могу спокойно в скриптах указывать зависимость от него.

Насчёт продвижения в индустрию - дело тухлое, но если хотя бы сотня человек начнут такое использовать, уже хорошо.

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

Тебе бы был интересен такой проект?

Я тут полгода пользовался xonsh (шелл на пистоне) и могу сказать, что в целом неплохо. Но, ксо жалению, миллиарды софта и скриптов в лялексе не знают ни про какой xonsh или пистон и, соответственно, на этом всё ломается. Пришлось на zsh вернуться.

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

Значит в генту криво опакетили systemd. Как-то так у меня это выглядит: Kufj.png. А приходит в shell это из файла /etc/profile.d/70-systemd-shell-extra.sh

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

На C++, не годится.

Надо бы ветку в Development создать под это.

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

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

Это не хтонь, это полностью логично.

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

Идею умного терминала надо развивать и далее.

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

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

Lua, Ruby и даже пусть Python
чистый си с минимумом зависимостей

JavaScript!! осёл.жпг
QuickJS даже меньше Lua, собирается в один небольшой бинарь, а выглядит куда приятнее.

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

На C++, не годится.

Годится, если:

  • Взять fishshell до 4-й версии.
  • Заменить язык на Pluto или оставить для совместимости.
  • Обозвать это дело plutoshell (psh не занято?)
  • Собирать звёзды и спонсоров на GH.
  • PROFIT!

Дарю идею! :)

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

У них ещё и консоль телетайпом не прикидывается.

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

Обозвать это дело plutoshell (psh не занято?)

плюш )

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

Они вменяемую графическую подсистему уже 10 лет родить не могут, а ты тут нормальный shell захотел. Губу закатай, как говорится :)

Merlin86
()

Более содержательное общение приложения с эмулятором терминала - это хорошо.

Как бы да, но есть нюанс. Такая лапша

]8003;start=18dcf83c-b8a1-49a6-a824-d7a793edfd2c;user=root;hostname=aquila;machineid=609fc63f07736a785af67b1600000438;bootid=6bd8c743-1bf9-4965-88f0-5326eca7fc15;pid=661805;type=shell;cwd=/root[root@aquila ~]# 

глазами уже плохо читается. А ведь зная Леннарта, он на этом не остановится. Эмулятор же терминала в первую очередь должен быть предназначен для общения компьютера с человеком.

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

Эта лапша не должна читаться глазами.

То, что она видна в терминале, баг конкретного терминала.

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

Леннарт тут не виноватый. Ты видел как цветной вывод в терминале делается? Загугли цветные PS1, например. Ужас, но юзер этот ужас не видит, пока в .profile не полезет.

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

Леннарт предложил новый вид информационного террора...

Пофиксил, не благодари.

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

Т.е. ты предполагаешь, что в GNU/Linux нас ждут терминалы, использующие Electron как основу, без поддержки Sixel и векторной графики Tektronix, но оптимизированные для работы в Powershell?

Тут подумалось, если Маршалл Кирк Маккьюсик с Эриком Олманом - это не традиционные ценности (нет), то как назвать вот это всё?????!!!!!

Shadow ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.