old-www/LDP/LG/issue61/evans.html

181 lines
13 KiB
HTML

<!--startcut ==============================================-->
<!-- *** BEGIN HTML header *** -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML><HEAD>
<title>The emelfm File Manager LG #61</title>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#0000AF"
ALINK="#FF0000">
<!-- *** END HTML header *** -->
<CENTER>
<A HREF="http://www.linuxgazette.com/">
<H1><IMG ALT="LINUX GAZETTE" SRC="../gx/lglogo.jpg"
WIDTH="600" HEIGHT="124" border="0"></H1></A>
<!-- *** BEGIN navbar *** -->
<IMG ALT="" SRC="../gx/navbar/left.jpg" WIDTH="14" HEIGHT="45" BORDER="0" ALIGN="bottom"><A HREF="dellomodarme.html"><IMG ALT="[ Prev ]" SRC="../gx/navbar/prev.jpg" WIDTH="16" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="index.html"><IMG ALT="[ Table of Contents ]" SRC="../gx/navbar/toc.jpg" WIDTH="220" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><A HREF="../index.html"><IMG ALT="[ Front Page ]" SRC="../gx/navbar/frontpage.jpg" WIDTH="137" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="http://www.linuxgazette.com/cgi-bin/talkback/all.py?site=LG&article=http://www.linuxgazette.com/issue61/evans.html"><IMG ALT="[ Talkback ]" SRC="../gx/navbar/talkback.jpg" WIDTH="121" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><A HREF="../faq/index.html"><IMG ALT="[ FAQ ]" SRC="./../gx/navbar/faq.jpg"WIDTH="62" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="kasten.html"><IMG ALT="[ Next ]" SRC="../gx/navbar/next.jpg" WIDTH="15" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><IMG ALT="" SRC="../gx/navbar/right.jpg" WIDTH="15" HEIGHT="45" ALIGN="bottom">
<!-- *** END navbar *** -->
<P>
</CENTER>
<!--endcut ============================================================-->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">The emelfm File Manager</font></H1>
<H4>By <a href="mailto:pevans@catholic.org">Paul Evans</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<img src="misc/evans/emelfm.jpg" width="320" height="213" border="1" alt="emelfm full screen" align="right" hspace="20" vspace="20">
<p>After migrating from the Amiga to the original Slackware distribution of Linux, I spent several years searching out a replacement for Directory Opus.
Now, a 'file manager' means different things to different people. Some simply want to copy, move, rename files etc. Others want to be able to operate
on those files in esoteric ways. At whim. Configurably. As you may have guessed, I'm one of the latter.</p>
<p>I tried everything that came along, whether they claimed to be clones of Dopus or just great file managers. All fell short in some way. Some were too slow,
others were fast, but not configurable enough. Still others had both, but configuring them was difficult.</p>
<p>In the mean time, I used the venerable Midnight Commander (good ol' mc). You can do anything with mc - you just have to configure it, but it's still console
based and a lot of basic operations are more easily done from a gui. New problem: after six years of using mc, I had added the desire for a Linux Dopus that behaved like
mc. Great. Now I wanted superb keyboard navigation <i>and</i> key-mapping <i>and</i> mousing <i>and</i> configurable button banks. Prospects were looking pretty grim</p>
<p>And then <a href="mailto:macst92@imap.pitt.edu">Michael Clark</a> came along and wrote <A HREF="http://www.pitt.edu/~macst92/emelfm/">emelfm</A>.</p>
<p>emelfm has <b><i>all these</i></b> - and more.</p>
<BR CLEAR="all">
<H2>Overview</H2>
<img src="misc/evans/emelfm_context.jpg" width="431" height="254" border="1" alt="an emelfm context menu" align="right" hspace="20" vspace="20">
<p>As a graphical file manager, emelfm has no peer. Any file operation imaginable may be carried out using emelfm. It has all the functionality of a modern
gui based file manager, yet at the same time mirrors the functionality of mc, including the ctrl+o shell. In addition, emelfm allows you to easily construct shell scripts
of a few lines and put them on a button - or in a context menu. Yes, you could put these in a shell script or an alias (and, of course, you still can), but there's
something just so <i>very nice</i> about drag-selecting a few files and then clicking one button which performs magic on them. </p>
<p>I'm always a little at a loss when the "GUI vs. Console" wars break out. I like and use both <i>when I find it appropriate</i>. Thus far, there is no simple, intuitive
way to provide point and click access to all the power the command line has to offer and I'm the first to dive in there when the need arises (or even just for sport).
Now then, just suppose I'd delved into the manual for mpage and written 'mpage -P -m50lb20t20r -j 1%2'. Yes, I needed the command line. Yes, it's very useful
to me. No, I won't remember it past my next cup of tea. Solution: add it to the context menu for .txt files in emelfm - or put it on a button. The above example is
quite trivial compared to what's really possible with emelfm. It simply serves to underline the point that emelfm actually bridges between your work on the command line
and your use of the gui. </p>
<BR CLEAR="all">
<img src="misc/evans/example_foo.jpg" width="268" height="247" alt="one of emelfm's file-type dialogs" align="left" hspace="20" vspace="20">
<p>Nearly all gui file managers allow for some default action when you double-click on a file. emelfm goes beyond that. If you right click over the same file you'll be
able to select from a list of <i>alternative</i> actions. Two things to note: 1) you've got more options and 2) it's context sensitive, i.e. you only see choices related
to that particular file-type. For example, in my own case, if I were to double-click an htm,html,shtm or shtml file I would be reading it in kless via w3m. However,
if I right click the same file a whole range of options open up to me. As if that's not enough, there's always the "open with" item, so I can type in a command on
the fly.</p>
<p>Also included in the emelfm repertoire are a 'vfs' for diving into tarballs and zip files, a pack plugin for making archives (with an elegant, intuitive interface),
an easy to use 'for each', a rename by extension (pattern really - much better) and many more.</p>
<p>Here's some other stuff in no particular order:</p>
<UL>
<LI>very simple configuration for unknown file-types
<LI>configurable coloured highlighting of file types
<LI>drag and drop internally and between other gtk apps
<LI>configurable fonts
<LI>plugins and a reference manual for writing your own
<LI>one-click access to your home directory
<LI>cloning of a file to the same dir under a different name
<LI>verbose file listings
<LI>various sorting methods via a single click
<LI>bookmarks
<LI>default startup dirs
<LI>capture of command output
<LI>more. I forget till I need it.....
</UL>
<BR CLEAR="all">
<H2>Installation</H2>
Even if you've never compiled a program before, emelfm will be trivial to compile.<br><br>
<UL>
<LI>Download the tarball and unpack it somewhere.<br>
<LI>Pop a shell and cd into the same directory and type 'make'.<br>
<LI>Then 'su' to root and type 'make install'.<br><br>
</UL>
You're done! Ctrl+d to get out of root and run emelfm by typing its name. That's all there is to it.<br>
Now, you can make an icon for emelfm or add it to your menu structure. It happens that I use KDE, so I used khotkeys and assigned emelfm to ctrl+esc for quick access.<br>
<H2>Navigation</H2>
<p>As detailed above, part of our shopping list was keyboard navigation and emelfm works out of the box. Up and down cursor keys respond predictably. Left cursor moves you up a directory and right cursor on a directory moves you down into that directory. Tab or space will toggle the active pane. Return or right arrow on a file will run the default command on that file.</p>
<p>If you press the shift key while moving up or down, you will highlight a range of files. Like mc, you can also use the 'insert' key to tag files.</p>
<p><a href="emelfm_keys.txt">Here's</a> a list of default keybindings. These are just a beginning. You can easily map all the default mc keys into emelfm. Then add all your own personal keybindings. As you can see by the screen shot, the configuration is pretty paul-proof.</p>
<img src="misc/evans/emelfm_keys.jpg" width="524" height="310" border="1" alt="emelfm keys dialog" hspace="20" vspace="20">
<p>Of course, navigating with the mouse is the same as the keyboard and it's intuitive enough that I don't feel I need to go into it. Double-clicking performs the
default action and Ctrl+click allows spot selection etcetera. One thing I need to mention is that 'drag and drop' is performed using the <i>middle</i> mouse button.</p>
<BR CLEAR="all">
<H2>Usage</H2>
<p>Where do I begin? You can configure everything from the key bindings to what's shown in the columns.
There are so many ways to configure emelfm,
I'll just give you a few thoughts:</p>
<UL>
<LI>Some misc. tips available from the readme are <a href="misc/evans/emelfm_tricks.txt">here.</a>
<LI>configure a button like 'kdesu -c emelfm'. We all su to root sometimes. We have to... Now, tell emelfm to show dirs in red, that way you'll know you're running as root. Also, resist changing the default config for root's emelfm - the less at home you are the better and - the sooner you'll leave.
<LI>Make a button for xterm as root and another for xterm as user. The nice part is they alway open in the target directory
<LI>Almost completely unrelated timesavers: create aliases for cf='./configure', mk='make' and only in root, mi='make install'
<LI>both df and du work nicer with the '-h' (human) option
<LI>Read the whole <a href="misc/evans/emelfm_readme.txt">Readme</a> it's worth it!
</UL>
<H2>Summary</H2>
<p>This program is not only the equal of 'Dopus' it's actually better. Before you flame me, I used Amigas since 1986 and
had thousands of lines of rexx hanging off of dopus. Now I have (so far)
a few hundred lines of perl and bash hanging off of emelfm. That, and a lot of ELF binaries. </p>
<p>No single program pleases everyone, but I know both ex-Amigoids and new Penguinistas who have and use emelfm.
If you're looking for something that most resembles Dopus visually, you should try
<A HREF="http://www.informatik.uni-halle.de/~hoffmanr/worker-e.html">Worker</A> by Ralf Hoffmann. There's also an article
about "Worker" <A HREF="http://www.canadacomputes.com/v3/story/1,1017,4954,00.html?tag=81&amp;sb=79">here</A>.
For a reliance on file magic give <A HREF="http://www.obsession.se/gentoo/">gentoo</A> by Emil Brink a download. For built-in ftp,
Henrik Harmsen wrote <A HREF="http://www.cd.chalmers.se/~hch/filerunner.html">filerunner</A>. I think emelfm probably owes the most
to "filerunner" in terms of look and feel.
</p>
<H4>Wish list</H4>
<UL>
<LI>Right-click alternatives and "dog-ears" for command buttons
<LI>du of selected files
<LI>Colouring of buttons etc.
<LI>CD-RW plugin
<LI>ftp
</UL>
<p>I know the author is seriously considering at least the first four.
</p>
<p>In sum, it's guys like Michael Clark that keep guys like me from having to learn 'C'. :-)</p>
<p>You will find Mr. Clark both helpfull and responsive to bug reports and requests for features.</p>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Paul Evans.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 61 of <i>Linux Gazette</i>, January 2001</H5>
<!-- *** END copyright *** -->
<!--startcut ==========================================================-->
<HR><P>
<CENTER>
<!-- *** BEGIN navbar *** -->
<IMG ALT="" SRC="../gx/navbar/left.jpg" WIDTH="14" HEIGHT="45" BORDER="0" ALIGN="bottom"><A HREF="dellomodarme.html"><IMG ALT="[ Prev ]" SRC="../gx/navbar/prev.jpg" WIDTH="16" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="index.html"><IMG ALT="[ Table of Contents ]" SRC="../gx/navbar/toc.jpg" WIDTH="220" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><A HREF="../index.html"><IMG ALT="[ Front Page ]" SRC="../gx/navbar/frontpage.jpg" WIDTH="137" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="http://www.linuxgazette.com/cgi-bin/talkback/all.py?site=LG&article=http://www.linuxgazette.com/issue61/evans.html"><IMG ALT="[ Talkback ]" SRC="../gx/navbar/talkback.jpg" WIDTH="121" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><A HREF="../faq/index.html"><IMG ALT="[ FAQ ]" SRC="./../gx/navbar/faq.jpg"WIDTH="62" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="kasten.html"><IMG ALT="[ Next ]" SRC="../gx/navbar/next.jpg" WIDTH="15" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><IMG ALT="" SRC="../gx/navbar/right.jpg" WIDTH="15" HEIGHT="45" ALIGN="bottom">
<!-- *** END navbar *** -->
</CENTER>
</BODY></HTML>
<!--endcut ============================================================-->