LINUX.ORG.RU

Возрождение Midnight Commander

 


0

0

24 ноября вышел релиз форка mc, разработка которого авторами была, судя по всему, прекращена.

Основные изменения релиза:

  • исправлена многолетняя проблема с Ctrl+O и "Интерпретатор занят выполнением команды",
  • улучшена работа с кодировками (так, кодировку редактируемого файла можно переключать и при однобайтной системной локали, и при UTF-8. Можно также указать кодировку имен файлов в панелях и конвертацию при копировании),
  • добавлена подсветка имен файлов по расширению, выделение пробелов и табуляций в mcedit,
  • быстрое переключение режимов отображения (показывать/не показывать скрытые файлы, расположить панели вертикально/горизонтально).
P.S. Будем надеяться, что проект обретет вторую жизнь.

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Ответ на: Re^15: Возрождение Midnight Commander от gaa

>> 7. Сделать fuse с кастомарной cd.

> Легко и быстро? И как же?

Cидит демон и читает stdin из пайпа в файловой системе. Права на пайп у юзера. Каждая строка --

ftp://user:password@example.com

file:/home/user/archive.tar.bz2

приводит к монтировке этого. Прямо внутри него -- конфиг что чем маунтить.

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

Re^17: Возрождение Midnight Commander

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

> Это именно тот вариант, который __я__ буду использовать.


Он не имеет никакого отношения к ФМ. Это очередная реализация dialog и несколько дополнительных независимых программ.

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

Re^17: Возрождение Midnight Commander

>> Эти куски кода там кривые, так что лучше писать свои.
> Ты их смотрел? Как такое можно криво написать???

Ты пробовал копировать в мц? Там индикатор приползает на 100% задолго до завершения копирования.

>> Я не представляю, как работать с этим в рамках консоли

> А я не понимаю где сложность.

Ну а как ты скажешь программе, чтобы она прекратила на консоль писать?

>> dialog умеет работать и в терминале.

> А __без__ терминала (я про консольный диалог, может ты про kdialog?)


В режиме ascii-графики.

>> Легко и быстро? И как же?

> Ну тут придется немного поработать, но не думаю будет больше 500 LOC.

Если не думать надо консистентностью cd .., тогда да.

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

Re^17: Возрождение Midnight Commander

> Cидит демон и читает stdin из пайпа в файловой системе. Права на пайп у юзера. Прямо внутри него -- конфиг что чем маунтить.

А как быть с фс, которые просят дополнительную инфу: логин/пароль или ещё что-нибудь?

gaa ★★
()
Ответ на: Re^17: Возрождение Midnight Commander от gaa

> Он не имеет никакого отношения к ФМ. Это очередная реализация dialog и несколько дополнительных независимых программ.

И? Он поэтому не нужен? Я уж приготовился всю ночь плакать :-)

Хочешь -- делай tk коммандер, но чтобы он

1. брал селекцию из переменной окружения или из файла, и при этом файл лочил

2. отдавал обратно селекцию

3. хранил всякие свои состояния в пер. окр. или файле, в том числе -- короткую строку "selected 3557 files: bla-bla-bla"

Никто тебя не заставляет ковыряться с приглашением шелла (это я сделаю) или со скриптованием терминального диалога (это я допилю видимо devix-овский код).

www_linux_org_ru ★★★★★
()
Ответ на: Re^17: Возрождение Midnight Commander от gaa

> А как быть с фс, которые просят дополнительную инфу: логин/пароль или ещё что-нибудь?

_уже_ писал. Изобрети куда класть пароли.

ftp://user:password@example.com

или так: (удобнее для зип архивов с паролем)

ftp://user@example.com password

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

> Никто тебя не заставляет ковыряться с приглашением шелла (это я сделаю) или со скриптованием терминального диалога (это я допилю видимо devix-овский код).

Я вообще про это все пишу, т.к. надо обсудить, сколько селекций надо делать.

www_linux_org_ru ★★★★★
()
Ответ на: Re^17: Возрождение Midnight Commander от gaa

> Если не думать надо консистентностью cd .., тогда да.

Ее вообще видимо надо обозвать по-другому, например to, и разрешить еще и переход на букмарки.

www_linux_org_ru ★★★★★
()
Ответ на: Re^17: Возрождение Midnight Commander от gaa

> Ты пробовал копировать в мц? Там индикатор приползает на 100% задолго до завершения копирования.

Не видел. Может, оно попадает в кэш и потом долго шуршиш диском?

> Ну а как ты скажешь программе, чтобы она прекратила на консоль писать?

Я точно не понмю, но ЕМНИП этот вопрос решен до нас с тобой. Прога может узнать о своей бэграундности и прекратить гадить на консоль.

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

Re^19: Возрождение Midnight Commander

>> Он не имеет никакого отношения к ФМ. Это очередная реализация dialog и несколько дополнительных независимых программ.
> И? Он поэтому не нужен? Я уж приготовился всю ночь плакать :-)

И потому это не фм, который мы тут обсуждаем.

> Хочешь -- делай tk коммандер, но чтобы он

А если я хочу сделать другой, ты мне запретишь? :)

Тут действительно из пожеланий ничего относящегося именно к коммандеру нет.

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

Re^19: Возрождение Midnight Commander

>> А как быть с фс, которые просят дополнительную инфу: логин/пароль или ещё что-нибудь?
> _уже_ писал. Изобрети куда класть пароли.


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

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

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

Re^19: Возрождение Midnight Commander

>> Ты пробовал копировать в мц? Там индикатор приползает на 100% задолго до завершения копирования.
> Не видел. Может, оно попадает в кэш и потом долго шуршиш диском?

Нет. Попробуй распакованные сорсы ядра скопировать -- увидишь.

>> Ну а как ты скажешь программе, чтобы она прекратила на консоль писать?

> Я точно не понмю, но ЕМНИП этот вопрос решен до нас с тобой. Прога может узнать о своей бэграундности и прекратить гадить на консоль.


А восстановит гадить при возвращении в foreground?

gaa ★★
()
Ответ на: Re^19: Возрождение Midnight Commander от gaa

> А если я хочу сделать другой, ты мне запретишь? :)

Мне не ясно, как ты сможешь соблюсти юникс-вей, если селекция не будет приниматься-отдаваться как аргумент в файле или перем. окружения. У тебя есть идеи?

www_linux_org_ru ★★★★★
()
Ответ на: Re^19: Возрождение Midnight Commander от gaa

> А восстановит гадить при возвращении в foreground?

Я так понимаю, раз в секунду надо пытаться гадить, получать SIGTTOU - background process attempting to write ("out") и снова ждать секунду. Но я не спец.

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

> Мне не ясно, как ты сможешь соблюсти юникс-вей, если селекция не будет приниматься-отдаваться как аргумент в файле или перем. окружения. У тебя есть идеи?

Юниксвей -- это не священная корова. Писать нечто, не соответствующее названию, ради абстрактно-сферической юниксвейности я не стану.

gaa ★★
()
Ответ на: Re^19: Возрождение Midnight Commander от gaa

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

Дешево и сердито:

1. Все, что надо спросить, обзовем "пароль".

2. Пароль будем спрашивать всегда и соглашаться с пустым паролем.

_______________

Но возможно стоит рассмотреть нетупого демона, который будет сидеть на сокете, а не на пайпе, и отвечать ok|fail|need_pw|need_bla_bla. На перле минимальный демон на сокете - 20 строк.

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

> Юниксвей -- это не священная корова. Писать нечто, не соответствующее названию, ради абстрактно-сферической юниксвейности я не стану.

Можешь вообще ничего не писать.

Юниксвейность тем и хороша, что можно к проге подключить несколько фронт-ендов:

1. для шелла даже без терминала

2. для шелла с терминалом ("голубые окошки")

3. Х-овый гуй

4. а может даже веб-интерфейс (ну а вдруг?)

А мне понравился диалог, я его обвешу персистентной селекцией, или даже напишу свою консольную файлселектилку в стиле less... если уже кто-то готовую не написал.

www_linux_org_ru ★★★★★
()
Ответ на: Re^15: Возрождение Midnight Commander от gaa

>Кстати, детачинг процесса копирования имеет смысл только в графическом режиме. Я не представляю, как работать с этим в рамках консоли

Нормально. В какой-нибудь "строке состояния" отображать.

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

>Кстати, детачинг процесса копирования имеет смысл только в графическом режиме. Я не представляю, как работать с этим в рамках консоли

>Нормально. В какой-нибудь "строке состояния" отображать.

1. Можно по SIGUSR1 выплевывать свое состояние в какой-нибудь пайп или файл. А шелл, показывая очередное свое приглашение, будет посылать этот сигнал, собирать состояние, и показывать индикаторы.

2. ЕМНИП можно каждую секунду менять свою командную строку, отображаемую ps, на "57% сopy bla-bla-bla"

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

>Оно переносимо будет?

Да.

AX ★★★★★
()
Ответ на: Re^19: Возрождение Midnight Commander от gaa

>> Хочешь -- делай tk коммандер, но чтобы он

> А если я хочу сделать другой, ты мне запретишь? :)

Если это будет именно Tk-коммандер, то вариант с Ck можно без особых усилий добавить - Ck-синтаксиз виджетов с Tk совпадает.

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

Re^21: Возрождение Midnight Commander

>>> Хочешь -- делай tk коммандер, но чтобы он

>> А если я хочу сделать другой, ты мне запретишь? :)


> Если это будет именно Tk-коммандер, то вариант с Ck можно без особых усилий добавить - Ck-синтаксиз виджетов с Tk совпадает.


На одних tk-виджетах далеко не уедешь. Если оно ещё и аналоги для виджетов хотя бы из tix предоставляет, тогда хорошо.

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

Re^21: Возрождение Midnight Commander

>> Юниксвей -- это не священная корова. Писать нечто, не соответствующее названию, ради абстрактно-сферической юниксвейности я не стану.

> Юниксвейность тем и хороша, что можно к проге подключить несколько фронт-ендов:


Блин, фм и есть этот самый фронтенд. писать фронтенды для фронтендов -- онанизм.

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

Re^18: Возрождение Midnight Commander

>>> Не хотелось бы, чтобы юзерские маунты в общесистемном /etc/mtab|/proc/mounts были видны
>>А без этого никак.

> mount -n ...


И городить свой mtab чтобы помнить, что куда смонтировал? Сомнительное удовольствие.

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

Re^19: Возрождение Midnight Commander

>>А как быть с фс, которые просят дополнительную инфу: логин/пароль или ещё что-нибудь?
> popup

из демона!?

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

Re^17: Возрождение Midnight Commander

>>Кстати, детачинг процесса копирования имеет смысл только в графическом режиме. Я не представляю, как работать с этим в рамках консоли

> Нормально. В какой-нибудь "строке состояния" отображать.


И где у баша строка состояния?

gaa ★★
()
Ответ на: Re^17: Возрождение Midnight Commander от gaa

>> popup

>из демона!?

Ачо? Демон спрашивает ФМ, который его запустил. SSH это умеет, в конце концов :)

> И где у баша строка состояния?

Именно у баша? PS1 и PS2 :)

Но вот у cp строки состояния нет.

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

> Если одна программа написана красиво, но не работает, а вторая - некошерно, но выполняет свою функцию, я выберу вторую программу. И буду абсолютно прав.

Теоретически мысль верная, но практического интереса не представляет. Поскольку в 99% случаев как раз красиво написанная программа работает НАДЁЖНЕЕ уродливо написанной. Собственно, это относится не только к программам, но и к другим продуктам инженерной мысли.

> Чувак, ты еще не нюхал пакет "Редактор и Ассемблер" для Радио-86РК. Там тоже "безменюшный" редактор. Но сделан он был для своих 4Кб не в пример удобнее и понятнее чем vi/vim.

Традиционнее - это да. Но он не создавался для пакетной обработки текстов, а также для работы по сети. Хотя для своего размера имел действительно потрясающую эргономику. Я на нём альтернативный драйвер ввода-вывода для "Партнёра" писал.

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

Re^19: Возрождение Midnight Commander

>>> popup
>>из демона!?

> Ачо? Демон спрашивает ФМ, который его запустил. SSH это умеет, в конце концов :)

Не распарсил, повтори.

>> И где у баша строка состояния?

> Именно у баша? PS1 и PS2 :)

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

> Но вот у cp строки состояния нет.

У cool_cp есть :)

gaa ★★
()
Ответ на: Re^19: Возрождение Midnight Commander от gaa

>> Ачо? Демон спрашивает ФМ, который его запустил. SSH это умеет, в конце концов :)

> Не распарсил, повтори.

Если демон запускается для конкретного экземпляра ФМ, то он может попросить этот экземпляр "запроси у пользователя логин и пароль". Примерно так делает SSH.

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

>это кем надо быть, чтобы выход на :wq или на :q! повесить.

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

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

Re^21: Возрождение Midnight Commander

> Если демон запускается для конкретного экземпляра ФМ, то он может попросить этот экземпляр "запроси у пользователя логин и пароль". Примерно так делает SSH.

Правильно, нагородим ещё дополнительные возможности общения фм и демона отмонтирования, чтобы жизнь мёдом не казалась, фигли! Вместо того, чтобы делать то же самое с другой стороны пайпа.

gaa ★★
()
Ответ на: Re^21: Возрождение Midnight Commander от gaa

>Правильно, нагородим ещё дополнительные возможности общения фм и демона отмонтирования, чтобы жизнь мёдом не казалась, фигли! Вместо того, чтобы делать то же самое с другой стороны пайпа.

А как без "общения" ты сообщишь демону: что и куда монтировать? Ну, или ФМ сам должен знать, что для монтирования может потребоваться пароль, сразу его запросить у пользователя и демону передавать уже информацию для монтирования с паролем.

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

Re^23: Возрождение Midnight Commander

>>Правильно, нагородим ещё дополнительные возможности общения фм и демона отмонтирования, чтобы жизнь мёдом не казалась, фигли! Вместо того, чтобы делать то же самое с другой стороны пайпа.

> А как без "общения" ты сообщишь демону: что и куда монтировать?


> Ну, или ФМ сам должен знать, что для монтирования может потребоваться пароль, сразу его запросить у пользователя и демону передавать уже информацию для монтирования с паролем.


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

gaa ★★
()
Ответ на: Re^23: Возрождение Midnight Commander от gaa

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

Да, ты прав, можно сделать просто:

1. Монтирование идет из умной команды cd в шелле и аналогичного скрипта в гуе. cd может запросить пароль или сказать "че-то не получилось" (лучше всего вызывать эту же самую cd из гуя, и она сама спросит через попап, а не чтение с консоли). Эта команда создает в ~/.fuse/all/ симлинки на примонтированные директории. Две команды подрались за точку монтирования -- это редкость и абсолютно ничего страшного (т.к. в названии точки монтирования есть вся инфа).

2. Маленький демон вообще ничего не читает и не пишет, а просто регулярно пытается отмонтировать все ФС из ~/.fuse/all/, что отмонтировалось -- то и хорошо. Отмонтировав, он удаляет симлинк.

_____________________

Неужели никто это не сделал? Я погуглил cd into archive и не нашел.

www_linux_org_ru ★★★★★
()
Ответ на: Re^23: Возрождение Midnight Commander от gaa

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

Вариант. Но чтоб список смонтированного в ФМ получить, наверное всё же придётся обращаться к демону?

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

Только сам Петька Нортортон к командеру никакого отношения не имел. Он тупо продал его а программка была написана неким John Socha

Dominus
()
Ответ на: Re^23: Возрождение Midnight Commander от gaa

> монтирование производить на стороне фм

И это уже просто другая задача :D Ты двигаешься в правильную сторону, может, ты даже сумеешь спроектировать ФМ без долгоживущего демона ;)

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

Re^25: Возрождение Midnight Commander

> Неужели никто это не сделал? Я погуглил cd into archive и не нашел.

google://avfs (от неё, собственно, fuse и отпочковалось) google://archivemount

В обоих случаях в точку монтирования попадает видоизменённый "/", в котором к каждому архиву создаётся каталог для лазания по нему. Разумеется, никакого кеширования архивного контента нет, всё пишется так, как будто смонтировано с -o sync

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

Re^25: Возрождение Midnight Commander

> Вариант. Но чтоб список смонтированного в ФМ получить, наверное всё же придётся обращаться к демону?

mount без параметров

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

Re^25: Возрождение Midnight Commander

>> монтирование производить на стороне фм
> И это уже просто другая задача :D Ты двигаешься в правильную сторону, может, ты даже сумеешь спроектировать ФМ без долгоживущего демона ;)


Да вот что-то не проектируется... Может всё же поможешь?

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

>
> Чувак, ты еще не нюхал пакет "Редактор и Ассемблер" для Радио-86РК.
>
Не припомню, чтобы мы пили брудершафт. Фамильярности не люблю.
>
> Редактор vi/vim - это принц уродов. Посему я, касательно редактора
> vi, не разделяю людей на осиливших и неосиливших. А веду градацию по
> признаку видит/невидит уродства vi. Кто уродства vi не видит, тот им
> и пользуется. А кто видит - ищет нормальные редакторы, подобные
> встроенному в FAR.
>
Правильнее будет разделить на системных администраторов, которым нужен полноэкранный редактор, совместимый с большинством терминалов, и обычных пользователей, которым такой редактор не нужен. Очевидно, Вы относитесь ко второй категории.

Что касается редакторов, а'ля "встроенный редактор FAR". Могу рассказать нормальную рабочую ситуацию тех времен: с домашнего компьютера под управлением Windows NT (я в те времена на unix-системы еще окончательно не перешел) заходим по ssh на некий сервер под управлением BSD/OS (машинка специально для этого была выделена), с него цепляемся на свою рабочую тачку (FreeBSD 3.x) в одной из защищенных подсеток, а оттуда -- на сервак под управлением Interactive Unix (позже SCO OpenServer) и правим конфиги редактором vi, который мало того, что идет в комплекте, еще и работает при такой схеме без дополнительных пинков. Попробуйте реализовать подобную связку, используя "удобные" редакторы. Нет можно конечно трахаться с кучей настроек. А можно просто взять vi и не заморачиваться.

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

>
> Я за простоту, аля mcedit, но справедливости ради скажу - vi писался с целью максимальной совместимости с разными терминалами.
>
Боюсь, оппоненты, не в курсе существования разных терминалов. Нынче терминалы делят, на консоль и графический )

sabbakka ★★
()
Ответ на: Re^25: Возрождение Midnight Commander от gaa

> Да вот что-то не проектируется... Может всё же поможешь?

По отсуствию демона я могу только повторить: монтированием (и запросом логинов/паролей) занимается сам ФМ; если при выходе остались занятые FUSE-ФС, ФМ запрашивает пользователя, оставить их смонтированными после выхода или отменить выход (было бы удобно предъявлять список программ, использующих эти ФС). Если FUSE поддерживает umount -l, можно при выходе вызывать его.

А вообще, FUSE - это круто и всё такое, но я сильно подозреваю, что написать модуль VFS для поддержки какого-нибудь формата в текущем MC проще, чем написать модуль для FUSE.

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