r231: Added structs diagram to the manual.
[rox-filer.git] / ROX-Filer / src / Docs / Manual.lyx
blobadbba61f1d0d636d8468a09461baa3f5b2d1d107
1 #This file was created by <tal197> Sat Apr  8 16:21:26 2000
2 #LyX 0.12 (C) 1995-1998 Matthias Ettrich and the LyX Team
3 \lyxformat 2.15
4 \textclass article
5 \language default
6 \inputencoding latin1
7 \fontscheme default
8 \graphics default
9 \paperfontsize default
10 \spacing single 
11 \papersize Default
12 \paperpackage widemarginsa4
13 \use_geometry 0
14 \use_amsmath 0
15 \paperorientation portrait
16 \secnumdepth 3
17 \tocdepth 3
18 \paragraph_separation indent
19 \defskip medskip
20 \quotes_language english
21 \quotes_times 2
22 \papercolumns 1
23 \papersides 1
24 \paperpagestyle default
26 \layout Title
28 ROX-Filer User Manual
29 \layout Author
31 Thomas Leonard, tal197@ecs.soton.ac.uk
32 \layout Date
35 \latex latex 
37 \backslash 
38 today
39 \layout Abstract
41 ROX-Filer is a graphical file manger for the X Window System.
42  Its user interface is based on the RISC OS filer and it supports similar
43  features such as application directories and drag-and-drop loading and
44  saving of files.
45 \layout Standard
48 \begin_inset LatexCommand \tableofcontents
50 \end_inset 
53 \layout Section
55 Introduction
56 \layout Standard
58 ROX-Filer is a simple and easy to use graphical file manager for X11, the
59  windowing system used on Unix and Unix-like operating systems.
60  It is also the core component of the ROX Desktop
61 \begin_inset LatexCommand \cite{ROX}
63 \end_inset 
66 \layout Subsection
68 Features
69 \layout Description
71 XDND A common drag-and-drop protocol used, for example, by the GNOME desktop
72 \begin_inset LatexCommand \cite{GNOME}
74 \end_inset 
77  This allows data to be loaded into an application by dragging it from a
78  filer window to a program.
79  The full specification is given in 
80 \begin_inset LatexCommand \cite{DND}
82 \end_inset 
85 \layout Description
87 XDS An extension to XDND that allows applications to save data by dragging
88  an icon back to a filer window.
89  The full specification is given in 
90 \begin_inset LatexCommand \cite{XDS}
92 \end_inset 
95 \layout Description
97 ROX
98 \protected_separator 
99 Choices A simple, but flexible, system for managing user choices.
100  See 
101 \begin_inset LatexCommand \cite{Choices}
103 \end_inset 
105  for details.
106 \layout Description
108 Application
109 \protected_separator 
110 directories Self contained relocatable applications, where installation
111  is as simple as copying it to where you want it and uninstalling it is
112  just a matter of deleting a directory.
113  Described later in this documentation.
114 \layout Section
116 Conditions
117 \layout Standard
119 This program is free software; you can redistribute it and/or modify it
120  under the terms of the GNU General Public License as published by the Free
121  Software Foundation; either version 2 of the License, or (at your option)
122  any later version.
123 \layout Standard
125 This program is distributed in the hope that it will be useful, but WITHOUT
126  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
127  FOR A PARTICULAR PURPOSE.
128  See the GNU General Public License for more details.
129 \layout Standard
131 You should have received a copy of the GNU General Public License along
132  with this program; if not, write to the Free Software Foundation, Inc.,
133  59 Temple Place, Suite 330, Boston, MA, 02111-1307, USA.
134 \layout Section
136 Instructions
137 \layout Subsection
139 Compiling
140 \layout Standard
142 ROX-Filer is usually supplied in source-only form.
143  To compile and run it, you will require
144 \layout Itemize
146 Unix or Linux (root access is not required),
147 \layout Itemize
149 The X Window system (supplied as standard on all modern systems),
150 \layout Itemize
152 GTK+ 1.2.0 or later (libraries and headers) - get the latest version from
154 \begin_inset LatexCommand \cite{GTK+}
156 \end_inset 
159 \layout Itemize
161 A C compiler (standard on most systems).
162 \layout Standard
164 All of the above are standard on most modern Linux distributions.
165  To check which version of GTK+ you have installed, run the gtk-config command,
166  like this ($ is the shell prompt):
167 \layout LyX-Code
169 $ gtk-config --version
170 \layout LyX-Code
172 1.2.3
173 \layout Standard
175 To compile:
176 \layout Enumerate
178 Change to the directory containing the ROX-Filer subdirectory.
179 \layout Enumerate
181 Run the AppRun script with the --compile option, like this:
182 \begin_deeper 
183 \layout LyX-Code
185 $ ROX-Filer/AppRun --compile
186 \end_deeper 
187 \layout Enumerate
189 ROX-Filer will perform various checks to find out what kind of system it
190  is being run on and will then compile.
191  If it doesn't work then please e-mail me and complain! Tell me what kind
192  of system you have and what errors were reported.
193  If you manage to fix the problem yourself then please e-mail me the fix.
194 \layout Standard
196 You can now run the filer by running the AppRun script without any options,
197  like this:
198 \layout LyX-Code
200 $ ROX-Filer/AppRun
201 \layout Standard
203 A window should appear and display the contents of your home directory.
204 \layout Standard
206 The executables files are stored inside the ROX-Filer directory in a different
207  subdirectory for each platform.
208  Therefore, you can compile the same application on several different types
209  of machine and then run it from any of them using the AppRun script.
210  This is particularly useful in a network environment.
211 \layout Subsection
213 Invoking
214 \layout Standard
216 By default, ROX-Filer will start by displaying your home directory.
217  You can get it to display other directories instead by listing them after
218  the command:
219 \layout LyX-Code
221 $ ROX-Filer/AppRun /home /usr /usr/local
222 \layout Standard
224 If you want one of the directories to be opened as a panel put 
225 \family typewriter 
227 \family default 
228  or 
229 \family typewriter 
231 \family default 
232  before the directory (for `bottom' or `top' panels).
233  If you don't know what a panel is, try it and see! To run the filer in
234  the background, put an & at the end of the line.
235 \layout LyX-Code
237 $ mkdir ~/Panel
238 \layout LyX-Code
240 $ ln -s $HOME ~/Panel/Home
241 \layout LyX-Code
243 $ ROX-Filer/AppRun -b ~/Panel &
244 \layout Standard
246 The panel should be displayed in a window without a title bar.
247  If this does not work then you may need to update your window manager.
248  The filer was designed and tested using the Enlightenment window manager
249 \begin_inset LatexCommand \cite{enlightenment}
251 \end_inset 
254  You could also try using the -o option which bypasses the window manager
255  entirely (also use this if the panel appears in the wrong place):
256 \layout LyX-Code
258 $ ROX-Filer/AppRun -o -b ~/Panel &
259 \layout Subsection
261 Mouse button and key bindings
262 \layout Standard
264 By default, the mouse button bindings are different to fit in better with
265  X conventions.
266  You can get the old RISC OS bindings by opening the Options window and
267  clicking on a few toggle buttons.
268 \layout Standard
270 By default, the mouse buttons and key bindings for filer windows are as
271  follows:
272 \layout Standard
273 \LyXTable
274 multicol5
275 21 2 0 0 -1 -1 -1 -1
276 1 1 0 0
277 1 1 0 0
278 0 1 0 0
279 0 1 0 0
280 0 1 1 0
281 0 1 0 0
282 0 1 1 0
283 0 1 0 0
284 0 1 1 0
285 0 1 1 0
286 0 1 0 0
287 0 1 1 0
288 0 1 1 0
289 0 1 0 0
290 0 1 1 0
291 0 1 0 0
292 0 1 0 0
293 0 1 0 0
294 0 1 0 0
295 0 1 0 0
296 0 1 0 0
297 8 1 0 "" ""
298 2 1 1 "10cm" ""
299 0 8 0 1 0 0 0 "" ""
300 0 2 0 1 0 0 0 "" ""
301 0 8 0 1 0 0 0 "" ""
302 0 8 0 1 0 0 0 "" ""
303 0 8 0 1 0 0 0 "" ""
304 0 8 0 1 0 0 0 "" ""
305 0 8 0 1 0 0 0 "" ""
306 0 8 0 1 1 0 0 "" ""
307 0 8 0 1 0 0 0 "" ""
308 0 8 0 1 0 0 0 "" ""
309 0 8 0 1 0 0 0 "" ""
310 0 8 0 1 1 0 0 "" ""
311 0 8 0 1 0 0 0 "" ""
312 0 8 0 1 0 0 0 "" ""
313 0 8 0 1 0 0 0 "" ""
314 0 8 0 1 1 0 0 "" ""
315 0 8 0 1 0 0 0 "" ""
316 0 8 0 1 1 0 0 "" ""
317 0 8 0 1 0 0 0 "" ""
318 0 8 0 1 0 0 0 "" ""
319 0 8 0 1 0 0 0 "" ""
320 0 2 0 1 1 0 0 "" ""
321 0 8 0 1 0 0 0 "" ""
322 0 8 0 1 1 0 0 "" ""
323 0 8 0 1 0 0 0 "" ""
324 0 8 0 1 0 0 0 "" ""
325 0 8 0 1 0 0 0 "" ""
326 0 8 0 1 1 0 0 "" ""
327 0 8 0 1 0 0 0 "" ""
328 0 8 0 1 0 0 0 "" ""
329 0 8 0 1 0 0 0 "" ""
330 0 8 0 1 0 0 0 "" ""
331 0 8 0 1 0 0 0 "" ""
332 0 8 0 1 0 0 0 "" ""
333 0 8 0 1 0 0 0 "" ""
334 0 8 0 1 0 0 0 "" ""
335 0 8 0 1 0 0 0 "" ""
336 0 8 0 1 0 0 0 "" ""
337 0 8 0 1 0 0 0 "" ""
338 0 8 0 1 0 0 0 "" ""
339 0 8 0 1 0 0 0 "" ""
340 0 8 0 1 0 0 0 "" ""
342 Key or mouse button
343 \newline 
344 Action
345 \newline 
346 Left button click
347 \newline 
348 Select (only) the item clicked on, or clear the selection.
349 \newline 
350 Middle button click
351 \newline 
352 Toggle the item between being selected and unselected.
353 \newline 
354 Right button click
355 \newline 
356 Open the main menu.
357  Hold down Ctrl while clicking to go directly to
358 \newline 
360 \newline 
361 the Selection submenu.
362 \newline 
363 Drag an item 
364 \newline 
365 Copy the file(s) to the destination (an application or another filer window)
366 \newline 
368 \newline 
369 Hold down Shift to move the file, or Ctrl+Shift to create a symbolic link.
370 \newline 
371 Drag (not over an item)
372 \newline 
373 Select a group of items by dragging a box around them.
374 \newline 
376 \newline 
377 If you use the left button then the boxed items only are selected, otherwise
378 \newline 
380 \newline 
381 the boxes items are toggled between selected and unselected.
382 \newline 
383 Double click left button
384 \newline 
385 Open the file or directory or run the application.
386 \newline 
388 \newline 
389 Holding down Shift while clicking does the same thing as choosing
390 \newline 
392 \newline 
393 `Shift Open' from the menu.
394 \newline 
395 Double click middle button
396 \newline 
397 Open the file and close the directory viewer,
398 \newline 
400 \newline 
401 or open the directory in a new window.
402 \newline 
403 Backspace
404 \newline 
405 Change to viewing the parent directory.
406 \newline 
407 Cursor keys
408 \newline 
409 Move the cursor around.
410 \newline 
411 Page Up, Page Down
412 \newline 
413 Move up and down in steps of ten rows at a time.
414 \newline 
415 Home, End
416 \newline 
417 Move to the first/last entry in the directory.
418 \newline 
419 Return
420 \newline 
421 Open the item under the cursor.
422  With Shift held down this acts like choosing 'Shift Open' from the menu.
423 \newline 
424 Spacebar
425 \newline 
426 Toggles the item under the cursor between being selected and unselected.
427 \layout Standard
429 You can simulate a click of the middle mouse button by clicking with Ctrl
430  held down.
431  Other keys can easily be defined by opening the menu, moving the pointer
432  over the item you want to use and pressing a key.
433  The key will appear in the menu and can be used from then on.
434  To make the new key bindings permanent, open the Options box from the menu
435  and click on Save.
436 \layout Subsection
438 The Selection
439 \layout Standard
441 While items are selected in a ROX-Filer window the filer has the global
442  selection.
443  You can then paste into another window to get the pathnames of the selected
444  files.
445  For example, to extract the files from a .tgz archive on a floppy disk into
446  your home directory:
447 \layout Enumerate
449 Choose `Xterm here' from the menu in your home directory.
450 \layout Enumerate
452 Type `tar xzf ' (but don't press Return)
453 \layout Enumerate
455 Click on the .tgz file to select it.
456 \layout Enumerate
458 Click the middle button in the xterm window to paste the name of the file
459  into the command.
460 \layout Enumerate
462 Press Return in the xterm to execute the command.
463 \layout Subsection
466 \begin_inset LatexCommand \label{sec: Toolbar}
468 \end_inset 
470 The Toolbar
471 \layout Standard
473 By default, each window has a toolbar along the top.
474  You can disable this from the Options window.
475  The three buttons on the toolbar are:
476 \layout Standard
477 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
478 multicol5
479 4 2 0 0 -1 -1 -1 -1
480 1 1 0 0
481 1 1 0 0
482 0 1 0 0
483 0 1 0 0
484 8 1 0 "" ""
485 2 1 1 "8cm" ""
486 0 8 0 1 0 0 0 "" ""
487 0 8 0 1 0 0 0 "" ""
488 0 8 0 1 0 0 0 "" ""
489 0 8 0 1 0 0 0 "" ""
490 0 8 0 1 0 0 0 "" ""
491 0 2 0 1 0 0 0 "" ""
492 0 8 0 1 0 0 0 "" ""
493 0 8 0 1 0 0 0 "" ""
495 Icon
496 \newline 
497 Action
498 \newline 
499 Up arrow
500 \newline 
501 Change to parent directory
502 \newline 
503 House
504 \newline 
505 Change to home directory
506 \newline 
507 Looping arrows
508 \newline 
509 Reread the directory contents
510 \layout Subsection
512 The Menus
513 \layout Standard
515 You can open a menu by right clicking
516 \begin_float footnote 
517 \layout Standard
519 If the Use `RISC OS mouse bindings' option is on then use the middle button
520  instead.
521 \end_float 
522  over a panel or filer window.
523  Here is a full description of each choice and what it does:
524 \layout Standard
525 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
526 multicol5
527 6 2 0 0 -1 -1 -1 -1
528 1 1 0 0
529 1 1 0 0
530 0 1 0 0
531 0 1 0 0
532 0 1 0 0
533 0 1 0 0
534 8 1 0 "" ""
535 2 1 1 "8cm" ""
536 0 8 0 1 0 0 0 "" ""
537 0 8 0 1 0 0 0 "" ""
538 0 8 0 1 0 0 0 "" ""
539 0 8 0 1 0 0 0 "" ""
540 0 8 0 1 0 0 0 "" ""
541 0 8 0 1 0 0 0 "" ""
542 0 8 0 1 0 0 0 "" ""
543 0 2 0 1 0 0 0 "" ""
544 0 8 0 1 0 0 0 "" ""
545 0 8 0 1 0 0 0 "" ""
546 0 8 0 1 0 0 0 "" ""
547 0 8 0 1 0 0 0 "" ""
549 Entry
550 \newline 
551 Action
552 \newline 
553 Select All
554 \newline 
555 Select every item in this window.
556 \newline 
557 Clear Selection
558 \newline 
559 Unselect every item in this window.
560 \newline 
561 Options...
562 \newline 
563 Configure ROX-Filer.
564 \newline 
565 New Directory...
566 \newline 
567 Create a new directory in this one.
568 \newline 
569 Xterm Here
570 \newline 
571 Open an xterm with its current directory set to this directory.
572 \layout Subsubsection
574 The Display Menu
575 \layout Standard
576 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
577 multicol5
578 11 2 0 0 -1 -1 -1 -1
579 1 1 0 0
580 1 1 0 0
581 0 1 0 0
582 0 1 0 0
583 0 1 0 0
584 0 1 0 0
585 0 1 0 0
586 0 1 0 0
587 0 1 0 0
588 0 1 0 0
589 0 1 1 0
590 8 1 0 "" ""
591 2 1 1 "8cm" ""
592 0 8 0 1 0 0 0 "" ""
593 0 8 0 1 0 0 0 "" ""
594 0 8 0 1 0 0 0 "" ""
595 0 2 1 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 "" ""
600 0 8 0 1 0 0 0 "" ""
601 0 8 0 1 0 0 0 "" ""
602 0 8 0 1 0 0 0 "" ""
603 0 2 0 1 0 0 0 "" ""
604 0 8 0 1 0 0 0 "" ""
605 0 8 0 1 0 0 0 "" ""
606 0 8 0 1 0 0 0 "" ""
607 0 8 0 1 0 0 0 "" ""
608 0 8 0 1 0 0 0 "" ""
609 0 8 0 1 0 0 0 "" ""
610 0 8 0 1 0 0 0 "" ""
611 0 8 0 1 1 0 0 "" ""
612 0 8 0 1 0 0 0 "" ""
613 0 8 0 1 0 0 0 "" ""
615 Entry
616 \newline 
617 Action
618 \newline 
619 Large Icons
620 \newline 
621 Each object in the directory is shown as a large icon with its name below.
622 \newline 
623 Small Icons
624 \newline 
625 Each entry is shown as the top part of its icon with the name beside it.
626 \newline 
627 Full Info
628 \newline 
629 Entries are displayed with their icon, name, type, permissions, owner and
630  size.
631 \newline 
632 Sort by Name
633 \newline 
634 Items are arranged in ASCII order.
635  Note that `Z' is considered to come before `a'.
636 \newline 
637 Sort by Type
638 \newline 
639 Items are grouped by their MIME-types and sorted by name within the groups.
640 \newline 
641 Sort by Date
642 \newline 
643 Most recently modified first.
644 \newline 
645 Sort by Size
646 \newline 
647 Largest first.
648 \newline 
649 Show Hidden
650 \newline 
651 If on, files beginning with a dot are shown, otherwise they are hidden.
652 \newline 
653 Refresh
654 \newline 
655 Rereads the contents of the directory and details of all the files in it.
656 \newline 
658 \newline 
659 Use this if the display becomes out-of-date.
660 \layout Subsubsection
663 \begin_inset LatexCommand \label{sec: Permissions}
665 \end_inset 
667 Permissions
668 \layout Standard
670 The permissions display is made up of four groups of three flags.
671  Each flag is displayed as a letter if it is on and a dash (-) if not.
672  The first three characters show the permissions for the owner of the file,
673  the second for other members of the file's group and the third for everyone
674  else.
675  Whichever group applies to the ROX-Filer process itself is shown underlined.
676  The fourth group shows any special flags.
677 \layout Standard
679 The meanings of the characters are:
680 \layout Description
682 r Permission to read the contents of a file, or the names of files in a
683  directory.
684 \layout Description
686 w Permission to alter the contents of a file, or change which names appear
687  in a directory.
688 \layout Description
690 x Permission to run the file as a program, or refer to the files listed
691  within the directory.
692 \layout Description
694 U This program executes with the 
695 \emph on 
696 effective user ID
697 \emph toggle 
698  of its owner rather than the person who ran it.
699 \layout Description
701 G This program executes with the 
702 \emph on 
703 effective group ID
704 \emph toggle 
705  of its group, regardless of who ran it.
706 \layout Description
708 T Entries in this directory can only be altered or removed by the people
709  who own the files even if they have write permission on the directory itself.
710 \layout Standard
712 For example, `
713 \family typewriter 
714 \bar under 
716 \bar default 
717 ,rwx,r-x/---
718 \family default 
719 ' means that the owner of the file is the same as the effective user of
720  ROX-Filer (basically, you own the file), you and members of the file's
721  group have read, write and execute permission and other people have only
722  read and execute permission.
723  There are no special flags set.
724 \layout Standard
726 The rules which determine which permissions apply may vary slightly between
727  operating systems, but a rough guide is:
728 \layout Itemize
730 If the
731 \emph on 
732  effective user ID
733 \emph toggle 
734  of the process is equal to the file's owner, then the owner permissions
735  apply.
736 \layout Itemize
738 Otherwise, if the 
739 \emph on 
740 effective group ID
741 \emph toggle 
742  of the process is equal to the file's group OR the file's group is one
743  of the process's 
744 \emph on 
745 supplemental groups
746 \emph toggle 
747  then the group permissions apply.
748 \layout Itemize
750 Otherwise, the 'other' permissions apply.
751  The 
752 \emph on 
753 real user ID
754 \emph toggle 
755  and 
756 \emph on 
757 real group ID
758 \emph toggle 
759  have no effect (except that a process may set its real IDs to its effective
760  IDs).
761 \layout Subsubsection
763 The Selection Menu
764 \layout Standard
766 All of these work in the same way - if you open the menu with some items
767  selected then the operation applies to those items.
768  If you open then menu over an item while there is no selection then that
769  item is temporarily selected.
770  If you choose one of these while there is no selection at all then the
771  window goes into `target mode' - the operation happens to the next item
772  you click on.
773  Click on the window background, press Escape, or click with the right mouse
774  button to cancel target mode.
775  Target mode is mainly useful with the `Single click navigation' option
776  and keys bound to the various menu entries.
777 \layout Standard
778 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
779 multicol5
780 21 2 0 0 -1 -1 -1 -1
781 1 1 0 0
782 1 1 0 0
783 0 1 0 0
784 0 1 0 0
785 0 1 0 0
786 0 1 1 0
787 0 1 1 0
788 0 1 1 0
789 0 1 0 0
790 0 1 1 0
791 0 1 0 0
792 0 1 0 0
793 0 1 0 0
794 0 1 0 0
795 0 1 1 0
796 0 1 1 0
797 0 1 0 0
798 0 1 1 0
799 0 1 0 0
800 0 1 0 0
801 0 1 0 0
802 8 1 0 "" ""
803 2 1 1 "10cm" ""
804 0 8 0 1 0 0 0 "" ""
805 0 8 0 1 0 0 0 "" ""
806 0 8 0 1 0 0 0 "" ""
807 0 8 0 1 0 0 0 "" ""
808 0 8 0 1 0 0 0 "" ""
809 0 2 0 1 0 0 0 "" ""
810 0 8 0 1 0 0 0 "" ""
811 0 8 0 1 0 0 0 "" ""
812 0 8 0 1 0 0 0 "" ""
813 0 2 0 1 1 0 0 "" ""
814 0 8 0 1 0 0 0 "" ""
815 0 2 0 1 1 0 0 "" ""
816 0 8 0 1 0 0 0 "" ""
817 0 2 0 1 1 0 0 "" ""
818 0 8 0 1 0 0 0 "" ""
819 0 8 0 1 0 0 0 "" ""
820 0 8 0 1 0 0 0 "" ""
821 0 8 0 1 1 0 0 "" ""
822 0 8 0 1 0 0 0 "" ""
823 0 8 0 1 0 0 0 "" ""
824 0 8 0 1 0 0 0 "" ""
825 0 8 0 1 0 0 0 "" ""
826 0 8 0 1 0 0 0 "" ""
827 0 8 0 1 0 0 0 "" ""
828 0 8 0 1 0 0 0 "" ""
829 0 8 0 1 0 0 0 "" ""
830 0 8 0 1 0 0 0 "" ""
831 0 8 0 1 1 0 0 "" ""
832 0 8 0 1 0 0 0 "" ""
833 0 8 0 1 1 0 0 "" ""
834 0 8 0 1 0 0 0 "" ""
835 0 8 0 1 0 0 0 "" ""
836 0 8 0 1 0 0 0 "" ""
837 0 8 0 1 1 0 0 "" ""
838 0 8 0 1 0 0 0 "" ""
839 0 8 0 1 0 0 0 "" ""
840 0 8 0 1 0 0 0 "" ""
841 0 8 0 1 0 0 0 "" ""
842 0 8 0 1 0 0 0 "" ""
843 0 8 0 1 0 0 0 "" ""
844 0 8 0 1 0 0 0 "" ""
845 0 8 0 1 0 0 0 "" ""
847 Entry
848 \newline 
849 Action
850 \newline 
851 Copy...
852 \newline 
853 Make a copy of this object in the same directory.
854 \newline 
855 Rename...
856 \newline 
857 Change the name used for this object.
858 \newline 
859 Link...
860 \newline 
861 Create a symbolic link to this name in the same directory.
862 \newline 
863 Shift Open
864 \newline 
865 Opens applications as directories, files as text/plain, mount points
866 \newline 
868 \newline 
869 by mounting or unmounting them and symlinks by opening the directory
870 \newline 
872 \newline 
873 containing the thing they point to.
874 \newline 
876 \newline 
877 This is the same as double-clicking with Shift held down.
878 \newline 
879 Help
880 \newline 
881 Explain what kind of thing is selected.
882  For applications,
883 \newline 
885 \newline 
886 display the help files.
887 \newline 
888 Info
889 \newline 
890 Display extra information about this object.
891 \newline 
892 Open VFS
893 \newline 
894 Open the file as if it was a directory --- see section 
895 \begin_inset LatexCommand \ref{sec: vfs}
897 \end_inset 
900 \newline 
901 Mount
902 \newline 
903 Mount or unmount each mount point selected.
904 \newline 
905 Delete
906 \newline 
907 Remove all the selected entries from the directory.
908 \newline 
910 \newline 
911 Subdirectories will have their contents deleted first.
912 \newline 
914 \newline 
915 Deleting symlinks only removes the link, not the thing it points to.
916 \newline 
917 Disk Usage
918 \newline 
919 Count the sizes of all the selected items.
920  Directories also have their
921 \newline 
923 \newline 
924 contents counted.
925  Symlinks count themselves, not the things they point to.
926 \newline 
927 Permissions
928 \newline 
929 Allows you to change the permissions for the selected files.
930 \newline 
931 Touch
932 \newline 
933 Not implemented.
934 \newline 
935 Find
936 \newline 
937 Search for files by specifying various conditions --- see section 
938 \begin_inset LatexCommand \ref{sec: Searching}
940 \end_inset 
943 \layout Subsubsection
945 The Window Menu
946 \layout Standard
947 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
948 multicol5
949 7 2 0 0 -1 -1 -1 -1
950 1 1 0 0
951 1 1 0 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 8 1 0 "" ""
958 2 1 1 "8cm" ""
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 2 0 1 0 0 0 "" ""
963 0 8 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 8 0 1 0 0 0 "" ""
968 0 8 0 1 0 0 0 "" ""
969 0 8 0 1 0 0 0 "" ""
970 0 8 0 1 0 0 0 "" ""
971 0 8 0 1 0 0 0 "" ""
972 0 8 0 1 0 0 0 "" ""
974 Entry
975 \newline 
976 Action
977 \newline 
978 Parent, New Window
979 \newline 
980 Open a new window displaying this window's parent.
981 \newline 
982 Parent, Same Window
983 \newline 
984 As above, but reuse this window.
985 \newline 
986 New Window
987 \newline 
988 Open another window onto this directory.
989 \newline 
990 Close Window
991 \newline 
992 Close this window.
993 \newline 
994 Enter Path
995 \newline 
996 Open the path-entry box (see section 
997 \begin_inset LatexCommand \ref{sec: mini}
999 \end_inset 
1002 \newline 
1003 Show ROX-Filer help
1004 \newline 
1005 Same as selecting ROX-Filer and choosing `Help' from the menu.
1006 \layout Subsubsection
1008 The Panel menu
1009 \layout Standard
1011 This is just a cut-down version of the window menu.
1012  The only new entry is `Open Panel as Directory', which displays the panel
1013  in a new, non-panel, window.
1014  `Remove Item' is a cut-down version of `Delete'; it only works for symbolic
1015  links and never asks for confirmation.
1016  Since dragging applications and directories to the panel creates symlinks
1017  it is very easy to change the panel contents to suit your needs.
1018 \layout Subsection
1021 \begin_inset LatexCommand \label{sec: vfs}
1023 \end_inset 
1025 Virtual File Systems
1026 \layout Standard
1028 Some types of file can be represented as a directory.
1029  A typical example is a zip file, which contains an entire directory structure
1030  in compressed form.
1031  It is often useful to be able to open up such a file as if it was a real
1032  directory, and the VFS system allows you to do this.
1033 \layout Standard
1035 To use this feature you must have one or both of the following:
1036 \layout Itemize
1038 A system (such as PODFUK
1039 \begin_inset LatexCommand \cite{PODFUK}
1041 \end_inset 
1043 ) which causes the kernel to support various Virtual File Systems directly.
1044  This is the best option since all programs will be able to access the contents
1045  of the VFS.
1046  You will require root access to install such a system, however, and it
1047  is not available on all platforms.
1048 \layout Itemize
1050 Support for the Midnight Commander VFS library compiled into ROX-Filer.
1051  This happens automatically when you compile ROX-Filer if it can find the
1052  VFS library --- this means having 
1053 \family typewriter 
1054 libvfs.so
1055 \family default 
1056  (or 
1057 \family typewriter 
1058 libvfs.a
1059 \family default 
1060 ) in a system library directory or in the directory in the environment variable
1062 \family typewriter 
1063 LD_LIBRARY_PATH
1064 \family default 
1066  In this case, you will be able to view the directory structure but not
1067  change it or access individual files.
1068  Support for this may be added later.
1069  Midnight Commander is part of the GNOME project.
1070 \layout Standard
1072 Note that using the `Open VFS' menu is simply a short-cut for using the
1073  path-entry box (explained below), so if you want to use a VFS not listed
1074  on the menu you can type in the path directly, eg:
1075 \layout Standard
1078 \family typewriter 
1079 /home/fred/archive.zip#uzip/
1080 \layout Standard
1083 \latex latex 
1085 \backslash 
1086 noindent 
1087 \latex default 
1088 Don't forget the final slash!
1089 \layout Subsubsection
1091 Step by step example of adding VFS support
1092 \layout Standard
1094 This assumes that you have the Midnight Commander source in a directory
1095  called `mc'.
1096  You might need to replace 
1097 \family typewriter 
1098 libvfs.so 
1099 \family default 
1100 with 
1101 \family typewriter 
1102 libvfs.a
1103 \family default 
1105 \layout LyX-Code
1107 $ cd mc
1108 \layout LyX-Code
1110 $ ./configure
1111 \layout LyX-Code
1113 $ cd vfs
1114 \layout LyX-Code
1116 $ make libvfs.so
1117 \layout Itemize
1119 If you have the root password then install the library in a system library
1120  directory as normal.
1121 \layout Itemize
1123 If not,
1124 \begin_deeper 
1125 \layout LyX-Code
1127 $ mkdir ~/lib
1128 \layout LyX-Code
1130 $ cp libvfs.so ~/lib
1131 \layout LyX-Code
1133 $ cd ~/Apps/ROX-Filer
1134 \layout Standard
1136 Edit the 
1137 \family typewriter 
1138 AppRun
1139 \family default 
1140  file to include this as the 
1141 \emph on 
1142 second
1143 \emph toggle 
1144  line:
1145 \layout LyX-Code
1147 LD_LIBRARY_PATH=${HOME}/lib; export LD_LIBRARY_PATH
1148 \layout Standard
1150 This will ensure that ROX-Filer will look for the library in the new 
1151 \family typewriter 
1152 ~/lib
1153 \family default 
1154  directory.
1155  Finally, recompile:
1156 \layout LyX-Code
1158 $ ./AppRun --compile
1159 \layout LyX-Code
1162 \layout LyX-Code
1164 checking for mc_stat in -lvfs...
1165  yes
1166 \layout Standard
1168 If you saw that line then it's worked! Well done!
1169 \end_deeper 
1170 \layout Subsection
1173 \begin_inset LatexCommand \label{sec: mini}
1175 \end_inset 
1177 The path-entry box
1178 \layout Standard
1180 The path-entry box is a white bar that appears along the bottom of the window.
1181  It allows you to type in a path directly.
1182  As you type the display is updated to show the item entered visually.
1183  The main use is to find a file in a large directory quickly, but you can
1184  also use it for navigating between directories, or for selecting a full
1185  pathname from somewhere else and pasting it directly into the path-entry
1186  box.
1187 \layout Standard
1188 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
1189 multicol5
1190 5 2 0 0 -1 -1 -1 -1
1191 1 1 0 0
1192 1 1 0 0
1193 0 1 0 0
1194 0 1 0 0
1195 0 1 0 0
1196 8 1 0 "" ""
1197 2 1 1 "8cm" ""
1198 0 8 0 1 0 0 0 "" ""
1199 0 8 0 1 0 0 0 "" ""
1200 0 8 0 1 0 0 0 "" ""
1201 0 2 0 1 0 0 0 "" ""
1202 0 8 0 1 0 0 0 "" ""
1203 0 8 0 1 0 0 0 "" ""
1204 0 8 0 1 0 0 0 "" ""
1205 0 8 0 1 0 0 0 "" ""
1206 0 8 0 1 0 0 0 "" ""
1207 0 8 0 1 0 0 0 "" ""
1210 \newline 
1211 Action
1212 \newline 
1213 Escape
1214 \newline 
1215 Close the path-entry box.
1216 \newline 
1217 Return
1218 \newline 
1219 Open the currently selected item.
1220 \newline 
1222 \newline 
1223 Shell-style tab completion.
1224 \newline 
1225 Up, Down
1226 \newline 
1227 Select the previous/next matching entry.
1228 \layout Standard
1230 Tab completion tries to fill in as many characters for you as it can.
1231  For example, if there are two files in a directory called `save-mail-nov-1999'
1232  and `save-mail-dec-1999' then typing 'save' and pressing Tab will expand
1233  `save' to `save-mail-' and beep to indicate that the match is not complete.
1234  If you use tab completion on a directory and it is unique then the filer
1235  will automatically change into the directory.
1236  This behavior should be familiar to shell users.
1237 \layout Subsubsection
1239 Example
1240 \layout Standard
1242 Let's say you want to locate the documentation for Wine in the directory
1243  /usr/doc (which is usually very large).
1244  Here's how you could do it:
1245 \layout Enumerate
1247 Open the minibuffer by choosing 'Enter Path' from the Window menu.
1248  I usually bind this function to the slash (`/') key.
1249 \layout Enumerate
1251 Press CTRL-U to delete the existing contents - this moves you to the root
1252  directory.
1253 \layout Enumerate
1255 Type `u<Tab>do<Tab>wi<Tab>'.
1256  As you type, the cursor will move to the correct subdirectory.
1257  If it beeps when you press Tab then you need to supply more letters.
1258 \layout Subsection
1260 Action windows
1261 \layout Standard
1263 Action windows are those boxes that appear while you're doing a Copy/Move/Link/e
1264 tc operation.
1265  The status line at the top of the window shows the current directory or
1266  object that the window is processing.
1267  The scrolling area below is the log area - it shows what has been done
1268  and may display questions here.
1269 \layout Standard
1271 At the bottom are four buttons and, sometimes, some options.
1272  The buttons work as follows:
1273 \layout Description
1275 Quiet will do simple operations without asking you to confirm each one.
1276  By turning this on and off during an operation you can use it like a pause
1277  button.
1278 \layout Description
1280 Yes answers yes to the question displayed in the log area.
1281 \layout Description
1283 No answers no to the question displayed in the log area.
1284 \layout Description
1286 Abort kills the current operation (if any) and closes the action window.
1287 \layout Standard
1289 You can control which actions get started automatically (without you having
1290  to click on Quiet at the start) from the Options window.
1291 \layout Subsubsection
1293 Action Window Options
1294 \layout Standard
1296 Some actions have options, which appear as option boxes at the bottom of
1297  the window.
1298  They are:
1299 \layout Itemize
1301 `Force' means that the filer won't treat non-writeable files as special.
1302  Normally, it confirms the deletion even if Quiet is pressed.
1303  Note that you still can't removed files from non-writeable directories
1304  because in that case you really don't have permission.
1305 \layout Itemize
1307 `Brief' prevents the filer logging a message every time it does something.
1308  Use this to speed things up if large numbers of messages are being logged.
1309 \layout Itemize
1311 `Recurse' means that doing something to a directory will also do the same
1312  thing to all its contents, and the contents of any subdirectories, and
1313  so on.
1314 \layout Subsection
1317 \begin_inset LatexCommand \label{sec: Searching}
1319 \end_inset 
1321 Searching
1322 \layout Standard
1324 The Find feature looks through all the selected files and directories and
1325  any subdirectories (recursively) looking for items that match a particular
1326  expression.
1327 \layout Standard
1329 If you know the name of a file then just enter it in the `Expression:' box,
1330  enclosed in single quotes.
1331  For example, to find a file called `log' you would enter:
1332 \layout LyX-Code
1334 'log'
1335 \layout Standard
1337 Remember to use normal quotes, not double quotes (
1338 \family typewriter 
1340 \begin_inset Quotes eld
1341 \end_inset 
1344 \family default 
1345 ) or back-quotes (
1346 \family typewriter 
1348 \family default 
1350 \layout Standard
1352 As the filer finds matching files they are added to the results list.
1353  Clicking on an entry in the list opens a viewer showing the file you clicked
1354  on.
1355  The filer will use the same window to view other results (so, if you want
1356  the results shown in separate windows you must explicitly create a new
1357  window from the Window menu).
1358 \layout Subsubsection
1360 Wildcards
1361 \layout Standard
1363 You can also put shell-style wildcard characters inside the quotes, for
1364  example:
1365 \layout LyX-Code
1367 '*.html'
1368 \layout LyX-Code
1370 'Report.*'
1371 \layout LyX-Code
1373 'Draft[1-5]'
1374 \layout LyX-Code
1376 'main.[ch]'
1377 \layout Standard
1379 Look at the 
1380 \family typewriter 
1381 glob(7)
1382 \family default 
1383  manpage if you want to know more about shell wildcards.
1384 \layout Standard
1386 If the pattern you enter contains a slash ('/') character then the pattern
1387  is matched against the file's full path, otherwise only the leafname is
1388  used.
1389  That is, 
1390 \family typewriter 
1391 '*tmp*'
1392 \family default 
1393  will find 'tmp' and 'tmpfile' but not '/tmp/file' --- 
1394 \family typewriter 
1395 '/*tmp*'
1396 \family default 
1397  will find all three.
1398 \layout Subsubsection
1400 Simple tests
1401 \layout Standard
1403 As well as finding files by their names you can also find them by various
1404  other attributes.
1405  Note that `file' is used here to mean anything that can appear in the filesyste
1406 m --- including directories, devices and so on.
1407 \layout Standard
1410 \latex latex 
1412 \backslash 
1413 smallskip
1414 \backslash 
1415 noindent 
1416 \latex default 
1417 These look at the type of the item being checked:
1418 \layout Description
1420 IsReg matches any regular (ie, normal) file.
1421 \layout Description
1423 IsLink matches symlinks.
1424 \layout Description
1426 IsDir matches directories.
1427 \layout Description
1429 IsChar matches character device files.
1430 \layout Description
1432 IsBlock matches block device files.
1433 \layout Description
1435 IsDev matches block or character device files.
1436 \layout Description
1438 IsPipe matches pipes.
1439 \layout Description
1441 IsSocket matches sockets.
1442 \layout Standard
1444 These look at the permissions set on the file - see section 
1445 \begin_inset LatexCommand \ref{sec: Permissions}
1447 \end_inset 
1450 \layout Description
1452 IsSUID matches files which have the Set-UID bit set.
1453 \layout Description
1455 IsSGID matches files which have the Set-GID bit set.
1456 \layout Description
1458 IsSticky matches files with the sticky bit set,
1459 \layout Description
1461 IsReadable matches files which you can read from.
1462 \layout Description
1464 IsWriteable matches files which you can write to.
1465 \layout Description
1467 IsExecutable matches files which you can execute.
1468 \layout Standard
1470 And a couple of other useful ones:
1471 \layout Description
1473 IsEmpty finds empty files (ie, those whose length is 0 bytes).
1474 \layout Description
1476 IsMine finds files which you own.
1477 \layout Subsubsection
1479 Logic operators
1480 \layout Standard
1482 You can combine the above tests in various ways to perform more advanced
1483  searches.
1484  An expression is actually made up of a list of 
1485 \emph on 
1486 cases
1487 \emph toggle 
1488 , separated by commas.
1489  The filer will try to match each case in turn until one matches or there
1490  are no more cases left.
1491  For example, to search for files with several possible endings:
1492 \layout LyX-Code
1494 '*.gif', '*.htm', '*.html'
1495 \layout Standard
1497 Further, each of the cases is actually a list of conditions.
1498  The case only matches if all of its conditions are met.
1499  So, to find a directory called 
1500 \family typewriter 
1502 \family default 
1503  or a regular file ending in 
1504 \family typewriter 
1506 \family default 
1508 \layout LyX-Code
1510 IsDir 'lib', IsReg '*.so'
1511 \layout Standard
1513 You can negate a condition by putting a 
1514 \family typewriter 
1516 \family default 
1517  in front of it and you can use a sub-expression as a condition by bracketing
1518  it, like this:
1519 \layout LyX-Code
1521 ! (IsDir, IsReg)
1522 \layout LyX-Code
1524 !IsDir !IsReg
1525 \layout LyX-Code
1527 Not isdir and not isreg
1528 \layout Standard
1530 All three do the same thing.
1531 \layout Subsubsection
1533 Comparisons
1534 \layout Standard
1536 You can also compare various values using the operators 
1537 \family typewriter 
1538 <, <=, =, !=, >, >=
1539 \family default 
1540  (for less-than, less-than-or-equal-to, equal-to, not-equal-to, greater-than
1541  and greater-than-or-equal-to).
1542  When comparing times, you may find it helpful to use 
1543 \family typewriter 
1544 after 
1545 \family default 
1546 and 
1547 \family typewriter 
1548 before
1549 \family default 
1550  instead of 
1551 \family typewriter 
1553 \family default 
1554  and 
1555 \family typewriter 
1557 \family default 
1558  to make things clearer.
1559 \layout Standard
1561 The following are read from the file being checked and may be used for the
1562  values being compared:
1563 \layout Description
1565 atime The time that the file was last accessed.
1566 \layout Description
1568 ctime The time that the file's status was last changed.
1569 \layout Description
1571 mtime The time that the file's contents were last modified.
1572 \layout Description
1574 size The size of the file.
1575 \layout Description
1577 inode The file's inode (index) number
1578 \layout Description
1580 nlinks The number of links to this file (that is, the number of directory
1581  entries which refer to this file.
1582  Note that symlinks don't count as references).
1583 \layout Description
1585 uid The User ID of the file.
1586 \layout Description
1588 gid The Group ID of the file.
1589 \layout Description
1591 blocks The number of disk blocks being used by the file.
1592 \layout Standard
1594 Times are measured as seconds since the Unix Epoch (00:00:00 UTC, January
1595  1, 1970).
1596  Sizes are in bytes.
1597  When specifying constants to compare these values with you may use various
1598  keywords to scale the value:
1599 \layout Description
1601 Byte(s) has no effect, but looks better.
1602 \layout Description
1604 Kb multiplies by 1024, so 2Kb is the same as 2048.
1605 \layout Description
1607 Mb multiplies by 
1608 \begin_inset Formula \( 1024^{2} \)
1609 \end_inset 
1611 , ie 1024 Kb.
1612 \layout Description
1614 Sec(s) has no effect, but looks nice.
1615 \layout Description
1617 Min(s) multiplies by 60 to get minutes.
1618 \layout Description
1620 Hour(s),
1621 \protected_separator 
1622 Day(s),
1623 \protected_separator 
1624 Week(s),
1625 \protected_separator 
1626 Year(s) likewise convert to the relevant unit.
1627 \layout Description
1629 Ago makes the time in the past relative to when the check is done.
1630 \layout Description
1632 Hence makes the time in the future.
1633 \layout Description
1635 Now is short for `
1636 \family typewriter 
1637 0 Secs Hence
1638 \family default 
1640 \layout Standard
1642 Some examples should make this all a bit clearer!
1643 \layout LyX-Code
1645 mtime after 1 day ago
1646 \layout LyX-Code
1648 size > 10 Mb
1649 \layout LyX-Code
1651 IsReg and nlinks > 1
1652 \layout Standard
1654 The first finds files modified within the last 24 hours.
1655  You could use 
1656 \family typewriter 
1658 \family default 
1659  instead of 
1660 \family typewriter 
1661 after,
1662 \family default 
1663 but it's not so clear what is meant.
1664  The second finds files larger than 10 Mb and the last finds regular files
1665  with more than one directory entry.
1666 \layout Standard
1668 Be careful though --- the filer doesn't check the context of the modifiers,
1669  so 
1670 \family typewriter 
1671 size > 1 day ago
1672 \family default 
1673  is allowed, although it doesn't make much sense! Also, forgetting to use
1675 \family typewriter 
1677 \family default 
1678  or 
1679 \family typewriter 
1680 hence
1681 \family default 
1682  will cause odd effects (the time will be measured relative to the Epoch
1683  rather than the current time).
1684  Finally, don't use = with times --- 
1685 \family typewriter 
1686 atime = 1 day ago
1687 \family default 
1688  looks for a file accessed 
1689 \emph on 
1690 exactly
1691 \emph toggle 
1692  86400 seconds ago...
1693 \layout Subsection
1695 Options
1696 \layout Standard
1698 You can configure various aspects of ROX-Filer from the Options box.
1699  Choose `Options...' from a filer window menu to open it.
1701 \layout Standard
1703 At the bottom of the window are four buttons:
1704 \layout Description
1706 Save puts all your choices into effect, and also saves them into your Choices
1707  directory for next time ROX-Filer is loaded.
1708  ROX-Filer will never save any preferences to disk unless you click on the
1709  `Save' button in the options window.
1710 \layout Description
1712 OK puts your choices into effect without writing anything to disk.
1713 \layout Description
1715 Apply works like OK, but without closing the Options window.
1716 \layout Description
1718 Cancel closes the options box and forgets any changes you made.
1719 \layout Subsubsection
1721 Action window options
1722 \layout Standard
1724 You can choose to start some operations automatically, without waiting for
1725  you to click on Quiet.
1726  Select each operation that you want to auto-start here.
1727 \layout Subsubsection
1729 Filer window options
1730 \layout Itemize
1732 `New window on button 1' swaps the actions of the two non-menu buttons when
1733  opening directories.
1734  This is provided for people who are used to the RISC OS mouse bindings.
1735 \layout Itemize
1737 `Menu on button 2' swaps the actions of buttons 2 and 3 so that the middle
1738  button brings up the menus.
1739  This is provided for people who are used to the RISC OS mouse bindings.
1740 \layout Itemize
1742 `Single-click navigation' treats a single click over an item as if it was
1743  a double click.
1744  This allows you to move around, run applications and open files without
1745  double clicking.
1746  To select a file 
1747 \emph on 
1748 without
1749 \emph toggle 
1750  opening it you must hold down CTRL while you click.
1751 \layout Itemize
1753 `Unique windows' prevents you from having two windows showing the same directory.
1754  Opening a second view onto a directory closes the first.
1755 \layout Itemize
1757 `Toolbar type for new windows' allows you to choose what kind of toolbar
1758  will be used for future filer windows (the currently open windows are not
1759  affected).
1760  None means that new windows will not have a toolbar, Normal provides a
1761  small bar of icons, and GNOME displays larger icons with textual labels
1762  and allows the bar to be detached from the window by dragging it.
1763  See section 
1764 \begin_inset LatexCommand \ref{sec: Toolbar}
1766 \end_inset 
1768  for details.
1769 \layout Standard
1771 The last display style and sort type you chose will also be saved as the
1772  defaults for next time.
1773 \layout Subsubsection
1775 Drag and Drop options
1776 \layout Standard
1778 ROX-Filer uses the standard XDND protocol for drag-and-drop.
1779  This protocol recommends that URIs should contain the hostname of the computer
1780  that the resource is on so that the program receiving the data can determine
1781  whether it can get the data directly or whether it must go via the X-server.
1782  However, many older programs (particularly GNOME applications) get confused
1783  by the hostname and fail to load the data correctly.
1784  If `Don't use hostnames' is on then the hostname part is omitted and ROX-Filer
1785  will work with these applications BUT you can't drag data to a program
1786  running on a different machine.
1787 \layout Standard
1789 `Allow dragging to icons in filer windows' controls what happens when you
1790  drop files onto icons in filer windows.
1791  If on then drops onto directories will save the data inside the directory
1792  while dropping onto programs will invoke the program on that data.
1793  If off then drops anywhere inside a filer window act like drops onto the
1794  window background --- that is, the data will be saved into the directory
1795  being displayed.
1796 \layout Subsubsection
1798 Menu options
1799 \layout Standard
1801 The `Xterm here' program is the one used when you choose `Xterm here' from
1802  the menu.
1803  You can replace it with another program such as `gnome-terminal' if you
1804  like.
1805  In fact, any program will do, but note that you cannot pass any options
1806  to the program at present.
1807 \layout Section
1809 Filetypes
1810 \layout Standard
1812 The filer needs some files in your choices directory to allow it to determine
1813  the MIME-types to give files and the images to display for them.
1814  These files are supplied as part of the ROX desktop
1815 \begin_inset LatexCommand \cite{ROX}
1817 \end_inset 
1820  This should give you two directories in your Choices directory - `MIME-types'
1821  and `MIME-icons'.
1822 \layout Standard
1824 The file `MIME-types/guess' allows the filer to work out MIME-types from
1825  file extensions; the format is the same as the `gnome.mime' file from the
1826  GNOME desktop.
1827 \layout Standard
1829 The other items in the `MIME-types' directory are links to programs which
1830  are run when you double click on files.
1831  For example, to run Netscape when you double click on an HTML file there
1832  should be a file in this directory called `text_html' which is a symlink
1833  to the netscape binary or application directory.
1834 \layout Standard
1836 The `MIME-icons' directory contains images to use for the various types.
1837  For example, the filer will use the file `MIME-icons/text_html' for HTML
1838  files.
1839 \layout Standard
1841 In both directories you can also provide default actions/images for each
1842  media type.
1843  For example, if `text_html' isn't found then the filer will try simply
1844  using `text'.
1845 \layout Section
1847 Application directories
1848 \layout Standard
1850 An application directory is a directory which can be run as an application.
1851  It contains all the resources of an application - source code, binaries,
1852  documentation and so on.
1853  Keeping everything in one place make installation and uninstallation much
1854  easier for users.
1855  You can also keep multiple versions of a program by simply having several
1856  application directories.
1857  You may move and rename them as you please.
1858  Application directories are easier to use and install and are more secure
1859  too
1860 \begin_float footnote 
1861 \layout Standard
1863 Because you can compile an application as a user and then simply copy it
1864  as root rather than having to run an install script you are free from the
1865  danger of running untrusted code as root.
1866  All you have to watch out for is setuid binaries.
1867 \end_float 
1869 \layout Standard
1871 To make a directory executable all you need to do is create a executable
1872  file called `AppRun' inside it.
1873  This file is run when the user double-clicks on the application.
1874  You should also provide `AppIcon.xpm' (which will be used as the image for
1875  the application) and `Help' (which is a directory that is opened when the
1876  user asks for help).
1877  Have a look at the ROX-Filer application directory for a full example.
1878 \layout Section
1880 Hacking
1881 \layout Standard
1883 This is a quick start guide for people who want to modify the source code.
1884  If you make useful changes or fix bugs, please send patches to me or to
1885  the mailing list.
1886  Tell me which version you're using!
1887 \layout Subsection
1889 Compiling
1890 \layout Standard
1892 The first time you compile the program you need to do `AppRun --compile',
1893  but in future you only need to run `make' in the `src' directory when you
1894  change the .c and .h files.
1895  You might want to run `make depend' too.
1896 \layout Subsection
1898 Creating and applying patches
1899 \layout Standard
1901 When people make small modifications to the sources they will often distribute
1902  them as 
1903 \emph on 
1904 patch files
1905 \emph toggle 
1906  --- usually on the mailing list.
1907  To apply a patch, go into the 'src' directory and run patch with the patch
1908  file.
1909  Then recompile, like this:
1910 \layout LyX-Code
1912 $ cd ROX-Filer/src
1913 \layout LyX-Code
1915 $ patch < patchfile
1916 \layout LyX-Code
1918 $ ../AppRun --compile
1919 \layout Standard
1921 You can remove the patch by simply repeating the above sequence - patch
1922  will detect that the patch is already applied and offer to remove it.
1923  To create a patch you need to take a copy of the old 'src' directory before
1924  you modify it (before you compile, even):
1925 \layout LyX-Code
1927 $ cd ROX-Filer
1928 \layout LyX-Code
1930 $ cp -r src old_src
1931 \layout Standard
1933 Now, modify and compile until it works they way you want it to.
1934  To make the patch:
1935 \layout LyX-Code
1937 $ cd ROX-Filer
1938 \layout LyX-Code
1940 $ diff -cr old_src src > my_patch
1941 \layout Standard
1943 This creates a human- and machine-readable patch file.
1944  Submit this to the mailing list.
1945  The are many reasons for posting patches rather that the modified files:
1946 \layout Itemize
1948 They are smaller, and hence shouldn't bounce.
1949  They are also quicker to download for people with slow connections.
1950 \layout Itemize
1952 People can see what they're getting into before applying them!
1953 \layout Itemize
1955 Patches can (usually) be applied to slightly modified versions of the sources.
1956  This means that people can apply several patches without each new one overwriti
1957 ng the others.
1958 \layout Subsection
1960 Autoconf
1961 \layout Standard
1963 Here's a quick explanation of the autoconf system in case you haven't used
1964  it before.
1965  See `info autoconf' for full details.
1966 \layout Standard
1968 There's a file called 'configure.in' which contains various tests (`info
1969  autoconf').
1970  You run `autoconf' and it reads through the file and generates a shell
1971  script to perform the tests, saving it as `configure'.
1972  `configure' is normally distributed with the program because not everyone
1973  has autoconf.
1974 \layout Standard
1976 You then run `configure' (in fact, let the `AppRun' script do it because
1977  it passes it some arguments), which performs all the tests.
1978  It reads in `Makefile.in' and `config.h.in' and fills in the missing values
1979  with the test results to produce `Makefile' and `config.h'.
1980 \layout Standard
1982 You run `make', which creates .o files from the .c files and links to produce
1983  ROX-Filer.
1984 \layout Subsection
1986 Data-structures
1987 \layout Standard
1989 The diagram below shows some of the major structures found in the filer
1990  along with their most important attributes and methods.
1991  Exactly which attributes have been included is a little hit-and-miss but
1992  it might help you get the overall picture.
1993  If you find it useful, please let me know and I'll try to keep it up-to-date
1994  (or even extend it!).
1995 \layout Standard
1997 To summarise, each window (or panel) has its own 
1998 \series bold 
1999 FilerWindow
2000 \series default 
2001  structure.
2002  This structure has pointers to a 
2003 \series bold 
2004 Collection
2005 \series default 
2006  (which is the widget which actually displays the files) and to a 
2007 \series bold 
2008 Directory
2009 \series default 
2010 , which is used to cache the directory contents.
2011  Both 
2012 \series bold 
2013 Collection
2014 \series default 
2015  and 
2016 \series bold 
2017 Directory
2018 \series default 
2019  have pointers to (the same) 
2020 \series bold 
2021 DirItem
2022 \series default 
2023 s, each of which corresponds to one filesystem object.
2024  Several 
2025 \series bold 
2026 FilerWindow
2027 \series default 
2028 s may share the same 
2029 \series bold 
2030 Directory
2031 \series default 
2033  While scanning is in progress the 
2034 \series bold 
2035 Directory
2036 \series default 
2037  keeps a list of the new items it has found (
2038 \emph on 
2039 new_items
2040 \emph toggle 
2041 ) and the items which have changed in some way (
2042 \emph on 
2043 up_items
2044 \emph toggle 
2046  It periodically notifies the filer window of the changes-so-far by calling
2047  all the functions in the 
2048 \emph on 
2049 users
2050 \emph toggle 
2051  list (use 
2052 \emph on 
2053 attach()
2054 \emph toggle 
2055  and 
2056 \emph on 
2057 detach()
2058 \emph toggle 
2059  to add and remove functions to or from the list).
2060 \layout Standard
2061 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center 
2063 \begin_inset Figure size 595 585
2064 file Structs.eps
2065 width 3 100
2066 flags 9
2068 \end_inset 
2071 \layout Bibliography
2072 \bibitem {ROX}
2075 \emph on 
2076 The ROX desktop
2077 \emph toggle 
2078 , <http://www.ecs.soton.ac.uk/~tal197/rox.php3>
2079 \layout Bibliography
2080 \bibitem {GTK+}
2083 \emph on 
2084 GTK+ Toolkit
2085 \emph toggle 
2086 , <http://www.gtk.org>
2087 \layout Bibliography
2088 \bibitem {GNOME}
2091 \emph on 
2092 The GNOME desktop
2093 \emph toggle 
2094 , <http://www.gnome.org>
2095 \layout Bibliography
2096 \bibitem {DND}
2099 \emph on 
2100 The Drag and Drop protocol
2101 \emph toggle 
2102 , <http://www.its.caltech.edu/~jafl/xdnd/>
2103 \layout Bibliography
2104 \bibitem {XDS}
2107 \emph on 
2108 The X Direct Save protocol
2109 \emph toggle 
2110 , <http://www.its.caltech.edu/~jafl/xds/>
2111 \layout Bibliography
2112 \bibitem {Choices}
2115 \emph on 
2116 The ROX Choices system
2117 \emph toggle 
2118 , <http://www.ecs.soton.ac.uk/~tal197/choices.php3>
2119 \layout Bibliography
2120 \bibitem {enlightenment}
2123 \emph on 
2124 Enlightenment,
2125 \emph toggle 
2126  <http://www.enlightenment.org> 
2127 \layout Bibliography
2128 \bibitem {PODFUK}
2131 \emph on 
2132 POrtable Dodgy Filesystems in Userland (hacK), 
2133 \emph toggle 
2134 <http://atrey.karlin.mff.cuni.cz/~pavel/podfuk/podfuk.html>
2135 \the_end