lfm - Last File Manager

Author: Iñigo Serna, inigoserna AT gmail DOT com
Version: 2.1, December 21th. 2008
Home page:http://www.terra.es/personal7/inigoserna/lfm/
License:

(C) 2001-8, Iñigo Serna

This software has been realised under the GPL License version 3 or later, read the COPYING file that comes with this package for more information.

There is NO WARRANTY.

Last update:Sat Dec 20 23:35:39 2008

Table of Contents

Introduction

Last File Manager is a simple but powerful file manager for the UNIX console. Based on curses, it's written in Python.

Some of the features you can find in lfm:

From version 0.6 and up lfm package also contains pyview, a text / hex file viewer to be used with or without lfm. Read README.pyview for more info about it.

Some screenshots:

lfm:

lfm.png

pyview:

pyview.png

Type lfm --help or pyview --help for a complete list of options.

Program preferences are saved in ~/.lfmrc file. When the program starts the first time, it tries to discover the location of some apps in your system to configure lfm automatically, but it's not perfect, so you should take a look to the configuration (General Menu [F9] -> Edit Configuration [c]) and change it according to your preferences.

Requirements

Lfm and Pyview are written in Python and require curses module. It needs Python v2.3 or higher, it won't work with older versions.

Since version 0.90, lfm needs ncurses >= v5.x to handle terminal resizing.

All modern UNIX flavours (Linux, *BSD, Solaris, etc) should run it without problems. If they appear please notify me.

Note that python curses module should be linked against ncursesw library (instead of ncurses) to get wide characters support. This is the usual case in later versions of Linux distributions, but maybe not the case in older Linux or other UNIX platforms. Thus, expect problems when using multibyte file names (f.e. UTF-8 or latin-1 encoded) if your curses module isn't compiled against ncursesw. Anyway, I hope this issue will disappear with new releases of those platforms, eventually.

Also, take a look at TODO file to see bugs and not-implemented-yet (tm) features.

Download & Installation

'lfm' is very easy to install, just keep next steps:

  1. Download sources

  2. Uncompress file

  3. Build:

    $ python setup.py build

  4. Install, as root:

    # python setup.py install

  5. Run it:

    $ lfm

To let 'lfm' to change to panel's current directory after quiting with q, Q or F10 keys, you must add next code to /etc/bashrc or to your ~/.bashrc:

lfm()
{
    /usr/bin/lfm "$*"               # type here full path to lfm script
    LFMPATHFILE=/tmp/lfm-$$.path
    cd "`cat $LFMPATHFILE`"
    rm -f $LFMPATHFILE
}

If you don't use bash or csh shell, above lines could differ.

Upgrading

If you upgrade from any older versions, please remove first ~/.lfmrc to regenerate a valid configuration as file format has changed. I advise you to make a backup copy before.

Also, note that some keys have changed since previous versions. Read carefully following section.

Keys

These are the complete list of key bindings:

[1]Some key shorcuts combinations such as Alt or Shift + key may not work, as it depends on the capabilities of the terminal program you are using. F.e. it doesn't work in my computer console running Fedora 10 Linux, but it works under gnome-terminal in X. Your results could be different. Anyway, there are alternative shortcuts (K J B F A E), but not for everything. Consult your terminal emulation program documentation to check it. Also note that you can allow/disallow this navigation with Ctrl-W, it's disabled by default.

VFS

You can navigate inside some special files (known as vfs files in lfm) just entering into them (press enter or cursor_right when the cursor bar is over one of these files). By now, supported types are .tar.gz, .tar.bz2, .zip and .rar files.

The virtual directory name ('path_to_vfs_file#vfs/dir') is not propagated, so tmpdir (/tmp/@6421.2/dir) is showed in the copy/move/... dialogs or when view/edit/... a file, but this is just an estetic issue.

When returning from one of such vfs files, a question dialog appears asking to allow you to regenerate the vfs file and update all changes (i.e., it is compressed again, so it could be slow in some machines), but lfm checks if it can do first, to avoid waste of time. This behaviour (rebuild or not rebuild, ask it or not) can be modified in the configuration file. By default the question is showed but it's set to not regenerate vfs. In case of panelize vfs type (after find/grep), deleted / moved files are not deleted / moved in real path.

History

Many many years ago I began to write a program like this in C, but after some weeks of coding I never finished it... I'm too lazy, yes. Then I saw the light and I started writing lfm to learn python.

Code evolved and application got more and more features, used by many people around the world on different UNIX systems.

But after the release of version 0.91 (June 2004) they were not more releases. Not that I had stopped working on lfm, new code was written, tested, rewritten again... silently... but different reasons made me to postpone public releases... code refactoring, a new essential feature, source cleaning, a wedding, a child, ahem... more code refactoring....

Anyway, from now on I'll do my best to release often.

Thanks

Thanks are obviously due to the whole python community, specially to GvR (of course! ;-) and all the people who answered my questions in c.l.p.

It's a great pleasure to code in a language like this.

Alexei Gilchrist, for his cfm program from which I took some ideas.

Midnight Commander developers, whose program was the guide.

And also to all the people who have contributed with ideas, reporting bugs and code over these years: Antoni Aloy, Sebastien Bacher, Grigory Bakunov, Witold Bołt, Fabian Braennstroem, Jason Buberel, Ondrej Certik, Kevin Coyner, Tim Daneliuk, Mike Dean, Arnå DG, Christian Eichert, Steve Emms, Murat Erten, Stephen R. Figgins, f1ufx, Francisco Gama, Vlad Glagolev, Ana Beatriz Guerrero Lopez, Tjabo Kloppenburg, Zoran Kolic, Max Kutny, Martin Lüethi, James Mills, Bartosz Oler, Piotr Ozarowski, Mikhail A. Pokidko, Jerome Prudent, Mikhail Ramendik, Rod, Daniel T. Schmitt, Robin Siebler, Andrey Skvortsov, Espartaco Smith, Jörg Sonnenberger, Tim Terlegård, Edd Thompson, Walter van den Broek, Alejandro Weil, Hai Zaar and many others...

You have made posible to run lfm in all those platforms!