Git Product home page Git Product logo

mc's Introduction

This is a C# version of the Midnight Commander that I am using as a
testbed for Mono-Curses. - Miguel de Icaza

This new version is called "Mouseless Commander[1]", to bring back the
original name.

[1] With mouse support.

History
=======

This is a C# reimplementation of the Midnight Commander (originally,
the MouseLess Commander, later the MouseLess Commander With Mouse
Support) in C#.

Unix Evolves
------------

The C version of the Midnight Commander was started some time in 1991
or 1992 and many of the features in the code base had to deal with
Unix as it used to be back then.  Since then, Unix has changed
extensively and this rewrite takes advantage of how Unix evolved since
then.

Plenty of older Unix systems that MC supported no longer exist, so
none of the supporting code for those systems is replicated here.

Curses Evolves
--------------
Back then, curses was mostly broken so the code supported three
backends: curses, slang and a built-in version of slang.  Over time,
ncurses became a standard and addressed the bugs and limitations that
existed back then.   These days ncurses has mouse support built right
into the API, so many of the hacks that used to exist in MC are no
longer necessary.  

When MC was originally developed, not only curses was broken, but
terminal settings could be wrong, terminfo and termcap databases were
often wrong and in general things were consistely broken.   The old
midnight commander had its own Learn-the-keys system, and its own
system for mapping escape sequences to function keys.   None of this
is necessary anymore

ncurses support Unicode output, so this codebase takes advantage of
this and the built-in viewer uses the .NET powered Encoding class to
render files, allowing not only various common formats to be viewed,
but will easily allow various fringe character set encodings to be
supported with little effort.

Virtual File Systems
--------------------

The original Midnight Commander was the first Unix file manager that
had a virtual file system (VFS) interface.  This virtual file system
was later adopted by KDE and Gnome.  But application-specific virtual
file systems are no longer necessary as both Linux and MacOS now
support FUSE as a kernel-supported user-pluggable file system
interface.

The Mouseless Commander no longer ships its own VFS, and instead will
integrate with the operating system FUSE functionality to provide
access to archives and remote storage facilities. 

Features and Usability
----------------------

Many features that were added to Midnight Commander over the years in
retrospect were not very good ideas.   SOme of the dialog boxes grew
to become too complicated, and not only was it hard to explain to
users what they did, I could not even remember how to use some of the
most advanced features like pattern renaming (common in DOS).

Many of the file copying options were advanced features that I never
changed or switched in the past 18 years.   At the time, it probably
made sense that we might have wanted to control with precision how
files were copied, or moved, but the solution we came up with was
poorly designed.

The dialog boxes became cluttered, and the tab-order was downright
odd due to all of those features.   So none of that complexity is
available here. 

Although MC had an hex editor, very few people knew how to activate it
(Open viewer, activate hex mode, hit Edit).   

mc's People

Contributors

migueldeicaza avatar

Watchers

Sergey Chudakov avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.