r293: Updated the docs, plus a few minor changes.
[rox-filer.git] / ROX-Filer / src / Docs / Manual.lyx
blob781ff724aed7d41431280c832aadf7e8e712f5d2
1 #This file was created by <tal197> Wed Jun  7 10:53:24 2000
2 #LyX 0.12 (C) 1995-1998 Matthias Ettrich and the LyX Team
3 \lyxformat 2.15
4 \textclass article
5 \begin_preamble
6 \def \Tab {\thinspace$\langle\hbox{Tab}\rangle$\thinspace}
7 \end_preamble
8 \language default
9 \inputencoding latin1
10 \fontscheme default
11 \graphics default
12 \paperfontsize default
13 \spacing single 
14 \papersize Default
15 \paperpackage widemarginsa4
16 \use_geometry 0
17 \use_amsmath 0
18 \paperorientation portrait
19 \secnumdepth 3
20 \tocdepth 3
21 \paragraph_separation indent
22 \defskip medskip
23 \quotes_language english
24 \quotes_times 2
25 \papercolumns 1
26 \papersides 1
27 \paperpagestyle default
29 \layout Title
31 ROX-Filer User Manual
32 \layout Author
34 Thomas Leonard, tal197@ecs.soton.ac.uk
35 \layout Date
38 \latex latex 
40 \backslash 
41 today
42 \layout Abstract
44 ROX-Filer is a graphical file manger for the X Window System.
45  Its user interface is based on the RISC OS filer and it supports similar
46  features such as application directories and drag-and-drop loading and
47  saving of files.
48 \layout Standard
51 \begin_inset LatexCommand \tableofcontents
53 \end_inset 
56 \layout Section
58 Introduction
59 \layout Standard
61 ROX-Filer is a simple and easy to use graphical file manager for X11, the
62  windowing system used on Unix and Unix-like operating systems.
63  It is also the core component of the ROX Desktop
64 \begin_inset LatexCommand \cite{ROX}
66 \end_inset 
69 \layout Subsection
71 Features
72 \layout Description
74 XDND A common drag-and-drop protocol used, for example, by the GNOME desktop
75 \begin_inset LatexCommand \cite{GNOME}
77 \end_inset 
80  This allows data to be loaded into an application by dragging it from a
81  filer window to a program.
82  The full specification is given in 
83 \begin_inset LatexCommand \cite{DND}
85 \end_inset 
88 \layout Description
90 XDS An extension to XDND that allows applications to save data by dragging
91  an icon back to a filer window.
92  The full specification is given in 
93 \begin_inset LatexCommand \cite{XDS}
95 \end_inset 
98 \layout Description
101 \protected_separator 
102 Choices A simple, but flexible, system for managing user choices.
103  See 
104 \begin_inset LatexCommand \cite{Choices}
106 \end_inset 
108  for details.
109 \layout Description
111 Application
112 \protected_separator 
113 directories Self contained relocatable applications, where installation
114  is as simple as copying it to where you want it and uninstalling it is
115  just a matter of deleting a directory.
116  Described later in this documentation.
117 \layout Section
119 Conditions
120 \layout Standard
122 This program is free software; you can redistribute it and/or modify it
123  under the terms of the GNU General Public License as published by the Free
124  Software Foundation; either version 2 of the License, or (at your option)
125  any later version.
126 \layout Standard
128 This program is distributed in the hope that it will be useful, but WITHOUT
129  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
130  FOR A PARTICULAR PURPOSE.
131  See the GNU General Public License for more details.
132 \layout Standard
134 You should have received a copy of the GNU General Public License along
135  with this program; if not, write to the Free Software Foundation, Inc.,
136  59 Temple Place, Suite 330, Boston, MA, 02111-1307, USA.
137 \layout Section
139 Instructions
140 \layout Subsection
142 Compiling
143 \layout Standard
145 ROX-Filer is usually supplied in source-only form.
146  To compile and run it, you will require
147 \layout Itemize
149 Unix or Linux (root access is not required),
150 \layout Itemize
152 The X Window system (supplied as standard on all modern systems),
153 \layout Itemize
155 GTK+ 1.2.0 or later (libraries and headers) --- get the latest version from
157 \begin_inset LatexCommand \cite{GTK+}
159 \end_inset 
162 \layout Itemize
164 A C compiler (standard on most systems).
165 \layout Standard
167 All of the above are standard on most modern Linux distributions.
168  To check which version of GTK+ you have installed, run the 
169 \family typewriter 
170 gtk-config
171 \family default 
172  command, like this (
173 \family typewriter 
175 \family default 
176  is the shell prompt):
177 \layout LyX-Code
179 $ gtk-config --version
180 \layout LyX-Code
182 1.2.3
183 \layout Standard
185 To compile:
186 \layout Enumerate
188 Change to the directory containing the ROX-Filer subdirectory.
189 \layout Enumerate
191 Run the AppRun script with the 
192 \family typewriter 
193 --compile
194 \family default 
195  option, like this:
196 \begin_deeper 
197 \layout LyX-Code
199 $ ROX-Filer/AppRun --compile
200 \end_deeper 
201 \layout Enumerate
203 ROX-Filer will perform various checks to find out what kind of system it
204  is being run on and will then compile.
205  If it doesn't work then please e-mail me and complain! Tell me what kind
206  of system you have and what errors were reported.
207  If you manage to fix the problem yourself then please e-mail me the fix.
208 \begin_deeper 
209 \layout Standard
211 The executables files are stored inside the ROX-Filer directory in a different
212  subdirectory for each platform.
213  Therefore, you can compile the same application on several different types
214  of machine and then run it from any of them using the AppRun script.
215  This is particularly useful in a network environment.
216 \end_deeper 
217 \layout Enumerate
219 The filer needs some shared files to work --- icons for the various file
220  types, rules for determining file types and default run actions.
221  These are installed, along with the filer itself, by the '
222 \family typewriter 
223 install.sh
224 \family default 
225 ' script supplied with the filer.
226  Run it like this:
227 \begin_deeper 
228 \layout LyX-Code
230 $ su
231 \layout LyX-Code
233 [ enter root password ]
234 \layout LyX-Code
236 $ ./install.sh
237 \layout Standard
239 If you don't have the root password then don't worry --- skip the '
240 \family typewriter 
242 \family default 
243 ' step and follow the instructions for installing into your home directory.
245 \end_deeper 
246 \layout Standard
248 You can now run the filer by running the AppRun script without any options,
249  like this:
250 \layout LyX-Code
252 $ ROX-Filer/AppRun
253 \layout Standard
255 A window should appear and display the contents of your home directory.
256  If you opted to install the `
257 \family typewriter 
259 \family default 
260 ' script then you can simply run that to open a viewer onto the current
261  directory.
262  You can also use it to open files in the same way that the filer would.
263  If you installed the script into your home directory then you may need
264  to set your PATH environment variable so that the shell can find it.
265 \layout Subsection
267 Invoking
268 \layout Standard
270 By default, ROX-Filer will start by displaying your home directory.
271  You can get it to display other directories instead by listing them after
272  the command:
273 \layout LyX-Code
275 $ ROX-Filer/AppRun /home /usr /usr/local
276 \layout Standard
278 If you want one of the directories to be opened as a panel put 
279 \family typewriter 
281 \family default 
282  or 
283 \family typewriter 
285 \family default 
286  before the directory (for `bottom' or `top' panels).
287  If you don't know what a panel is, try it and see! To run the filer in
288  the background, put an & at the end of the line.
289 \layout LyX-Code
291 $ mkdir ~/Panel
292 \layout LyX-Code
294 $ ln -s $HOME ~/Panel/Home
295 \layout LyX-Code
297 $ ROX-Filer/AppRun -b ~/Panel &
298 \layout Standard
300 The panel should be displayed in a window without a title bar.
301  If this does not work then you may need to update your window manager.
302  The filer was designed and tested using the Enlightenment window manager
303 \begin_inset LatexCommand \cite{enlightenment}
305 \end_inset 
308  You could also try using the 
309 \family typewriter 
311 \family default 
312  option which bypasses the window manager entirely (also use this if the
313  panel appears in the wrong place):
314 \layout LyX-Code
316 $ ROX-Filer/AppRun -o -b ~/Panel &
317 \layout Standard
319 Note that if the same version of the filer is already running on this machine
320  then, by default, it will be used to open the directories and the new copy
321  will exit immediately.
322  You can override this (perhaps because the old copy has stopped responding
323  for some reason) using the `
324 \family typewriter 
325 --new
326 \family default 
327 ' option.
328 \layout Subsection
330 Mouse button and key bindings
331 \layout Standard
333 Quick start:
334 \layout Itemize
336 Click the left
337 \begin_float footnote 
338 \layout Standard
340 This documentation assumes that button--1 is the left button, button--2
341  is the middle button and button--3 is the right button.
342  This is not always the case --- for example, in a left-handed setup.
343 \end_float 
344  mouse button to open files and directories.
345 \layout Itemize
347 Click the right button to get a menu.
348  Click over a file to perform an action on that file.
349 \layout Itemize
351 Drag files between windows to copy (left button) or move (middle button)
352  them.
353 \layout Standard
356 \latex latex 
358 \backslash 
359 noindent 
360 \latex default 
361 By default, the mouse button bindings are designed to fit in with X conventions.
362  However, the behaviour is highly configurable --- have a play in the Options
363  window if you don't like the normal settings.
364  The normal settings behave as follows:
365 \layout Standard
368 \latex latex 
370 \backslash 
371 medskip
372 \layout Standard
373 \LyXTable
374 multicol5
375 19 2 0 0 -1 -1 -1 -1
376 1 1 0 0
377 1 1 0 0
378 0 1 1 0
379 0 1 1 0
380 0 1 0 0
381 0 1 0 0
382 0 1 0 0
383 0 1 1 0
384 0 1 0 0
385 0 1 1 0
386 0 1 0 0
387 0 1 1 0
388 0 1 1 0
389 0 1 0 0
390 0 1 0 0
391 0 1 0 0
392 0 1 0 0
393 0 1 0 0
394 0 1 0 0
395 2 1 0 "3.5cm" ""
396 2 1 1 "9.5cm" ""
397 0 2 0 1 0 0 0 "" ""
398 0 2 0 1 0 0 0 "" ""
399 0 8 0 1 0 0 0 "" ""
400 0 8 0 1 1 0 0 "" ""
401 0 8 0 1 0 0 0 "" ""
402 0 8 0 1 1 0 0 "" ""
403 0 8 0 1 0 0 0 "" ""
404 0 8 0 1 0 0 0 "" ""
405 0 2 0 1 0 0 0 "" ""
406 0 8 0 1 0 0 0 "" ""
407 0 8 0 1 0 0 0 "" ""
408 0 8 0 1 0 0 0 "" ""
409 0 8 0 1 1 0 0 "" ""
410 0 8 0 1 1 0 0 "" ""
411 0 8 0 1 0 0 0 "" ""
412 0 2 0 1 0 0 0 "" ""
413 0 8 0 1 1 0 0 "" ""
414 0 8 0 1 0 0 0 "" ""
415 0 2 0 1 0 0 0 "" ""
416 0 8 0 1 0 0 0 "" ""
417 0 8 0 1 0 0 0 "" ""
418 0 8 0 1 1 0 0 "" ""
419 0 8 0 1 0 0 0 "" ""
420 0 8 0 1 1 0 0 "" ""
421 0 8 0 1 0 0 0 "" ""
422 0 8 0 1 0 0 0 "" ""
423 0 8 0 1 0 0 0 "" ""
424 0 8 0 1 0 0 0 "" ""
425 0 8 0 1 0 0 0 "" ""
426 0 8 0 1 0 0 0 "" ""
427 0 8 0 1 0 0 0 "" ""
428 0 8 0 1 0 0 0 "" ""
429 0 8 0 1 0 0 0 "" ""
430 0 8 0 1 0 0 0 "" ""
431 0 8 0 1 0 0 0 "" ""
432 0 8 0 1 0 0 0 "" ""
433 0 8 0 1 0 0 0 "" ""
434 0 8 0 1 0 0 0 "" ""
436 Key or mouse button
437 \newline 
438 Action
439 \newline 
440 Left button click
441 \newline 
442 Open the file or directory clicked on.
443 \newline 
445 \newline 
446 Hold down Ctrl to select things instead of opening them.
447 \newline 
449 \newline 
450 Hold down Shift to look inside applications, treat files as text, follow
451  symlinks or mount devices.
452 \newline 
453 Middle button click
454 \newline 
455 Same as left click, but open a directory in a new window or close the viewer
456  when opening a file.
457 \newline 
458 Right button click
459 \newline 
460 Open the main menu.
461  Hold down Ctrl while clicking to go directly to the Selection submenu.
462 \newline 
463 Drag an item 
464 \newline 
465 Copy the file(s) to the destination (an application or another filer window).
466 \newline 
467 (left mouse button)
468 \newline 
469 Hold down Shift to move the file, or Ctrl+Shift to create a symbolic link.
470 \newline 
471 Drag an item
472 \newline 
473 As above, but always moves rather than copying or symlinking.
474 \newline 
475 (middle mouse button)
476 \newline 
478 \newline 
479 Drag (not over an item)
480 \newline 
481 Select a group of items by dragging a box around them.
482  With the left mouse button, only the files
483 \newline 
485 \newline 
486 in the box will be selected.
487  If you hold down Ctrl then the boxed items are added to the selection.
488 \newline 
490 \newline 
491 If the other mouse button is used then the boxed items are toggled between
492  selected and unselected.
493 \newline 
494 Backspace
495 \newline 
496 Change to viewing the parent directory.
497 \newline 
498 Cursor keys
499 \newline 
500 Move the cursor around.
501 \newline 
502 Page Up, Page Down
503 \newline 
504 Move up and down in steps of ten rows at a time.
505 \newline 
506 Home, End
507 \newline 
508 Move to the first/last entry in the directory.
509 \newline 
510 Return
511 \newline 
512 Open the item under the cursor.
513  With Shift held down this acts like choosing 'Shift Open' from the menu.
514 \newline 
515 Spacebar
516 \newline 
517 Toggles the item under the cursor between being selected and unselected.
518 \layout Standard
521 \latex latex 
523 \backslash 
524 medskip
525 \backslash 
526 noindent 
527 \latex default 
528 Other keys can easily be defined by opening the menu, moving the pointer
529  over the item you want to use and pressing a key.
530  The key will appear in the menu and can be used from then on.
531  To make the new key bindings permanent, open the Options box from the menu
532  and click on Save.
533 \layout Subsection
535 The selection
536 \layout Standard
538 While items are selected in a ROX-Filer window the filer has the global
539  selection.
540  You can then paste into another window to get the pathnames of the selected
541  files.
542  For example, to extract the files from a .tgz archive on a floppy disk into
543  your home directory:
544 \layout Enumerate
546 Choose `Xterm here' from the menu in your home directory.
547 \layout Enumerate
549 Type `tar xzf ' (but don't press Return)
550 \layout Enumerate
552 Ctrl-click on the .tgz file to select it.
553 \layout Enumerate
555 Click the middle button in the xterm window to paste the name of the file
556  into the command.
557 \layout Enumerate
559 Press Return in the xterm to execute the command.
560 \layout Subsection
563 \begin_inset LatexCommand \label{sec: Toolbar}
565 \end_inset 
567 The toolbar
568 \layout Standard
570 By default, each window has a toolbar along the top.
571  You can disable this (or make it larger) from the Options window.
572  The four buttons on the toolbar are:
573 \layout Standard
574 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
575 multicol5
576 5 3 0 0 -1 -1 -1 -1
577 1 1 0 0
578 1 1 0 0
579 0 1 0 0
580 0 1 0 0
581 0 1 0 0
582 8 1 0 "" ""
583 2 1 1 "4.5cm" ""
584 2 0 1 "4.5cm" ""
585 0 8 0 1 0 0 0 "" ""
586 0 2 0 1 0 0 0 "" ""
587 0 2 0 1 0 0 0 "" ""
588 0 8 0 1 0 0 0 "" ""
589 0 2 0 1 0 0 0 "" ""
590 0 8 0 1 0 0 0 "" ""
591 0 8 0 1 0 0 0 "" ""
592 0 2 0 1 0 0 0 "" ""
593 0 2 0 1 0 0 0 "" ""
594 0 8 0 1 0 0 0 "" ""
595 0 8 0 1 0 0 0 "" ""
596 0 8 0 1 0 0 0 "" ""
597 0 8 0 1 0 0 0 "" ""
598 0 8 0 1 0 0 0 "" ""
599 0 8 0 1 0 0 0 "" ""
601 Icon
602 \newline 
603 Action
604 \newline 
605 Other action
606 \newline 
607 Up arrow
608 \newline 
609 Change to parent directory
610 \newline 
611 Show parent in a new window
612 \newline 
613 House
614 \newline 
615 Change to home directory
616 \newline 
617 Show home in a new window
618 \newline 
619 Looping arrows
620 \newline 
621 Reread the directory contents
622 \newline 
623 Open a new window
624 \newline 
625 Information
626 \newline 
627 Show ROX-Filer's help files
628 \newline 
629 Same
630 \layout Standard
633 \latex latex 
635 \backslash 
636 noindent 
637 \latex default 
638 If the toolbar is in Normal mode (ie, not GNOME mode) then you may also
639  use either of the other buttons to perform the `Other action'.
640 \layout Subsection
642 The menus
643 \layout Standard
645 You can open a menu by right clicking
646 \begin_float footnote 
647 \layout Standard
649 If the Use `RISC OS mouse bindings' option is on then use the middle button
650  instead.
651 \end_float 
652  over a panel or filer window.
653  Here is a full description of each choice and what it does:
654 \layout Standard
655 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
656 multicol5
657 6 2 0 0 -1 -1 -1 -1
658 1 1 0 0
659 1 1 0 0
660 0 1 0 0
661 0 1 0 0
662 0 1 0 0
663 0 1 0 0
664 8 1 0 "" ""
665 2 1 1 "8cm" ""
666 0 8 0 1 0 0 0 "" ""
667 0 8 0 1 0 0 0 "" ""
668 0 8 0 1 0 0 0 "" ""
669 0 8 0 1 0 0 0 "" ""
670 0 8 0 1 0 0 0 "" ""
671 0 8 0 1 0 0 0 "" ""
672 0 8 0 1 0 0 0 "" ""
673 0 2 0 1 0 0 0 "" ""
674 0 8 0 1 0 0 0 "" ""
675 0 8 0 1 0 0 0 "" ""
676 0 8 0 1 0 0 0 "" ""
677 0 8 0 1 0 0 0 "" ""
679 Entry
680 \newline 
681 Action
682 \newline 
683 Select All
684 \newline 
685 Select every item in this window.
686 \newline 
687 Clear Selection
688 \newline 
689 Unselect every item in this window.
690 \newline 
691 Options...
692 \newline 
693 Configure ROX-Filer.
694 \newline 
695 New Directory...
696 \newline 
697 Create a new directory in this one.
698 \newline 
699 Xterm Here
700 \newline 
701 Open an xterm with its current directory set to this directory.
702 \layout Subsubsection
704 The display menu
705 \layout Standard
706 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
707 multicol5
708 11 2 0 0 -1 -1 -1 -1
709 1 1 0 0
710 1 1 0 0
711 0 1 0 0
712 0 1 0 0
713 0 1 0 0
714 0 1 0 0
715 0 1 0 0
716 0 1 0 0
717 0 1 0 0
718 0 1 0 0
719 0 1 1 0
720 8 1 0 "" ""
721 2 1 1 "8cm" ""
722 0 8 0 1 0 0 0 "" ""
723 0 8 0 1 0 0 0 "" ""
724 0 8 0 1 0 0 0 "" ""
725 0 2 1 1 0 0 0 "" ""
726 0 8 0 1 0 0 0 "" ""
727 0 8 0 1 0 0 0 "" ""
728 0 8 0 1 0 0 0 "" ""
729 0 8 0 1 0 0 0 "" ""
730 0 8 0 1 0 0 0 "" ""
731 0 8 0 1 0 0 0 "" ""
732 0 8 0 1 0 0 0 "" ""
733 0 2 0 1 0 0 0 "" ""
734 0 8 0 1 0 0 0 "" ""
735 0 8 0 1 0 0 0 "" ""
736 0 8 0 1 0 0 0 "" ""
737 0 8 0 1 0 0 0 "" ""
738 0 8 0 1 0 0 0 "" ""
739 0 8 0 1 0 0 0 "" ""
740 0 8 0 1 0 0 0 "" ""
741 0 8 0 1 1 0 0 "" ""
742 0 8 0 1 0 0 0 "" ""
743 0 8 0 1 0 0 0 "" ""
745 Entry
746 \newline 
747 Action
748 \newline 
749 Large Icons
750 \newline 
751 Each object in the directory is shown as a large icon with its name below.
752 \newline 
753 Small Icons
754 \newline 
755 Items are drawn smaller that usual, allowing you to see more files at once.
756 \latex latex 
758 \backslash 
760 \latex default 
762 \newline 
763 Full Info
764 \newline 
765 Entries are displayed with their icon, name, type, permissions, owner and
766  size.
767 \newline 
768 Sort by Name
769 \newline 
770 Items are arranged by name.
771  There is an option to make this case-sensitive.
772 \newline 
773 Sort by Type
774 \newline 
775 Items are grouped by their types and then sorted by name within the groups.
776 \newline 
777 Sort by Date
778 \newline 
779 Most recently modified first.
780 \newline 
781 Sort by Size
782 \newline 
783 Largest first.
784 \newline 
785 Show Hidden
786 \newline 
787 If on, files beginning with a dot are shown, otherwise they are hidden.
788 \newline 
789 Refresh
790 \newline 
791 Rereads the contents of the directory and details of all the files in it.
792 \newline 
794 \newline 
795 Use this if the display becomes out-of-date.
796 \layout Standard
799 \latex latex 
801 \backslash 
802 noindent
803 \backslash 
805 \backslash 
806 thinspace{}
807 \latex default 
808 If ROX-Filer was unable to find ImLib
809 \begin_inset LatexCommand \cite{ImLib}
811 \end_inset 
813  when it was compiled then the icons are shown cropped rather than scaled.
814  Get ImLib and recompile if you want it to look nice.
815 \layout Subsubsection
818 \begin_inset LatexCommand \label{sec: Permissions}
820 \end_inset 
822 Permissions
823 \layout Standard
825 The permissions display, shown in Full Info mode, is made up of four groups
826  of three flags.
827  Each flag is displayed as a letter if it is on and a dash (--) if not.
828  The first three characters show the permissions for the owner of the file,
829  the second for other members of the file's group and the third for everyone
830  else.
831  Whichever group applies to the ROX-Filer process itself is shown underlined.
832  The fourth group shows any special flags.
833 \layout Standard
835 The meanings of the characters are:
836 \layout Description
838 r Permission to read the contents of a file, or the names of files in a
839  directory.
840 \layout Description
842 w Permission to alter the contents of a file, or change which names appear
843  in a directory.
844 \layout Description
846 x Permission to run the file as a program, or refer to the files listed
847  within the directory.
848 \layout Description
850 U This program executes with the 
851 \emph on 
852 effective user ID
853 \emph toggle 
854  of its owner rather than the person who ran it.
855 \layout Description
857 G This program executes with the 
858 \emph on 
859 effective group ID
860 \emph toggle 
861  of its group, regardless of who ran it.
862 \layout Description
864 T Entries in this directory can only be altered or removed by the people
865  who own the files even if they have write permission on the directory itself.
866 \layout Standard
868 For example, `
869 \family typewriter 
870 \bar under 
872 \bar default 
873 ,rwx,r-x/---
874 \family default 
875 ' means that the owner of the file is the same as the effective user of
876  ROX-Filer (basically, you own the file), you and members of the file's
877  group have read, write and execute permission and other people have only
878  read and execute permission.
879  There are no special flags set.
880 \layout Standard
882 The rules which determine which permissions apply may vary slightly between
883  operating systems, but a rough guide is:
884 \layout Itemize
886 If the
887 \emph on 
888  effective user ID
889 \emph toggle 
890  of the process is equal to the file's owner, then the owner permissions
891  apply.
892 \layout Itemize
894 Otherwise, if the 
895 \emph on 
896 effective group ID
897 \emph toggle 
898  of the process is equal to the file's group OR the file's group is one
899  of the process's 
900 \emph on 
901 supplemental groups
902 \emph toggle 
903  then the group permissions apply.
904 \layout Itemize
906 Otherwise, the `other' permissions apply.
907  The 
908 \emph on 
909 real user ID
910 \emph toggle 
911  and 
912 \emph on 
913 real group ID
914 \emph toggle 
915  have no effect (except that a process may set its real IDs to its effective
916  IDs).
917 \layout Subsubsection
919 The selection menu
920 \layout Standard
922 All of these work in the same way --- if you open the menu with some items
923  selected then the operation applies to those items.
924  If you open then menu over an item while there is no selection then that
925  item is temporarily selected.
926  If you choose one of these while there is no selection at all then the
927  window goes into `target mode'; the operation happens to the next item
928  you click on.
929  Click on the window background, press Escape, or click with the right mouse
930  button to cancel target mode.
931  Target mode is mainly useful with the `Single click navigation' option
932  and keys bound to the various menu entries.
933 \layout Standard
934 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
935 multicol5
936 19 2 0 0 -1 -1 -1 -1
937 1 1 0 0
938 1 1 0 0
939 0 1 0 0
940 0 1 0 0
941 0 1 0 0
942 0 1 1 0
943 0 1 1 0
944 0 1 1 0
945 0 1 0 0
946 0 1 0 0
947 0 1 0 0
948 0 1 0 0
949 0 1 0 0
950 0 1 1 0
951 0 1 1 0
952 0 1 0 0
953 0 1 1 0
954 0 1 0 0
955 0 1 0 0
956 8 1 0 "" ""
957 2 1 1 "10cm" ""
958 0 8 0 1 0 0 0 "" ""
959 0 8 0 1 0 0 0 "" ""
960 0 8 0 1 0 0 0 "" ""
961 0 8 0 1 0 0 0 "" ""
962 0 8 0 1 0 0 0 "" ""
963 0 2 0 1 0 0 0 "" ""
964 0 8 0 1 0 0 0 "" ""
965 0 8 0 1 0 0 0 "" ""
966 0 8 0 1 0 0 0 "" ""
967 0 2 0 1 1 0 0 "" ""
968 0 8 0 1 0 0 0 "" ""
969 0 2 0 1 1 0 0 "" ""
970 0 8 0 1 0 0 0 "" ""
971 0 2 0 1 1 0 0 "" ""
972 0 8 0 1 0 0 0 "" ""
973 0 8 0 1 0 0 0 "" ""
974 0 8 0 1 0 0 0 "" ""
975 0 8 0 1 0 0 0 "" ""
976 0 8 0 1 0 0 0 "" ""
977 0 8 0 1 0 0 0 "" ""
978 0 8 0 1 0 0 0 "" ""
979 0 8 0 1 0 0 0 "" ""
980 0 8 0 1 0 0 0 "" ""
981 0 8 0 1 0 0 0 "" ""
982 0 8 0 1 0 0 0 "" ""
983 0 8 0 1 1 0 0 "" ""
984 0 8 0 1 0 0 0 "" ""
985 0 8 0 1 1 0 0 "" ""
986 0 8 0 1 0 0 0 "" ""
987 0 8 0 1 0 0 0 "" ""
988 0 8 0 1 0 0 0 "" ""
989 0 8 0 1 1 0 0 "" ""
990 0 8 0 1 0 0 0 "" ""
991 0 8 0 1 0 0 0 "" ""
992 0 8 0 1 0 0 0 "" ""
993 0 8 0 1 0 0 0 "" ""
994 0 8 0 1 0 0 0 "" ""
995 0 8 0 1 0 0 0 "" ""
997 Entry
998 \newline 
999 Action
1000 \newline 
1001 Copy...
1002 \newline 
1003 Make a copy of this object in the same directory.
1004 \newline 
1005 Rename...
1006 \newline 
1007 Change the name used for this object.
1008 \newline 
1009 Link...
1010 \newline 
1011 Create a symbolic link to this name in the same directory.
1012 \newline 
1013 Shift Open
1014 \newline 
1015 Opens applications as directories, files as text/plain, mount points
1016 \newline 
1018 \newline 
1019 by mounting or unmounting them and symlinks by opening the directory
1020 \newline 
1022 \newline 
1023 containing the thing they point to.
1024 \newline 
1026 \newline 
1027 This is the same effect as clicking with Shift held down.
1028 \newline 
1029 Help
1030 \newline 
1031 Explain what kind of thing is selected.
1032  For applications, display the help files.
1033 \newline 
1034 Info
1035 \newline 
1036 Display extra information about this object.
1037 \newline 
1038 Open VFS
1039 \newline 
1040 Open the file as if it was a directory --- see section 
1041 \begin_inset LatexCommand \ref{sec: vfs}
1043 \end_inset 
1046 \newline 
1047 Mount
1048 \newline 
1049 Mount or unmount each mount point selected.
1050 \newline 
1051 Delete
1052 \newline 
1053 Remove all the selected entries from the directory.
1054 \newline 
1056 \newline 
1057 Subdirectories will have their contents deleted first.
1058 \newline 
1060 \newline 
1061 Deleting symlinks only removes the link, not the thing it points to.
1062 \newline 
1063 Disk Usage
1064 \newline 
1065 Count the sizes of all the selected items.
1066  Directories also have their
1067 \newline 
1069 \newline 
1070 contents counted.
1071  Symlinks count themselves, not the things they point to.
1072 \newline 
1073 Permissions
1074 \newline 
1075 Allows you to change the permissions for the selected files.
1076 \newline 
1077 Find
1078 \newline 
1079 Search for files by specifying various conditions --- see section 
1080 \begin_inset LatexCommand \ref{sec: Searching}
1082 \end_inset 
1085 \layout Subsubsection
1087 The window menu
1088 \layout Standard
1089 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
1090 multicol5
1091 11 2 0 0 -1 -1 -1 -1
1092 1 1 0 0
1093 1 1 0 0
1094 0 1 0 0
1095 0 1 0 0
1096 0 1 0 0
1097 0 1 0 0
1098 0 1 0 0
1099 0 1 0 0
1100 0 1 1 0
1101 0 1 0 0
1102 0 1 0 0
1103 8 1 0 "" ""
1104 2 1 1 "8cm" ""
1105 0 8 0 1 0 0 0 "" ""
1106 0 8 0 1 0 0 0 "" ""
1107 0 8 0 1 0 0 0 "" ""
1108 0 2 0 1 0 0 0 "" ""
1109 0 8 0 1 0 0 0 "" ""
1110 0 8 0 1 0 0 0 "" ""
1111 0 8 0 1 0 0 0 "" ""
1112 0 8 0 1 0 0 0 "" ""
1113 0 8 0 1 0 0 0 "" ""
1114 0 8 0 1 0 0 0 "" ""
1115 0 8 0 1 0 0 0 "" ""
1116 0 8 0 1 0 0 0 "" ""
1117 0 8 0 1 0 0 0 "" ""
1118 0 8 0 1 0 0 0 "" ""
1119 0 8 0 1 0 0 0 "" ""
1120 0 8 0 1 1 0 0 "" ""
1121 0 8 0 1 0 0 0 "" ""
1122 0 8 0 1 0 0 0 "" ""
1123 0 8 0 1 0 0 0 "" ""
1124 0 8 0 1 0 0 0 "" ""
1125 0 8 0 1 0 0 0 "" ""
1126 0 8 0 1 0 0 0 "" ""
1128 Entry
1129 \newline 
1130 Action
1131 \newline 
1132 Parent, New Window
1133 \newline 
1134 Open a new window displaying this window's parent.
1135 \newline 
1136 Parent, Same Window
1137 \newline 
1138 As above, but reuse this window.
1139 \newline 
1140 New Window
1141 \newline 
1142 Open another window onto this directory.
1143 \newline 
1144 Close Window
1145 \newline 
1146 Close this window.
1147 \newline 
1148 Enter Path...
1149 \newline 
1150 Open the path-entry box (see section 
1151 \begin_inset LatexCommand \ref{sec: mini}
1153 \end_inset 
1156 \newline 
1157 Shell Command...
1158 \newline 
1159 Open the shell command box (see section 
1160 \begin_inset LatexCommand \ref{sec: mini}
1162 \end_inset 
1165 \newline 
1166 Set Run Action...
1167 \newline 
1168 Allows you to set the program to use when double-clicking on a file.
1169 \newline 
1171 \newline 
1172 See section 
1173 \begin_inset LatexCommand \ref{sec: RunAction}
1175 \end_inset 
1177  for details.
1178 \newline 
1179 Select If...
1180 \newline 
1181 Select just those files that match the given pattern --- see section 
1182 \begin_inset LatexCommand \ref{sec: SelectIf}
1184 \end_inset 
1187 \newline 
1188 Show ROX-Filer help
1189 \newline 
1190 Same as selecting ROX-Filer and choosing `Help' from the menu.
1191 \layout Subsubsection
1193 The panel menu
1194 \layout Standard
1196 This is just a cut-down version of the window menu.
1197  The only new entry is `Open Panel as Directory', which displays the panel
1198  in a new, non-panel, window.
1199  `Remove Item' is a cut-down version of `Delete'; it only works for symbolic
1200  links and never asks for confirmation.
1201  Since dragging applications and directories to the panel creates symlinks
1202  it is very easy to change the panel contents to suit your needs.
1203 \layout Subsection
1206 \begin_inset LatexCommand \label{sec: vfs}
1208 \end_inset 
1210 Virtual file systems
1211 \layout Standard
1213 Some types of file can be represented as a directory.
1214  A typical example is a zip file, which contains an entire directory structure
1215  in compressed form.
1216  It is often useful to be able to open up such a file as if it was a real
1217  directory, and the VFS system allows you to do this.
1218 \layout Standard
1220 To use this feature you must have one or both of the following:
1221 \layout Itemize
1223 A system (such as PODFUK
1224 \begin_inset LatexCommand \cite{PODFUK}
1226 \end_inset 
1228 ) which causes the kernel to support various Virtual File Systems directly.
1229  This is the best option since all programs will be able to access the contents
1230  of the VFS.
1231  You will require root access to install such a system, however, and it
1232  is not available on all platforms.
1233 \layout Itemize
1235 Support for the Midnight Commander VFS library compiled into ROX-Filer.
1236  This happens automatically when you compile ROX-Filer if it can find the
1237  VFS library --- this means having 
1238 \family typewriter 
1239 libvfs.so
1240 \family default 
1241  (or 
1242 \family typewriter 
1243 libvfs.a
1244 \family default 
1245 ) in a system library directory or in the directory in the environment variable
1247 \family typewriter 
1248 LD_LIBRARY_PATH
1249 \family default 
1251  In this case, you will be able to view the directory structure and copy
1252  files out of it, but not change it.
1253  Support for this may be added later.
1254  Midnight Commander is part of the GNOME project.
1255 \layout Standard
1257 Note that using the `Open VFS' menu is simply a short-cut for using the
1258  path-entry box (explained below), so if you want to use a VFS not listed
1259  on the menu you can type in the path directly, eg:
1260 \layout Standard
1263 \family typewriter 
1264 /home/fred/archive.zip#uzip/
1265 \layout Standard
1268 \latex latex 
1270 \backslash 
1271 noindent 
1272 \latex default 
1273 Don't forget the final slash!
1274 \layout Subsubsection
1276 Step by step example of adding VFS support
1277 \layout Standard
1279 This assumes that you have the Midnight Commander source in a directory
1280  called `mc'.
1281  You might need to replace 
1282 \family typewriter 
1283 libvfs.so 
1284 \family default 
1285 with 
1286 \family typewriter 
1287 libvfs.a
1288 \family default 
1290 \layout LyX-Code
1292 $ cd mc
1293 \layout LyX-Code
1295 $ ./configure
1296 \layout LyX-Code
1298 $ cd vfs
1299 \layout LyX-Code
1301 $ make libvfs.so
1302 \layout Itemize
1304 If you have the root password then install the library in a system library
1305  directory as normal.
1306 \layout Itemize
1308 If not,
1309 \begin_deeper 
1310 \layout LyX-Code
1312 $ mkdir ~/lib
1313 \layout LyX-Code
1315 $ cp libvfs.so ~/lib
1316 \layout LyX-Code
1318 $ cd ~/Apps/ROX-Filer
1319 \layout Standard
1321 Edit the 
1322 \family typewriter 
1323 AppRun
1324 \family default 
1325  file to include this as the 
1326 \emph on 
1327 second
1328 \emph toggle 
1329  line:
1330 \layout LyX-Code
1332 LD_LIBRARY_PATH=${HOME}/lib; export LD_LIBRARY_PATH
1333 \layout Standard
1335 This will ensure that ROX-Filer will look for the library in the new 
1336 \family typewriter 
1337 ~/lib
1338 \family default 
1339  directory.
1340  Finally, recompile:
1341 \layout LyX-Code
1343 $ ./AppRun --compile
1344 \layout LyX-Code
1347 \layout LyX-Code
1349 checking for mc_stat in -lvfs...
1350  yes
1351 \layout Standard
1353 If you saw that line then it's worked! Well done!
1354 \end_deeper 
1355 \layout Subsection
1358 \begin_inset LatexCommand \label{sec: mini}
1360 \end_inset 
1362 The mini-buffer
1363 \layout Standard
1365 The mini-buffer is a white bar that appears along the bottom of the window
1366  and allows you to enter some text.
1367  Press Escape to get rid of it again.
1368  It behaves in different ways depending on how you invoked it:
1369 \layout Subsubsection
1371 The path-entry box
1372 \layout Standard
1374 This allows you to type in a path directly.
1375  As you type the display is updated to show the item entered visually.
1376  The main use is to find a file in a large directory quickly, but you can
1377  also use it for navigating between directories, or for selecting a full
1378  pathname from somewhere else and pasting it directly into the path-entry
1379  box.
1380 \layout Standard
1381 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
1382 multicol5
1383 4 2 0 0 -1 -1 -1 -1
1384 1 1 0 0
1385 0 1 0 0
1386 0 1 0 0
1387 0 1 0 0
1388 8 1 0 "" ""
1389 2 1 1 "8cm" ""
1390 0 8 0 1 0 0 0 "" ""
1391 0 8 0 1 0 0 0 "" ""
1392 0 8 0 1 0 0 0 "" ""
1393 0 8 0 1 0 0 0 "" ""
1394 0 8 0 1 0 0 0 "" ""
1395 0 8 0 1 0 0 0 "" ""
1396 0 8 0 1 0 0 0 "" ""
1397 0 8 0 1 0 0 0 "" ""
1400 \newline 
1401 Action
1402 \newline 
1403 Return
1404 \newline 
1405 Open the currently selected item.
1406 \newline 
1408 \newline 
1409 Shell-style tab completion.
1410 \newline 
1411 Up, Down
1412 \newline 
1413 Select the previous/next matching entry.
1414 \layout Standard
1416 Tab completion tries to fill in as many characters for you as it can.
1417  For example, if there are two files in a directory called `save-mail-nov-1999'
1418  and `save-mail-dec-1999' then typing 'save' and pressing Tab will expand
1419  `save' to `save-mail-' and beep to indicate that the match is not complete.
1420  If you use tab completion on a directory and it is unique then the filer
1421  will automatically change into the directory.
1422  This behavior should be familiar to shell users.
1423 \layout Subsubsection*
1425 Example
1426 \layout Standard
1428 Let's say you want to locate the documentation for Wine in the directory
1429  /usr/doc (which is usually very large).
1430  Here's how you could do it:
1431 \layout Enumerate
1433 Open the minibuffer by choosing 'Enter Path' from the Window menu.
1434  I usually bind this function to the slash (`/') key.
1435 \layout Enumerate
1437 Press CTRL-U to delete the existing contents --- this moves you to the root
1438  directory.
1439 \layout Enumerate
1441 Type `u
1442 \latex latex 
1444 \backslash 
1445 Tab{}
1446 \latex default 
1448 \latex latex 
1450 \backslash 
1451 Tab{}
1452 \latex default 
1454 \latex latex 
1456 \backslash 
1457 Tab{}
1458 \latex default 
1460  As you type, the cursor will move to the correct subdirectory.
1461  If it beeps when you press Tab then you need to supply more letters.
1462 \layout Subsubsection
1465 \begin_inset LatexCommand \label{sec: RunAction}
1467 \end_inset 
1469 The run action box
1470 \layout Standard
1472 This box appears when you choose `Set Run Action' from the Window menu.
1473  You can now either drag a file onto an application, or you can enter a
1474  shell command.
1475  In either case, the action is not actually performed but instead becomes
1476  the default action for files of that type.
1477 \layout Standard
1479 All files have a MIME type in the form `
1480 \family typewriter 
1481 text/plain
1482 \family default 
1484  Here, `
1485 \family typewriter 
1486 text
1487 \family default 
1488 ' is the 
1489 \emph on 
1490 media type
1491 \emph toggle 
1492  and `
1493 \family typewriter 
1494 plain
1495 \family default 
1496 ' is the 
1497 \emph on 
1498 sub-type
1499 \emph toggle 
1501  Whichever method you use to set the action you will be given the choice
1502  of setting the run action just for that type, or setting the default for
1503  all files with that media-type which don't already have a specific action.
1504 \layout Standard
1506 For example, let's say you want to set things up so that double-clicking
1507  on a `.gif' file loads it into the Gimp:
1508 \layout Paragraph
1510 Setting the run action by drag-and-drop
1511 \newline 
1513 \layout Standard
1515 Choose `Set Run Action' from the Window menu and, while the minibuffer is
1516  still open, drag a GIF file from the filer window onto the Gimp's application
1517  directory (probably in another filer window).
1518 \layout Paragraph
1520 Setting the run action by entering a shell command
1521 \newline 
1523 \layout Standard
1525 Type:
1526 \layout LyX-Code
1528 gimp 
1529 \begin_inset Quotes erd
1530 \end_inset 
1533 \begin_inset Quotes erd
1534 \end_inset 
1537 \layout Standard
1539 and press Return.
1540  Note that the cursor (the black box) must be on the GIF file when you press
1541  Return.
1542 \layout Subsubsection
1544 The shell command box
1545 \layout Standard
1547 This provides a quick way of entering shell commands if you don't want to
1548  open an xterm.
1549  If you don't know what shell commands are, skip this section!
1550 \layout Standard
1552 Just type in the command and press Return to execute it.
1553  Up and Down arrows move through previously entered commands.
1554  Tab does shell-style completion.
1555  Clicking on an item inserts its name into the minibuffer.
1556  If some items are selected then they are assigned to the positional parameters
1558 \family typewriter 
1560 \family default 
1562 \family typewriter 
1564 \family default 
1565 , etc.
1566 \layout Subsubsection*
1568 Examples
1569 \layout Standard
1571 To untar a 
1572 \family typewriter 
1573 .tgz
1574 \family default 
1575  archive:
1576 \layout Enumerate
1578 Open the minibuffer by choosing `Shell Command' from the Window menu.
1579  I usually bind this to the bang (`!') key.
1580 \layout Enumerate
1582 Type `
1583 \family typewriter 
1584 tar xzf
1585 \family default 
1586 ' and click on the file.
1587  The leading space is automatically inserted.
1588 \layout Enumerate
1590 Press Return to execute it.
1591 \layout Standard
1593 To print all the selected files:
1594 \layout Enumerate
1596 Open the shell command minibuffer.
1597 \layout Enumerate
1599 Type 
1600 \family typewriter 
1601 `lpr $*
1602 \family default 
1603 ' and press Return.
1604 \layout Subsubsection*
1606 Notes
1607 \layout Itemize
1609 Be careful; you will not be asked to confirm! If in doubt, start the command
1610  with `
1611 \family typewriter 
1612 echo
1613 \family default 
1614 ' so that it will be displayed rather than executed.
1615 \layout Itemize
1617 The above command won't work if some of the files contain spaces --- use
1619 \family typewriter 
1620 lpr 
1621 \latex latex 
1623 \latex default 
1625 \latex latex 
1627 \family default 
1628 \latex default 
1629 ' instead to be safe.
1630 \layout Itemize
1632 `sh' is always used as the name of the shell to run (mainly because bash
1633  and csh treat positional parameters differently).
1634  However, PATH is searched to find it so you can still use another shell
1635  if you want by naming it sh and putting it in your path.
1636 \layout Itemize
1638 Commands execute in the background, so you can say:
1639 \begin_deeper 
1640 \layout LyX-Code
1642 sleep 240; xmessage Time to go!
1643 \end_deeper 
1644 \layout Subsubsection
1647 \begin_inset LatexCommand \label{sec: SelectIf}
1649 \end_inset 
1651 The conditional selection box
1652 \layout Standard
1654 Use this if you want to automatically select all files in the directory
1655  which match a condition.
1656  The syntax for the conditions is given in section 
1657 \begin_inset LatexCommand \ref{sec: Searching}
1659 \end_inset 
1662  For example, to select all files larger than 5Mb:
1663 \layout Enumerate
1665 Open the Select If minibuffer.
1666 \layout Enumerate
1668 Type `
1669 \family typewriter 
1670 Size > 5Mb
1671 \family default 
1672 ' and press Return.
1673 \layout Standard
1675 Just those files over 5 Mb in size will be selected.
1676  The expressions you can enter are in the same form as described in section
1678 \begin_inset LatexCommand \ref{sec: Searching}
1680 \end_inset 
1682 , except that `
1683 \family typewriter 
1684 prune
1685 \family default 
1686 ' has no effect since the contents of directories are never checked anyway.
1687 \layout Subsection
1689 Action windows
1690 \layout Standard
1692 Action windows are those boxes that appear while you're doing a Copy/Move/Link/e
1693 tc operation.
1694  The status line at the top of the window shows the current directory or
1695  object that the window is processing.
1696  The scrolling area below is the log area --- it shows what has been done
1697  and may display questions here.
1698 \layout Standard
1700 At the bottom are four buttons and, sometimes, some options.
1701  The buttons work as follows:
1702 \layout Description
1704 Quiet will do simple operations without asking you to confirm each one.
1705  By turning this on and off during an operation you can use it like a pause
1706  button.
1707 \layout Description
1709 Yes answers yes to the question displayed in the log area.
1710 \layout Description
1712 No answers no to the question displayed in the log area.
1713 \layout Description
1715 Abort kills the current operation (if any) and closes the action window.
1716 \layout Standard
1718 You can control which actions get started automatically (without you having
1719  to click on Quiet at the start) from the Options window.
1720 \layout Subsubsection
1722 Action window options
1723 \layout Standard
1725 Some actions have options, which appear as option boxes at the bottom of
1726  the window.
1727  They are:
1728 \layout Itemize
1730 `Force' means that the filer won't treat non-writeable files as special.
1731  Normally, it confirms the deletion even if Quiet is pressed.
1732  Note that you still can't remove files from non-writeable directories because
1733  in that case you really don't have permission.
1734 \layout Itemize
1736 `Brief' prevents the filer logging a message every time it does something.
1737  Use this to speed things up if large numbers of messages are being logged.
1738 \layout Itemize
1740 `Recurse' means that doing something to a directory will also do the same
1741  thing to all its contents, and the contents of any subdirectories, and
1742  so on.
1743 \layout Subsection
1746 \begin_inset LatexCommand \label{sec: Searching}
1748 \end_inset 
1750 Searching
1751 \layout Standard
1753 The Find feature looks through all the selected files and directories and
1754  any subdirectories (recursively) looking for items that match a particular
1755  expression.
1756 \layout Standard
1758 If you know the name of a file then just enter it in the `Expression:' box,
1759  enclosed in single quotes.
1760  For example, to find a file called `log' you would enter:
1761 \layout LyX-Code
1763 'log'
1764 \layout Standard
1766 Remember to use normal quotes, not double quotes (
1767 \family typewriter 
1769 \begin_inset Quotes eld
1770 \end_inset 
1773 \family default 
1774 ) or back-quotes (
1775 \family typewriter 
1777 \family default 
1779 \layout Standard
1781 As the filer finds matching files they are added to the results list.
1782  Clicking on an entry in the list opens a viewer showing the file you clicked
1783  on.
1784  The filer will use the same window to view other results (so, if you want
1785  the results shown in separate windows you must explicitly create a new
1786  window from the Window menu).
1787 \layout Subsubsection
1789 Wildcards
1790 \layout Standard
1792 You can also put shell-style wildcard characters inside the quotes, for
1793  example:
1794 \layout LyX-Code
1796 '*.html'
1797 \layout LyX-Code
1799 'Report.*'
1800 \layout LyX-Code
1802 'Draft[1-5]'
1803 \layout LyX-Code
1805 'main.[ch]'
1806 \layout Standard
1808 Look at the 
1809 \family typewriter 
1810 glob(7)
1811 \family default 
1812  manpage if you want to know more about shell wildcards.
1813 \layout Standard
1815 If the pattern you enter contains a slash ('/') character then the pattern
1816  is matched against the file's full path, otherwise only the leafname is
1817  used.
1818  That is, 
1819 \family typewriter 
1820 '*tmp*'
1821 \family default 
1822  will find 'tmp' and 'tmpfile' but not '/tmp/file' --- 
1823 \family typewriter 
1824 '/*tmp*'
1825 \family default 
1826  will find all three.
1827 \layout Subsubsection
1829 Simple tests
1830 \layout Standard
1832 As well as finding files by their names you can also find them by various
1833  other attributes.
1834  Note that `file' is used here to mean anything that can appear in the filesyste
1835 m --- including directories, devices and so on.
1836 \layout Standard
1839 \latex latex 
1841 \backslash 
1842 smallskip
1843 \backslash 
1844 noindent 
1845 \latex default 
1846 These look at the type of the item being checked:
1847 \layout Description
1849 IsReg matches any regular (ie, normal) file.
1850 \layout Description
1852 IsLink matches symlinks.
1853 \layout Description
1855 IsDir matches directories.
1856 \layout Description
1858 IsChar matches character device files.
1859 \layout Description
1861 IsBlock matches block device files.
1862 \layout Description
1864 IsDev matches block or character device files.
1865 \layout Description
1867 IsPipe matches pipes.
1868 \layout Description
1870 IsSocket matches sockets.
1871 \layout Standard
1873 These look at the permissions set on the file --- see section 
1874 \begin_inset LatexCommand \ref{sec: Permissions}
1876 \end_inset 
1879 \layout Description
1881 IsSUID matches files which have the Set-UID bit set.
1882 \layout Description
1884 IsSGID matches files which have the Set-GID bit set.
1885 \layout Description
1887 IsSticky matches files with the sticky bit set,
1888 \layout Description
1890 IsReadable matches files which you can read from.
1891 \layout Description
1893 IsWriteable matches files which you can write to.
1894 \layout Description
1896 IsExecutable matches files which you can execute.
1897 \layout Standard
1899 And a couple of other useful ones:
1900 \layout Description
1902 IsEmpty finds empty files (ie, those whose length is 0 bytes).
1903 \layout Description
1905 IsMine finds files which you own.
1906 \layout Subsubsection
1908 Logic operators
1909 \layout Standard
1911 You can combine the above tests in various ways to perform more advanced
1912  searches.
1913  An expression is actually made up of a list of 
1914 \emph on 
1915 cases
1916 \emph toggle 
1917 , separated by commas.
1918  The filer will try to match each case in turn until one matches or there
1919  are no more cases left.
1920  For example, to search for files with several possible endings:
1921 \layout LyX-Code
1923 '*.gif', '*.htm', '*.html'
1924 \layout Standard
1926 Further, each of the cases is actually a list of conditions.
1927  The case only matches if all of its conditions are met.
1928  So, to find a directory called 
1929 \family typewriter 
1931 \family default 
1932  or a regular file ending in 
1933 \family typewriter 
1935 \family default 
1937 \layout LyX-Code
1939 IsDir 'lib', IsReg '*.so'
1940 \layout Standard
1942 You can negate a condition by putting a 
1943 \family typewriter 
1945 \family default 
1946  in front of it and you can use a sub-expression as a condition by bracketing
1947  it, like this:
1948 \layout LyX-Code
1950 ! (IsDir, IsReg)
1951 \layout LyX-Code
1953 !IsDir !IsReg
1954 \layout LyX-Code
1956 Not isdir and not isreg
1957 \layout Standard
1959 All three do the same thing.
1960 \layout Subsubsection
1962 Comparisons
1963 \layout Standard
1965 You can also compare various values using the operators 
1966 \family typewriter 
1967 <, <=, =, !=, >, >=
1968 \family default 
1969  (for less-than, less-than-or-equal-to, equal-to, not-equal-to, greater-than
1970  and greater-than-or-equal-to).
1971  When comparing times, you may find it helpful to use 
1972 \family typewriter 
1973 after 
1974 \family default 
1975 and 
1976 \family typewriter 
1977 before
1978 \family default 
1979  instead of 
1980 \family typewriter 
1982 \family default 
1983  and 
1984 \family typewriter 
1986 \family default 
1987  to make things clearer.
1988 \layout Standard
1990 The following are read from the file being checked and may be used for the
1991  values being compared:
1992 \layout Description
1994 atime The time that the file was last accessed.
1995 \layout Description
1997 ctime The time that the file's status was last changed.
1998 \layout Description
2000 mtime The time that the file's contents were last modified.
2001 \layout Description
2003 size The size of the file.
2004 \layout Description
2006 inode The file's inode (index) number
2007 \layout Description
2009 nlinks The number of links to this file (that is, the number of directory
2010  entries which refer to this file.
2011  Note that symlinks don't count as references).
2012 \layout Description
2014 uid The User ID of the file.
2015 \layout Description
2017 gid The Group ID of the file.
2018 \layout Description
2020 blocks The number of disk blocks being used by the file.
2021 \layout Standard
2023 Times are measured as seconds since the Unix Epoch (00:00:00 UTC, January
2024  1, 1970).
2025  Sizes are in bytes.
2026  When specifying constants to compare these values with you may use various
2027  keywords to scale the value:
2028 \layout Description
2030 Byte(s) has no effect, but looks better.
2031 \layout Description
2033 Kb multiplies by 1024, so 2Kb is the same as 2048.
2034 \layout Description
2036 Mb multiplies by 
2037 \begin_inset Formula \( 1024^{2} \)
2038 \end_inset 
2040 , ie 1024 Kb.
2041 \layout Description
2043 Sec(s) has no effect, but looks nice.
2044 \layout Description
2046 Min(s) multiplies by 60 to get minutes.
2047 \layout Description
2049 Hour(s),
2050 \protected_separator 
2051 Day(s),
2052 \protected_separator 
2053 Week(s),
2054 \protected_separator 
2055 Year(s) likewise convert to the relevant unit.
2056 \layout Description
2058 Ago makes the time in the past relative to when the check is done.
2059 \layout Description
2061 Hence makes the time in the future.
2062 \layout Description
2064 Now is short for `
2065 \family typewriter 
2066 0 Secs Hence
2067 \family default 
2069 \layout Standard
2071 Some examples should make this all a bit clearer!
2072 \layout LyX-Code
2074 mtime after 1 day ago
2075 \layout LyX-Code
2077 size > 10 Mb
2078 \layout LyX-Code
2080 IsReg and nlinks > 1
2081 \layout Standard
2083 The first finds files modified within the last 24 hours.
2084  You could use 
2085 \family typewriter 
2087 \family default 
2088  instead of 
2089 \family typewriter 
2090 after,
2091 \family default 
2092 but it's not so clear what is meant.
2093  The second finds files larger than 10 Mb and the last finds regular files
2094  with more than one directory entry.
2095 \layout Standard
2097 Be careful though --- the filer doesn't check the context of the modifiers,
2098  so 
2099 \family typewriter 
2100 size > 1 day ago
2101 \family default 
2102  is allowed, although it doesn't make much sense! Also, forgetting to use
2104 \family typewriter 
2106 \family default 
2107  or 
2108 \family typewriter 
2109 hence
2110 \family default 
2111  will cause odd effects (the time will be measured relative to the Epoch
2112  rather than the current time).
2113  Finally, don't use = with times --- 
2114 \family typewriter 
2115 atime = 1 day ago
2116 \family default 
2117  looks for a file accessed 
2118 \emph on 
2119 exactly
2120 \emph toggle 
2121  86400 seconds ago...
2122 \layout Subsubsection
2124 Specials
2125 \layout Description
2127 System(Command) executes `Command' on the file.
2128  The test succeeds if the command returns an exit status of zero.
2129  A `%' character in `Command' is replaced by the full path of the file being
2130  checked.
2131  System is a very slow test to perform, so do it last if possible.
2132  For example, if you're looking for a .c file containing the word `main',
2133  do
2134 \begin_deeper 
2135 \layout LyX-Code
2137 '*.c' system(grep -q main
2138 \latex latex 
2140 \backslash 
2141 thinspace{}
2142 \latex default 
2144 \latex latex 
2146 \backslash 
2147 thinspace{}"
2148 \latex default 
2150 \layout Standard
2152 so that the grep is only performed for files ending in .c (as opposed to
2153  only checking that the file ends in .c if it contains the word `main').
2154 \end_deeper 
2155 \layout Description
2157 Prune Always fails!
2158 \begin_float footnote 
2159 \layout Standard
2161 Note that this is the opposite of the 
2162 \noun on 
2163 find(1)
2164 \noun toggle 
2165  command.
2166 \end_float 
2167  However, if it gets evaluated at all then it prevents the filer from checking
2168  inside the current directory.
2169  Remember the order in which the filer checks the expression!
2170 \layout Standard
2172 Examples:
2173 \layout LyX-Code
2175 '*.old' system(echo rm %)
2176 \layout LyX-Code
2178 'src' prune, '*.c'
2179 \layout Standard
2181 The first displays a command to delete each file ending in 
2182 \family typewriter 
2183 .old
2184 \family default 
2185 ; you can either paste the results into an xterm to execute them or run
2186  the search again without the 
2187 \family typewriter 
2188 echo
2189 \family default 
2191  It's always a good idea to use 
2192 \family typewriter 
2193 echo
2194 \family default 
2195  first with dangerous commands! The second looks for 
2196 \family typewriter 
2198 \family default 
2199  files, but does not bother checking inside directories called 
2200 \family typewriter 
2202 \family default 
2204  The expression is evaluated like this:
2205 \layout Standard
2206 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center 
2208 \begin_inset Figure size 216 180
2209 file Prune.eps
2210 height 2 2.5
2211 flags 9
2213 \end_inset 
2216 \layout Subsection
2218 Options
2219 \layout Standard
2221 You can configure various aspects of ROX-Filer from the Options box.
2222  Choose `Options...' from a filer window menu to open it.
2224 \layout Standard
2226 At the bottom of the window are four buttons:
2227 \layout Description
2229 Save puts all your choices into effect, and also saves them into your Choices
2230  directory for next time ROX-Filer is loaded.
2231  ROX-Filer will never save any preferences to disk unless you click on the
2232  `Save' button in the options window.
2233  Exactly where choices are loaded from and saved to is controlled by the
2235 \family typewriter 
2236 CHOICESPATH
2237 \family default 
2238  environment variable --- see 
2239 \begin_inset LatexCommand \cite{Choices}
2241 \end_inset 
2243  for details.
2244 \layout Description
2246 OK puts your choices into effect without writing anything to disk.
2247 \layout Description
2249 Apply works like OK, but without closing the Options window.
2250 \layout Description
2252 Cancel closes the options box and forgets any changes you made.
2253 \layout Subsubsection
2255 Action window options
2256 \layout Standard
2258 You can choose to start some operations automatically, without waiting for
2259  you to click on Quiet.
2260  Select each operation that you want to auto-start here.
2261 \layout Subsubsection
2263 Filer window options
2264 \layout Itemize
2266 `Ignore case when sorting' treats upper and lower case letters as equivalent
2267  when sorting.
2268  If this is off then `Zoo' comes before `animal', for example.
2269 \layout Itemize
2271 `New window on button 1' swaps the actions of the two non-menu buttons when
2272  opening directories.
2273  This is provided for people who are used to the RISC OS mouse bindings.
2274 \layout Itemize
2276 `Menu on button 2' swaps the actions of buttons 2 and 3 so that the middle
2277  button brings up the menus.
2278  This is provided for people who are used to the RISC OS mouse bindings.
2279 \layout Itemize
2281 `Single-click navigation' treats a single click over an item as if it was
2282  a double click.
2283  This allows you to move around, run applications and open files without
2284  double clicking.
2285  To select a file 
2286 \emph on 
2287 without
2288 \emph toggle 
2289  opening it you must hold down CTRL while you click.
2290 \layout Itemize
2292 `Unique windows' prevents you from having two windows showing the same directory.
2293  Opening a second view onto a directory closes the first.
2294 \layout Itemize
2296 `Toolbar type for new windows' allows you to choose what kind of toolbar
2297  will be used for future filer windows (the currently open windows are not
2298  affected).
2299  None means that new windows will not have a toolbar, Normal provides a
2300  small bar of icons, and GNOME displays larger icons with textual labels
2301  and allows the bar to be detached from the window by dragging it.
2302  See section 
2303 \begin_inset LatexCommand \ref{sec: Toolbar}
2305 \end_inset 
2307  for details.
2308 \layout Standard
2310 The last display style and sort type you chose will also be saved as the
2311  defaults for next time.
2312 \layout Subsubsection
2314 Drag-And-Drop options
2315 \layout Standard
2317 ROX-Filer uses the standard XDND protocol for drag-and-drop.
2318  This protocol recommends that URIs should contain the hostname of the computer
2319  that the resource is on so that the program receiving the data can determine
2320  whether it can get the data directly or whether it must go via the X-server.
2321  However, many older programs (particularly GNOME applications) get confused
2322  by the hostname and fail to load the data correctly.
2323  If `Don't use hostnames' is on then the hostname part is omitted and ROX-Filer
2324  will work with these applications BUT you can't drag data to a program
2325  running on a different machine.
2326 \layout Standard
2328 `Allow dragging to icons in filer windows' controls what happens when you
2329  drop files onto icons in filer windows.
2330  If on then drops onto directories will save the data inside the directory
2331  while dropping onto programs will invoke the program on that data.
2332  If off then drops anywhere inside a filer window act like drops onto the
2333  window background --- that is, the data will be saved into the directory
2334  being displayed.
2335 \layout Subsubsection
2337 Menu options
2338 \layout Standard
2340 The `Xterm here' program is the one used when you choose `Xterm here' from
2341  the menu.
2342  You can replace it with another program such as `gnome-terminal' if you
2343  like.
2344  In fact, any program will do, but note that you cannot pass any options
2345  to the program at present.
2346 \layout Section
2348 Filetypes
2349 \layout Standard
2351 ROX-Filer uses three sub-directories in your Choices directory for filetypes:
2352 \layout Description
2354 MIME-info contains files which specify what the MIME type for a file should
2355  be, based on its extention.
2356  All the files in all the MIME-info directories are scanned when the filer
2357  loads.
2358  ROX-Filer comes with many such rules --- these are installed into the MIME-info
2359  directory by the install script.
2360 \begin_deeper 
2361 \layout Standard
2363 Many applications now come with a file called `something.mime'; copy these
2364  files into your MIME-info directory to make ROX-Filer automatically recognise
2365  the new extensions.
2366 \end_deeper 
2367 \layout Description
2369 MIME-types contains symlinks, one for each MIME type, which point to programs
2370  that can handle files of that type.
2371  To set what program is run when you click on the file you should normally
2372  use the `Set Run Action' feature (see section 
2373 \begin_inset LatexCommand \ref{sec: RunAction}
2375 \end_inset 
2378  However, you can also set the actions manually --- for example, to make
2379  opening an HTML file load it into Netscape:
2380 \begin_deeper 
2381 \layout Enumerate
2383 Find the Netscape application and go to `Link...' on the menu.
2384 \layout Enumerate
2386 Enter `text_html' as the name for the link and drag the icon from the Link
2387  box into the MIME-types directory.
2388 \layout Standard
2390 You can also put actual programs in here as well as links if you want to.
2391 \end_deeper 
2392 \layout Description
2394 MIME-icons contains the images used to display each type of file.
2395  So the filer will try to display an HTML file using the icon `MIME-icons/text_h
2396 tml.xpm'.
2397 \layout Standard
2399 In both MIME-types and MIME-icons directories you can also provide default
2400  actions/images for each media type.
2401  For example, if `text_html' isn't found then the filer will try simply
2402  using `text'.
2403 \layout Section
2405 Application directories
2406 \layout Standard
2408 An application directory is a directory which can be run as an application.
2409  It contains all the resources of an application --- source code, binaries,
2410  documentation and so on.
2411  Keeping everything in one place make installation and uninstallation much
2412  easier for users.
2413  You can also keep multiple versions of a program by simply having several
2414  application directories.
2415  You may move and rename them as you please.
2416  Application directories are easier to use and install and are more secure
2417  too
2418 \begin_float footnote 
2419 \layout Standard
2421 Because you can compile an application as a user and then simply copy it
2422  as root rather than having to run an install script you are free from the
2423  danger of running untrusted code as root.
2424  All you have to watch out for is setuid binaries.
2425 \end_float 
2427 \layout Standard
2429 To make a directory executable all you need to do is create a executable
2430  file called `AppRun' inside it.
2431  This file is run when the user double-clicks on the application.
2432  You should also provide `AppIcon.xpm' (which will be used as the image for
2433  the application) and `Help' (which is a directory that is opened when the
2434  user asks for help).
2435  Have a look at the ROX-Filer application directory for a full example.
2436 \layout Section
2438 Internationalisation
2439 \layout Subsection
2442 \begin_inset LatexCommand \label{sec: LANG}
2444 \end_inset 
2446 Selecting a translation
2447 \layout Standard
2449 ROX-Filer is able to translate many of its messages, provided suitable translati
2450 on files are provided.
2451  If you know that your language is supported then simply set the 
2452 \family typewriter 
2453 LANG
2454 \family default 
2455  environment variable to the appropriate code for your country before starting
2456  the filer, eg:
2457 \layout LyX-Code
2459 LANG=fr; export LANG
2460 \layout LyX-Code
2462 ROX-Filer/AppRun
2463 \layout Standard
2465 To see which translations are currently provided, open the ROX-Filer application
2466  directory (hold down Shift and double-click) and look inside the `
2467 \family typewriter 
2468 Messages
2469 \family default 
2470 ' subdirectory.
2471 \layout Subsection
2473 Creating a new translation
2474 \layout Enumerate
2476 Go into the 
2477 \family typewriter 
2479 \family default 
2480  directory and create the file `
2481 \family typewriter 
2482 messages.pot
2483 \family default 
2485 \begin_deeper 
2486 \layout LyX-Code
2488 $ cd ROX-Filer/src
2489 \layout LyX-Code
2491 $ make messages.pot
2492 \end_deeper 
2493 \layout Enumerate
2495 Copy the file into the `
2496 \family typewriter 
2498 \family default 
2499 ' subdirectory under 
2500 \family typewriter 
2502 \family default 
2503  as 
2504 \begin_inset Formula \( \langle \hbox {name}\rangle \hbox {\tt .po} \)
2505 \end_inset 
2508  Eg, if your language is referred to as `ml' (`my language'):
2509 \begin_deeper 
2510 \layout LyX-Code
2512 $ cp messages.pot po/ml.po
2513 \end_deeper 
2514 \layout Enumerate
2516 Load the copy into a text editor.
2517 \layout Enumerate
2519 Fill in the translations, which are all blank to start with.
2520 \layout Enumerate
2522 Run the `
2523 \family typewriter 
2524 make-mo
2525 \family default 
2526 ' script to create the binary file which ROX-Filer can use.
2527  You will need the GNU gettext package for this.
2528  If you don't have it then just send me the 
2529 \family typewriter 
2531 \family default 
2532  file and I'll convert it for you.
2533 \begin_deeper 
2534 \layout LyX-Code
2536 $ cd ROX-Filer/src/po
2537 \layout LyX-Code
2539 $ ./make-mo ml
2540 \layout LyX-Code
2542 Created file ../../Messages/ml.gmo OK
2543 \end_deeper 
2544 \layout Enumerate
2546 Set the LANG variable to `
2547 \family typewriter 
2549 \family default 
2550 ' and restart the filer (see section 
2551 \begin_inset LatexCommand \ref{sec: LANG}
2553 \end_inset 
2556 \layout Enumerate
2558 Submit the 
2559 \family typewriter 
2561 \family default 
2562  file to me so that I can include it in future releases of the filer.
2563 \layout Subsection
2565 Updating an existing translation
2566 \layout Enumerate
2568 Go into the directory containing the 
2569 \family typewriter 
2571 \family default 
2572  files and run the 
2573 \family typewriter 
2574 update-po
2575 \family default 
2576  script.
2577  This checks the source code for new and changed strings and updates all
2578  the translation files.
2579 \begin_deeper 
2580 \layout LyX-Code
2582 $ cd ROX-Filer/src/po
2583 \layout LyX-Code
2585 $ ./update-po
2586 \end_deeper 
2587 \layout Enumerate
2589 Edit the file by hand as before, filling in the new blanks and updating
2590  out-of-date translations.
2591  Look out for `fuzzy' entries where 
2592 \family typewriter 
2593 update-po
2594 \family default 
2595  has made a guess; check it's correct and remove the `fuzzy' line.
2596 \layout Enumerate
2598 Run 
2599 \family typewriter 
2600 make-mo
2601 \family default 
2602  as before.
2603 \layout Enumerate
2605 Submit the updated file to me.
2606 \layout Standard
2608 See the 
2609 \family typewriter 
2610 gettext
2611 \family default 
2612  info page for more instructions on creating a translation.
2613 \layout Section
2615 Hacking
2616 \layout Standard
2618 This is a quick start guide for people who want to modify the source code.
2619  If you make useful changes or fix bugs, please send patches to me or to
2620  the mailing list.
2621  Tell me which version you're using!
2622 \layout Subsection
2624 Compiling
2625 \layout Standard
2627 The first time you compile the program you need to do `
2628 \family typewriter 
2629 AppRun --compile
2630 \family default 
2631 ', but in future you only need to run `
2632 \family typewriter 
2633 make
2634 \family default 
2635 ' in the `
2636 \family typewriter 
2638 \family default 
2639 ' directory when you change the 
2640 \family typewriter 
2642 \family default 
2643  and 
2644 \family typewriter 
2646 \family default 
2647  files.
2648  You might want to run `
2649 \family typewriter 
2650 make depend
2651 \family default 
2652 ' too.
2653 \layout Subsection
2655 Creating and applying patches
2656 \layout Standard
2658 When people make small modifications to the sources they will often distribute
2659  them as 
2660 \emph on 
2661 patch files
2662 \emph toggle 
2663  --- usually on the mailing list.
2664  To apply a patch, go into the 'src' directory and run patch with the patch
2665  file.
2666  Then recompile, like this:
2667 \layout LyX-Code
2669 $ cd ROX-Filer/src
2670 \layout LyX-Code
2672 $ patch < patchfile
2673 \layout LyX-Code
2675 $ ../AppRun --compile
2676 \layout Standard
2678 You can remove the patch by simply repeating the above sequence --- patch
2679  will detect that the patch is already applied and offer to remove it.
2680  To create a patch you need to take a copy of the old 'src' directory before
2681  you modify it (before you compile, even):
2682 \layout LyX-Code
2684 $ cd ROX-Filer
2685 \layout LyX-Code
2687 $ cp -r src old_src
2688 \layout Standard
2690 Now, modify and compile until it works they way you want it to.
2691  To make the patch:
2692 \layout LyX-Code
2694 $ cd ROX-Filer
2695 \layout LyX-Code
2697 $ diff -cr old_src src > my_patch
2698 \layout Standard
2700 This creates a human- and machine-readable patch file.
2701  Submit this to the mailing list.
2702  The are many reasons for posting patches rather that the modified files:
2703 \layout Itemize
2705 They are smaller, and hence shouldn't bounce.
2706  They are also quicker to download for people with slow connections.
2707 \layout Itemize
2709 People can see what they're getting into before applying them!
2710 \layout Itemize
2712 Patches can (usually) be applied to slightly modified versions of the sources.
2713  This means that people can apply several patches without each new one overwriti
2714 ng the others.
2715 \layout Subsection
2717 Autoconf
2718 \layout Standard
2720 Here's a quick explanation of the autoconf system in case you haven't used
2721  it before.
2722  See `info autoconf' for full details.
2723 \layout Standard
2725 There's a file called 'configure.in' which contains various tests (`info
2726  autoconf').
2727  You run `autoconf' and it reads through the file and generates a shell
2728  script to perform the tests, saving it as `configure'.
2729  `configure' is normally distributed with the program because not everyone
2730  has autoconf.
2731 \layout Standard
2733 You then run `configure' (in fact, let the `AppRun' script do it because
2734  it passes it some arguments), which performs all the tests.
2735  It reads in `Makefile.in' and `config.h.in' and fills in the missing values
2736  with the test results to produce `Makefile' and `config.h'.
2737 \layout Standard
2739 You run `make', which creates .o files from the .c files and links to produce
2740  ROX-Filer.
2741 \layout Subsection
2743 Data-structures
2744 \layout Standard
2746 The diagram below shows some of the major structures found in the filer
2747  along with their most important attributes and methods.
2748  Exactly which attributes have been included is a little hit-and-miss but
2749  it might help you get the overall picture.
2750  If you find it useful, please let me know and I'll try to keep it up-to-date
2751  (or even extend it!).
2752 \layout Standard
2754 To summarise, each window (or panel) has its own 
2755 \series bold 
2756 FilerWindow
2757 \series default 
2758  structure.
2759  This structure has pointers to a 
2760 \series bold 
2761 Collection
2762 \series default 
2763  (which is the widget which actually displays the files) and to a 
2764 \series bold 
2765 Directory
2766 \series default 
2767 , which is used to cache the directory contents.
2768  Both 
2769 \series bold 
2770 Collection
2771 \series default 
2772  and 
2773 \series bold 
2774 Directory
2775 \series default 
2776  have pointers to (the same) 
2777 \series bold 
2778 DirItem
2779 \series default 
2780 s, each of which corresponds to one filesystem object.
2781  Several 
2782 \series bold 
2783 FilerWindow
2784 \series default 
2785 s may share the same 
2786 \series bold 
2787 Directory
2788 \series default 
2790  While scanning is in progress the 
2791 \series bold 
2792 Directory
2793 \series default 
2794  keeps a list of the new items it has found (
2795 \emph on 
2796 new_items
2797 \emph toggle 
2798 ) and the items which have changed in some way (
2799 \emph on 
2800 up_items
2801 \emph toggle 
2803  It periodically notifies the filer window of the changes-so-far by calling
2804  all the functions in the 
2805 \emph on 
2806 users
2807 \emph toggle 
2808  list (use 
2809 \emph on 
2810 attach()
2811 \emph toggle 
2812  and 
2813 \emph on 
2814 detach()
2815 \emph toggle 
2816  to add and remove functions to or from the list).
2817 \layout Standard
2818 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center 
2820 \begin_inset Figure size 595 604
2821 file Structs.eps
2822 width 3 100
2823 flags 9
2825 \end_inset 
2828 \layout Bibliography
2829 \bibitem {ROX}
2832 \emph on 
2833 The ROX desktop
2834 \emph toggle 
2835 , <http://www.ecs.soton.ac.uk/~tal197/rox.php3>
2836 \layout Bibliography
2837 \bibitem {GTK+}
2840 \emph on 
2841 GTK+ Toolkit
2842 \emph toggle 
2843 , <http://www.gtk.org>
2844 \layout Bibliography
2845 \bibitem {GNOME}
2848 \emph on 
2849 The GNOME desktop
2850 \emph toggle 
2851 , <http://www.gnome.org>
2852 \layout Bibliography
2853 \bibitem {DND}
2856 \emph on 
2857 The Drag and Drop protocol
2858 \emph toggle 
2859 , <http://www.its.caltech.edu/~jafl/xdnd/>
2860 \layout Bibliography
2861 \bibitem {XDS}
2864 \emph on 
2865 The X Direct Save protocol
2866 \emph toggle 
2867 , <http://www.its.caltech.edu/~jafl/xds/>
2868 \layout Bibliography
2869 \bibitem {Choices}
2872 \emph on 
2873 The ROX Choices system
2874 \emph toggle 
2875 , <http://www.ecs.soton.ac.uk/~tal197/choices.php3>
2876 \layout Bibliography
2877 \bibitem {enlightenment}
2880 \emph on 
2881 Enlightenment,
2882 \emph toggle 
2883  <http://www.enlightenment.org>
2884 \layout Bibliography
2885 \bibitem {PODFUK}
2888 \emph on 
2889 POrtable Dodgy Filesystems in Userland (hacK), 
2890 \emph toggle 
2891 <http://atrey.karlin.mff.cuni.cz/~pavel/podfuk/podfuk.html>
2892 \layout Bibliography
2893 \bibitem {ImLib}
2896 \emph on 
2897 ImLib
2898 \emph toggle 
2899 , <http://www.gnome.org>
2900 \the_end