Крос-платформенний файловий менеджер? Це реальність


 
Добрий час доби, громадяни хабражітелі! Сьогодні відкрився для сторонніх розробників новий open-source проект, багатоплатформовий двохпанельний файловий менеджер. Почну дану статтю, мабуть, з передісторії. Для Windows існує всім відомий файловий менеджер Total Commander, що вигідно відрізняється від інших багатим функціоналом, потужною системою плагінів, заснованої на Win32 COM, глибокої налаштуванням і багатовіконним режимом. Для інших ОС порівнянних по висоті функціоналу файлових менеджерів поки не існує. А ті, що існують або давно не розвиваються, або не підтримують плагіни. І все було нормально, та одного разу я вирішив почистити свій Debian від нагромадилося мотлоху. Процес чищення став представляти собою купу вікон і вкладок терміналу з Midnight Commander, купу вкладок і вікон різних редакторів і переглядачів, Графічний інтерфейс до архіваторам FileRoller і т.д… «Не справа» — вирішив я, і 24/06/2013 почав винаходити велосипед зробив git init і запустив MonoDevelop…
 
Так з'явився новий некомерційний стартап, ще один двохпанельний файловий менеджер, правда, на відміну від більшості, багатоплатформовий. Його назва довго вибиралося, однак вирішив зупинитися на File Commander (не плутати з покинутим FileCommander ). Просте, зрозумілу назву, по абревіатурі не плутати з іншими * Commander'амі. Він написаний на C # з використанням тулкіта XWT, про який на Хабре писалося раніше. Використання .Net / Mono і XWT забезпечує повноцінну кроссплатформенность (Windows, Linux, Mac OS). Власне, ключовий фішкою FC є не стільки оригінальна функціональність, скільки незалежність його і всіх плагінів від операційної системи.
 
Проект розвивається силами одного лише мене у вільний від інших справ час, на даний момент набралося трохи більше півтора сотень комітів. І ось, через рік розробки, проект стає відкритим для сторонніх розробників.
 
 Можливості
FC представляє з себе класичний двохпанельний файловий менеджер, в цілому схожий на Total Commander і йому подібні. Однак у ньому присутній порівняно повноцінна командний рядок а-ля FAR або Midnight Commander. Для роботи з нелокальними файловими системами є підтримка плагінів ФС. Плагіни ФС забезпечують і роботу командного рядка, вдумайтеся, яке це працювати по SSH одночасно і з терміналом і з файлами не виходячи з файлового менеджера?
 
 
 
У програму вбудований комбінований просмоторщик-редактор (VE), що викликається за стандартними клавішах F3 і F4 (по F3 редагування відключається). VE підтримує підключення плагінів для роботи з різними типами файлів. Фішкою VE є командний рядок (у чомусь аналогічна Vim), що дозволяє з клавіатури здійснювати широкий спектр дій з файлами, обмежений тільки можливостями плагіна. На жаль, на даний момент вибір плагінів не великий. Хоча є можливість підключати плагіни через файли fsplugins.conf і fcveplugins.conf, окремих плагінів поки не існує, тільки вбудовані — «Локальні ФС» (file :/ /) і «Простий текст» (*. Txt). Інтерфейс програми може бути переведений на будь-яку мову світу («локалізатор» зараз в зародковому стані, але зачепив під це є), а зовнішній вигляд підлаштований «під себе» за допомогою тем оформлення у форматі CSS (обмежена можливостями XWT).
 
 Архітектура
FC побудований за монолітно-модульній архітектурі. Тобто, є монолітне ядро, fcmd.exe, що забезпечує користувальницький інтерфейс і завантажували перемикав частина функціоналу з плагінів, використовуючи особливу прошарок — pluginner.dll. Плагіни відповідають за роботу з файловими системами, за перегляд і редагування файлів, в майбутньому плануються архіваторний плагіни і плагіни, модифікують користувальницький інтерфейс (як в Firefox). Плагіни представляють із себе класи, успадковані від pluginner.IPlugin і зберігаються або в DLL-файлах, або вшиті в fcmd.exe (вбудовані плагіни). Функції і класи, які можуть використовуватися не тільки FC, але і його плагінами винесені в pluginner. Так, наприклад, віджет «список файлів», FileListPanel, можна впроваджувати в плагіни VE, де його можна використовувати для оперування з декількома файлами відразу. В якості бібліотеки UI використовується офіційний тулку XWT від розробників Mono. Теми оформлення являють собою практично звичайні CSS-файли, оброблювані окремим проектом (але також мого виробництва), бібліотекою μCSS. Панель вибору дисків комбінована з панеллю закладок, хоча просте меню закладок нікуди не забиралося. Список дисків на панелі дисків-закладок реалізований у вигляді динамічної закладки (які можна додавати і в меню закладок) «список дисків». Це полегшує редагування в графічному режимі файлу speed dial list, саме так обізвав файл списку закладок, виконаний у форматі XML.
 
Функціональність, представлена ​​на даний момент, може здатися недостатньою і вкрай сирою, багатою на баги. Це через те, що у мене не вистачає часу і досвіду (ваш покірний слуга — любитель, пишу код, коли нічим зайнятися). Крім того, до грудня 2013 FC писався на WinForms, після чого, будучи практично закінченим, кілька місяців листувався на XWT. Але це все відмовки, головне, що ідея поступово втілюється в реальність!
 
 Плани на найближче майбутнє
 
     
  • Зробити сортування файлів.
  •  
  • Довести до розуму швидкий пошук (використовувати останні нововведення в XWT).
  •  
  • Зробити в модулі VE PlainText повноцінне редагування тексту з підсвічуванням синтаксису, автодоповнення, hex-висновком і печаткою.
  •  
  • Зробити плагіни ФС для FTP, WebDAV (Yandex.Disk), SSH.
  •  
  • Зробити древо каталогів.
  •  
  • Зробити графічний diff.
  •  
  • Зробити іконку.
  •  
  • Зробити функцію масового перейменування файлів.
  •  
 
Репозиторій File Commander розміщується на GitHub, там же і Wiki з довідковими матеріалами: github.com / atauenis / fcmd /
 
Клонуйте, розвивайте, pull-request'те. Сторонні комміти вкрай вітаються. Вітаються і створення багів в трекері (Github Issues), з тестуванням поодинці теж біда.
 
Посилання на оф. сайт і форум проекту дати не можу, VDS за 99 руб / міс, більш ніж упевнений, не потягне хабраеффект, хоча якщо треба — все шукається.
 
У четвер, 19 червня, в 20:00 MSK на каналі # fcmd-dev в мережі IRC RusNet для всіх, хто цікавиться відбудеться онлайн-конференція з архітектури проекту та перспективи розвитку. Встигнути тут відповідати всім у мене можливості немає, аж надто велика місцева аудиторія, прохання задавати питання і повідомляти про знайдені баги на IRC і GitHub.
 
З повагою, розробник проекту, Олександр Тауеніс (AT, ATauenis).
 
P.S. Чому саме четвер? Справа в тому, що у вечір п'ятниці мене можуть зірвати з місця без попередження, а у вихідні я поза містом і чисто технічно не можу оперативно відповідати на виникаючі питання.
 
P.P.S. Для публікації в «Я піарюсь» на вистачає карми, та і мети підвищити мою вартість на ринку праці даний пост не має, так що даруйте.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.