LINUX.ORG.RU

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

 


0

0

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

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

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

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

★★★★★

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

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

>> Мешает предложенный тобой file.tgz:/path.to.subfile
> Это предложено для отображения пользователю. Внутренние форматы - дело твое, они могут быть сколь угодно структурированными. И уж точно они не обязаны быть текстовыми строками.


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

Хотя, как вариант, можно создавать .desktop-файл с командой вызова hsfm --goto=...

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

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

>> А кто будет объяснять ей же о проблемах с '/\/\илашка'?
> Щас пошел в конк и переименовал каталог в /\/\илашка. Результат проверил из шелла. Все правильно.


У меня не создался. У меня какой-то неправильный конк?

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

> Это повлияет на то, как будет записано пресловутое cp $o destdir

Я таки склонен отказаться от такой записи. Пусть будет

copy_to /dest/dir/

или

cpt /dest/dir/

Оно будет:

1. лезть в переменную окруженя "о" или в файл ~/.Ъcommander/o, или даже в иксовый буфер обмена

2. разбирать ее

3. показывать прогрессбар

> man xargs и поймёшь, где ты ошибся.

У xargs возможен *очень* простой формат -- разделение строк бинарными нулями. _______________________________________

В переменную окружения можно засунуть результат диалога. Вот пример, как туда засунуть текущий каталог:

bind -x '"\C-o"':"o=\"`ls`\"; export o"

и после этого нажимаем ctrl-o и смотрим окружение.

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

> Мне хочется отдавать эту строку пользователю в человекочитабельном виде. Чтоб он мог записать её в блокнотик и потом набрать и попасть туда же. ~/.fuse/ftp/user@exaple.com/path/on/ftp/to/file.txt

Пароль в строке адреса лучше не хранить, а спрашивать.

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

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

~/.fuse/ftp/user@exaple.com/path/on/ftp/to/file.txt

~/.fuse/tbz/path/to/file.tbz/some/file.txt

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

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

>> man xargs и поймёшь, где ты ошибся.
> У xargs возможен *очень* простой формат -- разделение строк бинарными нулями.

Это не спасёт от ограничения на длину аргументов, про которое ты говорил.

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

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

>> У меня не создался. У меня какой-то неправильный конк?
> У меня konqueror 4:3.5.9.dfsg.1-2+b1


4:3.5.9.dfsg.1-5 не создаёт. Интересное кино :)

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

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

> Пароль в строке адреса лучше не хранить, а спрашивать.
Разумеется.

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

> ~/.fuse/ftp/user@exaple.com/path/on/ftp/to/file.txt

> ~/.fuse/tbz/path/to/file.tbz/some/file.txt


И через месяц активного брожения по архивам у меня закончатся иноды в /home :)

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

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

>>>>> Я часть уже озвучил: в какой момент должна освобождаться vfs, например?
>>>> После ухода с панели и конфигурируемого тайм-аута

>>> А если я оттуда взялся смотреть фильм?

>> Не уходи с панели. Да и по-любому FUSE откажется отмонтироваться, если у тебя там открыт файл.

> То есть надо ждать, пока фс не освободится, так?


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

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

>> То есть надо ждать, пока фс не освободится, так?

> Я всё-таки хотел бы услышать предложения на счёт того, что делать в данной ситуации.

Собственно, у тебя и выхода-то другого нет, кроме "сборки мусора" - с некоторым интервалом проверять все еще смонтированные ФС и демонтировать неиспользуемые.

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

>>>>> Я часть уже озвучил: в какой момент должна освобождаться vfs, например?

>>>> После ухода с панели и конфигурируемого тайм-аута


>>> А если я оттуда взялся смотреть фильм?


>> Не уходи с панели. Да и по-любому FUSE откажется отмонтироваться, если у тебя там открыт файл.


> То есть надо ждать, пока фс не освободится, так?


1. Панель здесь вообще не при чем. Нужна кастомарная cd для шелла.

~/ $ ls -l

-rw-r--r-- 1 user user 88011 2008-07-26 17:41 ov51x-jpeg-1.5.8.tar.gz

~/ $ cd ov51x-jpeg-1.5.8.tar.gz

~/.fuse/tar.gz/home/user/ov51x-jpeg-1.5.8.tar.gz/ $ ls -l

< ... содержимое архива ... >

2. По таймауту пытаемся отмонтировать. Если получается -- туда ей и дорога.

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

>И через месяц активного брожения по архивам у меня закончатся иноды в /home :)

Не надо использовать FS из прошлого века, у которой колисчтво инодов прибито гвоздями при форматировании:)

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

>там опции нужны что-то вроде ls * | xargs -n 1 move_to /bla-bla/

ls * | xargs mv \{} /bla-bla/

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

> У меня не создался. У меня какой-то неправильный конк?

У меня тоже не создается, а *переименовывается* как я раньше и написал.

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

> Сейчас 2008 год, писать под терминал вообще нецелесообразно.

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

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

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

> там опции нужны что-то вроде ls * | xargs -n 1 move_to /bla-bla/

Ну вот разве что с -n

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

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

>>И через месяц активного брожения по архивам у меня закончатся иноды в /home :)

> Не надо использовать FS из прошлого века, у которой колисчтво инодов прибито гвоздями при форматировании:)


Это не решает проблемы в любом случае. Ну не иноды у меня кончатся, а место -- какая в попу разница

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

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

>>> То есть надо ждать, пока фс не освободится, так?
>> Я всё-таки хотел бы услышать предложения на счёт того, что делать в данной ситуации.

> Собственно, у тебя и выхода-то другого нет, кроме "сборки мусора" - с некоторым интервалом проверять все еще смонтированные ФС и демонтировать неиспользуемые.


То есть заводить демон, который будет мониторить ФС и пытаться их отмонтировать. И ещё неплохо бы у него спросить список сейчас подмонтированных фс.

Что-то он больно уж hal напоминает. Но это не хал, т.к. последний не умеет отмонтировать по таймауту.

То есть без привязки к халу и ещё одному собственному демону никак?

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

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

>>Я всё-таки хотел бы услышать предложения на счёт того, что делать в данной ситуации.

> посмотреть как это сделано в submountd


там тот же таймаут

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

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

> 1. Панель здесь вообще не при чем. Нужна кастомарная cd для шелла.

> ~/ $ ls -l

> -rw-r--r-- 1 user user 88011 2008-07-26 17:41 ov51x-jpeg-1.5.8.tar.gz

> ~/ $ cd ov51x-jpeg-1.5.8.tar.gz

> ~/.fuse/tar.gz/home/user/ov51x-jpeg-1.5.8.tar.gz/ $ ls -l

> < ... содержимое архива ... >


Плоховатенько: cd .. будет работать не так, как ожидается.

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

> То есть заводить демон, который будет мониторить ФС и пытаться их отмонтировать.

"Демон" - это слишком громкий термин. Это не обязана даже быть отдельная нить.

> И ещё неплохо бы у него спросить список сейчас подмонтированных фс.

Зачем? Это ФС, смонтированные _тобой_, ты по-любому должен знать их список.

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

>"Демон" - это слишком громкий термин. Это не обязана даже быть отдельная нить.

Обязательно. Этот демон должен жить после закрытия ФМ до тех пор, пока освободится последний контролируемый им mount.

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

> Плоховатенько: cd .. будет работать не так, как ожидается.

1. А что с симлинками? Там вроде то же плоховатенько.

2. Отнюдь! Ведь это кастомарная цд. Она знает, что мы внутри архива по префиксу ~/.fuse/tar.gz/

А вот куда выходить вверх из ~/.fuse/ftp/user@example.com/ -- наверно, в ~/.fuse/ftp/, чтобы можно было перезайти в другой фтп, недавно использовавшийся? или в домашний каталог?

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

>> "Демон" - это слишком громкий термин. Это не обязана даже быть отдельная нить.

> Обязательно. Этот демон должен жить после закрытия ФМ до тех пор, пока освободится последний контролируемый им mount.

Если ты закрыл ФМ и проигнорировал его предупреждение о незакрытых файлах на VFS - значит, ты взял отвественность за демонтирование на себя. Иначе можно додуматься и до запуска специальной службы.

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

>Иначе можно додуматься и до запуска специальной службы.

ФМ и буде запускать эту службу (если она ещё не запущена предидущим экземпляром ФМ), per user.

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

Это значит, что если ты опять запустишь ФМ, ему придётся выяснять: какие псевдо-ФС остались примотированны и не пытаться примонтировать их снова.

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

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

>> То есть заводить демон, который будет мониторить ФС и пытаться их отмонтировать.
> "Демон" - это слишком громкий термин. Это не обязана даже быть отдельная нить.


>> И ещё неплохо бы у него спросить список сейчас подмонтированных фс.

> Зачем? Это ФС, смонтированные _тобой_, ты по-любому должен знать их список.


Я полагаю, что это дело должно работать и после закрытися панелек. См. пример с фильмом.

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

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

Угу. А ещё это должно работать после ПОВТОРНОГО открытия "панелек":)

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

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

>> Плоховатенько: cd .. будет работать не так, как ожидается.

> 1. А что с симлинками? Там вроде то же плоховатенько.

Я и не говорю, что это можно сделать путём "спец cd".

> 2. Отнюдь! Ведь это кастомарная цд. Она знает, что мы внутри архива по префиксу ~/.fuse/tar.gz/


А ls .. тоже самому писать?

> А вот куда выходить вверх из ~/.fuse/ftp/user@example.com/ -- наверно, в ~/.fuse/ftp/, чтобы можно было перезайти в другой фтп, недавно использовавшийся? или в домашний каталог?


Тоже интересный вопрос

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

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

Идем на второй круг: не демонтируй ФС, пока они заняты (да ты и не сможешь, разве что umount -l).

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

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

>> Я полагаю, что это дело должно работать и после закрытися панелек. См. пример с фильмом.
> Идем на второй круг: не демонтируй ФС, пока они заняты


Но когда я досмотрю фильм, фс должна отмонтироваться.

> (да ты и не сможешь, разве что umount -l).


fusermount -uz $mountPoint и все дела

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

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

> То есть заводить демон, который будет мониторить ФС и пытаться их отмонтировать. И ещё неплохо бы у него спросить список сейчас подмонтированных фс.

Что-то я протупил: этот список и с помощью mount получить можно :)

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

Что надо для Ъ коммандера:

1. Из МС выдрать куски кода для move & copy, которые считают работу и показывают ETA, и оформить в виде программы movecopy или 2 программ (вот это -- юниксвей). Выдавать прогресс они должны на stderr при наличии ключа ком.строки.

Возможно, выдавать они должны в двух форматах: визуальный для терминала и другой для dialog-a (у него свой формат для прогрессбара).

2. Определиться, где хранить селекцию (вроде переменная окружения подходит) и сколько селекций у нас будет.

3. Сделать виджет select_file для селекции/мультиселекции файлов и каталогов, который бы читал селекцию из переменной окружения $o и писал бы в stdout (а дальше она бы попадала снова в $o через bind -x "\C-o":"o=\"`select_file o`\"; export o"). Для начала пойдет dialog+bash/perl?, но мне хочется аналогичный по виду less и чтобы мог работать *без терминала*, как bash & vim. Это будет поуниверсальней МС.

4. Сделать аналогичный виджет для Х-ов.

5. Шелл должен показывать не только текущий путь, но и текущую(ие?) селекцию(ии?)

6. Повесить вызов разных select_file на разные клавиши в шелле.

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

8. Для начала годится пример конфига для шелл, где нажимая F4 появляется окно dialog-а с выбором группы файлов для редактирования. Потом, когда будет виджет, можно прямо в нем нажимать F4.

9. Всякие там графические конфиги (типа переопределение клавиш, переопределение редактора, ...) -- это не для Ъ, и могут быть сделаны кем-то потом.

__________________________

Все это можно сделать грязно и быстро, а потом доработать. Жду замечаний.

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

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

>>Что-то я протупил: этот список и с помощью mount получить можно :)
> Не хотелось бы, чтобы юзерские маунты в общесистемном /etc/mtab|/proc/mounts были видны


А без этого никак.

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

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

> 1. Из МС выдрать куски кода для move & copy, которые считают работу и показывают ETA, и оформить в виде программы movecopy или 2 программ (вот это -- юниксвей). Выдавать прогресс они должны на stderr при наличии ключа ком.строки.
Эти куски кода там кривые, так что лучше писать свои.

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

> 3. Сделать виджет select_file для селекции/мультиселекции файлов и каталогов, который бы читал селекцию из переменной окружения $o и писал бы в stdout (а дальше она бы попадала снова в $o через bind -x "\C-o":"o=\"`select_file o`\"; export o"). Для начала пойдет dialog+bash/perl?, но мне хочется аналогичный по виду less и чтобы мог работать *без терминала*, как bash & vim. Это будет поуниверсальней МС.

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

> 5. Шелл должен показывать не только текущий путь, но и текущую(ие?) селекцию(ии?)

И как ты представляешь себе вид приглашения: vasya@pupkin:/home/share(selected: 1.jpg 2.jpg 3.jpg ... 99999.jpg)$ на полэкрана?

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

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

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

> Не вижу смысла в этих сложностях.

1. А если ты запустишь в двух окошках два Ъ коммандера, они не подерутся за точку монтирования?

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

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

> если ты запустишь в двух окошках два Ъ коммандера, они не подерутся за точку монтирования?

Смотря как выбирать эти точки.

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

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

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

Это за...во и ненужное усложнение.

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

> Эти куски кода там кривые, так что лучше писать свои.

Ты их смотрел? Как такое можно криво написать???

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


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

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


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


> И как ты представляешь себе вид приглашения?


Максимум 1 лишняя строка с селекцией, если файлов много, то:

selected: 3557 files, /home/user/file0001.txt, ...
vasya@pupkin:/home/user/bla/ $

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


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

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

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

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

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

> Смотря как выбирать эти точки.

хочется выбирать красиво ~/.fuse/ftp/user@host/path/to/file.txt

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