r249: Improved the menu code so that translations work better.
[rox-filer/ma.git] / ROX-Filer / src / Docs / Manual.lyx
blob903ac724c255a324be9b9c29c40dafad72c1b494
1 #This file was created by <tal197> Mon Apr 17 13:12:30 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 gtk-config command,
169  like this ($ is the shell prompt):
170 \layout LyX-Code
172 $ gtk-config --version
173 \layout LyX-Code
175 1.2.3
176 \layout Standard
178 To compile:
179 \layout Enumerate
181 Change to the directory containing the ROX-Filer subdirectory.
182 \layout Enumerate
184 Run the AppRun script with the --compile option, like this:
185 \begin_deeper 
186 \layout LyX-Code
188 $ ROX-Filer/AppRun --compile
189 \end_deeper 
190 \layout Enumerate
192 ROX-Filer will perform various checks to find out what kind of system it
193  is being run on and will then compile.
194  If it doesn't work then please e-mail me and complain! Tell me what kind
195  of system you have and what errors were reported.
196  If you manage to fix the problem yourself then please e-mail me the fix.
197 \layout Standard
199 You can now run the filer by running the AppRun script without any options,
200  like this:
201 \layout LyX-Code
203 $ ROX-Filer/AppRun
204 \layout Standard
206 A window should appear and display the contents of your home directory.
207 \layout Standard
209 The executables files are stored inside the ROX-Filer directory in a different
210  subdirectory for each platform.
211  Therefore, you can compile the same application on several different types
212  of machine and then run it from any of them using the AppRun script.
213  This is particularly useful in a network environment.
214 \layout Subsection
216 Invoking
217 \layout Standard
219 By default, ROX-Filer will start by displaying your home directory.
220  You can get it to display other directories instead by listing them after
221  the command:
222 \layout LyX-Code
224 $ ROX-Filer/AppRun /home /usr /usr/local
225 \layout Standard
227 If you want one of the directories to be opened as a panel put 
228 \family typewriter 
230 \family default 
231  or 
232 \family typewriter 
234 \family default 
235  before the directory (for `bottom' or `top' panels).
236  If you don't know what a panel is, try it and see! To run the filer in
237  the background, put an & at the end of the line.
238 \layout LyX-Code
240 $ mkdir ~/Panel
241 \layout LyX-Code
243 $ ln -s $HOME ~/Panel/Home
244 \layout LyX-Code
246 $ ROX-Filer/AppRun -b ~/Panel &
247 \layout Standard
249 The panel should be displayed in a window without a title bar.
250  If this does not work then you may need to update your window manager.
251  The filer was designed and tested using the Enlightenment window manager
252 \begin_inset LatexCommand \cite{enlightenment}
254 \end_inset 
257  You could also try using the -o option which bypasses the window manager
258  entirely (also use this if the panel appears in the wrong place):
259 \layout LyX-Code
261 $ ROX-Filer/AppRun -o -b ~/Panel &
262 \layout Subsection
264 Mouse button and key bindings
265 \layout Standard
267 By default, the mouse button bindings are different to fit in better with
268  X conventions.
269  You can get the old RISC OS bindings by opening the Options window and
270  clicking on a few toggle buttons.
271 \layout Standard
273 By default, the mouse buttons and key bindings for filer windows are as
274  follows:
275 \layout Standard
276 \LyXTable
277 multicol5
278 21 2 0 0 -1 -1 -1 -1
279 1 1 0 0
280 1 1 0 0
281 0 1 0 0
282 0 1 0 0
283 0 1 1 0
284 0 1 0 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 1 0
292 0 1 0 0
293 0 1 1 0
294 0 1 0 0
295 0 1 0 0
296 0 1 0 0
297 0 1 0 0
298 0 1 0 0
299 0 1 0 0
300 8 1 0 "" ""
301 2 1 1 "10cm" ""
302 0 8 0 1 0 0 0 "" ""
303 0 2 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 0 0 0 "" ""
307 0 8 0 1 0 0 0 "" ""
308 0 8 0 1 0 0 0 "" ""
309 0 8 0 1 1 0 0 "" ""
310 0 8 0 1 0 0 0 "" ""
311 0 8 0 1 0 0 0 "" ""
312 0 8 0 1 0 0 0 "" ""
313 0 8 0 1 1 0 0 "" ""
314 0 8 0 1 0 0 0 "" ""
315 0 8 0 1 0 0 0 "" ""
316 0 8 0 1 0 0 0 "" ""
317 0 8 0 1 1 0 0 "" ""
318 0 8 0 1 0 0 0 "" ""
319 0 8 0 1 1 0 0 "" ""
320 0 8 0 1 0 0 0 "" ""
321 0 8 0 1 0 0 0 "" ""
322 0 8 0 1 0 0 0 "" ""
323 0 2 0 1 1 0 0 "" ""
324 0 8 0 1 0 0 0 "" ""
325 0 8 0 1 1 0 0 "" ""
326 0 8 0 1 0 0 0 "" ""
327 0 8 0 1 0 0 0 "" ""
328 0 8 0 1 0 0 0 "" ""
329 0 8 0 1 1 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 "" ""
341 0 8 0 1 0 0 0 "" ""
342 0 8 0 1 0 0 0 "" ""
343 0 8 0 1 0 0 0 "" ""
345 Key or mouse button
346 \newline 
347 Action
348 \newline 
349 Left button click
350 \newline 
351 Select (only) the item clicked on, or clear the selection.
352 \newline 
353 Middle button click
354 \newline 
355 Toggle the item between being selected and unselected.
356 \newline 
357 Right button click
358 \newline 
359 Open the main menu.
360  Hold down Ctrl while clicking to go directly to
361 \newline 
363 \newline 
364 the Selection submenu.
365 \newline 
366 Drag an item 
367 \newline 
368 Copy the file(s) to the destination (an application or another filer window)
369 \newline 
371 \newline 
372 Hold down Shift to move the file, or Ctrl+Shift to create a symbolic link.
373 \newline 
374 Drag (not over an item)
375 \newline 
376 Select a group of items by dragging a box around them.
377 \newline 
379 \newline 
380 If you use the left button then the boxed items only are selected, otherwise
381 \newline 
383 \newline 
384 the boxes items are toggled between selected and unselected.
385 \newline 
386 Double click left button
387 \newline 
388 Open the file or directory or run the application.
389 \newline 
391 \newline 
392 Holding down Shift while clicking does the same thing as choosing
393 \newline 
395 \newline 
396 `Shift Open' from the menu.
397 \newline 
398 Double click middle button
399 \newline 
400 Open the file and close the directory viewer,
401 \newline 
403 \newline 
404 or open the directory in a new window.
405 \newline 
406 Backspace
407 \newline 
408 Change to viewing the parent directory.
409 \newline 
410 Cursor keys
411 \newline 
412 Move the cursor around.
413 \newline 
414 Page Up, Page Down
415 \newline 
416 Move up and down in steps of ten rows at a time.
417 \newline 
418 Home, End
419 \newline 
420 Move to the first/last entry in the directory.
421 \newline 
422 Return
423 \newline 
424 Open the item under the cursor.
425  With Shift held down this acts like choosing 'Shift Open' from the menu.
426 \newline 
427 Spacebar
428 \newline 
429 Toggles the item under the cursor between being selected and unselected.
430 \layout Standard
432 You can simulate a click of the middle mouse button by clicking with Ctrl
433  held down.
434  Other keys can easily be defined by opening the menu, moving the pointer
435  over the item you want to use and pressing a key.
436  The key will appear in the menu and can be used from then on.
437  To make the new key bindings permanent, open the Options box from the menu
438  and click on Save.
439 \layout Subsection
441 The selection
442 \layout Standard
444 While items are selected in a ROX-Filer window the filer has the global
445  selection.
446  You can then paste into another window to get the pathnames of the selected
447  files.
448  For example, to extract the files from a .tgz archive on a floppy disk into
449  your home directory:
450 \layout Enumerate
452 Choose `Xterm here' from the menu in your home directory.
453 \layout Enumerate
455 Type `tar xzf ' (but don't press Return)
456 \layout Enumerate
458 Click on the .tgz file to select it.
459 \layout Enumerate
461 Click the middle button in the xterm window to paste the name of the file
462  into the command.
463 \layout Enumerate
465 Press Return in the xterm to execute the command.
466 \layout Subsection
469 \begin_inset LatexCommand \label{sec: Toolbar}
471 \end_inset 
473 The toolbar
474 \layout Standard
476 By default, each window has a toolbar along the top.
477  You can disable this from the Options window.
478  The three buttons on the toolbar are:
479 \layout Standard
480 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
481 multicol5
482 4 2 0 0 -1 -1 -1 -1
483 1 1 0 0
484 1 1 0 0
485 0 1 0 0
486 0 1 0 0
487 8 1 0 "" ""
488 2 1 1 "8cm" ""
489 0 8 0 1 0 0 0 "" ""
490 0 8 0 1 0 0 0 "" ""
491 0 8 0 1 0 0 0 "" ""
492 0 8 0 1 0 0 0 "" ""
493 0 8 0 1 0 0 0 "" ""
494 0 2 0 1 0 0 0 "" ""
495 0 8 0 1 0 0 0 "" ""
496 0 8 0 1 0 0 0 "" ""
498 Icon
499 \newline 
500 Action
501 \newline 
502 Up arrow
503 \newline 
504 Change to parent directory
505 \newline 
506 House
507 \newline 
508 Change to home directory
509 \newline 
510 Looping arrows
511 \newline 
512 Reread the directory contents
513 \layout Subsection
515 The menus
516 \layout Standard
518 You can open a menu by right clicking
519 \begin_float footnote 
520 \layout Standard
522 If the Use `RISC OS mouse bindings' option is on then use the middle button
523  instead.
524 \end_float 
525  over a panel or filer window.
526  Here is a full description of each choice and what it does:
527 \layout Standard
528 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
529 multicol5
530 6 2 0 0 -1 -1 -1 -1
531 1 1 0 0
532 1 1 0 0
533 0 1 0 0
534 0 1 0 0
535 0 1 0 0
536 0 1 0 0
537 8 1 0 "" ""
538 2 1 1 "8cm" ""
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 8 0 1 0 0 0 "" ""
544 0 8 0 1 0 0 0 "" ""
545 0 8 0 1 0 0 0 "" ""
546 0 2 0 1 0 0 0 "" ""
547 0 8 0 1 0 0 0 "" ""
548 0 8 0 1 0 0 0 "" ""
549 0 8 0 1 0 0 0 "" ""
550 0 8 0 1 0 0 0 "" ""
552 Entry
553 \newline 
554 Action
555 \newline 
556 Select All
557 \newline 
558 Select every item in this window.
559 \newline 
560 Clear Selection
561 \newline 
562 Unselect every item in this window.
563 \newline 
564 Options...
565 \newline 
566 Configure ROX-Filer.
567 \newline 
568 New Directory...
569 \newline 
570 Create a new directory in this one.
571 \newline 
572 Xterm Here
573 \newline 
574 Open an xterm with its current directory set to this directory.
575 \layout Subsubsection
577 The display menu
578 \layout Standard
579 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
580 multicol5
581 11 2 0 0 -1 -1 -1 -1
582 1 1 0 0
583 1 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 0 0
590 0 1 0 0
591 0 1 0 0
592 0 1 1 0
593 8 1 0 "" ""
594 2 1 1 "8cm" ""
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 2 1 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 8 0 1 0 0 0 "" ""
604 0 8 0 1 0 0 0 "" ""
605 0 8 0 1 0 0 0 "" ""
606 0 2 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 0 0 0 "" ""
612 0 8 0 1 0 0 0 "" ""
613 0 8 0 1 0 0 0 "" ""
614 0 8 0 1 1 0 0 "" ""
615 0 8 0 1 0 0 0 "" ""
616 0 8 0 1 0 0 0 "" ""
618 Entry
619 \newline 
620 Action
621 \newline 
622 Large Icons
623 \newline 
624 Each object in the directory is shown as a large icon with its name below.
625 \newline 
626 Small Icons
627 \newline 
628 Items are drawn smaller that usual, allowing you to see more files at once.
629 \latex latex 
631 \backslash 
633 \latex default 
635 \newline 
636 Full Info
637 \newline 
638 Entries are displayed with their icon, name, type, permissions, owner and
639  size.
640 \newline 
641 Sort by Name
642 \newline 
643 Items are arranged in ASCII order.
644  Note that `Z' is considered to come before `a'.
645 \newline 
646 Sort by Type
647 \newline 
648 Items are grouped by their MIME-types and sorted by name within the groups.
649 \newline 
650 Sort by Date
651 \newline 
652 Most recently modified first.
653 \newline 
654 Sort by Size
655 \newline 
656 Largest first.
657 \newline 
658 Show Hidden
659 \newline 
660 If on, files beginning with a dot are shown, otherwise they are hidden.
661 \newline 
662 Refresh
663 \newline 
664 Rereads the contents of the directory and details of all the files in it.
665 \newline 
667 \newline 
668 Use this if the display becomes out-of-date.
669 \layout Standard
672 \latex latex 
674 \backslash 
675 noindent
676 \backslash 
677 dag{}
678 \latex default 
679 If ROX-Filer was unable to find ImLib
680 \begin_inset LatexCommand \cite{ImLib}
682 \end_inset 
684  when it was compiled then the icons are shown cropped rather than scaled.
685  Get ImLib and recompile if you want it to look nice.
686 \layout Subsubsection
689 \begin_inset LatexCommand \label{sec: Permissions}
691 \end_inset 
693 Permissions
694 \layout Standard
696 The permissions display is made up of four groups of three flags.
697  Each flag is displayed as a letter if it is on and a dash (-) if not.
698  The first three characters show the permissions for the owner of the file,
699  the second for other members of the file's group and the third for everyone
700  else.
701  Whichever group applies to the ROX-Filer process itself is shown underlined.
702  The fourth group shows any special flags.
703 \layout Standard
705 The meanings of the characters are:
706 \layout Description
708 r Permission to read the contents of a file, or the names of files in a
709  directory.
710 \layout Description
712 w Permission to alter the contents of a file, or change which names appear
713  in a directory.
714 \layout Description
716 x Permission to run the file as a program, or refer to the files listed
717  within the directory.
718 \layout Description
720 U This program executes with the 
721 \emph on 
722 effective user ID
723 \emph toggle 
724  of its owner rather than the person who ran it.
725 \layout Description
727 G This program executes with the 
728 \emph on 
729 effective group ID
730 \emph toggle 
731  of its group, regardless of who ran it.
732 \layout Description
734 T Entries in this directory can only be altered or removed by the people
735  who own the files even if they have write permission on the directory itself.
736 \layout Standard
738 For example, `
739 \family typewriter 
740 \bar under 
742 \bar default 
743 ,rwx,r-x/---
744 \family default 
745 ' means that the owner of the file is the same as the effective user of
746  ROX-Filer (basically, you own the file), you and members of the file's
747  group have read, write and execute permission and other people have only
748  read and execute permission.
749  There are no special flags set.
750 \layout Standard
752 The rules which determine which permissions apply may vary slightly between
753  operating systems, but a rough guide is:
754 \layout Itemize
756 If the
757 \emph on 
758  effective user ID
759 \emph toggle 
760  of the process is equal to the file's owner, then the owner permissions
761  apply.
762 \layout Itemize
764 Otherwise, if the 
765 \emph on 
766 effective group ID
767 \emph toggle 
768  of the process is equal to the file's group OR the file's group is one
769  of the process's 
770 \emph on 
771 supplemental groups
772 \emph toggle 
773  then the group permissions apply.
774 \layout Itemize
776 Otherwise, the 'other' permissions apply.
777  The 
778 \emph on 
779 real user ID
780 \emph toggle 
781  and 
782 \emph on 
783 real group ID
784 \emph toggle 
785  have no effect (except that a process may set its real IDs to its effective
786  IDs).
787 \layout Subsubsection
789 The selection menu
790 \layout Standard
792 All of these work in the same way - if you open the menu with some items
793  selected then the operation applies to those items.
794  If you open then menu over an item while there is no selection then that
795  item is temporarily selected.
796  If you choose one of these while there is no selection at all then the
797  window goes into `target mode' - the operation happens to the next item
798  you click on.
799  Click on the window background, press Escape, or click with the right mouse
800  button to cancel target mode.
801  Target mode is mainly useful with the `Single click navigation' option
802  and keys bound to the various menu entries.
803 \layout Standard
804 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
805 multicol5
806 20 2 0 0 -1 -1 -1 -1
807 1 1 0 0
808 1 1 0 0
809 0 1 0 0
810 0 1 0 0
811 0 1 0 0
812 0 1 1 0
813 0 1 1 0
814 0 1 1 0
815 0 1 0 0
816 0 1 1 0
817 0 1 0 0
818 0 1 0 0
819 0 1 0 0
820 0 1 0 0
821 0 1 1 0
822 0 1 1 0
823 0 1 0 0
824 0 1 1 0
825 0 1 0 0
826 0 1 0 0
827 8 1 0 "" ""
828 2 1 1 "10cm" ""
829 0 8 0 1 0 0 0 "" ""
830 0 8 0 1 0 0 0 "" ""
831 0 8 0 1 0 0 0 "" ""
832 0 8 0 1 0 0 0 "" ""
833 0 8 0 1 0 0 0 "" ""
834 0 2 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 0 0 0 "" ""
838 0 2 0 1 1 0 0 "" ""
839 0 8 0 1 0 0 0 "" ""
840 0 2 0 1 1 0 0 "" ""
841 0 8 0 1 0 0 0 "" ""
842 0 2 0 1 1 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 "" ""
846 0 8 0 1 1 0 0 "" ""
847 0 8 0 1 0 0 0 "" ""
848 0 8 0 1 0 0 0 "" ""
849 0 8 0 1 0 0 0 "" ""
850 0 8 0 1 0 0 0 "" ""
851 0 8 0 1 0 0 0 "" ""
852 0 8 0 1 0 0 0 "" ""
853 0 8 0 1 0 0 0 "" ""
854 0 8 0 1 0 0 0 "" ""
855 0 8 0 1 0 0 0 "" ""
856 0 8 0 1 1 0 0 "" ""
857 0 8 0 1 0 0 0 "" ""
858 0 8 0 1 1 0 0 "" ""
859 0 8 0 1 0 0 0 "" ""
860 0 8 0 1 0 0 0 "" ""
861 0 8 0 1 0 0 0 "" ""
862 0 8 0 1 1 0 0 "" ""
863 0 8 0 1 0 0 0 "" ""
864 0 8 0 1 0 0 0 "" ""
865 0 8 0 1 0 0 0 "" ""
866 0 8 0 1 0 0 0 "" ""
867 0 8 0 1 0 0 0 "" ""
868 0 8 0 1 0 0 0 "" ""
870 Entry
871 \newline 
872 Action
873 \newline 
874 Copy...
875 \newline 
876 Make a copy of this object in the same directory.
877 \newline 
878 Rename...
879 \newline 
880 Change the name used for this object.
881 \newline 
882 Link...
883 \newline 
884 Create a symbolic link to this name in the same directory.
885 \newline 
886 Shift Open
887 \newline 
888 Opens applications as directories, files as text/plain, mount points
889 \newline 
891 \newline 
892 by mounting or unmounting them and symlinks by opening the directory
893 \newline 
895 \newline 
896 containing the thing they point to.
897 \newline 
899 \newline 
900 This is the same as double-clicking with Shift held down.
901 \newline 
902 Help
903 \newline 
904 Explain what kind of thing is selected.
905  For applications,
906 \newline 
908 \newline 
909 display the help files.
910 \newline 
911 Info
912 \newline 
913 Display extra information about this object.
914 \newline 
915 Open VFS
916 \newline 
917 Open the file as if it was a directory --- see section 
918 \begin_inset LatexCommand \ref{sec: vfs}
920 \end_inset 
923 \newline 
924 Mount
925 \newline 
926 Mount or unmount each mount point selected.
927 \newline 
928 Delete
929 \newline 
930 Remove all the selected entries from the directory.
931 \newline 
933 \newline 
934 Subdirectories will have their contents deleted first.
935 \newline 
937 \newline 
938 Deleting symlinks only removes the link, not the thing it points to.
939 \newline 
940 Disk Usage
941 \newline 
942 Count the sizes of all the selected items.
943  Directories also have their
944 \newline 
946 \newline 
947 contents counted.
948  Symlinks count themselves, not the things they point to.
949 \newline 
950 Permissions
951 \newline 
952 Allows you to change the permissions for the selected files.
953 \newline 
954 Find
955 \newline 
956 Search for files by specifying various conditions --- see section 
957 \begin_inset LatexCommand \ref{sec: Searching}
959 \end_inset 
962 \layout Subsubsection
964 The window menu
965 \layout Standard
966 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
967 multicol5
968 8 2 0 0 -1 -1 -1 -1
969 1 1 0 0
970 1 1 0 0
971 0 1 0 0
972 0 1 0 0
973 0 1 0 0
974 0 1 0 0
975 0 1 0 0
976 0 1 0 0
977 8 1 0 "" ""
978 2 1 1 "8cm" ""
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 2 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 0 0 0 "" ""
991 0 8 0 1 0 0 0 "" ""
992 0 8 0 1 0 0 0 "" ""
993 0 8 0 1 0 0 0 "" ""
994 0 8 0 1 0 0 0 "" ""
996 Entry
997 \newline 
998 Action
999 \newline 
1000 Parent, New Window
1001 \newline 
1002 Open a new window displaying this window's parent.
1003 \newline 
1004 Parent, Same Window
1005 \newline 
1006 As above, but reuse this window.
1007 \newline 
1008 New Window
1009 \newline 
1010 Open another window onto this directory.
1011 \newline 
1012 Close Window
1013 \newline 
1014 Close this window.
1015 \newline 
1016 Enter Path
1017 \newline 
1018 Open the path-entry box (see section 
1019 \begin_inset LatexCommand \ref{sec: mini}
1021 \end_inset 
1024 \newline 
1025 Shell Command
1026 \newline 
1027 Open the shell command box (see section 
1028 \begin_inset LatexCommand \ref{sec: mini}
1030 \end_inset 
1033 \newline 
1034 Show ROX-Filer help
1035 \newline 
1036 Same as selecting ROX-Filer and choosing `Help' from the menu.
1037 \layout Subsubsection
1039 The panel menu
1040 \layout Standard
1042 This is just a cut-down version of the window menu.
1043  The only new entry is `Open Panel as Directory', which displays the panel
1044  in a new, non-panel, window.
1045  `Remove Item' is a cut-down version of `Delete'; it only works for symbolic
1046  links and never asks for confirmation.
1047  Since dragging applications and directories to the panel creates symlinks
1048  it is very easy to change the panel contents to suit your needs.
1049 \layout Subsection
1052 \begin_inset LatexCommand \label{sec: vfs}
1054 \end_inset 
1056 Virtual file systems
1057 \layout Standard
1059 Some types of file can be represented as a directory.
1060  A typical example is a zip file, which contains an entire directory structure
1061  in compressed form.
1062  It is often useful to be able to open up such a file as if it was a real
1063  directory, and the VFS system allows you to do this.
1064 \layout Standard
1066 To use this feature you must have one or both of the following:
1067 \layout Itemize
1069 A system (such as PODFUK
1070 \begin_inset LatexCommand \cite{PODFUK}
1072 \end_inset 
1074 ) which causes the kernel to support various Virtual File Systems directly.
1075  This is the best option since all programs will be able to access the contents
1076  of the VFS.
1077  You will require root access to install such a system, however, and it
1078  is not available on all platforms.
1079 \layout Itemize
1081 Support for the Midnight Commander VFS library compiled into ROX-Filer.
1082  This happens automatically when you compile ROX-Filer if it can find the
1083  VFS library --- this means having 
1084 \family typewriter 
1085 libvfs.so
1086 \family default 
1087  (or 
1088 \family typewriter 
1089 libvfs.a
1090 \family default 
1091 ) in a system library directory or in the directory in the environment variable
1093 \family typewriter 
1094 LD_LIBRARY_PATH
1095 \family default 
1097  In this case, you will be able to view the directory structure but not
1098  change it or access individual files.
1099  Support for this may be added later.
1100  Midnight Commander is part of the GNOME project.
1101 \layout Standard
1103 Note that using the `Open VFS' menu is simply a short-cut for using the
1104  path-entry box (explained below), so if you want to use a VFS not listed
1105  on the menu you can type in the path directly, eg:
1106 \layout Standard
1109 \family typewriter 
1110 /home/fred/archive.zip#uzip/
1111 \layout Standard
1114 \latex latex 
1116 \backslash 
1117 noindent 
1118 \latex default 
1119 Don't forget the final slash!
1120 \layout Subsubsection
1122 Step by step example of adding VFS support
1123 \layout Standard
1125 This assumes that you have the Midnight Commander source in a directory
1126  called `mc'.
1127  You might need to replace 
1128 \family typewriter 
1129 libvfs.so 
1130 \family default 
1131 with 
1132 \family typewriter 
1133 libvfs.a
1134 \family default 
1136 \layout LyX-Code
1138 $ cd mc
1139 \layout LyX-Code
1141 $ ./configure
1142 \layout LyX-Code
1144 $ cd vfs
1145 \layout LyX-Code
1147 $ make libvfs.so
1148 \layout Itemize
1150 If you have the root password then install the library in a system library
1151  directory as normal.
1152 \layout Itemize
1154 If not,
1155 \begin_deeper 
1156 \layout LyX-Code
1158 $ mkdir ~/lib
1159 \layout LyX-Code
1161 $ cp libvfs.so ~/lib
1162 \layout LyX-Code
1164 $ cd ~/Apps/ROX-Filer
1165 \layout Standard
1167 Edit the 
1168 \family typewriter 
1169 AppRun
1170 \family default 
1171  file to include this as the 
1172 \emph on 
1173 second
1174 \emph toggle 
1175  line:
1176 \layout LyX-Code
1178 LD_LIBRARY_PATH=${HOME}/lib; export LD_LIBRARY_PATH
1179 \layout Standard
1181 This will ensure that ROX-Filer will look for the library in the new 
1182 \family typewriter 
1183 ~/lib
1184 \family default 
1185  directory.
1186  Finally, recompile:
1187 \layout LyX-Code
1189 $ ./AppRun --compile
1190 \layout LyX-Code
1193 \layout LyX-Code
1195 checking for mc_stat in -lvfs...
1196  yes
1197 \layout Standard
1199 If you saw that line then it's worked! Well done!
1200 \end_deeper 
1201 \layout Subsection
1204 \begin_inset LatexCommand \label{sec: mini}
1206 \end_inset 
1208 The mini-buffer
1209 \layout Standard
1211 The mini-buffer is a white bar that appears along the bottom of the window
1212  and allows you to enter some text.
1213  Press Escape to get rid of it again.
1214  It behaves in different ways depending on how you invoked it:
1215 \layout Subsubsection
1217 The path-entry box
1218 \layout Standard
1220 This allows you to type in a path directly.
1221  As you type the display is updated to show the item entered visually.
1222  The main use is to find a file in a large directory quickly, but you can
1223  also use it for navigating between directories, or for selecting a full
1224  pathname from somewhere else and pasting it directly into the path-entry
1225  box.
1226 \layout Standard
1227 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
1228 multicol5
1229 4 2 0 0 -1 -1 -1 -1
1230 1 1 0 0
1231 0 1 0 0
1232 0 1 0 0
1233 0 1 0 0
1234 8 1 0 "" ""
1235 2 1 1 "8cm" ""
1236 0 8 0 1 0 0 0 "" ""
1237 0 8 0 1 0 0 0 "" ""
1238 0 8 0 1 0 0 0 "" ""
1239 0 8 0 1 0 0 0 "" ""
1240 0 8 0 1 0 0 0 "" ""
1241 0 8 0 1 0 0 0 "" ""
1242 0 8 0 1 0 0 0 "" ""
1243 0 8 0 1 0 0 0 "" ""
1246 \newline 
1247 Action
1248 \newline 
1249 Return
1250 \newline 
1251 Open the currently selected item.
1252 \newline 
1254 \newline 
1255 Shell-style tab completion.
1256 \newline 
1257 Up, Down
1258 \newline 
1259 Select the previous/next matching entry.
1260 \layout Standard
1262 Tab completion tries to fill in as many characters for you as it can.
1263  For example, if there are two files in a directory called `save-mail-nov-1999'
1264  and `save-mail-dec-1999' then typing 'save' and pressing Tab will expand
1265  `save' to `save-mail-' and beep to indicate that the match is not complete.
1266  If you use tab completion on a directory and it is unique then the filer
1267  will automatically change into the directory.
1268  This behavior should be familiar to shell users.
1269 \layout Subsubsection*
1271 Example
1272 \layout Standard
1274 Let's say you want to locate the documentation for Wine in the directory
1275  /usr/doc (which is usually very large).
1276  Here's how you could do it:
1277 \layout Enumerate
1279 Open the minibuffer by choosing 'Enter Path' from the Window menu.
1280  I usually bind this function to the slash (`/') key.
1281 \layout Enumerate
1283 Press CTRL-U to delete the existing contents --- this moves you to the root
1284  directory.
1285 \layout Enumerate
1287 Type `u
1288 \latex latex 
1290 \backslash 
1291 Tab{}
1292 \latex default 
1294 \latex latex 
1296 \backslash 
1297 Tab{}
1298 \latex default 
1300 \latex latex 
1302 \backslash 
1303 Tab{}
1304 \latex default 
1306  As you type, the cursor will move to the correct subdirectory.
1307  If it beeps when you press Tab then you need to supply more letters.
1308 \layout Subsubsection
1310 The shell command box
1311 \layout Standard
1313 This provides a quick way of entering shell commands if you don't want to
1314  open an xterm.
1315  If you don't know what shell commands are, skip this section!
1316 \layout Standard
1318 Just type in the command and press Return to execute it.
1319  Up and Down arrows move through previously entered commands.
1320  Tab does shell-style completion.
1321  Clicking on an item inserts its name into the minibuffer.
1322  If some items are selected then they are assigned to the positional parameters
1324 \family typewriter 
1326 \family default 
1328 \family typewriter 
1330 \family default 
1331 , etc.
1332 \layout Subsubsection*
1334 Examples
1335 \layout Standard
1337 To untar a 
1338 \family typewriter 
1339 .tgz
1340 \family default 
1341  archive:
1342 \layout Enumerate
1344 Open the minibuffer by choosing `Shell Command' from the Window menu.
1345  I usually bind this to the bang (`!') key.
1346 \layout Enumerate
1348 Type `
1349 \family typewriter 
1350 tar xzf
1351 \family default 
1352 ' and click on the file.
1353  The leading space is automatically inserted.
1354 \layout Enumerate
1356 Press Return to execute it.
1357 \layout Standard
1359 To print all the selected files:
1360 \layout Enumerate
1362 Open the shell command minibuffer.
1363 \layout Enumerate
1365 Type 
1366 \family typewriter 
1367 `lpr $*
1368 \family default 
1369 ' and press Return.
1370 \layout Subsubsection*
1372 Notes
1373 \layout Itemize
1375 Be careful; you will not be asked to confirm! If in doubt, start the command
1376  with `
1377 \family typewriter 
1378 echo
1379 \family default 
1380 ' so that it will be displayed rather than executed.
1381 \layout Itemize
1383 The above command won't work if some of the files contain spaces --- use
1385 \family typewriter 
1386 lpr 
1387 \latex latex 
1389 \latex default 
1391 \latex latex 
1393 \family default 
1394 \latex default 
1395 ' instead to be safe.
1396 \layout Itemize
1398 `sh' is always used as the name of the shell to run (mainly because bash
1399  and csh treat positional parameters differently).
1400  However, PATH is searched to find it so you can still use another shell
1401  if you want by naming it sh and putting it in your path.
1402 \layout Itemize
1404 Commands execute in the background, so you can say:
1405 \begin_deeper 
1406 \layout LyX-Code
1408 sleep 240; xmessage Time to go!
1409 \end_deeper 
1410 \layout Subsection
1412 Action windows
1413 \layout Standard
1415 Action windows are those boxes that appear while you're doing a Copy/Move/Link/e
1416 tc operation.
1417  The status line at the top of the window shows the current directory or
1418  object that the window is processing.
1419  The scrolling area below is the log area - it shows what has been done
1420  and may display questions here.
1421 \layout Standard
1423 At the bottom are four buttons and, sometimes, some options.
1424  The buttons work as follows:
1425 \layout Description
1427 Quiet will do simple operations without asking you to confirm each one.
1428  By turning this on and off during an operation you can use it like a pause
1429  button.
1430 \layout Description
1432 Yes answers yes to the question displayed in the log area.
1433 \layout Description
1435 No answers no to the question displayed in the log area.
1436 \layout Description
1438 Abort kills the current operation (if any) and closes the action window.
1439 \layout Standard
1441 You can control which actions get started automatically (without you having
1442  to click on Quiet at the start) from the Options window.
1443 \layout Subsubsection
1445 Action window options
1446 \layout Standard
1448 Some actions have options, which appear as option boxes at the bottom of
1449  the window.
1450  They are:
1451 \layout Itemize
1453 `Force' means that the filer won't treat non-writeable files as special.
1454  Normally, it confirms the deletion even if Quiet is pressed.
1455  Note that you still can't remove files from non-writeable directories because
1456  in that case you really don't have permission.
1457 \layout Itemize
1459 `Brief' prevents the filer logging a message every time it does something.
1460  Use this to speed things up if large numbers of messages are being logged.
1461 \layout Itemize
1463 `Recurse' means that doing something to a directory will also do the same
1464  thing to all its contents, and the contents of any subdirectories, and
1465  so on.
1466 \layout Subsection
1469 \begin_inset LatexCommand \label{sec: Searching}
1471 \end_inset 
1473 Searching
1474 \layout Standard
1476 The Find feature looks through all the selected files and directories and
1477  any subdirectories (recursively) looking for items that match a particular
1478  expression.
1479 \layout Standard
1481 If you know the name of a file then just enter it in the `Expression:' box,
1482  enclosed in single quotes.
1483  For example, to find a file called `log' you would enter:
1484 \layout LyX-Code
1486 'log'
1487 \layout Standard
1489 Remember to use normal quotes, not double quotes (
1490 \family typewriter 
1492 \begin_inset Quotes eld
1493 \end_inset 
1496 \family default 
1497 ) or back-quotes (
1498 \family typewriter 
1500 \family default 
1502 \layout Standard
1504 As the filer finds matching files they are added to the results list.
1505  Clicking on an entry in the list opens a viewer showing the file you clicked
1506  on.
1507  The filer will use the same window to view other results (so, if you want
1508  the results shown in separate windows you must explicitly create a new
1509  window from the Window menu).
1510 \layout Subsubsection
1512 Wildcards
1513 \layout Standard
1515 You can also put shell-style wildcard characters inside the quotes, for
1516  example:
1517 \layout LyX-Code
1519 '*.html'
1520 \layout LyX-Code
1522 'Report.*'
1523 \layout LyX-Code
1525 'Draft[1-5]'
1526 \layout LyX-Code
1528 'main.[ch]'
1529 \layout Standard
1531 Look at the 
1532 \family typewriter 
1533 glob(7)
1534 \family default 
1535  manpage if you want to know more about shell wildcards.
1536 \layout Standard
1538 If the pattern you enter contains a slash ('/') character then the pattern
1539  is matched against the file's full path, otherwise only the leafname is
1540  used.
1541  That is, 
1542 \family typewriter 
1543 '*tmp*'
1544 \family default 
1545  will find 'tmp' and 'tmpfile' but not '/tmp/file' --- 
1546 \family typewriter 
1547 '/*tmp*'
1548 \family default 
1549  will find all three.
1550 \layout Subsubsection
1552 Simple tests
1553 \layout Standard
1555 As well as finding files by their names you can also find them by various
1556  other attributes.
1557  Note that `file' is used here to mean anything that can appear in the filesyste
1558 m --- including directories, devices and so on.
1559 \layout Standard
1562 \latex latex 
1564 \backslash 
1565 smallskip
1566 \backslash 
1567 noindent 
1568 \latex default 
1569 These look at the type of the item being checked:
1570 \layout Description
1572 IsReg matches any regular (ie, normal) file.
1573 \layout Description
1575 IsLink matches symlinks.
1576 \layout Description
1578 IsDir matches directories.
1579 \layout Description
1581 IsChar matches character device files.
1582 \layout Description
1584 IsBlock matches block device files.
1585 \layout Description
1587 IsDev matches block or character device files.
1588 \layout Description
1590 IsPipe matches pipes.
1591 \layout Description
1593 IsSocket matches sockets.
1594 \layout Standard
1596 These look at the permissions set on the file - see section 
1597 \begin_inset LatexCommand \ref{sec: Permissions}
1599 \end_inset 
1602 \layout Description
1604 IsSUID matches files which have the Set-UID bit set.
1605 \layout Description
1607 IsSGID matches files which have the Set-GID bit set.
1608 \layout Description
1610 IsSticky matches files with the sticky bit set,
1611 \layout Description
1613 IsReadable matches files which you can read from.
1614 \layout Description
1616 IsWriteable matches files which you can write to.
1617 \layout Description
1619 IsExecutable matches files which you can execute.
1620 \layout Standard
1622 And a couple of other useful ones:
1623 \layout Description
1625 IsEmpty finds empty files (ie, those whose length is 0 bytes).
1626 \layout Description
1628 IsMine finds files which you own.
1629 \layout Subsubsection
1631 Logic operators
1632 \layout Standard
1634 You can combine the above tests in various ways to perform more advanced
1635  searches.
1636  An expression is actually made up of a list of 
1637 \emph on 
1638 cases
1639 \emph toggle 
1640 , separated by commas.
1641  The filer will try to match each case in turn until one matches or there
1642  are no more cases left.
1643  For example, to search for files with several possible endings:
1644 \layout LyX-Code
1646 '*.gif', '*.htm', '*.html'
1647 \layout Standard
1649 Further, each of the cases is actually a list of conditions.
1650  The case only matches if all of its conditions are met.
1651  So, to find a directory called 
1652 \family typewriter 
1654 \family default 
1655  or a regular file ending in 
1656 \family typewriter 
1658 \family default 
1660 \layout LyX-Code
1662 IsDir 'lib', IsReg '*.so'
1663 \layout Standard
1665 You can negate a condition by putting a 
1666 \family typewriter 
1668 \family default 
1669  in front of it and you can use a sub-expression as a condition by bracketing
1670  it, like this:
1671 \layout LyX-Code
1673 ! (IsDir, IsReg)
1674 \layout LyX-Code
1676 !IsDir !IsReg
1677 \layout LyX-Code
1679 Not isdir and not isreg
1680 \layout Standard
1682 All three do the same thing.
1683 \layout Subsubsection
1685 Comparisons
1686 \layout Standard
1688 You can also compare various values using the operators 
1689 \family typewriter 
1690 <, <=, =, !=, >, >=
1691 \family default 
1692  (for less-than, less-than-or-equal-to, equal-to, not-equal-to, greater-than
1693  and greater-than-or-equal-to).
1694  When comparing times, you may find it helpful to use 
1695 \family typewriter 
1696 after 
1697 \family default 
1698 and 
1699 \family typewriter 
1700 before
1701 \family default 
1702  instead of 
1703 \family typewriter 
1705 \family default 
1706  and 
1707 \family typewriter 
1709 \family default 
1710  to make things clearer.
1711 \layout Standard
1713 The following are read from the file being checked and may be used for the
1714  values being compared:
1715 \layout Description
1717 atime The time that the file was last accessed.
1718 \layout Description
1720 ctime The time that the file's status was last changed.
1721 \layout Description
1723 mtime The time that the file's contents were last modified.
1724 \layout Description
1726 size The size of the file.
1727 \layout Description
1729 inode The file's inode (index) number
1730 \layout Description
1732 nlinks The number of links to this file (that is, the number of directory
1733  entries which refer to this file.
1734  Note that symlinks don't count as references).
1735 \layout Description
1737 uid The User ID of the file.
1738 \layout Description
1740 gid The Group ID of the file.
1741 \layout Description
1743 blocks The number of disk blocks being used by the file.
1744 \layout Standard
1746 Times are measured as seconds since the Unix Epoch (00:00:00 UTC, January
1747  1, 1970).
1748  Sizes are in bytes.
1749  When specifying constants to compare these values with you may use various
1750  keywords to scale the value:
1751 \layout Description
1753 Byte(s) has no effect, but looks better.
1754 \layout Description
1756 Kb multiplies by 1024, so 2Kb is the same as 2048.
1757 \layout Description
1759 Mb multiplies by 
1760 \begin_inset Formula \( 1024^{2} \)
1761 \end_inset 
1763 , ie 1024 Kb.
1764 \layout Description
1766 Sec(s) has no effect, but looks nice.
1767 \layout Description
1769 Min(s) multiplies by 60 to get minutes.
1770 \layout Description
1772 Hour(s),
1773 \protected_separator 
1774 Day(s),
1775 \protected_separator 
1776 Week(s),
1777 \protected_separator 
1778 Year(s) likewise convert to the relevant unit.
1779 \layout Description
1781 Ago makes the time in the past relative to when the check is done.
1782 \layout Description
1784 Hence makes the time in the future.
1785 \layout Description
1787 Now is short for `
1788 \family typewriter 
1789 0 Secs Hence
1790 \family default 
1792 \layout Standard
1794 Some examples should make this all a bit clearer!
1795 \layout LyX-Code
1797 mtime after 1 day ago
1798 \layout LyX-Code
1800 size > 10 Mb
1801 \layout LyX-Code
1803 IsReg and nlinks > 1
1804 \layout Standard
1806 The first finds files modified within the last 24 hours.
1807  You could use 
1808 \family typewriter 
1810 \family default 
1811  instead of 
1812 \family typewriter 
1813 after,
1814 \family default 
1815 but it's not so clear what is meant.
1816  The second finds files larger than 10 Mb and the last finds regular files
1817  with more than one directory entry.
1818 \layout Standard
1820 Be careful though --- the filer doesn't check the context of the modifiers,
1821  so 
1822 \family typewriter 
1823 size > 1 day ago
1824 \family default 
1825  is allowed, although it doesn't make much sense! Also, forgetting to use
1827 \family typewriter 
1829 \family default 
1830  or 
1831 \family typewriter 
1832 hence
1833 \family default 
1834  will cause odd effects (the time will be measured relative to the Epoch
1835  rather than the current time).
1836  Finally, don't use = with times --- 
1837 \family typewriter 
1838 atime = 1 day ago
1839 \family default 
1840  looks for a file accessed 
1841 \emph on 
1842 exactly
1843 \emph toggle 
1844  86400 seconds ago...
1845 \layout Subsubsection
1847 Specials
1848 \layout Description
1850 System(Command) executes `Command' on the file.
1851  The test succeeds if the command returns an exit status of zero.
1852  A `%' character in `Command' is replaced by the full path of the file being
1853  checked.
1854  System is a very slow test to perform, so do it last if possible.
1855  For example, if you're looking for a .c file containing the word `main',
1856  do
1857 \begin_deeper 
1858 \layout LyX-Code
1860 '*.c' system(grep -q main
1861 \latex latex 
1863 \backslash 
1864 thinspace{}
1865 \latex default 
1867 \latex latex 
1869 \backslash 
1870 thinspace{}"
1871 \latex default 
1873 \layout Standard
1875 so that the grep is only performed for files ending in .c (as opposed to
1876  only checking that the file ends in .c if it contains the word `main').
1877 \end_deeper 
1878 \layout Description
1880 Prune Always fails!
1881 \begin_float footnote 
1882 \layout Standard
1884 Note that this is the opposite of the 
1885 \noun on 
1886 find(1)
1887 \noun toggle 
1888  command.
1889 \end_float 
1890  However, if it gets evaluated at all then it prevents the filer from checking
1891  inside the current directory.
1892  Remember the order in which the filer checks the expression!
1893 \layout Standard
1895 Examples:
1896 \layout LyX-Code
1898 '*.old' system(echo rm %)
1899 \layout LyX-Code
1901 'src' prune, '*.c'
1902 \layout Standard
1904 The first displays a command to delete each file ending in 
1905 \family typewriter 
1906 .old
1907 \family default 
1908 ; you can either paste the results into an xterm to execute them or run
1909  the search again without the 
1910 \family typewriter 
1911 echo
1912 \family default 
1914  It's always a good idea to use 
1915 \family typewriter 
1916 echo
1917 \family default 
1918  first with dangerous commands! The second looks for 
1919 \family typewriter 
1921 \family default 
1922  files, but does not bother checking inside directories called 
1923 \family typewriter 
1925 \family default 
1927  The expression is evaluated like this:
1928 \layout Standard
1929 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center 
1931 \begin_inset Figure size 216 180
1932 file Prune.eps
1933 height 2 2.5
1934 flags 9
1936 \end_inset 
1939 \layout Subsection
1941 Options
1942 \layout Standard
1944 You can configure various aspects of ROX-Filer from the Options box.
1945  Choose `Options...' from a filer window menu to open it.
1947 \layout Standard
1949 At the bottom of the window are four buttons:
1950 \layout Description
1952 Save puts all your choices into effect, and also saves them into your Choices
1953  directory for next time ROX-Filer is loaded.
1954  ROX-Filer will never save any preferences to disk unless you click on the
1955  `Save' button in the options window.
1956 \layout Description
1958 OK puts your choices into effect without writing anything to disk.
1959 \layout Description
1961 Apply works like OK, but without closing the Options window.
1962 \layout Description
1964 Cancel closes the options box and forgets any changes you made.
1965 \layout Subsubsection
1967 Action window options
1968 \layout Standard
1970 You can choose to start some operations automatically, without waiting for
1971  you to click on Quiet.
1972  Select each operation that you want to auto-start here.
1973 \layout Subsubsection
1975 Filer window options
1976 \layout Itemize
1978 `Ignore case when sorting' treats upper and lower case letters as equivalent
1979  when sorting.
1980  If this is off then `Zoo' comes before `animal', for example.
1981 \layout Itemize
1983 `New window on button 1' swaps the actions of the two non-menu buttons when
1984  opening directories.
1985  This is provided for people who are used to the RISC OS mouse bindings.
1986 \layout Itemize
1988 `Menu on button 2' swaps the actions of buttons 2 and 3 so that the middle
1989  button brings up the menus.
1990  This is provided for people who are used to the RISC OS mouse bindings.
1991 \layout Itemize
1993 `Single-click navigation' treats a single click over an item as if it was
1994  a double click.
1995  This allows you to move around, run applications and open files without
1996  double clicking.
1997  To select a file 
1998 \emph on 
1999 without
2000 \emph toggle 
2001  opening it you must hold down CTRL while you click.
2002 \layout Itemize
2004 `Unique windows' prevents you from having two windows showing the same directory.
2005  Opening a second view onto a directory closes the first.
2006 \layout Itemize
2008 `Toolbar type for new windows' allows you to choose what kind of toolbar
2009  will be used for future filer windows (the currently open windows are not
2010  affected).
2011  None means that new windows will not have a toolbar, Normal provides a
2012  small bar of icons, and GNOME displays larger icons with textual labels
2013  and allows the bar to be detached from the window by dragging it.
2014  See section 
2015 \begin_inset LatexCommand \ref{sec: Toolbar}
2017 \end_inset 
2019  for details.
2020 \layout Standard
2022 The last display style and sort type you chose will also be saved as the
2023  defaults for next time.
2024 \layout Subsubsection
2026 Drag-And-Drop options
2027 \layout Standard
2029 ROX-Filer uses the standard XDND protocol for drag-and-drop.
2030  This protocol recommends that URIs should contain the hostname of the computer
2031  that the resource is on so that the program receiving the data can determine
2032  whether it can get the data directly or whether it must go via the X-server.
2033  However, many older programs (particularly GNOME applications) get confused
2034  by the hostname and fail to load the data correctly.
2035  If `Don't use hostnames' is on then the hostname part is omitted and ROX-Filer
2036  will work with these applications BUT you can't drag data to a program
2037  running on a different machine.
2038 \layout Standard
2040 `Allow dragging to icons in filer windows' controls what happens when you
2041  drop files onto icons in filer windows.
2042  If on then drops onto directories will save the data inside the directory
2043  while dropping onto programs will invoke the program on that data.
2044  If off then drops anywhere inside a filer window act like drops onto the
2045  window background --- that is, the data will be saved into the directory
2046  being displayed.
2047 \layout Subsubsection
2049 Menu options
2050 \layout Standard
2052 The `Xterm here' program is the one used when you choose `Xterm here' from
2053  the menu.
2054  You can replace it with another program such as `gnome-terminal' if you
2055  like.
2056  In fact, any program will do, but note that you cannot pass any options
2057  to the program at present.
2058 \layout Section
2060 Filetypes
2061 \layout Standard
2063 ROX-Filer uses three sub-directories in your Choices directory for filetypes:
2064 \layout Description
2066 MIME-info contains files which specify what the MIME type for a file should
2067  be, based on its extention.
2068  All the files in all the MIME-info directories are scanned when the filer
2069  loads.
2070  In addition, ROX-Filer is now supplied with a file called `MIME-info' (inside
2071  its application directory), which is also scanned --- this allows new users
2072  to get started more easily.
2073  Many applications now come with a file called `something.mime'; copy these
2074  files into your MIME-info directory to make ROX-Filer automatically recognise
2075  the new extensions.
2076 \layout Description
2078 MIME-types contains symlinks, one for each MIME type, which point to programs
2079  that can handle files of that type.
2080  For example, to make opening an HTML file load it into Netscape:
2081 \begin_deeper 
2082 \layout Enumerate
2084 Find the Netscape application and go to `Link...' on the menu.
2085 \layout Enumerate
2087 Enter `text_html' as the name for the link and drag the icon from the Link
2088  box into the MIME-types directory.
2089 \layout Standard
2091 You can also put actual programs in here as well as links if you want to.
2092 \end_deeper 
2093 \layout Description
2095 MIME-icons contains the images used to display each type of file.
2096  So the filer will try to display an HTML file using the icon `MIME-icons/text_h
2097 tml.xpm'.
2098 \layout Standard
2100 Many sample files are supplied as part of the ROX desktop
2101 \begin_inset LatexCommand \cite{ROX}
2103 \end_inset 
2106 \layout Standard
2108 In both MIME-types and MIME-icons directories you can also provide default
2109  actions/images for each media type.
2110  For example, if `text_html' isn't found then the filer will try simply
2111  using `text'.
2112 \layout Section
2114 Application directories
2115 \layout Standard
2117 An application directory is a directory which can be run as an application.
2118  It contains all the resources of an application - source code, binaries,
2119  documentation and so on.
2120  Keeping everything in one place make installation and uninstallation much
2121  easier for users.
2122  You can also keep multiple versions of a program by simply having several
2123  application directories.
2124  You may move and rename them as you please.
2125  Application directories are easier to use and install and are more secure
2126  too
2127 \begin_float footnote 
2128 \layout Standard
2130 Because you can compile an application as a user and then simply copy it
2131  as root rather than having to run an install script you are free from the
2132  danger of running untrusted code as root.
2133  All you have to watch out for is setuid binaries.
2134 \end_float 
2136 \layout Standard
2138 To make a directory executable all you need to do is create a executable
2139  file called `AppRun' inside it.
2140  This file is run when the user double-clicks on the application.
2141  You should also provide `AppIcon.xpm' (which will be used as the image for
2142  the application) and `Help' (which is a directory that is opened when the
2143  user asks for help).
2144  Have a look at the ROX-Filer application directory for a full example.
2145 \layout Section
2147 Internationalisation
2148 \layout Subsection
2151 \begin_inset LatexCommand \label{sec: LANG}
2153 \end_inset 
2155 Selecting a translation
2156 \layout Standard
2158 ROX-Filer is able to translate many of its messages, provided suitable translati
2159 on files are provided.
2160  If you know that your language is supported then simply set the 
2161 \family typewriter 
2162 LANG
2163 \family default 
2164  environment variable to the appropriate code for your country before starting
2165  the filer, eg:
2166 \layout LyX-Code
2168 LANG=fr; export LANG
2169 \layout LyX-Code
2171 ROX-Filer/AppRun
2172 \layout Standard
2174 Note that 
2175 \series bold 
2176 no translations currently exist
2177 \series default 
2178  --- if you want to help with a translation then please get in touch.
2179 \layout Subsection
2181 Creating a new translation
2182 \layout Enumerate
2184 Go into the 
2185 \family typewriter 
2187 \family default 
2188  directory and create the file `
2189 \family typewriter 
2190 messages.pot
2191 \family default 
2193 \begin_deeper 
2194 \layout LyX-Code
2196 $ cd ROX-Filer/src
2197 \layout LyX-Code
2199 $ make messages.pot
2200 \end_deeper 
2201 \layout Enumerate
2203 Copy the file into the `
2204 \family typewriter 
2206 \family default 
2207 ' subdirectory under 
2208 \family typewriter 
2210 \family default 
2211  (not the other one!) as 
2212 \begin_inset Formula \( \langle \hbox {name}\rangle \hbox {\tt .po} \)
2213 \end_inset 
2216  Eg, if your language is referred to as `ml' (`my language'):
2217 \begin_deeper 
2218 \layout LyX-Code
2220 $ cp messages.pot po/ml.po
2221 \end_deeper 
2222 \layout Enumerate
2224 Load the copy into a text editor.
2225 \layout Enumerate
2227 Fill in the translations, which are all blank to start with.
2228 \layout Enumerate
2230 Run the `
2231 \family typewriter 
2232 make-mo
2233 \family default 
2234 ' script to create the binary file which ROX-Filer can use.
2235 \begin_deeper 
2236 \layout LyX-Code
2238 $ cd ROX-Filer/src/po
2239 \layout LyX-Code
2241 $ ./make-mo ml
2242 \layout LyX-Code
2244 Created file ../../po/ml/LC_MESSAGES/ROX-Filer.mo OK
2245 \end_deeper 
2246 \layout Enumerate
2248 Set the LANG variable to `
2249 \family typewriter 
2251 \family default 
2252 ' and restart the filer (see section 
2253 \begin_inset LatexCommand \ref{sec: LANG}
2255 \end_inset 
2258 \layout Enumerate
2260 Submit the 
2261 \family typewriter 
2263 \family default 
2264  file to me so that I can include it in future releases of the filer.
2265 \layout Subsection
2267 Updating an existing translation
2268 \layout Enumerate
2270 Go into the directory containing the 
2271 \family typewriter 
2273 \family default 
2274  files and run the 
2275 \family typewriter 
2276 update-po
2277 \family default 
2278  script.
2279  This checks the source code for new and changed strings and updates all
2280  the translation files.
2281 \begin_deeper 
2282 \layout LyX-Code
2284 $ cd ROX-Filer/src/po
2285 \layout LyX-Code
2287 $ ./update-po
2288 \end_deeper 
2289 \layout Enumerate
2291 Edit the file by hand as before, filling in the new blanks and updating
2292  out-of-date translations.
2293  Look out for `fuzzy' entries where 
2294 \family typewriter 
2295 update-po
2296 \family default 
2297  has made a guess; check it's correct and remove the `fuzzy' line.
2298 \layout Enumerate
2300 Run 
2301 \family typewriter 
2302 make-mo
2303 \family default 
2304  as before.
2305 \layout Enumerate
2307 Submit the updated file to me.
2308 \layout Standard
2310 See the 
2311 \family typewriter 
2312 gettext
2313 \family default 
2314  info page for more instructions on creating a translation.
2315 \layout Section
2317 Hacking
2318 \layout Standard
2320 This is a quick start guide for people who want to modify the source code.
2321  If you make useful changes or fix bugs, please send patches to me or to
2322  the mailing list.
2323  Tell me which version you're using!
2324 \layout Subsection
2326 Compiling
2327 \layout Standard
2329 The first time you compile the program you need to do `AppRun --compile',
2330  but in future you only need to run `make' in the `src' directory when you
2331  change the .c and .h files.
2332  You might want to run `make depend' too.
2333 \layout Subsection
2335 Creating and applying patches
2336 \layout Standard
2338 When people make small modifications to the sources they will often distribute
2339  them as 
2340 \emph on 
2341 patch files
2342 \emph toggle 
2343  --- usually on the mailing list.
2344  To apply a patch, go into the 'src' directory and run patch with the patch
2345  file.
2346  Then recompile, like this:
2347 \layout LyX-Code
2349 $ cd ROX-Filer/src
2350 \layout LyX-Code
2352 $ patch < patchfile
2353 \layout LyX-Code
2355 $ ../AppRun --compile
2356 \layout Standard
2358 You can remove the patch by simply repeating the above sequence - patch
2359  will detect that the patch is already applied and offer to remove it.
2360  To create a patch you need to take a copy of the old 'src' directory before
2361  you modify it (before you compile, even):
2362 \layout LyX-Code
2364 $ cd ROX-Filer
2365 \layout LyX-Code
2367 $ cp -r src old_src
2368 \layout Standard
2370 Now, modify and compile until it works they way you want it to.
2371  To make the patch:
2372 \layout LyX-Code
2374 $ cd ROX-Filer
2375 \layout LyX-Code
2377 $ diff -cr old_src src > my_patch
2378 \layout Standard
2380 This creates a human- and machine-readable patch file.
2381  Submit this to the mailing list.
2382  The are many reasons for posting patches rather that the modified files:
2383 \layout Itemize
2385 They are smaller, and hence shouldn't bounce.
2386  They are also quicker to download for people with slow connections.
2387 \layout Itemize
2389 People can see what they're getting into before applying them!
2390 \layout Itemize
2392 Patches can (usually) be applied to slightly modified versions of the sources.
2393  This means that people can apply several patches without each new one overwriti
2394 ng the others.
2395 \layout Subsection
2397 Autoconf
2398 \layout Standard
2400 Here's a quick explanation of the autoconf system in case you haven't used
2401  it before.
2402  See `info autoconf' for full details.
2403 \layout Standard
2405 There's a file called 'configure.in' which contains various tests (`info
2406  autoconf').
2407  You run `autoconf' and it reads through the file and generates a shell
2408  script to perform the tests, saving it as `configure'.
2409  `configure' is normally distributed with the program because not everyone
2410  has autoconf.
2411 \layout Standard
2413 You then run `configure' (in fact, let the `AppRun' script do it because
2414  it passes it some arguments), which performs all the tests.
2415  It reads in `Makefile.in' and `config.h.in' and fills in the missing values
2416  with the test results to produce `Makefile' and `config.h'.
2417 \layout Standard
2419 You run `make', which creates .o files from the .c files and links to produce
2420  ROX-Filer.
2421 \layout Subsection
2423 Data-structures
2424 \layout Standard
2426 The diagram below shows some of the major structures found in the filer
2427  along with their most important attributes and methods.
2428  Exactly which attributes have been included is a little hit-and-miss but
2429  it might help you get the overall picture.
2430  If you find it useful, please let me know and I'll try to keep it up-to-date
2431  (or even extend it!).
2432 \layout Standard
2434 To summarise, each window (or panel) has its own 
2435 \series bold 
2436 FilerWindow
2437 \series default 
2438  structure.
2439  This structure has pointers to a 
2440 \series bold 
2441 Collection
2442 \series default 
2443  (which is the widget which actually displays the files) and to a 
2444 \series bold 
2445 Directory
2446 \series default 
2447 , which is used to cache the directory contents.
2448  Both 
2449 \series bold 
2450 Collection
2451 \series default 
2452  and 
2453 \series bold 
2454 Directory
2455 \series default 
2456  have pointers to (the same) 
2457 \series bold 
2458 DirItem
2459 \series default 
2460 s, each of which corresponds to one filesystem object.
2461  Several 
2462 \series bold 
2463 FilerWindow
2464 \series default 
2465 s may share the same 
2466 \series bold 
2467 Directory
2468 \series default 
2470  While scanning is in progress the 
2471 \series bold 
2472 Directory
2473 \series default 
2474  keeps a list of the new items it has found (
2475 \emph on 
2476 new_items
2477 \emph toggle 
2478 ) and the items which have changed in some way (
2479 \emph on 
2480 up_items
2481 \emph toggle 
2483  It periodically notifies the filer window of the changes-so-far by calling
2484  all the functions in the 
2485 \emph on 
2486 users
2487 \emph toggle 
2488  list (use 
2489 \emph on 
2490 attach()
2491 \emph toggle 
2492  and 
2493 \emph on 
2494 detach()
2495 \emph toggle 
2496  to add and remove functions to or from the list).
2497 \layout Standard
2498 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center 
2500 \begin_inset Figure size 595 604
2501 file Structs.eps
2502 width 3 100
2503 flags 9
2505 \end_inset 
2508 \layout Bibliography
2509 \bibitem {ROX}
2512 \emph on 
2513 The ROX desktop
2514 \emph toggle 
2515 , <http://www.ecs.soton.ac.uk/~tal197/rox.php3>
2516 \layout Bibliography
2517 \bibitem {GTK+}
2520 \emph on 
2521 GTK+ Toolkit
2522 \emph toggle 
2523 , <http://www.gtk.org>
2524 \layout Bibliography
2525 \bibitem {GNOME}
2528 \emph on 
2529 The GNOME desktop
2530 \emph toggle 
2531 , <http://www.gnome.org>
2532 \layout Bibliography
2533 \bibitem {DND}
2536 \emph on 
2537 The Drag and Drop protocol
2538 \emph toggle 
2539 , <http://www.its.caltech.edu/~jafl/xdnd/>
2540 \layout Bibliography
2541 \bibitem {XDS}
2544 \emph on 
2545 The X Direct Save protocol
2546 \emph toggle 
2547 , <http://www.its.caltech.edu/~jafl/xds/>
2548 \layout Bibliography
2549 \bibitem {Choices}
2552 \emph on 
2553 The ROX Choices system
2554 \emph toggle 
2555 , <http://www.ecs.soton.ac.uk/~tal197/choices.php3>
2556 \layout Bibliography
2557 \bibitem {enlightenment}
2560 \emph on 
2561 Enlightenment,
2562 \emph toggle 
2563  <http://www.enlightenment.org>
2564 \layout Bibliography
2565 \bibitem {PODFUK}
2568 \emph on 
2569 POrtable Dodgy Filesystems in Userland (hacK), 
2570 \emph toggle 
2571 <http://atrey.karlin.mff.cuni.cz/~pavel/podfuk/podfuk.html>
2572 \layout Bibliography
2573 \bibitem {ImLib}
2576 \emph on 
2577 ImLib
2578 \emph toggle 
2579 , <http://www.labs.redhat.com/imlib/>
2580 \the_end