LINUX.ORG.RU

Crutch Commander

 


0

4

Я одержим безумной идеей написать свой двухпанельный ФМ, но не как у всех, а с unixway и плагинами.
Суть такая: есть ядро, ui и куча модулей. Каждый модуль отвечает за свой тип источника данных, ui отвечает за интерфейс, а ядро за связь этого всего. Это всё - отдельные процессы, и они общаются между с ядром через стандартный ввод/вывод.
Атомарной единицей в сей системе является объект. Объектом может быть что угодно в зависимости от набора модулей. Например: файл, таблица БД, объект json, таблица csv. Объекты объединяются в хранилища, это каталоги, базы данных (или файлы БД, если речь идёт о SQLite), файлы json/csv соответственно.

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

Каждый модуль имеет набор параметров необходимый для его работы. Для базы данных это хост, логин, пароль, если бд в файле это корневая директория файла. Обработка данных происходит в модуле в зависимости от контекста операции.
Например, если я копирую таблицу из mysql на диск, то модуль mysql запрашивает каталог у модуля файловой системы и пишет туда дамп. Если в csv, то он берёт у модуля cvs каталог, имя файла (если модуль что-то не знает, то он стучится в ui) и делает дамп в csv. В этих случаях между процессами ходят только команды.
Если надо взять несколько записей из таблицы и перегнать их в json то модуль источника данных преобразует их в нужный формат и передаёт данные модулю назначения, который разбирается что с ними делать. Я размышляю насчёт механизма, но во многих случаях это может быть просто передача json массива по трубам, хотя если в ход пойдут бинарные данные, то нужно будет организовывать отдельный поток/fifo/еще что-нибудь.

Итак. В принципе всё вполне технически решаемо, но работа буксует. Как-то трудно всё потянуть. Нужна хотя-бы моральная поддержка. Кому-нибудь вообще интересна такая идея?

Нужна хотя-бы моральная поддержка.

Буду оригинален: ненужно.

edigaryev ★★★★★ ()

Как-то трудно всё потянуть

Начни с малого: набросай ядро, ui, пару плагинов, залей на гитхаб, глядишь, народ и подтянется. А пока, реквестирую плагин для sunflower-fm для просмотра архивов.

neversleep ★★ ()

Пишите основу, заливайте на гитхаб. Нужно, интересно, почему бы и нет. Я бы даже покоммитил, если осилил.

Weres ★★★ ()

возьми emacs и допили sunrise commander, как тебе надо

lazyklimm ★★★★★ ()

Crutch Commander

Ты наверное имел в виду «kludge».

morse ★★★★★ ()

сделай веселее - нахрен двухпанельный фм, напиши n-панельный по типу тайлового de и с табами. Будет оригинально хотя бы.

upcFrost ★★★★★ ()

Ничего ты не напишешь

anonymous ()

Нужна хотя-бы моральная поддержка

неудачник

w1nner ★★★★★ ()

NIH, но вот идея: двухпанельный ФМ с закладками (которые можно блокировать как в тотале или double comander), да чтоб был консольный интерфейс + интерфейс на Qt, т.е. нечто универсальное с плагинами, однако и GUI (Qt) и CLI (ncurses). Если уж и делать велосипед, так чтоб колёса были квадратные не как у всех :)

I-Love-Microsoft ★★★★★ ()

А в чём профит такого подхода? То есть, в итоге-то что хотите увидеть, какой функционал получить?

next_time ★★★★★ ()

Файломанагеры не нужны.

anonymous ()

Это всё - отдельные процессы, и они общаются между с ядром через стандартный ввод/вывод.

Мотивация этого какая?

Атомарной единицей в сей системе является объект. Объектом может быть что угодно в зависимости от набора модулей. Например: файл, таблица БД, объект json, таблица csv. Объекты объединяются в хранилища, это каталоги, базы данных (или файлы БД, если речь идёт о SQLite), файлы json/csv соответственно.

Лучше бы сделал пачку FUSE-фс с мордой вокруг этого. Или по крайней мере объяснил, почему FUSE недостаточно.

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

И как именно источник узнаёт, что нужен именно json? Что-то вроде иксовых механизмов о формате SELECTION?

Суть такая: есть ядро, ui и куча модулей

Зачем велосипеды когда уже есть личкрафт?

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

Мотивация этого какая?

Простота написания новых костылей.

Или по крайней мере объяснил, почему FUSE недостаточно.

FUSE, как я понимаю, для файловых систем, а не для всего что можно.

И как именно источник узнаёт, что нужен именно json?

UI будет указывать на модуль получатель.

Зачем велосипеды когда уже есть личкрафт?

Что это такое?

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

неудачник
Ничего ты не напишешь
ненужно

Вот этого я и ждал.

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

FUSE, как я понимаю, для файловых систем, а не для всего что можно.

Что именно нельзя представить файловой системой?

UI будет указывать на модуль получатель.

Ты не понял. Как модуль-отправитель узнаёт, какие форматы умеет получатель? Вдруг получатель умеет только бинарные данные, а ты ему JSON скармливаешь.

Что это такое?

https://leechcraft.org/ — ядро и куча модулей.

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

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

Автор, а на чем собрался писать? У меня недавно такая ж идея была.

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

Что именно нельзя представить файловой системой?

Даже не представляю, как, например из базы данных импортировать в sql скрипты/csv (в зависимости от контекста) посредством FUSE.

Как модуль-отправитель узнаёт, какие форматы умеет получатель?

Отправителя не волнуют такие вещи, он просто делает что умеет.

Вдруг получатель умеет только бинарные данные, а ты ему JSON скармливаешь.

Если формат получателя не реализован, то он так и говорит, что не может.

ядро и куча модулей.

Я полистал, там сильно универсальный комбайн. Мне надо только данные гонять, а там браузер, im, почта.. Да и я не нашел на офф.сайте документации по написанию плагинов, да и в целом, функционирования системы.

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

Автор, а на чем собрался писать? У меня недавно такая ж идея была.

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

crutch_master ★★★★★ ()
Последнее исправление: crutch_master (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.