-
Notifications
You must be signed in to change notification settings - Fork 174
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
Comments
есть ещё и мобильный инет, который много где до сих пор возможен только по 2g. и ещё множество кейсов, где скорость канала мизерная, а удобное удаленное администрирование жизненно необходимо. с другой стороны, та графика, что нужна far2l, должна просто изумительно паковаться. интересно было бы увидеть замеры полосы, которую занимает xrdp в far в фулскрине и ssh с mc на тот же размер экрана. upd: попробовал так делать с vnc в качестве "poor". это божественно! спасибо вам большое! upd 2: правда, почему-то shift+f8 не пролезают. shift отдельно вроде бы видит. сходу решение выгуглить не смог. mint mate, remmina<->xvnc. |
Дык это.. макросами же можно продублировать хоткеи как угодно. |
А макросы можно вешать на двойные и тройные нажатия? Far так умеет? Терминал было бы круто, да. Но уж больно масштабный проект. Не из пушки ли это по воробьям для простой задачи "протащить far через ssh с user experience по крайней мере не хуже mc"? Опять же, можно пока сделать какое-то минимально работающее решение, а когда такой терминал появится (если нет желания пилить его самому) - добавить ещё один бэкенд. |
http://invisible-island.net/ncurses/ncurses.faq.html#modified_keys
В принципе, решение, которое будет работать хотя бы в [gnome|mate]-terminal и konsole, выглядит вполне неплохим. Насколько я понимаю, libtickit/libtermkey упомянутые workaround'ы и используют. |
Скачал libtermkey, собрал (на свежих минт-убунту надо сделать "sudo apt install libtool-bin ncurses-dev"), погонял демки. Оно действительно видит <modifier>+<f*> в терминале. И оно таки работает через ssh. Но в mate terminal и far2l terminal оно показывает разные keycodes. Shift-Ins перехватывают и mate terminal, и far2l terminal. Оно же на github. |
@volth, вот, я вчера, засыпая, думал ту же самую идею. если активно пользуешься mc - то он у тебя стоит и на клиенте, и на сервере. также и с far2l будет, по всей видимости. так что гонять far2l через терминал far2l - выглядит очень симпатичным решением. и не надо будет кодить поддержку всего зоопарка терминалов, если заранее будет заявлено, что работает только так. в конце концов, нам шашечки или ехать? :) одно ограничение - при такой схеме клиенту обязательно нужны иксы. впрочем, я чёт не очень часто вижу безиксовые десктопы. разве что на андроиде, но наверняка и там wx собрать можно. да, по поводу отсутствия плагинов-аналогов hiew сам тоже недавно горевал. |
Поддержка прекрасного предложения http://www.leonerd.org.uk/hacks/fixterms/ для iTerm есть, в том или ином виде: Для других эмуляторов, надеюсь, тоже можно (или можно будет) настроить. |
Мне вот какая мысль в голову пришла.
|
Эти секретные последовательности даже выдумывать не надо, вот это предложение fixterms уже их описывает. + это будет совместимо с iTerm и ещё какими терминалами, в которых это можно настроить. + это и есть Абсолютная Консоль :) AFAIK, вопрос переменной ширины символов тоже уже решён в распространённых терминалах: символ имеет высоту 1 и ширину или 1, или 2 знакоместа (после композиции), точка. |
ну может я не внимательно прочитал, но не понял как они предлагаю отличать keydown и keyup events |
...причем не только для кнопок, но и для самих control keys. |
Аа, это я невнимательно читал. |
Дада, с этими стандартами всегда так: https://xkcd.ru/i/927_v4.png |
Там лучшая шутка обычно в тултипе к картинке :) Ох-ох. И правда, нет такого терминала, даже черновика 8( Ну, кто-то должен быть первым :) И с самим Полом Эвансом можно связаться. edit: написал в G+. |
На Пола надейся, а сам не плошай... Варианты кодов для keypress/keyrelease:
Такой широкий выбор, прям глаза разбегаются. |
Я в курсе про APC. Таким образом far2l /e:file.txt |
Понятно, значит, я только для себя открыл Америку. Ну, тоже полезно :D Вот и свой 150-й стандарт терминала уже есть. Коды keyup/keydown в него прекрасно лягут. Желающие смогут подпатчить свои терминалы, или работать в xterm без некоторых хоткеев. |
Сделал экспериментальную ветку backend-separation, с termina-able far2l. Запускать far2l --tty. |
Вау, запустился на маке! Только вначале отрисовывается в миниатюрном размере, а потом перерисовывается. |
Глючный еще, да |
Уиии, работает! Даже через обычный 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-файла или, например, через |
Клипборда в консольной версии еще нет. Совсем: https://github.com/elfmz/far2l/blob/backend-separation/WinPort/src/Backend/TTY/TTYBackend.cpp#L333 |
...и можно ли аналогичный подход перетащить в ncurses-бэкенд wineconsole, например (не то чтобы теперь, с полноценным портом far, была такая острая необходимость, но интересно же!). Впрочем, это уже наверное им тикет писать надо :) И ещё интересно, если с винды с putty заходить, как с хоткеями будет? Винды под рукой нет, не проверить :( Или, например, со встроенного терминала WSL. |
Чего именно добился? Реализовал примерно те сочетания, что тут описаны: http://www.manmrk.net/tutorials/ISPF/XE/xehelp/html/HID00000579.htm Ну + всякие 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 |
Да, я про это, ага, спасибо за референс. С 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. |
Странный баг: через far2l в tty не пролезает нажатие enter, когда, например, оттуда пытаешься ssh-клиент запустить (во всех терминалах: и в своём, и в системном, и в putty). И ещё far2l tty в терминале far2l wx коверкает цвет в верхних 1-3 строках, в системном и putty ок. |
Немного офтопа, но на всякий случай уточню, что в WinPort от wine'а только работа с кодировками и временем (таймзоны всякие) и все. Реализация остальных АПИ - работы с файлами реестром и прочая мелочь - полностью самописная. |
Про netbox, мне кажется проще внедрить поддержку sftp в олдскульный ftp клиент, на базе libssh, нежели реализовывать что нужно нетбоксу.. |
|
@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'е. Да и логично, на самом деле - кому нужна скорость, могут использовать и что-нибудь другое, а от остальных постоянные жалобы из-за глюков кэша разработчикам нафиг не нужны. |
Мне кажется, делать ещё одну обёртку - это уже немного сову на глобус. |
Разумеется :) Хотя я мог бы для смеху предложить приделать к far-gvfs поддержку разных бекендов монтирования, собираемых опционально. |
Коллега утверждает, что в xshell Alt+F1 работает, "если подкрутить". Возможно, и другие хоткеи тоже. |
Эксперименты показали, что, как минимум, putty-x шлёт большинство нужных хоткеев. Но шлёт их странно. Alt+F1: Shift+F4: И т.д. Т.е. то, что шлёт putty-x, наверное, можно как-то парсить, и иметь, наконец, ssh с нормальным интерфейсом с винды :) Тестировал с помощью
Экзешник putty-x для опытов, кому лень искать: |
нус, теперь если запустить far2l wx в нем ssh кудато, а там far2l --tty ,то они должны снюхаться и внутренний будет работать как wx'овый (ну почти, еще есть например непонятный баг с поведением alt+f9 в такой конфигурацаа) |
@elfmz фича огонь, большое человеческое спасибо! Господи, сколько же лет я мечтал о текстовом буфере обмена, пролезающем через ssh (нет, с vnc ощущения не те). Возможно, имеет смысл списаться с автором wal terminal и обсудить унификацию расширений терминала, чтобы и с винды всеми этими вкусностями пользоваться можно было? Похоже, он более договороспособен, чем авторский коллектив putty, например. walcommander.info @ gmail.com UPD: Интересно, а реально ли в апстримовый фар запилить такой специальный патчик, чтобы при запуске в нём какого-нибудь, скажем, cygwin'ового ssh хоткеи и clipboard тоже нормально в far2l пробрасывались? ;) |
Ещё пара соображений насчёт набора кодов:
|
@medianet заборол вот :) |
Появилась синхронизация буфера обмена :) |
фигасе) |
Вообще занятно, конечно. Три года назад казалось, что существующие терминалки никогда не позволят полноценный tty backend сделать, а теперь понемножку выясняется, что и все нужные сочетания клавиш поддерживаются (ну ладно, putty исключение - ну так я решил этот вопрос уже - кстати, забавно, теперь, если с винды ходишь с putty4far2l и там внутри far2l гоняешь, он служит транслятором, т.е. любые другие консольные аппы внутри него нормально кнопки видеть начинают), и для буфера обмена ESC-последовательность существует (кстати, не под впечатлением ли от far2l её принялись всюду предлагать массово? по датам похоже), и даже с ESC что-то придумать можно (mc'шный хак этот с таймаутом). |
Ребят, подскажите текущую ситуацию по проекту – как-то можно запустить его в iterm2 например, чтобы работал как mc? |
Можно, и из терминала, и без. |
Подскажите, с какими доп параметрами запускать, чтобы он был внутри терминала, а не как отдельное окно/приложение? |
|
|
А у меня работает, именно в iTerm. |
|
Пробую документировать far2l terminal extensions, чтоб и в другом софте их можно было использовать вот: |
А не написать ли нам про far2l extensions подробнее в readme и не закрыть ли этот тикет? |
в хелпе написано, закрываю.. |
Появились такие терминалы наконец :) Нам, по большому счёту, что нужно? Поддержка OSC 52 для буфера обмена и продвинутая поддержка клавиатуры (с модификаторами, keyup/keydown и т.д.). Такое уже умеют: Правда, клавиатурные протоколы у всех трёх свои, но все три поддерживают всё то, что нам нужно. Подробности тут: #1575 |
А давайте-ка сделаем про это отдельный тикет. |
Отсюда.
Мне в голову пришла одна идея.
В чём, собственно, основная проблема засовывания фара в терминал? Проблема в том, как выполнять действия, назначенные на 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, а любую не-цифробуквенную клавишу, которая пролезет в терминал.
Плюсы:
Минусы:
Альтернативный вариант: использовать эту либу.
Учитывая её возраст, вероятно, её придётся для этого форкнуть. Если либа в принципе юзабельная, возможно, это будет приемлимой стартовой точкой.
The text was updated successfully, but these errors were encountered: