1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
|
XFM - The X File Manager (ver 1.2 beta)
----------------------------------------
(c) Simon Marlow 1990-1993
simonm@dcs.glasgow.ac.uk
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 1, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
------------------------------------------------------------------------------
1. Introduction
This is a small file manager/program manager package written using the
XToolkit. It contains most of the features that you would expect in a
file manager -- move around your directory tree in multiple windows,
and move, copy or delete files with simple mouse operations. The
integrated application manager allows you to load files into your
favourite applications from the file manager by dragging icons.
Consider this software a beta release - the last version was alpha
(and contained at least one serious bug), but I am more confident that
xfm is stable now. This version has been in testing for quite a
while, and will probably lose the 'beta' sticker before long, too.
Comments are welcome - please send me bug-fixes and any suggestions
you have for improving the program in any way (patches are also
welcome, as is complete texinfo documentation :-). Oh yes, and if you
have any nice icons, I'd certainly like to include them in the
distribution.
Installation is relatively straight forward. Section 1 contains a
list of instructions to get you started right away, and sections 2-3
have a more detailed explanation.
-------------------------------------------------------------------------------
1. QuickStart - for those of you who can't wait
type the following:
xmkmf
make Makefiles
make all install
cat DEFAULTS >>~/.Xdefaults
xrdb ~/.Xdefaults
xfm
This will start xfm with no applications configured. To use the
configuration files and icons included in the package, read section 3.
------------------------------------------------------------------------------
2. Compilation
I have included a minimal Imakefile, so there should be no problem
with compilation on most machines. Take a look at the Imakefile, and
edit it if you like. Then, simply make the Makefile by typing 'xmkmf',
and make the Makefiles in the xfm and xfmc subdirectories by typing
'make Makefiles'. 'make depend' will update the Makefiles with
dependancy information, but this is not strictly necessary. To make
the binaries, do a 'make'.
If there are any changes to be made to the source to compile on other
machines (these should be minor), please send me patches as I don't
have the resources here to test these things. Xfm currently compiles
cleanly on SunOS4.1, Ultrix (I think), Linux, and most POSIXish
systems (all with gcc and X11R5). Xfm needs an ANSI C compiler -
*please* don't send me patches to compile it on an older compiler,
just get gcc.
------------------------------------------------------------------------------
3. Installation
To install the binaries, do a 'make install'. This will install xfm
and xfmc in the default directory on your system.
If you have a .Xdefaults file, you may want to concatenate the file
DEFAULTS to it. This contains some defaults for xfm, to specify fonts
and other things. These are the xfm-specific resources. Some of them
may be removed in future versions as I will make them settable from
within xfm. All the Xtoolkit resources are also available.
If you want to use your own icons (in the application manager) xfm
needs to know where to find them. Include a line like
*bitmapFilePath: /home/simon/bitmaps:/usr/include/X11/bitmaps
in your .Xdefaults. A number of icons come with the standard X
distribution (these are in /usr/include/X11/bitmaps). I've also
included a few of mine in the directory user-bitmaps.
Xfm uses its own data file (by default called ~/.xfmrc) to keep track
of the icons you have installed in the application manager. You
shouldn't need to edit this file yourself, in fact xfm may get very
confused if you do. I have included a small .xfmrc file (STARTUP) that
you should rename and place in your home directory before starting xfm
- this will give you a few applications to get started. Note that you
will need the bitmap files in ./user-bitmaps available to use this
setup.
------------------------------------------------------------------------------
4. Operation of the File Manager
Most of it should be pretty obvious. Things that aren't obvious:
o The left hand mouse button selects an item (and deselects all others in the
same window). The second button toggles the selected state of an item.
o Clicking the right-hand mouse button when over an icon pops up a menu with
some operations that can be performed on that file.
o You can open new windows by two methods:
(a) Drag (with button 1) a directory onto anywhere on the root window. Note
that this may not work if you have a picture on your background.
(b) Select one or more directories and press the 'open' button.
o You cannot close the last window. To quit the program, use the 'quit' button
on the Application Manager window.
o Drag with the left-hand button to another window (or another icon, in general
a valid destination will be highlighted with a border when the cursor is
over it) to move files from one directory to another. The second button used
in the same way will copy files.
o Clicking on the arrows in Tree mode moves in that direction.
o Double clicking on a directory in Icon mode moves into that
directory. To move up a level, either select 'Up' from the 'Move' menu,
or double click on the '..' icon.
o Double clicking on an executable runs the program. Dragging files
onto an executable runs the program with the full pathnames of
the dragged files as arguments. (You can test this with 'echo').
o Double clicking on normal files invokes the default editor
(specified in the defaultEditor resource) with the filename as an
argument. The 'edit' option on the popup menu also performs the
same action.
o To get detailed information on a file, use 'Info' on the
'Operations' menu.
------------------------------------------------------------------------------
5. Operation of the Application Manager
o To install an application, either use the 'install' option on the
menu or drag an executable file over from a file window.
o Double clicking on an application will start it by running the
command '$SHELL -c <command>' - this is so you can use various shell
thingies in the command line.
o Dragging files over from a file window onto an application will
start it with the command '$SHELL -c <command> <file1> <file2> ...'
Most shells will then place <file1>, <file2> etc. into the variables
$0, $1 ... So for example if you wanted to load a file into emacs,
the command for the emacs application would be 'emacs $0', and you
could drag a file over from a file window onto the emacs icon to
have emacs come up with the file loaded.
Other useful applications to install this way are the printer (print
files by dragging onto the printer icon), a waste-paper basket 'rm
$*' (you'll need to make sure the windows are updated too -- see
Secction 6 below).
o Icons that you specify must be in one of the directories specified
by the bitmapFilePath resource, and must be in standard X bitmap
format (use 'bitmap' to create or edit them).
o To save the current set of applications to the resource file, use
the 'Save setup' option. To restore the application set from the
resource file, use 'Load setup'
------------------------------------------------------------------------------
6. The program xfmc
In this release, I've included a small program xfmc that will communicate with
an xfm process running on the same display. There are two types of
messages that can be sent: open new windows, or update existing ones. The
syntax of the command is
xfmc -o path ...
xfmc -u path ...
This means that you can finally have a real wastebasket in the application
manager (by instructing xfm to update some windows using xfmc), and do other
cool things like mount a floppy disk and have a window onto it open up
automatically.
It works by finding the xfm window (using a depth-first traversal of the
window tree on the display), and sending it a sequence of XClientEvent
messages. This works where xfm and xfmc are running on different machines,
but is rather slow. A better method may be to use a socket in /tmp, although
this would restrict xfm & xfmc to being on the same machine.
------------------------------------------------------------------------------
7. Bugs / Problems
o Starting applications will start another copy of the shell. If you
don't like this, then prefix all your application commands with
'exec'. In a future version I might have xfm insert this for you.
o There is no recursive copy routine currently - so copying
directories is not allowed. Sorry!
o It's a bit slow - this is a combination of having to stat all the files in
a directory, and then creating millions of widgets. A possible
solution to this problem is to create my own widget class for the
icons. Maybe in a future version.
o Anything else... please tell me, my email address is below.
------------------------------------------------------------------------------
Have fun!
Simon Marlow
simonm@dcs.glasgow.ac.uk
|