Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

far2l console mode: backend separation, hotkeys, etc #276

Closed
unxed opened this issue May 8, 2017 · 82 comments
Closed

far2l console mode: backend separation, hotkeys, etc #276

unxed opened this issue May 8, 2017 · 82 comments

Comments

@unxed
Copy link
Contributor

unxed commented May 8, 2017

Отсюда.

А в теории можно будет в будущем доработать порт так, чтобы, если иксов нет - цеплялся бэкэнд для вывода в обычную консоль (ладно, хоткеи работать не будут, ок), а при наличии оных - стандартный, на wxwidgets?

В теории возможно, на практике.. Я пилю в первую очередь инструмент для себя, уж сорри, но ИМХО в нише файлманагер-через-телетайп - MC вне конкуренции, делать еще один MC не вижу смысла не только для себя, но и для других.
Но насчет теории - я уже тут писал: виндовая консоль эмулируется в виде буфера с символами, открутить от него окошко и прикрутить вывод в ncurses - невелика задача. И даже клипборд внутренний уже есть (даже целых два :)). НО все привычные хоткеи пойдут в неведомую даль, а это уже боюсь неустранимо.

Мне в голову пришла одна идея.

В чём, собственно, основная проблема засовывания фара в терминал? Проблема в том, как выполнять действия, назначенные на Shift+F* и Alt+F* (Ctrl+F* доступны через меню Файл — Режим сортировки).

Например, Shift+F4 (edit new file) я через меню сделать не могу никак.

Можно, конечно, писать macro на каждое такое действие, но macro тоже надо назначать на какие-то сочетания клавиш, и они наверняка будут сильно не очевидными и труднозапоминающимися для пользователей, привыкших к фару на винде.

Так вот. Я подумал. А что, если сделать к far2l патчик, который при работе через ncurses одинарное нажатие F* будет делать эквивалентным F* классического фара, двойное (как дабл клик) — Shift+F*, а тройное — Alt+F* (там как раз не самые частые операции)?

Я бы 100% предпочёл такой user experience фара в терминале тому, что может предложить мне mc.

Остается ещё вопрос реализации выделения в редакторе. Я бы сделал так: одинарный Enter — перевод строки, быстрый двойной Enter — toggle selection mode. Ну или не Enter, а любую не-цифробуквенную клавишу, которая пролезет в терминал.

Плюсы:

  1. Минимальная разница UX с классическим фаром.
  2. Пользователю не надо создавать macro для каждой необходимой функции.
  3. Легко запомнить.
  4. Скорее всего, не очень сложно реализовать в коде.
  5. Весь функционал far2l остается доступен.
  6. Если часто надо гонять far2l в терминале — можно использовать такое же клавиатурное управление и на wx-версии (это может быть опция в настройках), чтобы не приучиваться к двум разным интерфейсам.
  7. Это порвёт mc в клочья.

Минусы:

  1. Вводятся некоторые задержки (на ожидание следующего нажатия клавиши) перед реакцией на F*. Но при работе по ssh и так присутствуют задержки канала, так что на их фоне этот эффект вряд ли будет сильно заметен. К тому же, все остальные варианты решения этой проблемы, скорее всего, будут ещё медленнее.

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

@unxed unxed changed the title два возможных способа обработки hotkeys в ncurses бэкенде far2l в консоли: два возможных способа обработки hotkeys May 8, 2017
@unxed
Copy link
Contributor Author

unxed commented May 8, 2017

есть ещё и мобильный инет, который много где до сих пор возможен только по 2g. и ещё множество кейсов, где скорость канала мизерная, а удобное удаленное администрирование жизненно необходимо.

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

upd: попробовал так делать с vnc в качестве "poor". это божественно! спасибо вам большое!

upd 2: правда, почему-то shift+f8 не пролезают. shift отдельно вроде бы видит. сходу решение выгуглить не смог. mint mate, remmina<->xvnc.

@elfmz
Copy link
Owner

elfmz commented May 8, 2017

Дык это.. макросами же можно продублировать хоткеи как угодно.
А что касается терминала + фар.. правильным решением в таком направлении мне видится расширение стандартного ANSI терминала (а он более-менее расширябелен) доп фичами, которые бы позволили реализовать живой интерфейс для людей, а не true-color телетайп. То есть - передачу состояния клавиш-модификаторов и прочих кнопок в режиме нажато-отжато и с возможностью отличить левй/правый модификаторы, знать состояние num/scroll/lock-ов и т.п..
Далее берется вменяемый терминал, допиливается до поддержки таких расширений. Берется FAR переделывается под терминал и юзает такие расширения при возможности.. Еще можно взять MC :), и тоже допилить под такой терминал.

@unxed
Copy link
Contributor Author

unxed commented May 8, 2017

Дык это.. макросами же можно продублировать хоткеи как угодно.

А макросы можно вешать на двойные и тройные нажатия? Far так умеет?

Терминал было бы круто, да. Но уж больно масштабный проект. Не из пушки ли это по воробьям для простой задачи "протащить far через ssh с user experience по крайней мере не хуже mc"?

Опять же, можно пока сделать какое-то минимально работающее решение, а когда такой терминал появится (если нет желания пилить его самому) - добавить ещё один бэкенд.

@unxed
Copy link
Contributor Author

unxed commented May 9, 2017

http://invisible-island.net/ncurses/ncurses.faq.html#modified_keys

How can I use shift- or control-modifiers?
The standard response is "curses doesn't do that".
There are workarounds. Some explanation is needed first.
...
Other terminal descriptions can be (and in ncurses, have been) modified to use this naming scheme for extended keys:
gnome-terminal and konsole use an older version of xterm's encoding (deprecated in 2002 because the parameter can be mistaken for a repeat count). Although the encoding is different (and these terminals omit some combinations), the functionality is similar.

В принципе, решение, которое будет работать хотя бы в [gnome|mate]-terminal и konsole, выглядит вполне неплохим.

Насколько я понимаю, libtickit/libtermkey упомянутые workaround'ы и используют.

@unxed
Copy link
Contributor Author

unxed commented May 10, 2017

Скачал libtermkey, собрал (на свежих минт-убунту надо сделать "sudo apt install libtool-bin ncurses-dev"), погонял демки.

Оно действительно видит <modifier>+<f*> в терминале. И оно таки работает через ssh. Но в mate terminal и far2l terminal оно показывает разные keycodes.

Shift-Ins перехватывают и mate terminal, и far2l terminal.
Snift-PgUp/PgDn перехватывает только mate terminal.
Может быть, ещё что-то перехватывается терминалами. Глубоко не рыл.

Оно же на github.
И оно даже в дебианах-убунтах уже пакетом имеется, libtermkey-dev.

@unxed
Copy link
Contributor Author

unxed commented May 10, 2017

http://www.leonerd.org.uk/hacks/fixterms/

@unxed
Copy link
Contributor Author

unxed commented May 10, 2017

@volth, вот, я вчера, засыпая, думал ту же самую идею. если активно пользуешься mc - то он у тебя стоит и на клиенте, и на сервере. также и с far2l будет, по всей видимости. так что гонять far2l через терминал far2l - выглядит очень симпатичным решением. и не надо будет кодить поддержку всего зоопарка терминалов, если заранее будет заявлено, что работает только так. в конце концов, нам шашечки или ехать? :)

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

да, по поводу отсутствия плагинов-аналогов hiew сам тоже недавно горевал.
хм, попробовал в mate terminal "wineconsole --backend=curses hiew32demo.exe".
похоже, юзабельно. в far terminal всё выглядит несколько хуже, но всё ещё юзабельно.
увы, как нетрудно догадаться, есть косяки с горячими клавишами.
почему ncurses-бэкенд wineconsole не использует хоты бы ту же libtermkey - не понятно.

@unxed unxed changed the title far2l в консоли: два возможных способа обработки hotkeys far2l console mode: two possible ways of solving hotkeys problem May 12, 2017
@singalen
Copy link
Contributor

Поддержка прекрасного предложения http://www.leonerd.org.uk/hacks/fixterms/ для iTerm есть, в том или ином виде:

Для других эмуляторов, надеюсь, тоже можно (или можно будет) настроить.

@elfmz
Copy link
Owner

elfmz commented Sep 28, 2018

Мне вот какая мысль в голову пришла.
Гипотетически, если ssh клиент запустить внутри "обычного" гуевого far2l, то внутри него (ну то есть на серваке) можно будет запустить некую консольную версию far2l, и они будут весело обмениваться секретными escape-последовательностями, чтоб работали все кнопочки.
Какова идея?
Она конечно далека от сферической всеконсольномогучести, но, на мой взгляд, покрывает большинство usecases:

  1. far2l_GUI<->ssh<->far2l_CLI - работает "как родной".
  2. xterm <-> ssh <-> far2l_CLI - работает через пень колоду. Но ведь всегда можно перейти на 1)
    ..правда опять повылазят проблемы с символами с переменной шириной..

@singalen
Copy link
Contributor

singalen commented Sep 28, 2018

Эти секретные последовательности даже выдумывать не надо, вот это предложение fixterms уже их описывает. + это будет совместимо с iTerm и ещё какими терминалами, в которых это можно настроить. + это и есть Абсолютная Консоль :)

AFAIK, вопрос переменной ширины символов тоже уже решён в распространённых терминалах: символ имеет высоту 1 и ширину или 1, или 2 знакоместа (после композиции), точка.

@elfmz
Copy link
Owner

elfmz commented Sep 28, 2018

ну может я не внимательно прочитал, но не понял как они предлагаю отличать keydown и keyup events

@elfmz
Copy link
Owner

elfmz commented Sep 28, 2018

...причем не только для кнопок, но и для самих control keys.

@singalen
Copy link
Contributor

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

@elfmz
Copy link
Owner

elfmz commented Sep 28, 2018

Дада, с этими стандартами всегда так: https://xkcd.ru/i/927_v4.png
Люди забыли что такое олдскульный UNIX-way. Это когда делаешь так чтоб все работало, а потом стандартируешь.

@singalen
Copy link
Contributor

singalen commented Sep 28, 2018

Там лучшая шутка обычно в тултипе к картинке :)

Ох-ох. И правда, нет такого терминала, даже черновика 8(
https://stackoverflow.com/questions/1409216/receiving-key-press-and-key-release-events-in-linux-terminal-applications

Ну, кто-то должен быть первым :) И с самим Полом Эвансом можно связаться. edit: написал в G+.

edit2: А проект у него живенький.

@singalen
Copy link
Contributor

singalen commented Sep 28, 2018

На Пола надейся, а сам не плошай...
Я поковырял, и нашёл (кажется) то, что надо: https://en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences.

Варианты кодов для keypress/keyrelease:

  • в кодах APC – Application Program Command. Приложения уже их игнорируют.
  • Возможно, более идеологично было бы самовольно ввести коды CSI - Control Sequence Introducer. В стандарте не нашёл упоминания кодов, для которых есть правило "не знаешь - игнорируй".
  • XTerm передаёт user-defined keys в DCS - Device Control String
  • PM – Privacy Message тоже игнорируют, туда тоже много чего можно засунуть.

Такой широкий выбор, прям глаза разбегаются.

@elfmz
Copy link
Owner

elfmz commented Sep 28, 2018

Я в курсе про APC. Таким образом far2l /e:file.txt работает работало в его собственном терминале, ща починю..

@singalen
Copy link
Contributor

Понятно, значит, я только для себя открыл Америку. Ну, тоже полезно :D

Вот и свой 150-й стандарт терминала уже есть. Коды keyup/keydown в него прекрасно лягут. ssh их передаст, профит.

Желающие смогут подпатчить свои терминалы, или работать в xterm без некоторых хоткеев.

@elfmz
Copy link
Owner

elfmz commented Oct 15, 2018

Сделал экспериментальную ветку backend-separation, с termina-able far2l. Запускать far2l --tty.
Забавно как легким движением руки фар превратился в мц :)
Никаких терминальных спецнаворотов пока не делал. Только базовые кнопкосочетания, и те еще местами глючат

@singalen
Copy link
Contributor

singalen commented Oct 15, 2018

Вау, запустился на маке! Только вначале отрисовывается в миниатюрном размере, а потом перерисовывается.
Открыл вьюером файл из архива, консоль не перерисовалась. Нажал Ctrl-L, перерисовалась.
Часто не перерисовывается после команд в консоли.
Мышь игнорирует.

@elfmz
Copy link
Owner

elfmz commented Oct 16, 2018

Глючный еще, да

@unxed
Copy link
Contributor Author

unxed commented Oct 16, 2018

Уиии, работает! Даже через обычный mint'овый терминал[+ssh] хоткеи пролезают, не обязательно через свой собственный. А как в итоге этого добились?

Да, и операции, требующие sudo, не работают - ну тут вроде бы понятно, некуда GUI-запрашивалку пароля выкидывать. Это ведь можно как-нибудь будет обойти в будущем, правда же? ;-)

Btw, оно уже сейчас работает лучше, чем виндовый far в wine с бэкендом на ncurses через ssh, например :)

UPD: Вставлять в редакторе по крайней мере по Ctrl+Shift+V получается, а вот скопировать оттуда ни по Ctrl+Ins, ни по Ctrl+C не выходит. При этом Ctrl+Ins очищает буфер обмена, но желаемое туда почему-то не кладёт. Хм, с другой стороны, а из терминала вообще возможен доступ к системному буферу обмена? Если нет, хорошо бы как-нибудь так сделать, чтобы хотя бы в пределах этого терминала копированием-вставкой можно было пользоваться. Ну как в mc с отдельным буфером его редактора, в общем.

UPD#2: Вылетает, если запускать в mate-terminal из .desktop-файла или, например, через mate-terminal -e "far2l --tty"

@elfmz
Copy link
Owner

elfmz commented Oct 16, 2018

Клипборда в консольной версии еще нет. Совсем: https://github.com/elfmz/far2l/blob/backend-separation/WinPort/src/Backend/TTY/TTYBackend.cpp#L333
План состоит в том чтобы сделать его расшаренным с хостом (через свой под-протокол). Либо чисто локальным, если работаем в обычном терминале.

@unxed
Copy link
Contributor Author

unxed commented Oct 16, 2018

Даже через обычный mint'овый терминал[+ssh] хоткеи пролезают, не обязательно через свой собственный. А как в итоге этого добились?

...и можно ли аналогичный подход перетащить в ncurses-бэкенд wineconsole, например (не то чтобы теперь, с полноценным портом far, была такая острая необходимость, но интересно же!). Впрочем, это уже наверное им тикет писать надо :)

И ещё интересно, если с винды с putty заходить, как с хоткеями будет? Винды под рукой нет, не проверить :( Или, например, со встроенного терминала WSL.

@elfmz
Copy link
Owner

elfmz commented Oct 16, 2018

Даже через обычный mint'овый терминал[+ssh] хоткеи пролезают, не обязательно через свой собственный. А как в итоге этого добились?

Чего именно добился? Реализовал примерно те сочетания, что тут описаны: http://www.manmrk.net/tutorials/ISPF/XE/xehelp/html/HID00000579.htm
они вроде как стандартные, хотя есть какие то непонятки, например внутри виндовой putty которая залигинена в линух часть сочетаний приходит какието нестандартные. Shift-F1/Shift-F2 например - вместо них в putty приходит то что приходит на F11/F12

Ну + всякие Ctrl+O работают через это: https://ru.wikipedia.org/wiki/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E%D1%89%D0%B8%D0%B5_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B

@unxed
Copy link
Contributor Author

unxed commented Oct 16, 2018

Да, я про это, ага, спасибо за референс.

С putty - возможно, это решется какой-нибудь одной из тысячи настроек самой putty? Ну а если это действительно баг/некорректное поведение, можно, по идее, и в putty тикет запульнуть. Ну хотя бы чтоб сделали отключаемым галкой.

А встроенный терминал WSL ок хоткеи шлёт? Нет винды под рукой проверить(

UPD: Убунтовая putty тоже шлёт F11/12 вместо Shift-F1/2. Возможно, отгадка где-то в коде самой putty?

UPD#2: Alt+F1/F2 проходят через неё как [11~ и [12~, Shift+F4 - как [26~ и только после двух последующих нажатий клавиш. Родной mint terminal все эти сочетания с far2l обрабатывает нормально. Т.е. дело не в ОС, капризничает именно putty.

@unxed
Copy link
Contributor Author

unxed commented Oct 16, 2018

Странный баг: через far2l в tty не пролезает нажатие enter, когда, например, оттуда пытаешься ssh-клиент запустить (во всех терминалах: и в своём, и в системном, и в putty). И ещё far2l tty в терминале far2l wx коверкает цвет в верхних 1-3 строках, в системном и putty ок.

@unxed
Copy link
Contributor Author

unxed commented Oct 29, 2018

Net-box! Net-box!

Вроде же решили, что до тех пор, пока некому следить за актуальностью ssh-библиотек и всяких настроек cipher suites, это не слишком безопасно? Хотя, впрочем, правильно настроенный сервер просто не даст подключиться по небезопасному протоколу. Но там ещё асинхронный сетевой api, который нужно дополнительно перетаскивать из wine в WinPort.

А gvfs с dbus - ну, нужно ещё пару десятков мегов библиотек, о ужас, придётся платить за место на сервере на четыре копейки в месяц больше :) Даже размер wx с зависимостями не особенно парит, в общем-то. 300 Mb за удобство, ну ок - в оперативу всё это добро грузиться всё равно не будет, а место на дисках нынче дешевое.

По теме: --tty иногда сегфолтится в редакторе, пока не отловил последовательность действий для гарантированного воспроизведения. Ctrl+C/V/X в редакторе не работают для строчек короче трёх знаков. Ctrl+C/V/X в редакторе в какой-то момент иногда вообще перестают работать (возможно, как-то связано с предыдущим багом). Ctrl+Shift+стрелки пролезают через xterm, но не пролезают через терминал far2l. И ещё через терминал far2l не пролезает больше 8 цветов во вложенных far2l. Ну и хоткеи некоторые, понятно, не работают, но это в основном решается макросами. В остальном вроде бы юзабельно, ощущения непередаваемые, конечно.

@elfmz
Copy link
Owner

elfmz commented Oct 29, 2018

который нужно дополнительно перетаскивать из wine в WinPort.

Немного офтопа, но на всякий случай уточню, что в WinPort от wine'а только работа с кодировками и временем (таймзоны всякие) и все. Реализация остальных АПИ - работы с файлами реестром и прочая мелочь - полностью самописная.

@elfmz
Copy link
Owner

elfmz commented Oct 29, 2018

Про netbox, мне кажется проще внедрить поддержку sftp в олдскульный ftp клиент, на базе libssh, нежели реализовывать что нужно нетбоксу..

@singalen
Copy link
Contributor

singalen commented Oct 29, 2018

  • dbus - не только библиотеки, но и демон.
  • установить (работающий) far2l простым копированием уже не удастся.
  • не все могут или хотят ставить дополнительные зависимости. Зависимости вообще такая штука - никогда не знаешь, когда они вылезут боком.
  • не все работают с серверами на Амазоне. Я, например, работаю с довольно слабыми устройствами с очень ограниченным диском, dbus под них вообще никто не собирает.

@unxed
Copy link
Contributor Author

unxed commented Oct 29, 2018

@singalen Логично, я даже ловил себя пару раз на мыслях типа "жалко, что под openwrt нету". А ведь без wx и dbus можно было бы и на dir-300 гонять, наверное. Но если говорить о слабом железе, раз уж под openwrt sshfs работает даже на dir-300, самое простое и очевидное решение - сделать вокруг него такую же обёртку, как far-gvfs. @elfmz, кстати, sshfs умеет отключать кэширование же, как своё (-o cache=no), так и page cache ядра (-o direct_io). Ну да, фокусы вроде многопоточной закачки так не сделаешь, ну так а настолько ли оно надо, тем более, на слабых устройствах?

Занятно, что скорость закачки по gvfs каждый раз нового архива с одного и того же сервера совпадает для gvfs и sshfs-с-отключенными-кэшами, и в два раза выше для sshfs с настройками по умолчанию. При повторной закачке уже скачанный кусок из sshfs-с-кэшем прилетает мгновенно, а по gvfs и sshfs-без-кэша тянется заново, из чего можно заключить, что gvfs не больно-то что-то кэширует. По крайней мере, тот gvfs, что в последнем Mint'е. Да и логично, на самом деле - кому нужна скорость, могут использовать и что-нибудь другое, а от остальных постоянные жалобы из-за глюков кэша разработчикам нафиг не нужны.

@singalen
Copy link
Contributor

Мне кажется, делать ещё одну обёртку - это уже немного сову на глобус.
Впрочем, решать всё равно тому, кто собственно делает работу :)

@unxed
Copy link
Contributor Author

unxed commented Oct 29, 2018

решать всё равно тому, кто собственно делает

Разумеется :) Хотя я мог бы для смеху предложить приделать к far-gvfs поддержку разных бекендов монтирования, собираемых опционально.

@unxed
Copy link
Contributor Author

unxed commented Oct 30, 2018

Коллега утверждает, что в xshell Alt+F1 работает, "если подкрутить". Возможно, и другие хоткеи тоже.

@unxed
Copy link
Contributor Author

unxed commented Nov 9, 2018

Эксперименты показали, что, как минимум, putty-x шлёт большинство нужных хоткеев. Но шлёт их странно.

Alt+F1:
gnome-terminal 1b 5b 31 3b 33 50
far2l_vt 1b 4f 33 50
putty-x (default mode) 1b 1b 5b 31 31 7e
putty-x (xterm mode) 1b 1b 4f 50

Shift+F4:
gnome-terminal 1b 5b 31 3b 32 53
far2l_vt 1b 4f 32 53
putty-x (default mode) 1b 5b 32 36 7e
putty-x (xterm mode) 1b 4f 31 3b 32 53

И т.д.

Т.е. то, что шлёт putty-x, наверное, можно как-то парсить, и иметь, наконец, ssh с нормальным интерфейсом с винды :)

Тестировал с помощью

{
  stty  raw min 1 time 20 -echo
  dd count=1 2> /dev/null | od -vAn -tx1
  stty sane
}

Экзешник putty-x для опытов, кому лень искать:
https://github.com/adizero/putty-X/raw/master/putty_20002532.exe

@elfmz
Copy link
Owner

elfmz commented Dec 5, 2018

нус, теперь если запустить far2l wx в нем ssh кудато, а там far2l --tty ,то они должны снюхаться и внутренний будет работать как wx'овый (ну почти, еще есть например непонятный баг с поведением alt+f9 в такой конфигурацаа)

@unxed
Copy link
Contributor Author

unxed commented Dec 9, 2018

@elfmz фича огонь, большое человеческое спасибо!

Господи, сколько же лет я мечтал о текстовом буфере обмена, пролезающем через ssh (нет, с vnc ощущения не те).

Возможно, имеет смысл списаться с автором wal terminal и обсудить унификацию расширений терминала, чтобы и с винды всеми этими вкусностями пользоваться можно было? Похоже, он более договороспособен, чем авторский коллектив putty, например. walcommander.info @ gmail.com

А то получается немного так:
standards

UPD: Интересно, а реально ли в апстримовый фар запилить такой специальный патчик, чтобы при запуске в нём какого-нибудь, скажем, cygwin'ового ssh хоткеи и clipboard тоже нормально в far2l пробрасывались? ;)

@singalen
Copy link
Contributor

Ещё пара соображений насчёт набора кодов:

  • приложению бывает нужно запросить состояние клавиши - "нажата/отжата";
  • чтобы не запрашивать постоянно и не жрать процессор, поможет ещё один код: "терминал получил/потерял фокус". Возможно, такой уже существует.
    Для случаев, как в [Mac] Far's child bash doesn't release SD card, even if it's not in the directory. #489: переключились из far по Alt-Tab, прижали Ctrl, вернулись.

@unxed
Copy link
Contributor Author

unxed commented Dec 4, 2019

Через putty в редакторе не работают комбинации с shift ctrl и alt
к примеру выделение shift+стрелки
это как то можно забороть ?

@medianet заборол вот :)
https://github.com/unxed/putty4far2l

@unxed
Copy link
Contributor Author

unxed commented Dec 6, 2019

https://github.com/unxed/putty4far2l

Появилась синхронизация буфера обмена :)

@elfmz
Copy link
Owner

elfmz commented Dec 6, 2019

фигасе)

@unxed
Copy link
Contributor Author

unxed commented Dec 15, 2019

Вообще занятно, конечно. Три года назад казалось, что существующие терминалки никогда не позволят полноценный tty backend сделать, а теперь понемножку выясняется, что и все нужные сочетания клавиш поддерживаются (ну ладно, putty исключение - ну так я решил этот вопрос уже - кстати, забавно, теперь, если с винды ходишь с putty4far2l и там внутри far2l гоняешь, он служит транслятором, т.е. любые другие консольные аппы внутри него нормально кнопки видеть начинают), и для буфера обмена ESC-последовательность существует (кстати, не под впечатлением ли от far2l её принялись всюду предлагать массово? по датам похоже), и даже с ESC что-то придумать можно (mc'шный хак этот с таймаутом).

@vasylnakvasiuk
Copy link

Ребят, подскажите текущую ситуацию по проекту – как-то можно запустить его в iterm2 например, чтобы работал как mc?

@singalen
Copy link
Contributor

singalen commented Jan 7, 2020

Можно, и из терминала, и без.

@vasylnakvasiuk
Copy link

Можно, и из терминала, и без.

Подскажите, с какими доп параметрами запускать, чтобы он был внутри терминала, а не как отдельное окно/приложение?

@singalen
Copy link
Contributor

singalen commented Jan 7, 2020

--tty. Ещё работает /?. --help не работает, кстати.

@vasylnakvasiuk
Copy link

--tty. Ещё работает /?. --help не работает, кстати.

--tty не работает.
--help тоже.

@singalen
Copy link
Contributor

singalen commented Jan 7, 2020

А у меня работает, именно в iTerm.
Нужен какой-нибудь форум, для вот такого неструктурированного общения.

@unxed
Copy link
Contributor Author

unxed commented Aug 6, 2020

unxed@nbs ~ $ far2l --help
FAR2L - oldschool file manager, with built-in terminal and other usefullness'es
Usage: far2l [switches] [-cd apath [-cd ppath]]

where
  apath - path to a folder (or a file or an archive or command with prefix)
          for the active panel
  ppath - path to a folder (or a file or an archive or command with prefix)
          for the passive panel

The following switches may be used in the command line:

 -h   This help.
 -a   Disable display of characters with codes 0 - 31 and 255.
 -ag  Disable display of pseudographics characters.
 -co  Forces FAR to load plugins from the cache only.
 -cd <path> Change panel's directory to specified path.
 -m   Do not load macros.
 -ma  Do not execute auto run macros.
 -p[<path>]
      Search for "common" plugins in the directory, specified by <path>.
 -u <username>
      Allows to have separate settings for different users.
 -v <filename>
      View the specified file.
 -v - command line
      Executes given command line and opens viewer with its output.
 -e[<line>[:<pos>]] <filename>
      Edit the specified file with optional cursor position specification.
 -e[<line>[:<pos>]] - command line
      Executes given command line and opens editor with its output.

FAR2L backend-specific options:
	--tty - force using TTY backend only (disable GUI/TTY autodetection)
	--notty - don't fallback to TTY backend if GUI backend failed
	--nodetect - don't detect if TTY backend supports FAR2L extensions
	--mortal - terminate instead of going to background on getting SIGHUP (default if in Linux TTY)
	--immortal - go to background instead of terminating on getting SIGHUP (default if not in Linux TTY)
	--ee or --ee=N - ESC expiration in msec (100 if unspecified) to avoid need for double ESC presses (valid only in TTY mode wihout FAR2L extensions)
	--primary-selection - use PRIMARY selection instead of CLIPBOARD X11 selection

@unxed
Copy link
Contributor Author

unxed commented Aug 9, 2020

Пробую документировать far2l terminal extensions, чтоб и в другом софте их можно было использовать вот:
cyd01/KiTTY#74 (comment)

@unxed
Copy link
Contributor Author

unxed commented Oct 12, 2020

А не написать ли нам про far2l extensions подробнее в readme и не закрыть ли этот тикет?

@elfmz
Copy link
Owner

elfmz commented Dec 26, 2020

в хелпе написано, закрываю..

@elfmz elfmz closed this as completed Dec 26, 2020
@unxed
Copy link
Contributor Author

unxed commented Mar 30, 2023

А что касается терминала + фар.. правильным решением в таком направлении мне видится расширение стандартного ANSI терминала (а он более-менее расширябелен) доп фичами, которые бы позволили реализовать живой интерфейс для людей, а не true-color телетайп. То есть - передачу состояния клавиш-модификаторов и прочих кнопок в режиме нажато-отжато и с возможностью отличить левй/правый модификаторы, знать состояние num/scroll/lock-ов и т.п..
Далее берется вменяемый терминал, допиливается до поддержки таких расширений. Берется FAR переделывается под терминал и юзает такие расширения при возможности.. Еще можно взять MC :), и тоже допилить под такой терминал.

Появились такие терминалы наконец :) Нам, по большому счёту, что нужно? Поддержка OSC 52 для буфера обмена и продвинутая поддержка клавиатуры (с модификаторами, keyup/keydown и т.д.). Такое уже умеют:
iTerm2 (Mac)
kovidgoyal's kitty (Mac/BSD/Linux)
Windows Terminal (Windows)

Правда, клавиатурные протоколы у всех трёх свои, но все три поддерживают всё то, что нам нужно. Подробности тут: #1575

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants
@vasylnakvasiuk @singalen @medianet @JustAMan @unxed @lieff @elfmz and others