r301: Added a new display style, 'Small, Full Info'.
[rox-filer.git] / ROX-Filer / src / Docs / Manual.lyx
blob954e614a73c7cf240394be48902a3e1af44d96bf
1 #This file was created by <tal197> Wed Jun 14 12:56:55 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 12 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 0 0
720 0 1 1 0
721 8 1 0 "" ""
722 2 1 1 "8cm" ""
723 0 8 0 1 0 0 0 "" ""
724 0 8 0 1 0 0 0 "" ""
725 0 8 0 1 0 0 0 "" ""
726 0 2 1 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 8 0 1 0 0 0 "" ""
734 0 8 0 1 0 0 0 "" ""
735 0 8 0 1 0 0 0 "" ""
736 0 2 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 0 0 0 "" ""
742 0 8 0 1 0 0 0 "" ""
743 0 8 0 1 0 0 0 "" ""
744 0 8 0 1 1 0 0 "" ""
745 0 8 0 1 0 0 0 "" ""
746 0 8 0 1 0 0 0 "" ""
748 Entry
749 \newline 
750 Action
751 \newline 
752 Large Icons
753 \newline 
754 Each object in the directory is shown as a large icon with its name below.
755 \newline 
756 Small Icons
757 \newline 
758 Items are drawn smaller that usual, allowing you to see more files at once.
759 \latex latex 
761 \backslash 
763 \latex default 
765 \newline 
766 Large, Full Info
767 \newline 
768 Entries are displayed with their icon, name, type, permissions, owner and
769  size.
770 \newline 
771 Small, Full Info
772 \newline 
773 As above, but with a smaller icon and all on one line.
774 \newline 
775 Sort by Name
776 \newline 
777 Items are arranged by name.
778  There is an option to make this case-sensitive.
779 \newline 
780 Sort by Type
781 \newline 
782 Items are grouped by their types and then sorted by name within the groups.
783 \newline 
784 Sort by Date
785 \newline 
786 Most recently modified first.
787 \newline 
788 Sort by Size
789 \newline 
790 Largest first.
791 \newline 
792 Show Hidden
793 \newline 
794 If on, files beginning with a dot are shown, otherwise they are hidden.
795 \newline 
796 Refresh
797 \newline 
798 Rereads the contents of the directory and details of all the files in it.
799 \newline 
801 \newline 
802 Use this if the display becomes out-of-date.
803 \layout Standard
806 \latex latex 
808 \backslash 
809 noindent
810 \backslash 
812 \backslash 
813 thinspace{}
814 \latex default 
815 If ROX-Filer was unable to find ImLib
816 \begin_inset LatexCommand \cite{ImLib}
818 \end_inset 
820  when it was compiled then the icons are shown cropped rather than scaled.
821  Get ImLib and recompile if you want it to look nice.
822 \layout Subsubsection
825 \begin_inset LatexCommand \label{sec: Permissions}
827 \end_inset 
829 Permissions
830 \layout Standard
832 The permissions display, shown in Full Info mode, is made up of four groups
833  of three flags.
834  Each flag is displayed as a letter if it is on and a dash (--) if not.
835  The first three characters show the permissions for the owner of the file,
836  the second for other members of the file's group and the third for everyone
837  else.
838  Whichever group applies to the ROX-Filer process itself is shown underlined.
839  The fourth group shows any special flags.
840 \layout Standard
842 The meanings of the characters are:
843 \layout Description
845 r Permission to read the contents of a file, or the names of files in a
846  directory.
847 \layout Description
849 w Permission to alter the contents of a file, or change which names appear
850  in a directory.
851 \layout Description
853 x Permission to run the file as a program, or refer to the files listed
854  within the directory.
855 \layout Description
857 U This program executes with the 
858 \emph on 
859 effective user ID
860 \emph toggle 
861  of its owner rather than the person who ran it.
862 \layout Description
864 G This program executes with the 
865 \emph on 
866 effective group ID
867 \emph toggle 
868  of its group, regardless of who ran it.
869 \layout Description
871 T Entries in this directory can only be altered or removed by the people
872  who own the files even if they have write permission on the directory itself.
873 \layout Standard
875 For example, `
876 \family typewriter 
877 \bar under 
879 \bar default 
880 ,rwx,r-x/---
881 \family default 
882 ' means that the owner of the file is the same as the effective user of
883  ROX-Filer (basically, you own the file), you and members of the file's
884  group have read, write and execute permission and other people have only
885  read and execute permission.
886  There are no special flags set.
887 \layout Standard
889 The rules which determine which permissions apply may vary slightly between
890  operating systems, but a rough guide is:
891 \layout Itemize
893 If the
894 \emph on 
895  effective user ID
896 \emph toggle 
897  of the process is equal to the file's owner, then the owner permissions
898  apply.
899 \layout Itemize
901 Otherwise, if the 
902 \emph on 
903 effective group ID
904 \emph toggle 
905  of the process is equal to the file's group OR the file's group is one
906  of the process's 
907 \emph on 
908 supplemental groups
909 \emph toggle 
910  then the group permissions apply.
911 \layout Itemize
913 Otherwise, the `other' permissions apply.
914  The 
915 \emph on 
916 real user ID
917 \emph toggle 
918  and 
919 \emph on 
920 real group ID
921 \emph toggle 
922  have no effect (except that a process may set its real IDs to its effective
923  IDs).
924 \layout Subsubsection
926 The selection menu
927 \layout Standard
929 All of these work in the same way --- if you open the menu with some items
930  selected then the operation applies to those items.
931  If you open then menu over an item while there is no selection then that
932  item is temporarily selected.
933  If you choose one of these while there is no selection at all then the
934  window goes into `target mode'; the operation happens to the next item
935  you click on.
936  Click on the window background, press Escape, or click with the right mouse
937  button to cancel target mode.
938  Target mode is mainly useful with the `Single click navigation' option
939  and keys bound to the various menu entries.
940 \layout Standard
941 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
942 multicol5
943 19 2 0 0 -1 -1 -1 -1
944 1 1 0 0
945 1 1 0 0
946 0 1 0 0
947 0 1 0 0
948 0 1 0 0
949 0 1 1 0
950 0 1 1 0
951 0 1 1 0
952 0 1 0 0
953 0 1 0 0
954 0 1 0 0
955 0 1 0 0
956 0 1 0 0
957 0 1 1 0
958 0 1 1 0
959 0 1 0 0
960 0 1 1 0
961 0 1 0 0
962 0 1 0 0
963 8 1 0 "" ""
964 2 1 1 "10cm" ""
965 0 8 0 1 0 0 0 "" ""
966 0 8 0 1 0 0 0 "" ""
967 0 8 0 1 0 0 0 "" ""
968 0 8 0 1 0 0 0 "" ""
969 0 8 0 1 0 0 0 "" ""
970 0 2 0 1 0 0 0 "" ""
971 0 8 0 1 0 0 0 "" ""
972 0 8 0 1 0 0 0 "" ""
973 0 8 0 1 0 0 0 "" ""
974 0 2 0 1 1 0 0 "" ""
975 0 8 0 1 0 0 0 "" ""
976 0 2 0 1 1 0 0 "" ""
977 0 8 0 1 0 0 0 "" ""
978 0 2 0 1 1 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 0 0 0 "" ""
984 0 8 0 1 0 0 0 "" ""
985 0 8 0 1 0 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 0 0 0 "" ""
990 0 8 0 1 1 0 0 "" ""
991 0 8 0 1 0 0 0 "" ""
992 0 8 0 1 1 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 "" ""
996 0 8 0 1 1 0 0 "" ""
997 0 8 0 1 0 0 0 "" ""
998 0 8 0 1 0 0 0 "" ""
999 0 8 0 1 0 0 0 "" ""
1000 0 8 0 1 0 0 0 "" ""
1001 0 8 0 1 0 0 0 "" ""
1002 0 8 0 1 0 0 0 "" ""
1004 Entry
1005 \newline 
1006 Action
1007 \newline 
1008 Copy...
1009 \newline 
1010 Make a copy of this object in the same directory.
1011 \newline 
1012 Rename...
1013 \newline 
1014 Change the name used for this object.
1015 \newline 
1016 Link...
1017 \newline 
1018 Create a symbolic link to this name in the same directory.
1019 \newline 
1020 Shift Open
1021 \newline 
1022 Opens applications as directories, files as text/plain, mount points
1023 \newline 
1025 \newline 
1026 by mounting or unmounting them and symlinks by opening the directory
1027 \newline 
1029 \newline 
1030 containing the thing they point to.
1031 \newline 
1033 \newline 
1034 This is the same effect as clicking with Shift held down.
1035 \newline 
1036 Help
1037 \newline 
1038 Explain what kind of thing is selected.
1039  For applications, display the help files.
1040 \newline 
1041 Info
1042 \newline 
1043 Display extra information about this object.
1044 \newline 
1045 Open VFS
1046 \newline 
1047 Open the file as if it was a directory --- see section 
1048 \begin_inset LatexCommand \ref{sec: vfs}
1050 \end_inset 
1053 \newline 
1054 Mount
1055 \newline 
1056 Mount or unmount each mount point selected.
1057 \newline 
1058 Delete
1059 \newline 
1060 Remove all the selected entries from the directory.
1061 \newline 
1063 \newline 
1064 Subdirectories will have their contents deleted first.
1065 \newline 
1067 \newline 
1068 Deleting symlinks only removes the link, not the thing it points to.
1069 \newline 
1070 Disk Usage
1071 \newline 
1072 Count the sizes of all the selected items.
1073  Directories also have their
1074 \newline 
1076 \newline 
1077 contents counted.
1078  Symlinks count themselves, not the things they point to.
1079 \newline 
1080 Permissions
1081 \newline 
1082 Allows you to change the permissions for the selected files.
1083 \newline 
1084 Find
1085 \newline 
1086 Search for files by specifying various conditions --- see section 
1087 \begin_inset LatexCommand \ref{sec: Searching}
1089 \end_inset 
1092 \layout Subsubsection
1094 The window menu
1095 \layout Standard
1096 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
1097 multicol5
1098 11 2 0 0 -1 -1 -1 -1
1099 1 1 0 0
1100 1 1 0 0
1101 0 1 0 0
1102 0 1 0 0
1103 0 1 0 0
1104 0 1 0 0
1105 0 1 0 0
1106 0 1 0 0
1107 0 1 1 0
1108 0 1 0 0
1109 0 1 0 0
1110 8 1 0 "" ""
1111 2 1 1 "8cm" ""
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 2 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 0 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 "" ""
1127 0 8 0 1 1 0 0 "" ""
1128 0 8 0 1 0 0 0 "" ""
1129 0 8 0 1 0 0 0 "" ""
1130 0 8 0 1 0 0 0 "" ""
1131 0 8 0 1 0 0 0 "" ""
1132 0 8 0 1 0 0 0 "" ""
1133 0 8 0 1 0 0 0 "" ""
1135 Entry
1136 \newline 
1137 Action
1138 \newline 
1139 Parent, New Window
1140 \newline 
1141 Open a new window displaying this window's parent.
1142 \newline 
1143 Parent, Same Window
1144 \newline 
1145 As above, but reuse this window.
1146 \newline 
1147 New Window
1148 \newline 
1149 Open another window onto this directory.
1150 \newline 
1151 Close Window
1152 \newline 
1153 Close this window.
1154 \newline 
1155 Enter Path...
1156 \newline 
1157 Open the path-entry box (see section 
1158 \begin_inset LatexCommand \ref{sec: mini}
1160 \end_inset 
1163 \newline 
1164 Shell Command...
1165 \newline 
1166 Open the shell command box (see section 
1167 \begin_inset LatexCommand \ref{sec: mini}
1169 \end_inset 
1172 \newline 
1173 Set Run Action...
1174 \newline 
1175 Allows you to set the program to use when double-clicking on a file.
1176 \newline 
1178 \newline 
1179 See section 
1180 \begin_inset LatexCommand \ref{sec: RunAction}
1182 \end_inset 
1184  for details.
1185 \newline 
1186 Select If...
1187 \newline 
1188 Select just those files that match the given pattern --- see section 
1189 \begin_inset LatexCommand \ref{sec: SelectIf}
1191 \end_inset 
1194 \newline 
1195 Show ROX-Filer help
1196 \newline 
1197 Same as selecting ROX-Filer and choosing `Help' from the menu.
1198 \layout Subsubsection
1200 The panel menu
1201 \layout Standard
1203 This is just a cut-down version of the window menu.
1204  The only new entry is `Open Panel as Directory', which displays the panel
1205  in a new, non-panel, window.
1206  `Remove Item' is a cut-down version of `Delete'; it only works for symbolic
1207  links and never asks for confirmation.
1208  Since dragging applications and directories to the panel creates symlinks
1209  it is very easy to change the panel contents to suit your needs.
1210 \layout Subsection
1213 \begin_inset LatexCommand \label{sec: vfs}
1215 \end_inset 
1217 Virtual file systems
1218 \layout Standard
1220 Some types of file can be represented as a directory.
1221  A typical example is a zip file, which contains an entire directory structure
1222  in compressed form.
1223  It is often useful to be able to open up such a file as if it was a real
1224  directory, and the VFS system allows you to do this.
1225 \layout Standard
1227 To use this feature you must have one or both of the following:
1228 \layout Itemize
1230 A system (such as PODFUK
1231 \begin_inset LatexCommand \cite{PODFUK}
1233 \end_inset 
1235 ) which causes the kernel to support various Virtual File Systems directly.
1236  This is the best option since all programs will be able to access the contents
1237  of the VFS.
1238  You will require root access to install such a system, however, and it
1239  is not available on all platforms.
1240 \layout Itemize
1242 Support for the Midnight Commander VFS library compiled into ROX-Filer.
1243  This happens automatically when you compile ROX-Filer if it can find the
1244  VFS library --- this means having 
1245 \family typewriter 
1246 libvfs.so
1247 \family default 
1248  (or 
1249 \family typewriter 
1250 libvfs.a
1251 \family default 
1252 ) in a system library directory or in the directory in the environment variable
1254 \family typewriter 
1255 LD_LIBRARY_PATH
1256 \family default 
1258  In this case, you will be able to view the directory structure and copy
1259  files out of it, but not change it.
1260  Support for this may be added later.
1261  Midnight Commander is part of the GNOME project.
1262 \layout Standard
1264 Note that using the `Open VFS' menu is simply a short-cut for using the
1265  path-entry box (explained below), so if you want to use a VFS not listed
1266  on the menu you can type in the path directly, eg:
1267 \layout Standard
1270 \family typewriter 
1271 /home/fred/archive.zip#uzip/
1272 \layout Standard
1275 \latex latex 
1277 \backslash 
1278 noindent 
1279 \latex default 
1280 Don't forget the final slash!
1281 \layout Subsubsection
1283 Step by step example of adding VFS support
1284 \layout Standard
1286 This assumes that you have the Midnight Commander source in a directory
1287  called `mc'.
1288  You might need to replace 
1289 \family typewriter 
1290 libvfs.so 
1291 \family default 
1292 with 
1293 \family typewriter 
1294 libvfs.a
1295 \family default 
1297 \layout LyX-Code
1299 $ cd mc
1300 \layout LyX-Code
1302 $ ./configure
1303 \layout LyX-Code
1305 $ cd vfs
1306 \layout LyX-Code
1308 $ make libvfs.so
1309 \layout Itemize
1311 If you have the root password then install the library in a system library
1312  directory as normal.
1313 \layout Itemize
1315 If not,
1316 \begin_deeper 
1317 \layout LyX-Code
1319 $ mkdir ~/lib
1320 \layout LyX-Code
1322 $ cp libvfs.so ~/lib
1323 \layout LyX-Code
1325 $ cd ~/Apps/ROX-Filer
1326 \layout Standard
1328 Edit the 
1329 \family typewriter 
1330 AppRun
1331 \family default 
1332  file to include this as the 
1333 \emph on 
1334 second
1335 \emph toggle 
1336  line:
1337 \layout LyX-Code
1339 LD_LIBRARY_PATH=${HOME}/lib; export LD_LIBRARY_PATH
1340 \layout Standard
1342 This will ensure that ROX-Filer will look for the library in the new 
1343 \family typewriter 
1344 ~/lib
1345 \family default 
1346  directory.
1347  Finally, recompile:
1348 \layout LyX-Code
1350 $ ./AppRun --compile
1351 \layout LyX-Code
1354 \layout LyX-Code
1356 checking for mc_stat in -lvfs...
1357  yes
1358 \layout Standard
1360 If you saw that line then it's worked! Well done!
1361 \end_deeper 
1362 \layout Subsection
1365 \begin_inset LatexCommand \label{sec: mini}
1367 \end_inset 
1369 The mini-buffer
1370 \layout Standard
1372 The mini-buffer is a white bar that appears along the bottom of the window
1373  and allows you to enter some text.
1374  Press Escape to get rid of it again.
1375  It behaves in different ways depending on how you invoked it:
1376 \layout Subsubsection
1378 The path-entry box
1379 \layout Standard
1381 This allows you to type in a path directly.
1382  As you type the display is updated to show the item entered visually.
1383  The main use is to find a file in a large directory quickly, but you can
1384  also use it for navigating between directories, or for selecting a full
1385  pathname from somewhere else and pasting it directly into the path-entry
1386  box.
1387 \layout Standard
1388 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
1389 multicol5
1390 4 2 0 0 -1 -1 -1 -1
1391 1 1 0 0
1392 0 1 0 0
1393 0 1 0 0
1394 0 1 0 0
1395 8 1 0 "" ""
1396 2 1 1 "8cm" ""
1397 0 8 0 1 0 0 0 "" ""
1398 0 8 0 1 0 0 0 "" ""
1399 0 8 0 1 0 0 0 "" ""
1400 0 8 0 1 0 0 0 "" ""
1401 0 8 0 1 0 0 0 "" ""
1402 0 8 0 1 0 0 0 "" ""
1403 0 8 0 1 0 0 0 "" ""
1404 0 8 0 1 0 0 0 "" ""
1407 \newline 
1408 Action
1409 \newline 
1410 Return
1411 \newline 
1412 Open the currently selected item.
1413 \newline 
1415 \newline 
1416 Shell-style tab completion.
1417 \newline 
1418 Up, Down
1419 \newline 
1420 Select the previous/next matching entry.
1421 \layout Standard
1423 Tab completion tries to fill in as many characters for you as it can.
1424  For example, if there are two files in a directory called `save-mail-nov-1999'
1425  and `save-mail-dec-1999' then typing 'save' and pressing Tab will expand
1426  `save' to `save-mail-' and beep to indicate that the match is not complete.
1427  If you use tab completion on a directory and it is unique then the filer
1428  will automatically change into the directory.
1429  This behavior should be familiar to shell users.
1430 \layout Subsubsection*
1432 Example
1433 \layout Standard
1435 Let's say you want to locate the documentation for Wine in the directory
1436  /usr/doc (which is usually very large).
1437  Here's how you could do it:
1438 \layout Enumerate
1440 Open the minibuffer by choosing 'Enter Path' from the Window menu.
1441  I usually bind this function to the slash (`/') key.
1442 \layout Enumerate
1444 Press CTRL-U to delete the existing contents --- this moves you to the root
1445  directory.
1446 \layout Enumerate
1448 Type `u
1449 \latex latex 
1451 \backslash 
1452 Tab{}
1453 \latex default 
1455 \latex latex 
1457 \backslash 
1458 Tab{}
1459 \latex default 
1461 \latex latex 
1463 \backslash 
1464 Tab{}
1465 \latex default 
1467  As you type, the cursor will move to the correct subdirectory.
1468  If it beeps when you press Tab then you need to supply more letters.
1469 \layout Subsubsection
1472 \begin_inset LatexCommand \label{sec: RunAction}
1474 \end_inset 
1476 The run action box
1477 \layout Standard
1479 This box appears when you choose `Set Run Action' from the Window menu.
1480  You can now either drag a file onto an application, or you can enter a
1481  shell command.
1482  In either case, the action is not actually performed but instead becomes
1483  the default action for files of that type.
1484 \layout Standard
1486 All files have a MIME type in the form `
1487 \family typewriter 
1488 text/plain
1489 \family default 
1491  Here, `
1492 \family typewriter 
1493 text
1494 \family default 
1495 ' is the 
1496 \emph on 
1497 media type
1498 \emph toggle 
1499  and `
1500 \family typewriter 
1501 plain
1502 \family default 
1503 ' is the 
1504 \emph on 
1505 sub-type
1506 \emph toggle 
1508  Whichever method you use to set the action you will be given the choice
1509  of setting the run action just for that type, or setting the default for
1510  all files with that media-type which don't already have a specific action.
1511 \layout Standard
1513 For example, let's say you want to set things up so that double-clicking
1514  on a `.gif' file loads it into the Gimp:
1515 \layout Paragraph
1517 Setting the run action by drag-and-drop
1518 \newline 
1520 \layout Standard
1522 Choose `Set Run Action' from the Window menu and, while the minibuffer is
1523  still open, drag a GIF file from the filer window onto the Gimp's application
1524  directory (probably in another filer window).
1525 \layout Paragraph
1527 Setting the run action by entering a shell command
1528 \newline 
1530 \layout Standard
1532 Type:
1533 \layout LyX-Code
1535 gimp 
1536 \begin_inset Quotes erd
1537 \end_inset 
1540 \begin_inset Quotes erd
1541 \end_inset 
1544 \layout Standard
1546 and press Return.
1547  Note that the cursor (the black box) must be on the GIF file when you press
1548  Return.
1549 \layout Subsubsection
1551 The shell command box
1552 \layout Standard
1554 This provides a quick way of entering shell commands if you don't want to
1555  open an xterm.
1556  If you don't know what shell commands are, skip this section!
1557 \layout Standard
1559 Just type in the command and press Return to execute it.
1560  Up and Down arrows move through previously entered commands.
1561  Tab does shell-style completion.
1562  Clicking on an item inserts its name into the minibuffer.
1563  If some items are selected then they are assigned to the positional parameters
1565 \family typewriter 
1567 \family default 
1569 \family typewriter 
1571 \family default 
1572 , etc.
1573 \layout Subsubsection*
1575 Examples
1576 \layout Standard
1578 To untar a 
1579 \family typewriter 
1580 .tgz
1581 \family default 
1582  archive:
1583 \layout Enumerate
1585 Open the minibuffer by choosing `Shell Command' from the Window menu.
1586  I usually bind this to the bang (`!') key.
1587 \layout Enumerate
1589 Type `
1590 \family typewriter 
1591 tar xzf
1592 \family default 
1593 ' and click on the file.
1594  The leading space is automatically inserted.
1595 \layout Enumerate
1597 Press Return to execute it.
1598 \layout Standard
1600 To print all the selected files:
1601 \layout Enumerate
1603 Open the shell command minibuffer.
1604 \layout Enumerate
1606 Type 
1607 \family typewriter 
1608 `lpr $*
1609 \family default 
1610 ' and press Return.
1611 \layout Subsubsection*
1613 Notes
1614 \layout Itemize
1616 Be careful; you will not be asked to confirm! If in doubt, start the command
1617  with `
1618 \family typewriter 
1619 echo
1620 \family default 
1621 ' so that it will be displayed rather than executed.
1622 \layout Itemize
1624 The above command won't work if some of the files contain spaces --- use
1626 \family typewriter 
1627 lpr 
1628 \latex latex 
1630 \latex default 
1632 \latex latex 
1634 \family default 
1635 \latex default 
1636 ' instead to be safe.
1637 \layout Itemize
1639 `sh' is always used as the name of the shell to run (mainly because bash
1640  and csh treat positional parameters differently).
1641  However, PATH is searched to find it so you can still use another shell
1642  if you want by naming it sh and putting it in your path.
1643 \layout Itemize
1645 Commands execute in the background, so you can say:
1646 \begin_deeper 
1647 \layout LyX-Code
1649 sleep 240; xmessage Time to go!
1650 \end_deeper 
1651 \layout Subsubsection
1654 \begin_inset LatexCommand \label{sec: SelectIf}
1656 \end_inset 
1658 The conditional selection box
1659 \layout Standard
1661 Use this if you want to automatically select all files in the directory
1662  which match a condition.
1663  The syntax for the conditions is given in section 
1664 \begin_inset LatexCommand \ref{sec: Searching}
1666 \end_inset 
1669  For example, to select all files larger than 5Mb:
1670 \layout Enumerate
1672 Open the Select If minibuffer.
1673 \layout Enumerate
1675 Type `
1676 \family typewriter 
1677 Size > 5Mb
1678 \family default 
1679 ' and press Return.
1680 \layout Standard
1682 Just those files over 5 Mb in size will be selected.
1683  The expressions you can enter are in the same form as described in section
1685 \begin_inset LatexCommand \ref{sec: Searching}
1687 \end_inset 
1689 , except that `
1690 \family typewriter 
1691 prune
1692 \family default 
1693 ' has no effect since the contents of directories are never checked anyway.
1694 \layout Subsection
1696 Action windows
1697 \layout Standard
1699 Action windows are those boxes that appear while you're doing a Copy/Move/Link/e
1700 tc operation.
1701  The status line at the top of the window shows the current directory or
1702  object that the window is processing.
1703  The scrolling area below is the log area --- it shows what has been done
1704  and may display questions here.
1705 \layout Standard
1707 At the bottom are four buttons and, sometimes, some options.
1708  The buttons work as follows:
1709 \layout Description
1711 Quiet will do simple operations without asking you to confirm each one.
1712  By turning this on and off during an operation you can use it like a pause
1713  button.
1714 \layout Description
1716 Yes answers yes to the question displayed in the log area.
1717 \layout Description
1719 No answers no to the question displayed in the log area.
1720 \layout Description
1722 Abort kills the current operation (if any) and closes the action window.
1723 \layout Standard
1725 You can control which actions get started automatically (without you having
1726  to click on Quiet at the start) from the Options window.
1727 \layout Subsubsection
1729 Action window options
1730 \layout Standard
1732 Some actions have options, which appear as option boxes at the bottom of
1733  the window.
1734  They are:
1735 \layout Itemize
1737 `Force' means that the filer won't treat non-writeable files as special.
1738  Normally, it confirms the deletion even if Quiet is pressed.
1739  Note that you still can't remove files from non-writeable directories because
1740  in that case you really don't have permission.
1741 \layout Itemize
1743 `Brief' prevents the filer logging a message every time it does something.
1744  Use this to speed things up if large numbers of messages are being logged.
1745 \layout Itemize
1747 `Recurse' means that doing something to a directory will also do the same
1748  thing to all its contents, and the contents of any subdirectories, and
1749  so on.
1750 \layout Subsection
1753 \begin_inset LatexCommand \label{sec: Searching}
1755 \end_inset 
1757 Searching
1758 \layout Standard
1760 The Find feature looks through all the selected files and directories and
1761  any subdirectories (recursively) looking for items that match a particular
1762  expression.
1763 \layout Standard
1765 If you know the name of a file then just enter it in the `Expression:' box,
1766  enclosed in single quotes.
1767  For example, to find a file called `log' you would enter:
1768 \layout LyX-Code
1770 'log'
1771 \layout Standard
1773 Remember to use normal quotes, not double quotes (
1774 \family typewriter 
1776 \begin_inset Quotes eld
1777 \end_inset 
1780 \family default 
1781 ) or back-quotes (
1782 \family typewriter 
1784 \family default 
1786 \layout Standard
1788 As the filer finds matching files they are added to the results list.
1789  Clicking on an entry in the list opens a viewer showing the file you clicked
1790  on.
1791  The filer will use the same window to view other results (so, if you want
1792  the results shown in separate windows you must explicitly create a new
1793  window from the Window menu).
1794 \layout Subsubsection
1796 Wildcards
1797 \layout Standard
1799 You can also put shell-style wildcard characters inside the quotes, for
1800  example:
1801 \layout LyX-Code
1803 '*.html'
1804 \layout LyX-Code
1806 'Report.*'
1807 \layout LyX-Code
1809 'Draft[1-5]'
1810 \layout LyX-Code
1812 'main.[ch]'
1813 \layout Standard
1815 Look at the 
1816 \family typewriter 
1817 glob(7)
1818 \family default 
1819  manpage if you want to know more about shell wildcards.
1820 \layout Standard
1822 If the pattern you enter contains a slash ('/') character then the pattern
1823  is matched against the file's full path, otherwise only the leafname is
1824  used.
1825  That is, 
1826 \family typewriter 
1827 '*tmp*'
1828 \family default 
1829  will find 'tmp' and 'tmpfile' but not '/tmp/file' --- 
1830 \family typewriter 
1831 '/*tmp*'
1832 \family default 
1833  will find all three.
1834 \layout Subsubsection
1836 Simple tests
1837 \layout Standard
1839 As well as finding files by their names you can also find them by various
1840  other attributes.
1841  Note that `file' is used here to mean anything that can appear in the filesyste
1842 m --- including directories, devices and so on.
1843 \layout Standard
1846 \latex latex 
1848 \backslash 
1849 smallskip
1850 \backslash 
1851 noindent 
1852 \latex default 
1853 These look at the type of the item being checked:
1854 \layout Description
1856 IsReg matches any regular (ie, normal) file.
1857 \layout Description
1859 IsLink matches symlinks.
1860 \layout Description
1862 IsDir matches directories.
1863 \layout Description
1865 IsChar matches character device files.
1866 \layout Description
1868 IsBlock matches block device files.
1869 \layout Description
1871 IsDev matches block or character device files.
1872 \layout Description
1874 IsPipe matches pipes.
1875 \layout Description
1877 IsSocket matches sockets.
1878 \layout Standard
1880 These look at the permissions set on the file --- see section 
1881 \begin_inset LatexCommand \ref{sec: Permissions}
1883 \end_inset 
1886 \layout Description
1888 IsSUID matches files which have the Set-UID bit set.
1889 \layout Description
1891 IsSGID matches files which have the Set-GID bit set.
1892 \layout Description
1894 IsSticky matches files with the sticky bit set,
1895 \layout Description
1897 IsReadable matches files which you can read from.
1898 \layout Description
1900 IsWriteable matches files which you can write to.
1901 \layout Description
1903 IsExecutable matches files which you can execute.
1904 \layout Standard
1906 And a couple of other useful ones:
1907 \layout Description
1909 IsEmpty finds empty files (ie, those whose length is 0 bytes).
1910 \layout Description
1912 IsMine finds files which you own.
1913 \layout Subsubsection
1915 Logic operators
1916 \layout Standard
1918 You can combine the above tests in various ways to perform more advanced
1919  searches.
1920  An expression is actually made up of a list of 
1921 \emph on 
1922 cases
1923 \emph toggle 
1924 , separated by commas.
1925  The filer will try to match each case in turn until one matches or there
1926  are no more cases left.
1927  For example, to search for files with several possible endings:
1928 \layout LyX-Code
1930 '*.gif', '*.htm', '*.html'
1931 \layout Standard
1933 Further, each of the cases is actually a list of conditions.
1934  The case only matches if all of its conditions are met.
1935  So, to find a directory called 
1936 \family typewriter 
1938 \family default 
1939  or a regular file ending in 
1940 \family typewriter 
1942 \family default 
1944 \layout LyX-Code
1946 IsDir 'lib', IsReg '*.so'
1947 \layout Standard
1949 You can negate a condition by putting a 
1950 \family typewriter 
1952 \family default 
1953  in front of it and you can use a sub-expression as a condition by bracketing
1954  it, like this:
1955 \layout LyX-Code
1957 ! (IsDir, IsReg)
1958 \layout LyX-Code
1960 !IsDir !IsReg
1961 \layout LyX-Code
1963 Not isdir and not isreg
1964 \layout Standard
1966 All three do the same thing.
1967 \layout Subsubsection
1969 Comparisons
1970 \layout Standard
1972 You can also compare various values using the operators 
1973 \family typewriter 
1974 <, <=, =, !=, >, >=
1975 \family default 
1976  (for less-than, less-than-or-equal-to, equal-to, not-equal-to, greater-than
1977  and greater-than-or-equal-to).
1978  When comparing times, you may find it helpful to use 
1979 \family typewriter 
1980 after 
1981 \family default 
1982 and 
1983 \family typewriter 
1984 before
1985 \family default 
1986  instead of 
1987 \family typewriter 
1989 \family default 
1990  and 
1991 \family typewriter 
1993 \family default 
1994  to make things clearer.
1995 \layout Standard
1997 The following are read from the file being checked and may be used for the
1998  values being compared:
1999 \layout Description
2001 atime The time that the file was last accessed.
2002 \layout Description
2004 ctime The time that the file's status was last changed.
2005 \layout Description
2007 mtime The time that the file's contents were last modified.
2008 \layout Description
2010 size The size of the file.
2011 \layout Description
2013 inode The file's inode (index) number
2014 \layout Description
2016 nlinks The number of links to this file (that is, the number of directory
2017  entries which refer to this file.
2018  Note that symlinks don't count as references).
2019 \layout Description
2021 uid The User ID of the file.
2022 \layout Description
2024 gid The Group ID of the file.
2025 \layout Description
2027 blocks The number of disk blocks being used by the file.
2028 \layout Standard
2030 Times are measured as seconds since the Unix Epoch (00:00:00 UTC, January
2031  1, 1970).
2032  Sizes are in bytes.
2033  When specifying constants to compare these values with you may use various
2034  keywords to scale the value:
2035 \layout Description
2037 Byte(s) has no effect, but looks better.
2038 \layout Description
2040 Kb multiplies by 1024, so 2Kb is the same as 2048.
2041 \layout Description
2043 Mb multiplies by 
2044 \begin_inset Formula \( 1024^{2} \)
2045 \end_inset 
2047 , ie 1024 Kb.
2048 \layout Description
2050 Sec(s) has no effect, but looks nice.
2051 \layout Description
2053 Min(s) multiplies by 60 to get minutes.
2054 \layout Description
2056 Hour(s),
2057 \protected_separator 
2058 Day(s),
2059 \protected_separator 
2060 Week(s),
2061 \protected_separator 
2062 Year(s) likewise convert to the relevant unit.
2063 \layout Description
2065 Ago makes the time in the past relative to when the check is done.
2066 \layout Description
2068 Hence makes the time in the future.
2069 \layout Description
2071 Now is short for `
2072 \family typewriter 
2073 0 Secs Hence
2074 \family default 
2076 \layout Standard
2078 Some examples should make this all a bit clearer!
2079 \layout LyX-Code
2081 mtime after 1 day ago
2082 \layout LyX-Code
2084 size > 10 Mb
2085 \layout LyX-Code
2087 IsReg and nlinks > 1
2088 \layout Standard
2090 The first finds files modified within the last 24 hours.
2091  You could use 
2092 \family typewriter 
2094 \family default 
2095  instead of 
2096 \family typewriter 
2097 after,
2098 \family default 
2099 but it's not so clear what is meant.
2100  The second finds files larger than 10 Mb and the last finds regular files
2101  with more than one directory entry.
2102 \layout Standard
2104 Be careful though --- the filer doesn't check the context of the modifiers,
2105  so 
2106 \family typewriter 
2107 size > 1 day ago
2108 \family default 
2109  is allowed, although it doesn't make much sense! Also, forgetting to use
2111 \family typewriter 
2113 \family default 
2114  or 
2115 \family typewriter 
2116 hence
2117 \family default 
2118  will cause odd effects (the time will be measured relative to the Epoch
2119  rather than the current time).
2120  Finally, don't use = with times --- 
2121 \family typewriter 
2122 atime = 1 day ago
2123 \family default 
2124  looks for a file accessed 
2125 \emph on 
2126 exactly
2127 \emph toggle 
2128  86400 seconds ago...
2129 \layout Subsubsection
2131 Specials
2132 \layout Description
2134 System(Command) executes `Command' on the file.
2135  The test succeeds if the command returns an exit status of zero.
2136  A `%' character in `Command' is replaced by the full path of the file being
2137  checked.
2138  System is a very slow test to perform, so do it last if possible.
2139  For example, if you're looking for a .c file containing the word `main',
2140  do
2141 \begin_deeper 
2142 \layout LyX-Code
2144 '*.c' system(grep -q main
2145 \latex latex 
2147 \backslash 
2148 thinspace{}
2149 \latex default 
2151 \latex latex 
2153 \backslash 
2154 thinspace{}"
2155 \latex default 
2157 \layout Standard
2159 so that the grep is only performed for files ending in .c (as opposed to
2160  only checking that the file ends in .c if it contains the word `main').
2161 \end_deeper 
2162 \layout Description
2164 Prune Always fails!
2165 \begin_float footnote 
2166 \layout Standard
2168 Note that this is the opposite of the 
2169 \noun on 
2170 find(1)
2171 \noun toggle 
2172  command.
2173 \end_float 
2174  However, if it gets evaluated at all then it prevents the filer from checking
2175  inside the current directory.
2176  Remember the order in which the filer checks the expression!
2177 \layout Standard
2179 Examples:
2180 \layout LyX-Code
2182 '*.old' system(echo rm %)
2183 \layout LyX-Code
2185 'src' prune, '*.c'
2186 \layout Standard
2188 The first displays a command to delete each file ending in 
2189 \family typewriter 
2190 .old
2191 \family default 
2192 ; you can either paste the results into an xterm to execute them or run
2193  the search again without the 
2194 \family typewriter 
2195 echo
2196 \family default 
2198  It's always a good idea to use 
2199 \family typewriter 
2200 echo
2201 \family default 
2202  first with dangerous commands! The second looks for 
2203 \family typewriter 
2205 \family default 
2206  files, but does not bother checking inside directories called 
2207 \family typewriter 
2209 \family default 
2211  The expression is evaluated like this:
2212 \layout Standard
2213 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center 
2215 \begin_inset Figure size 216 180
2216 file Prune.eps
2217 height 2 2.5
2218 flags 9
2220 \end_inset 
2223 \layout Subsection
2225 Options
2226 \layout Standard
2228 You can configure various aspects of ROX-Filer from the Options box.
2229  Choose `Options...' from a filer window menu to open it.
2231 \layout Standard
2233 At the bottom of the window are four buttons:
2234 \layout Description
2236 Save puts all your choices into effect, and also saves them into your Choices
2237  directory for next time ROX-Filer is loaded.
2238  ROX-Filer will never save any preferences to disk unless you click on the
2239  `Save' button in the options window.
2240  Exactly where choices are loaded from and saved to is controlled by the
2242 \family typewriter 
2243 CHOICESPATH
2244 \family default 
2245  environment variable --- see 
2246 \begin_inset LatexCommand \cite{Choices}
2248 \end_inset 
2250  for details.
2251 \layout Description
2253 OK puts your choices into effect without writing anything to disk.
2254 \layout Description
2256 Apply works like OK, but without closing the Options window.
2257 \layout Description
2259 Cancel closes the options box and forgets any changes you made.
2260 \layout Subsubsection
2262 Action window options
2263 \layout Standard
2265 You can choose to start some operations automatically, without waiting for
2266  you to click on Quiet.
2267  Select each operation that you want to auto-start here.
2268 \layout Subsubsection
2270 Filer window options
2271 \layout Itemize
2273 `Ignore case when sorting' treats upper and lower case letters as equivalent
2274  when sorting.
2275  If this is off then `Zoo' comes before `animal', for example.
2276 \layout Itemize
2278 `New window on button 1' swaps the actions of the two non-menu buttons when
2279  opening directories.
2280  This is provided for people who are used to the RISC OS mouse bindings.
2281 \layout Itemize
2283 `Menu on button 2' swaps the actions of buttons 2 and 3 so that the middle
2284  button brings up the menus.
2285  This is provided for people who are used to the RISC OS mouse bindings.
2286 \layout Itemize
2288 `Single-click navigation' treats a single click over an item as if it was
2289  a double click.
2290  This allows you to move around, run applications and open files without
2291  double clicking.
2292  To select a file 
2293 \emph on 
2294 without
2295 \emph toggle 
2296  opening it you must hold down CTRL while you click.
2297 \layout Itemize
2299 `Unique windows' prevents you from having two windows showing the same directory.
2300  Opening a second view onto a directory closes the first.
2301 \layout Itemize
2303 `Toolbar type for new windows' allows you to choose what kind of toolbar
2304  will be used for future filer windows (the currently open windows are not
2305  affected).
2306  None means that new windows will not have a toolbar, Normal provides a
2307  small bar of icons, and GNOME displays larger icons with textual labels
2308  and allows the bar to be detached from the window by dragging it.
2309  See section 
2310 \begin_inset LatexCommand \ref{sec: Toolbar}
2312 \end_inset 
2314  for details.
2315 \layout Standard
2317 The last display style and sort type you chose will also be saved as the
2318  defaults for next time.
2319 \layout Subsubsection
2321 Drag-And-Drop options
2322 \layout Standard
2324 ROX-Filer uses the standard XDND protocol for drag-and-drop.
2325  This protocol recommends that URIs should contain the hostname of the computer
2326  that the resource is on so that the program receiving the data can determine
2327  whether it can get the data directly or whether it must go via the X-server.
2328  However, many older programs (particularly GNOME applications) get confused
2329  by the hostname and fail to load the data correctly.
2330  If `Don't use hostnames' is on then the hostname part is omitted and ROX-Filer
2331  will work with these applications BUT you can't drag data to a program
2332  running on a different machine.
2333 \layout Standard
2335 `Allow dragging to icons in filer windows' controls what happens when you
2336  drop files onto icons in filer windows.
2337  If on then drops onto directories will save the data inside the directory
2338  while dropping onto programs will invoke the program on that data.
2339  If off then drops anywhere inside a filer window act like drops onto the
2340  window background --- that is, the data will be saved into the directory
2341  being displayed.
2342 \layout Subsubsection
2344 Menu options
2345 \layout Standard
2347 The `Xterm here' program is the one used when you choose `Xterm here' from
2348  the menu.
2349  You can replace it with another program such as `gnome-terminal' if you
2350  like.
2351  In fact, any program will do, but note that you cannot pass any options
2352  to the program at present.
2353 \layout Section
2355 Filetypes
2356 \layout Standard
2358 ROX-Filer uses three sub-directories in your Choices directory for filetypes:
2359 \layout Description
2361 MIME-info contains files which specify what the MIME type for a file should
2362  be, based on its extention.
2363  All the files in all the MIME-info directories are scanned when the filer
2364  loads.
2365  ROX-Filer comes with many such rules --- these are installed into the MIME-info
2366  directory by the install script.
2367 \begin_deeper 
2368 \layout Standard
2370 Many applications now come with a file called `something.mime'; copy these
2371  files into your MIME-info directory to make ROX-Filer automatically recognise
2372  the new extensions.
2373 \end_deeper 
2374 \layout Description
2376 MIME-types contains symlinks, one for each MIME type, which point to programs
2377  that can handle files of that type.
2378  To set what program is run when you click on the file you should normally
2379  use the `Set Run Action' feature (see section 
2380 \begin_inset LatexCommand \ref{sec: RunAction}
2382 \end_inset 
2385  However, you can also set the actions manually --- for example, to make
2386  opening an HTML file load it into Netscape:
2387 \begin_deeper 
2388 \layout Enumerate
2390 Find the Netscape application and go to `Link...' on the menu.
2391 \layout Enumerate
2393 Enter `text_html' as the name for the link and drag the icon from the Link
2394  box into the MIME-types directory.
2395 \layout Standard
2397 You can also put actual programs in here as well as links if you want to.
2398 \end_deeper 
2399 \layout Description
2401 MIME-icons contains the images used to display each type of file.
2402  So the filer will try to display an HTML file using the icon `MIME-icons/text_h
2403 tml.xpm'.
2404 \layout Standard
2406 In both MIME-types and MIME-icons directories you can also provide default
2407  actions/images for each media type.
2408  For example, if `text_html' isn't found then the filer will try simply
2409  using `text'.
2410 \layout Section
2412 Application directories
2413 \layout Standard
2415 An application directory is a directory which can be run as an application.
2416  It contains all the resources of an application --- source code, binaries,
2417  documentation and so on.
2418  Keeping everything in one place make installation and uninstallation much
2419  easier for users.
2420  You can also keep multiple versions of a program by simply having several
2421  application directories.
2422  You may move and rename them as you please.
2423  Application directories are easier to use and install and are more secure
2424  too
2425 \begin_float footnote 
2426 \layout Standard
2428 Because you can compile an application as a user and then simply copy it
2429  as root rather than having to run an install script you are free from the
2430  danger of running untrusted code as root.
2431  All you have to watch out for is setuid binaries.
2432 \end_float 
2434 \layout Standard
2436 To make a directory executable all you need to do is create a executable
2437  file called `AppRun' inside it.
2438  This file is run when the user double-clicks on the application.
2439  You should also provide `AppIcon.xpm' (which will be used as the image for
2440  the application) and `Help' (which is a directory that is opened when the
2441  user asks for help).
2442  Have a look at the ROX-Filer application directory for a full example.
2443 \layout Section
2445 Internationalisation
2446 \layout Subsection
2449 \begin_inset LatexCommand \label{sec: LANG}
2451 \end_inset 
2453 Selecting a translation
2454 \layout Standard
2456 ROX-Filer is able to translate many of its messages, provided suitable translati
2457 on files are provided.
2458  If you know that your language is supported then simply set the 
2459 \family typewriter 
2460 LANG
2461 \family default 
2462  environment variable to the appropriate code for your country before starting
2463  the filer, eg:
2464 \layout LyX-Code
2466 LANG=fr; export LANG
2467 \layout LyX-Code
2469 ROX-Filer/AppRun
2470 \layout Standard
2472 To see which translations are currently provided, open the ROX-Filer application
2473  directory (hold down Shift and double-click) and look inside the `
2474 \family typewriter 
2475 Messages
2476 \family default 
2477 ' subdirectory.
2478 \layout Subsection
2480 Creating a new translation
2481 \layout Enumerate
2483 Go into the 
2484 \family typewriter 
2486 \family default 
2487  directory and create the file `
2488 \family typewriter 
2489 messages.pot
2490 \family default 
2492 \begin_deeper 
2493 \layout LyX-Code
2495 $ cd ROX-Filer/src
2496 \layout LyX-Code
2498 $ make messages.pot
2499 \end_deeper 
2500 \layout Enumerate
2502 Copy the file into the `
2503 \family typewriter 
2505 \family default 
2506 ' subdirectory under 
2507 \family typewriter 
2509 \family default 
2510  as 
2511 \begin_inset Formula \( \langle \hbox {name}\rangle \hbox {\tt .po} \)
2512 \end_inset 
2515  Eg, if your language is referred to as `ml' (`my language'):
2516 \begin_deeper 
2517 \layout LyX-Code
2519 $ cp messages.pot po/ml.po
2520 \end_deeper 
2521 \layout Enumerate
2523 Load the copy into a text editor.
2524 \layout Enumerate
2526 Fill in the translations, which are all blank to start with.
2527 \layout Enumerate
2529 Run the `
2530 \family typewriter 
2531 make-mo
2532 \family default 
2533 ' script to create the binary file which ROX-Filer can use.
2534  You will need the GNU gettext package for this.
2535  If you don't have it then just send me the 
2536 \family typewriter 
2538 \family default 
2539  file and I'll convert it for you.
2540 \begin_deeper 
2541 \layout LyX-Code
2543 $ cd ROX-Filer/src/po
2544 \layout LyX-Code
2546 $ ./make-mo ml
2547 \layout LyX-Code
2549 Created file ../../Messages/ml.gmo OK
2550 \end_deeper 
2551 \layout Enumerate
2553 Set the LANG variable to `
2554 \family typewriter 
2556 \family default 
2557 ' and restart the filer (see section 
2558 \begin_inset LatexCommand \ref{sec: LANG}
2560 \end_inset 
2563 \layout Enumerate
2565 Submit the 
2566 \family typewriter 
2568 \family default 
2569  file to me so that I can include it in future releases of the filer.
2570 \layout Subsection
2572 Updating an existing translation
2573 \layout Enumerate
2575 Go into the directory containing the 
2576 \family typewriter 
2578 \family default 
2579  files and run the 
2580 \family typewriter 
2581 update-po
2582 \family default 
2583  script.
2584  This checks the source code for new and changed strings and updates all
2585  the translation files.
2586 \begin_deeper 
2587 \layout LyX-Code
2589 $ cd ROX-Filer/src/po
2590 \layout LyX-Code
2592 $ ./update-po
2593 \end_deeper 
2594 \layout Enumerate
2596 Edit the file by hand as before, filling in the new blanks and updating
2597  out-of-date translations.
2598  Look out for `fuzzy' entries where 
2599 \family typewriter 
2600 update-po
2601 \family default 
2602  has made a guess; check it's correct and remove the `fuzzy' line.
2603 \layout Enumerate
2605 Run 
2606 \family typewriter 
2607 make-mo
2608 \family default 
2609  as before.
2610 \layout Enumerate
2612 Submit the updated file to me.
2613 \layout Standard
2615 See the 
2616 \family typewriter 
2617 gettext
2618 \family default 
2619  info page for more instructions on creating a translation.
2620 \layout Section
2622 Hacking
2623 \layout Standard
2625 This is a quick start guide for people who want to modify the source code.
2626  If you make useful changes or fix bugs, please send patches to me or to
2627  the mailing list.
2628  Tell me which version you're using!
2629 \layout Subsection
2631 Compiling
2632 \layout Standard
2634 The first time you compile the program you need to do `
2635 \family typewriter 
2636 AppRun --compile
2637 \family default 
2638 ', but in future you only need to run `
2639 \family typewriter 
2640 make
2641 \family default 
2642 ' in the `
2643 \family typewriter 
2645 \family default 
2646 ' directory when you change the 
2647 \family typewriter 
2649 \family default 
2650  and 
2651 \family typewriter 
2653 \family default 
2654  files.
2655  You might want to run `
2656 \family typewriter 
2657 make depend
2658 \family default 
2659 ' too.
2660 \layout Subsection
2662 Creating and applying patches
2663 \layout Standard
2665 When people make small modifications to the sources they will often distribute
2666  them as 
2667 \emph on 
2668 patch files
2669 \emph toggle 
2670  --- usually on the mailing list.
2671  To apply a patch, go into the 'src' directory and run patch with the patch
2672  file.
2673  Then recompile, like this:
2674 \layout LyX-Code
2676 $ cd ROX-Filer/src
2677 \layout LyX-Code
2679 $ patch < patchfile
2680 \layout LyX-Code
2682 $ ../AppRun --compile
2683 \layout Standard
2685 You can remove the patch by simply repeating the above sequence --- patch
2686  will detect that the patch is already applied and offer to remove it.
2687  To create a patch you need to take a copy of the old 'src' directory before
2688  you modify it (before you compile, even):
2689 \layout LyX-Code
2691 $ cd ROX-Filer
2692 \layout LyX-Code
2694 $ cp -r src old_src
2695 \layout Standard
2697 Now, modify and compile until it works they way you want it to.
2698  To make the patch:
2699 \layout LyX-Code
2701 $ cd ROX-Filer
2702 \layout LyX-Code
2704 $ diff -cr old_src src > my_patch
2705 \layout Standard
2707 This creates a human- and machine-readable patch file.
2708  Submit this to the mailing list.
2709  The are many reasons for posting patches rather that the modified files:
2710 \layout Itemize
2712 They are smaller, and hence shouldn't bounce.
2713  They are also quicker to download for people with slow connections.
2714 \layout Itemize
2716 People can see what they're getting into before applying them!
2717 \layout Itemize
2719 Patches can (usually) be applied to slightly modified versions of the sources.
2720  This means that people can apply several patches without each new one overwriti
2721 ng the others.
2722 \layout Subsection
2724 Autoconf
2725 \layout Standard
2727 Here's a quick explanation of the autoconf system in case you haven't used
2728  it before.
2729  See `info autoconf' for full details.
2730 \layout Standard
2732 There's a file called 'configure.in' which contains various tests (`info
2733  autoconf').
2734  You run `autoconf' and it reads through the file and generates a shell
2735  script to perform the tests, saving it as `configure'.
2736  `configure' is normally distributed with the program because not everyone
2737  has autoconf.
2738 \layout Standard
2740 You then run `configure' (in fact, let the `AppRun' script do it because
2741  it passes it some arguments), which performs all the tests.
2742  It reads in `Makefile.in' and `config.h.in' and fills in the missing values
2743  with the test results to produce `Makefile' and `config.h'.
2744 \layout Standard
2746 You run `make', which creates .o files from the .c files and links to produce
2747  ROX-Filer.
2748 \layout Subsection
2750 Data-structures
2751 \layout Standard
2753 The diagram below shows some of the major structures found in the filer
2754  along with their most important attributes and methods.
2755  Exactly which attributes have been included is a little hit-and-miss but
2756  it might help you get the overall picture.
2757  If you find it useful, please let me know and I'll try to keep it up-to-date
2758  (or even extend it!).
2759 \layout Standard
2761 To summarise, each window (or panel) has its own 
2762 \series bold 
2763 FilerWindow
2764 \series default 
2765  structure.
2766  This structure has pointers to a 
2767 \series bold 
2768 Collection
2769 \series default 
2770  (which is the widget which actually displays the files) and to a 
2771 \series bold 
2772 Directory
2773 \series default 
2774 , which is used to cache the directory contents.
2775  Both 
2776 \series bold 
2777 Collection
2778 \series default 
2779  and 
2780 \series bold 
2781 Directory
2782 \series default 
2783  have pointers to (the same) 
2784 \series bold 
2785 DirItem
2786 \series default 
2787 s, each of which corresponds to one filesystem object.
2788  Several 
2789 \series bold 
2790 FilerWindow
2791 \series default 
2792 s may share the same 
2793 \series bold 
2794 Directory
2795 \series default 
2797  While scanning is in progress the 
2798 \series bold 
2799 Directory
2800 \series default 
2801  keeps a list of the new items it has found (
2802 \emph on 
2803 new_items
2804 \emph toggle 
2805 ) and the items which have changed in some way (
2806 \emph on 
2807 up_items
2808 \emph toggle 
2810  It periodically notifies the filer window of the changes-so-far by calling
2811  all the functions in the 
2812 \emph on 
2813 users
2814 \emph toggle 
2815  list (use 
2816 \emph on 
2817 attach()
2818 \emph toggle 
2819  and 
2820 \emph on 
2821 detach()
2822 \emph toggle 
2823  to add and remove functions to or from the list).
2824 \layout Standard
2825 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center 
2827 \begin_inset Figure size 595 842
2828 file Structs.eps
2829 width 3 100
2830 flags 9
2832 \end_inset 
2835 \layout Bibliography
2836 \bibitem {ROX}
2839 \emph on 
2840 The ROX desktop
2841 \emph toggle 
2842 , <http://www.ecs.soton.ac.uk/~tal197/rox.php3>
2843 \layout Bibliography
2844 \bibitem {GTK+}
2847 \emph on 
2848 GTK+ Toolkit
2849 \emph toggle 
2850 , <http://www.gtk.org>
2851 \layout Bibliography
2852 \bibitem {GNOME}
2855 \emph on 
2856 The GNOME desktop
2857 \emph toggle 
2858 , <http://www.gnome.org>
2859 \layout Bibliography
2860 \bibitem {DND}
2863 \emph on 
2864 The Drag and Drop protocol
2865 \emph toggle 
2866 , <http://www.its.caltech.edu/~jafl/xdnd/>
2867 \layout Bibliography
2868 \bibitem {XDS}
2871 \emph on 
2872 The X Direct Save protocol
2873 \emph toggle 
2874 , <http://www.its.caltech.edu/~jafl/xds/>
2875 \layout Bibliography
2876 \bibitem {Choices}
2879 \emph on 
2880 The ROX Choices system
2881 \emph toggle 
2882 , <http://www.ecs.soton.ac.uk/~tal197/choices.php3>
2883 \layout Bibliography
2884 \bibitem {enlightenment}
2887 \emph on 
2888 Enlightenment,
2889 \emph toggle 
2890  <http://www.enlightenment.org>
2891 \layout Bibliography
2892 \bibitem {PODFUK}
2895 \emph on 
2896 POrtable Dodgy Filesystems in Userland (hacK), 
2897 \emph toggle 
2898 <http://atrey.karlin.mff.cuni.cz/~pavel/podfuk/podfuk.html>
2899 \layout Bibliography
2900 \bibitem {ImLib}
2903 \emph on 
2904 ImLib
2905 \emph toggle 
2906 , <http://www.gnome.org>
2907 \the_end