Plattformübergreifender Dateimanager? Es ist eine Realität



Gute Tageszeit, Bürger Heute wurde ein neues Open-Source-Projekt, ein plattformübergreifender Zwei-Panel-Dateimanager, für Drittanbieter geöffnet. Ich werde diesen Artikel vielleicht mit einem Hintergrund beginnen. Für Windows gibt es den bekannten Dateimanager Total Commander, der sich im Vergleich zu anderen mit reichhaltigen Funktionen, einem leistungsstarken Plug-In-System auf der Basis der Win32-API, der Tiefenkonfiguration und dem Mehrfenstermodus gut behauptet. Für andere Betriebssysteme gibt es noch keine Dateimanager mit vergleichbarer Größe. Und die existierenden entwickeln sich entweder nicht lange oder unterstützen keine Plugins. Und alles war in Ordnung, aber als ich mich entschied, mein Debian von angesammeltem Müll zu säubern. Der Reinigungsprozess hat sich mit Midnight Commander zu einer Reihe von Fenstern und Registerkarten des Terminals entwickelt, zu einer Reihe von Registerkarten und Fenstern verschiedener Editoren und Betrachter.begann das Rad neu zu erfinden, gab es git init und startete MonoDevelop ...

Also gab es ein neues gemeinnütziges Startup, einen anderen Zwei-Panel-Dateimanager, obwohl er im Gegensatz zu den meisten plattformübergreifenden. Der Name wurde für eine lange Zeit gewählt, entschied sich jedoch für File Commander (nicht zu verwechseln mit einem verlassenen FileCommander ). Ein einfacher, verständlicher Name, der durch die Abkürzung nicht mit anderen * Kommandanten verwechselt wird. Es ist in C # mit dem Toolkit XWT geschrieben, die Habré geschrieben wurde früher. Die Verwendung von .Net / Mono und XWT bietet vollständige plattformübergreifende Funktionen (Windows, Linux, Mac OS). Tatsächlich ist das Hauptmerkmal von FC nicht die ursprüngliche Funktionalität, sondern die Unabhängigkeit davon und aller Plug-Ins vom verwendeten Betriebssystem.

Das Projekt wird von mir allein in meiner Freizeit aus anderen Angelegenheiten heraus entwickelt, zur Zeit sind etwas mehr als anderthalbhundert Verpflichtungen eingegangen. Und jetzt, nach einem Jahr der Entwicklung, steht das Projekt auch Entwicklern von Drittanbietern offen.

Eigenschaften


FC ist ein klassischer Zwei-Panel-Dateimanager, der im Allgemeinen Total Commander und dergleichen ähnelt. Es hat jedoch eine relativ vollständige Kommandozeile a la FAR oder Midnight Commander. Für die Arbeit mit nicht lokalen Dateisystemen werden FS-Plug-Ins unterstützt. FS-Plugins bieten auch eine Befehlszeilenfunktion. Überlegen Sie, wie es sich anfühlt, gleichzeitig mit dem Terminal und den Dateien auf SSH zu arbeiten, ohne den Dateimanager zu verlassen.



Das Programm verfügt über einen integrierten kombinierten Viewer-Editor (VE), der über die Standardtasten F3 und F4 aufgerufen wird (die Bearbeitung wird durch F3 deaktiviert). VE unterstützt Plug-Ins für die Arbeit mit verschiedenen Dateitypen. Der VE-Chip ist die Befehlszeile (ähnlich wie Vim), mit der die Tastatur eine Vielzahl von Dateioperationen ausführen kann, die nur durch die Funktionen des Plugins eingeschränkt sind. Leider ist die Auswahl an Plugins im Moment nicht großartig. Obwohl es möglich ist, Plugins über die Dateien fsplugins.conf und fcveplugins.conf zu verbinden, gibt es noch keine separaten Plugins, sondern nur die integrierten - "Local FS" (Datei: //) und "Simple Text" (* .txt). Die Programmoberfläche kann in jede Sprache der Welt übersetzt werden (der "Lokalisierer" steckt jetzt in den Kinderschuhen, aber es gibt einen Rückstand dafür).

Architektur


FC baut auf einer monolithisch-modularen Architektur auf. Das heißt, es gibt einen monolithischen Kernel, fcmd.exe, der eine Benutzeroberfläche bereitstellt und einen umschaltbaren Teil der Funktionalität mithilfe einer speziellen Ebene - pluginner.dll - aus Plugins lädt. Plugins sind dafür verantwortlich, mit Dateisystemen zu arbeiten, Dateien anzuzeigen und zu bearbeiten. Zukünftige Archivierungs-Plugins und Plugins, die die Benutzeroberfläche ändern, sind geplant (wie in Firefox). Plugins sind Klassen, die von pluginner.IPlugin erben und entweder in DLL-Dateien gespeichert oder in fcmd.exe (integrierte Plugins) eingebettet sind. Funktionen und Klassen, die nicht nur von FC, sondern auch von seinen Plug-Ins verwendet werden können, werden im Pluginner erstellt. Beispielsweise kann das Widget "Dateiliste", FileListPanel, in VE-Plugins eingebettet werden, mit denen mehrere Dateien gleichzeitig bearbeitet werden können. Als UI-Bibliothek wird das offizielle XWT-Toolkit der Mono-Entwickler verwendet. Designthemen sind fast gewöhnliche CSS-Dateien, die von einem separaten Projekt (aber auch von meiner Produktion), der µCSS-Bibliothek, verarbeitet werden. Das Disc-Auswahlfeld wird mit dem Lesezeichenfeld kombiniert, obwohl das einfache Lesezeichenmenü nirgendwo entfernt wurde. Die Liste der Datenträger in der Datenträger-Lesezeichenleiste ist als dynamisches Lesezeichen (das zum Lesezeichenmenü hinzugefügt werden kann) "Liste der Datenträger" implementiert. Dies erleichtert das Bearbeiten der Kurzwahllistendatei im Grafikmodus, dh der Name der Lesezeichenlistendatei im XML-Format. Das Disc-Auswahlfeld wird mit dem Lesezeichenfeld kombiniert, obwohl das einfache Lesezeichenmenü nirgendwo entfernt wurde. Die Liste der Datenträger in der Datenträger-Lesezeichenleiste ist als dynamisches Lesezeichen (das zum Lesezeichenmenü hinzugefügt werden kann) "Liste der Datenträger" implementiert. Dies erleichtert das Bearbeiten der Kurzwahllistendatei im Grafikmodus, dh der Name der Lesezeichenlistendatei im XML-Format. Das Disc-Auswahlfeld wird mit dem Lesezeichenfeld kombiniert, obwohl das einfache Lesezeichenmenü nirgendwo entfernt wurde. Die Liste der Datenträger in der Datenträger-Lesezeichenleiste ist als dynamisches Lesezeichen (das zum Lesezeichenmenü hinzugefügt werden kann) "Liste der Datenträger" implementiert. Dies erleichtert das Bearbeiten der Kurzwahllistendatei im Grafikmodus, dh der Name der Lesezeichenlistendatei im XML-Format.

Die im Moment präsentierte Funktionalität scheint unzureichend und extrem rau und voller Fehler zu sein. Dies liegt an der Tatsache, dass ich nicht genug Zeit und Erfahrung habe (Ihr bescheidener Diener ist ein Amateur, ich schreibe Code, wenn ich nichts zu tun habe). Außerdem wurde FC bis Dezember 2013 in WinForms geschrieben. Danach wurde es, da es fast vollständig war, für mehrere Monate an XWT geschrieben. Aber das sind alles Ausreden, die Hauptsache ist, dass die Idee allmählich in die Realität umgesetzt wird!

Pläne für die nahe Zukunft


  • Schreibe FileListPanel neu seit Es werden nicht alle Dateien im Verzeichnis gleichzeitig explizit angezeigt, sondern es muss in Teilen geladen werden.
  • Sortieren Sie Dateien in einer Liste, ziehen Sie Spalten und legen Sie sie per Drag & Drop ab.
  • Überlegen Sie sich etwas mit mehrzeiligen Textfeldern wie Sie funktionieren nicht mit GTK (XWT-Fehler).
  • Denken Sie an eine schnelle Suche (verwenden Sie die neuesten Innovationen in XWT).
  • Erstellen Sie das VE PlainText-Modul für die Volltextbearbeitung mit Syntaxhervorhebung, automatischer Vervollständigung, Hex-Ausgabe und Drucken.
  • Erstellen Sie FS-Plugins für FTP, WebDAV (Yandex.Disk), SSH.
  • Erstellen Sie einen Verzeichnisbaum.
  • Machen Sie einen grafischen Unterschied.
  • Symbol erstellen.
  • Machen Sie die Funktion der Umbenennung von Massendateien.


Am Donnerstag, den 19. Juni, um 20:00 Uhr MSK, findet auf dem Kanal # fcmd-dev im IRC RusNet-Netzwerk eine Online-Konferenz über die Architektur des Projekts und die Entwicklungsperspektiven für alle Interessierten statt. Ich habe hier nicht die Möglichkeit, allen zu antworten. Das lokale Publikum ist zu groß. Bitte stelle Fragen und melde Fehler, die im IRC und GitHub gefunden wurden.
Vielen Dank an alle Zero-Personen für ihren Besuch bei # fcmd-dev. Entweder ist der IRC gestorben oder alles ist klar oder nicht interessant ... das Wesen ändert sich nicht. Wenden Sie sich gegebenenfalls an GitHub.

Herunterladen


File Commander Repository auf GitHub, dort und Wiki mit Referenzmaterialien: github.com/atauenis/fcmd (auch hat fertige Binaries , wählen , um Geschmack und PPA für Ubuntu: launchpad.net/~keks9n/+archive/fcmd)

Klonen, entwickeln, anfordern. Zusagen von Dritten sind ausdrücklich erwünscht. Die Entstehung von Bugs im Tracker (Github Issues), bei denen das Testen alleine ebenfalls eine Katastrophe darstellt, ist ebenfalls willkommen.

Link zu von. Ich kann keine Projektwebsite und kein Forum angeben, VDS für 99 Rubel / Monat wird den Habraeffekt mehr als sicher nicht ziehen, obwohl bei Bedarf alles gesucht wird.

Mit freundlichen Grüßen, Projektentwickler Alexander Tauenis (AT, ATauenis).

PS Warum Donnerstag? Tatsache ist, dass sie mich am Freitagabend ohne Vorwarnung abreißen können, und am Wochenende bin ich nicht in der Stadt und rein technisch kann ich Fragen nicht sofort beantworten.

PPS Es gibt genug Karma, um es in „I am PR“ zu veröffentlichen, und dieser Beitrag hat keinen Zweck, meinen Wert auf dem Arbeitsmarkt zu steigern, also sei barmherzig.

Jetzt auch beliebt: