📜 ⬆️ ⬇️

Cross-platform file manager? This is reality



Good time of day, citizens habrazhiteli! Today a new open-source project, a cross-platform two-pane file manager, has opened for third-party developers. I will begin this article, perhaps, with prehistory. For Windows, there is the well-known file manager Total Commander, which favorably differs from others in its rich functionality, powerful plug-in system based on the Win32 API, deep configuration and multi-window mode. For other operating systems of comparable height, the functionality of file managers does not yet exist. And those that exist either do not develop for a long time, or do not support plugins. And everything was fine, but once I decided to clean my Debian from the accumulated trash. The cleaning process began to be a bunch of windows and terminal tabs with Midnight Commander, a bunch of tabs and windows of various editors and viewers, a graphical shell for FileRoller archivers, etc. ... “Not a deal” - I decided, and on 06/24/2013 I started to reinvent the wheel did git init and launched MonoDevelop ...

This is how a new non-commercial startup appeared, another two-pane file manager, but, unlike most, a cross-platform one. His name was chosen for a long time, but decided to stop at File Commander (not to be confused with the abandoned FileCommander ). A simple, understandable name, by abbreviation is not confused with other * Commanders. It is written in C # using the XWT toolkit, which was previously written on Habré. Using .Net / Mono and XWT provides full cross-platform (Windows, Linux, Mac OS). Actually, the key feature of FC is not so much the original functionality, as the independence of it and all the plug-ins from the operating system used.
')
The project is being developed by me alone in my spare time, at the moment there are just over a hundred and fifty commits. And now, after a year of development, the project becomes open to third-party developers.

Opportunities


FC is a classic two-pane file manager, generally similar to Total Commander and others like it. However, it has a relatively full command line a la FAR or Midnight Commander. To work with non-local file systems there is support for FS plugins. FS plugins provide command line operation, think about how it works on SSH simultaneously with the terminal and with files without exiting the file manager?



The program has a built-in combined editor-viewer (VE), called by the standard keys F3 and F4 (editing is disabled by F3). VE supports plug-in connection for working with different file types. The VE chip is the command line (something similar to Vim), which allows you to perform a wide range of file operations on the keyboard, limited only by the capabilities of the plugin. Unfortunately, at the moment the choice of plug-ins is not great. Although it is possible to connect plug-ins via the fsplugins.conf and fcveplugins.conf files, there are no separate plug-ins yet, only the built-in ones are Local Files (file: //) and Plain Text (* .txt). The program interface can be translated into any language of the world (the “localizer” is now in its infancy, but there is a reserve for it), and the appearance is customized by using themes in CSS format (limited by XWT capabilities).

Architecture


FC is built on a monolithic modular architecture. That is, there is a monolithic kernel, fcmd.exe, which provides the user interface and loads the switchable part of the functionality from the plug-ins, using a special layer - pluginner.dll. Plug-ins are responsible for working with file systems, for viewing and editing files, in the future archiving plug-ins and plug-ins that modify the user interface (as in Firefox) are planned. Plug-ins are classes inherited from pluginner.IPlugin and stored either in DLL files or embedded in fcmd.exe (embedded plug-ins). Functions and classes that can be used not only by FC, but also by its plug-ins are rendered into pluginner. For example, the “file list” widget, FileListPanel, can be embedded into VE plugins, where it can be used to operate with several files at once. The official UW XWT toolkit from Mono developers is used as the UI library. The themes are almost ordinary CSS files that are processed by a separate project (but also my production), the µCSS library. The disk selection panel is combined with the bookmarks panel, although a simple menu of bookmarks has not been removed anywhere. The list of disks on the bookmark disks panel is implemented as a dynamic bookmark (which you can add in the bookmarks menu) “list of disks”. This makes it easier to edit the speed dial list file in graphical mode, this is how the bookmark file named in XML format is called.

The functionality presented at the moment may seem to be insufficient and extremely raw, rich in bugs. This is due to the fact that I do not have enough time and experience (your humble servant is an amateur; I am writing code when I have nothing to do). In addition, until December 2013, FC was written to WinForms, after which, being almost completed, I corresponded for several months to XWT. But this is all an excuse, the main thing is that the idea is gradually becoming a reality!

Plans for the near future




On Thursday, June 19, at 20:00 MSK on the channel # fcmd-dev in the IRC RusNet network, an online conference on the project architecture and development prospects will be held for all those interested. I don’t have the opportunity to answer everyone here, the local audience is too large, please ask questions and report bugs found on IRC and GitHub.
Thanks to each of the zero people for visiting # fcmd-dev. So, if IRC died, then everything is clear, then it’s not interesting ... the essence does not change. If that, address on GitHub.

Download


The File Commander repository is hosted on GitHub, and the Wiki with reference materials is also available: github.com/atauenis/fcmd (there are also ready-made binary builds , choose to your taste, and PPA for Ubuntu: launchpad.net/~keks9n/+archive/fcmd)

Clone, develop, pull-request. Third-party commits are extremely welcome. The creation of bugs in the tracker (Github Issues) is also welcomed, and testing alone is also a problem.

Link to the office. I can’t give a site and a forum of the project, VDS for 99 rubles / month, more than sure, will not pull the habra effect, although if necessary, everything is looked for.

Sincerely, the project developer, Alexander Tauenis (AT, ATauenis).

PS Why Thursday? The fact is that on Friday evening I can be torn away from the spot without warning, and on weekends I am out of town and technically cannot quickly answer any questions that may arise.

PPS There is enough karma for publication in “I am promoting”, and this post does not have the goal to increase my value on the labor market, so have mercy.

Source: https://habr.com/ru/post/226669/


All Articles