1 #This file was created by <tal197> Wed Jun 14 12:56:55 2000
2 #LyX 0.12 (C) 1995-1998 Matthias Ettrich and the LyX Team
6 \def \Tab {\thinspace$\langle\hbox{Tab}\rangle$\thinspace}
12 \paperfontsize default
15 \paperpackage widemarginsa4
18 \paperorientation portrait
21 \paragraph_separation indent
23 \quotes_language english
27 \paperpagestyle default
34 Thomas Leonard, tal197@ecs.soton.ac.uk
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
51 \begin_inset LatexCommand \tableofcontents
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}
74 XDND A common drag-and-drop protocol used, for example, by the GNOME desktop
75 \begin_inset LatexCommand \cite{GNOME}
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}
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}
102 Choices A simple, but flexible, system for managing user choices.
104 \begin_inset LatexCommand \cite{Choices}
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.
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)
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.
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.
145 ROX-Filer is usually supplied in source-only form.
146 To compile and run it, you will require
149 Unix or Linux (root access is not required),
152 The X Window system (supplied as standard on all modern systems),
155 GTK+ 1.2.0 or later (libraries and headers) --- get the latest version from
157 \begin_inset LatexCommand \cite{GTK+}
164 A C compiler (standard on most systems).
167 All of the above are standard on most modern Linux distributions.
168 To check which version of GTK+ you have installed, run the
176 is the shell prompt):
179 $ gtk-config --version
188 Change to the directory containing the ROX-Filer subdirectory.
191 Run the AppRun script with the
199 $ ROX-Filer/AppRun --compile
203 ROX-Filer will perform various checks to find out what kind of system it
204 is being run on and will then compile.
205 If it doesn't work then please e-mail me and complain! Tell me what kind
206 of system you have and what errors were reported.
207 If you manage to fix the problem yourself then please e-mail me the fix.
211 The executables files are stored inside the ROX-Filer directory in a different
212 subdirectory for each platform.
213 Therefore, you can compile the same application on several different types
214 of machine and then run it from any of them using the AppRun script.
215 This is particularly useful in a network environment.
219 The filer needs some shared files to work --- icons for the various file
220 types, rules for determining file types and default run actions.
221 These are installed, along with the filer itself, by the '
225 ' script supplied with the filer.
233 [ enter root password ]
239 If you don't have the root password then don't worry --- skip the '
243 ' step and follow the instructions for installing into your home directory.
248 You can now run the filer by running the AppRun script without any options,
255 A window should appear and display the contents of your home directory.
256 If you opted to install the `
260 ' script then you can simply run that to open a viewer onto the current
262 You can also use it to open files in the same way that the filer would.
263 If you installed the script into your home directory then you may need
264 to set your PATH environment variable so that the shell can find it.
270 By default, ROX-Filer will start by displaying your home directory.
271 You can get it to display other directories instead by listing them after
275 $ ROX-Filer/AppRun /home /usr /usr/local
278 If you want one of the directories to be opened as a panel put
286 before the directory (for `bottom' or `top' panels).
287 If you don't know what a panel is, try it and see! To run the filer in
288 the background, put an & at the end of the line.
294 $ ln -s $HOME ~/Panel/Home
297 $ ROX-Filer/AppRun -b ~/Panel &
300 The panel should be displayed in a window without a title bar.
301 If this does not work then you may need to update your window manager.
302 The filer was designed and tested using the Enlightenment window manager
303 \begin_inset LatexCommand \cite{enlightenment}
308 You could also try using the
312 option which bypasses the window manager entirely (also use this if the
313 panel appears in the wrong place):
316 $ ROX-Filer/AppRun -o -b ~/Panel &
319 Note that if the same version of the filer is already running on this machine
320 then, by default, it will be used to open the directories and the new copy
321 will exit immediately.
322 You can override this (perhaps because the old copy has stopped responding
323 for some reason) using the `
330 Mouse button and key bindings
337 \begin_float footnote
340 This documentation assumes that button--1 is the left button, button--2
341 is the middle button and button--3 is the right button.
342 This is not always the case --- for example, in a left-handed setup.
344 mouse button to open files and directories.
347 Click the right button to get a menu.
348 Click over a file to perform an action on that file.
351 Drag files between windows to copy (left button) or move (middle button)
361 By default, the mouse button bindings are designed to fit in with X conventions.
362 However, the behaviour is highly configurable --- have a play in the Options
363 window if you don't like the normal settings.
364 The normal settings behave as follows:
442 Open the file or directory clicked on.
446 Hold down Ctrl to select things instead of opening them.
450 Hold down Shift to look inside applications, treat files as text, follow
451 symlinks or mount devices.
455 Same as left click, but open a directory in a new window or close the viewer
461 Hold down Ctrl while clicking to go directly to the Selection submenu.
465 Copy the file(s) to the destination (an application or another filer window).
469 Hold down Shift to move the file, or Ctrl+Shift to create a symbolic link.
473 As above, but always moves rather than copying or symlinking.
475 (middle mouse button)
479 Drag (not over an item)
481 Select a group of items by dragging a box around them.
482 With the left mouse button, only the files
486 in the box will be selected.
487 If you hold down Ctrl then the boxed items are added to the selection.
491 If the other mouse button is used then the boxed items are toggled between
492 selected and unselected.
496 Change to viewing the parent directory.
500 Move the cursor around.
504 Move up and down in steps of ten rows at a time.
508 Move to the first/last entry in the directory.
512 Open the item under the cursor.
513 With Shift held down this acts like choosing 'Shift Open' from the menu.
517 Toggles the item under the cursor between being selected and unselected.
528 Other keys can easily be defined by opening the menu, moving the pointer
529 over the item you want to use and pressing a key.
530 The key will appear in the menu and can be used from then on.
531 To make the new key bindings permanent, open the Options box from the menu
538 While items are selected in a ROX-Filer window the filer has the global
540 You can then paste into another window to get the pathnames of the selected
542 For example, to extract the files from a .tgz archive on a floppy disk into
546 Choose `Xterm here' from the menu in your home directory.
549 Type `tar xzf ' (but don't press Return)
552 Ctrl-click on the .tgz file to select it.
555 Click the middle button in the xterm window to paste the name of the file
559 Press Return in the xterm to execute the command.
563 \begin_inset LatexCommand \label{sec: Toolbar}
570 By default, each window has a toolbar along the top.
571 You can disable this (or make it larger) from the Options window.
572 The four buttons on the toolbar are:
574 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
609 Change to parent directory
611 Show parent in a new window
615 Change to home directory
617 Show home in a new window
621 Reread the directory contents
627 Show ROX-Filer's help files
638 If the toolbar is in Normal mode (ie, not GNOME mode) then you may also
639 use either of the other buttons to perform the `Other action'.
645 You can open a menu by right clicking
646 \begin_float footnote
649 If the Use `RISC OS mouse bindings' option is on then use the middle button
652 over a panel or filer window.
653 Here is a full description of each choice and what it does:
655 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
685 Select every item in this window.
689 Unselect every item in this window.
697 Create a new directory in this one.
701 Open an xterm with its current directory set to this directory.
702 \layout Subsubsection
706 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
754 Each object in the directory is shown as a large icon with its name below.
758 Items are drawn smaller that usual, allowing you to see more files at once.
768 Entries are displayed with their icon, name, type, permissions, owner and
773 As above, but with a smaller icon and all on one line.
777 Items are arranged by name.
778 There is an option to make this case-sensitive.
782 Items are grouped by their types and then sorted by name within the groups.
786 Most recently modified first.
794 If on, files beginning with a dot are shown, otherwise they are hidden.
798 Rereads the contents of the directory and details of all the files in it.
802 Use this if the display becomes out-of-date.
815 If ROX-Filer was unable to find ImLib
816 \begin_inset LatexCommand \cite{ImLib}
820 when it was compiled then the icons are shown cropped rather than scaled.
821 Get ImLib and recompile if you want it to look nice.
822 \layout Subsubsection
825 \begin_inset LatexCommand \label{sec: Permissions}
832 The permissions display, shown in Full Info mode, is made up of four groups
834 Each flag is displayed as a letter if it is on and a dash (--) if not.
835 The first three characters show the permissions for the owner of the file,
836 the second for other members of the file's group and the third for everyone
838 Whichever group applies to the ROX-Filer process itself is shown underlined.
839 The fourth group shows any special flags.
842 The meanings of the characters are:
845 r Permission to read the contents of a file, or the names of files in a
849 w Permission to alter the contents of a file, or change which names appear
853 x Permission to run the file as a program, or refer to the files listed
854 within the directory.
857 U This program executes with the
861 of its owner rather than the person who ran it.
864 G This program executes with the
868 of its group, regardless of who ran it.
871 T Entries in this directory can only be altered or removed by the people
872 who own the files even if they have write permission on the directory itself.
882 ' means that the owner of the file is the same as the effective user of
883 ROX-Filer (basically, you own the file), you and members of the file's
884 group have read, write and execute permission and other people have only
885 read and execute permission.
886 There are no special flags set.
889 The rules which determine which permissions apply may vary slightly between
890 operating systems, but a rough guide is:
897 of the process is equal to the file's owner, then the owner permissions
905 of the process is equal to the file's group OR the file's group is one
910 then the group permissions apply.
913 Otherwise, the `other' permissions apply.
922 have no effect (except that a process may set its real IDs to its effective
924 \layout Subsubsection
929 All of these work in the same way --- if you open the menu with some items
930 selected then the operation applies to those items.
931 If you open then menu over an item while there is no selection then that
932 item is temporarily selected.
933 If you choose one of these while there is no selection at all then the
934 window goes into `target mode'; the operation happens to the next item
936 Click on the window background, press Escape, or click with the right mouse
937 button to cancel target mode.
938 Target mode is mainly useful with the `Single click navigation' option
939 and keys bound to the various menu entries.
941 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
1010 Make a copy of this object in the same directory.
1014 Change the name used for this object.
1018 Create a symbolic link to this name in the same directory.
1022 Opens applications as directories, files as text/plain, mount points
1026 by mounting or unmounting them and symlinks by opening the directory
1030 containing the thing they point to.
1034 This is the same effect as clicking with Shift held down.
1038 Explain what kind of thing is selected.
1039 For applications, display the help files.
1043 Display extra information about this object.
1047 Open the file as if it was a directory --- see section
1048 \begin_inset LatexCommand \ref{sec: vfs}
1056 Mount or unmount each mount point selected.
1060 Remove all the selected entries from the directory.
1064 Subdirectories will have their contents deleted first.
1068 Deleting symlinks only removes the link, not the thing it points to.
1072 Count the sizes of all the selected items.
1073 Directories also have their
1078 Symlinks count themselves, not the things they point to.
1082 Allows you to change the permissions for the selected files.
1086 Search for files by specifying various conditions --- see section
1087 \begin_inset LatexCommand \ref{sec: Searching}
1092 \layout Subsubsection
1096 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
1098 11 2 0 0 -1 -1 -1 -1
1141 Open a new window displaying this window's parent.
1145 As above, but reuse this window.
1149 Open another window onto this directory.
1157 Open the path-entry box (see section
1158 \begin_inset LatexCommand \ref{sec: mini}
1166 Open the shell command box (see section
1167 \begin_inset LatexCommand \ref{sec: mini}
1175 Allows you to set the program to use when double-clicking on a file.
1180 \begin_inset LatexCommand \ref{sec: RunAction}
1188 Select just those files that match the given pattern --- see section
1189 \begin_inset LatexCommand \ref{sec: SelectIf}
1197 Same as selecting ROX-Filer and choosing `Help' from the menu.
1198 \layout Subsubsection
1203 This is just a cut-down version of the window menu.
1204 The only new entry is `Open Panel as Directory', which displays the panel
1205 in a new, non-panel, window.
1206 `Remove Item' is a cut-down version of `Delete'; it only works for symbolic
1207 links and never asks for confirmation.
1208 Since dragging applications and directories to the panel creates symlinks
1209 it is very easy to change the panel contents to suit your needs.
1213 \begin_inset LatexCommand \label{sec: vfs}
1217 Virtual file systems
1220 Some types of file can be represented as a directory.
1221 A typical example is a zip file, which contains an entire directory structure
1223 It is often useful to be able to open up such a file as if it was a real
1224 directory, and the VFS system allows you to do this.
1227 To use this feature you must have one or both of the following:
1230 A system (such as PODFUK
1231 \begin_inset LatexCommand \cite{PODFUK}
1235 ) which causes the kernel to support various Virtual File Systems directly.
1236 This is the best option since all programs will be able to access the contents
1238 You will require root access to install such a system, however, and it
1239 is not available on all platforms.
1242 Support for the Midnight Commander VFS library compiled into ROX-Filer.
1243 This happens automatically when you compile ROX-Filer if it can find the
1244 VFS library --- this means having
1252 ) in a system library directory or in the directory in the environment variable
1258 In this case, you will be able to view the directory structure and copy
1259 files out of it, but not change it.
1260 Support for this may be added later.
1261 Midnight Commander is part of the GNOME project.
1264 Note that using the `Open VFS' menu is simply a short-cut for using the
1265 path-entry box (explained below), so if you want to use a VFS not listed
1266 on the menu you can type in the path directly, eg:
1271 /home/fred/archive.zip#uzip/
1280 Don't forget the final slash!
1281 \layout Subsubsection
1283 Step by step example of adding VFS support
1286 This assumes that you have the Midnight Commander source in a directory
1288 You might need to replace
1311 If you have the root password then install the library in a system library
1312 directory as normal.
1322 $ cp libvfs.so ~/lib
1325 $ cd ~/Apps/ROX-Filer
1332 file to include this as the
1339 LD_LIBRARY_PATH=${HOME}/lib; export LD_LIBRARY_PATH
1342 This will ensure that ROX-Filer will look for the library in the new
1350 $ ./AppRun --compile
1356 checking for mc_stat in -lvfs...
1360 If you saw that line then it's worked! Well done!
1365 \begin_inset LatexCommand \label{sec: mini}
1372 The mini-buffer is a white bar that appears along the bottom of the window
1373 and allows you to enter some text.
1374 Press Escape to get rid of it again.
1375 It behaves in different ways depending on how you invoked it:
1376 \layout Subsubsection
1381 This allows you to type in a path directly.
1382 As you type the display is updated to show the item entered visually.
1383 The main use is to find a file in a large directory quickly, but you can
1384 also use it for navigating between directories, or for selecting a full
1385 pathname from somewhere else and pasting it directly into the path-entry
1388 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
1412 Open the currently selected item.
1416 Shell-style tab completion.
1420 Select the previous/next matching entry.
1423 Tab completion tries to fill in as many characters for you as it can.
1424 For example, if there are two files in a directory called `save-mail-nov-1999'
1425 and `save-mail-dec-1999' then typing 'save' and pressing Tab will expand
1426 `save' to `save-mail-' and beep to indicate that the match is not complete.
1427 If you use tab completion on a directory and it is unique then the filer
1428 will automatically change into the directory.
1429 This behavior should be familiar to shell users.
1430 \layout Subsubsection*
1435 Let's say you want to locate the documentation for Wine in the directory
1436 /usr/doc (which is usually very large).
1437 Here's how you could do it:
1440 Open the minibuffer by choosing 'Enter Path' from the Window menu.
1441 I usually bind this function to the slash (`/') key.
1444 Press CTRL-U to delete the existing contents --- this moves you to the root
1467 As you type, the cursor will move to the correct subdirectory.
1468 If it beeps when you press Tab then you need to supply more letters.
1469 \layout Subsubsection
1472 \begin_inset LatexCommand \label{sec: RunAction}
1479 This box appears when you choose `Set Run Action' from the Window menu.
1480 You can now either drag a file onto an application, or you can enter a
1482 In either case, the action is not actually performed but instead becomes
1483 the default action for files of that type.
1486 All files have a MIME type in the form `
1508 Whichever method you use to set the action you will be given the choice
1509 of setting the run action just for that type, or setting the default for
1510 all files with that media-type which don't already have a specific action.
1513 For example, let's say you want to set things up so that double-clicking
1514 on a `.gif' file loads it into the Gimp:
1517 Setting the run action by drag-and-drop
1522 Choose `Set Run Action' from the Window menu and, while the minibuffer is
1523 still open, drag a GIF file from the filer window onto the Gimp's application
1524 directory (probably in another filer window).
1527 Setting the run action by entering a shell command
1536 \begin_inset Quotes erd
1540 \begin_inset Quotes erd
1547 Note that the cursor (the black box) must be on the GIF file when you press
1549 \layout Subsubsection
1551 The shell command box
1554 This provides a quick way of entering shell commands if you don't want to
1556 If you don't know what shell commands are, skip this section!
1559 Just type in the command and press Return to execute it.
1560 Up and Down arrows move through previously entered commands.
1561 Tab does shell-style completion.
1562 Clicking on an item inserts its name into the minibuffer.
1563 If some items are selected then they are assigned to the positional parameters
1573 \layout Subsubsection*
1585 Open the minibuffer by choosing `Shell Command' from the Window menu.
1586 I usually bind this to the bang (`!') key.
1593 ' and click on the file.
1594 The leading space is automatically inserted.
1597 Press Return to execute it.
1600 To print all the selected files:
1603 Open the shell command minibuffer.
1611 \layout Subsubsection*
1616 Be careful; you will not be asked to confirm! If in doubt, start the command
1621 ' so that it will be displayed rather than executed.
1624 The above command won't work if some of the files contain spaces --- use
1636 ' instead to be safe.
1639 `sh' is always used as the name of the shell to run (mainly because bash
1640 and csh treat positional parameters differently).
1641 However, PATH is searched to find it so you can still use another shell
1642 if you want by naming it sh and putting it in your path.
1645 Commands execute in the background, so you can say:
1649 sleep 240; xmessage Time to go!
1651 \layout Subsubsection
1654 \begin_inset LatexCommand \label{sec: SelectIf}
1658 The conditional selection box
1661 Use this if you want to automatically select all files in the directory
1662 which match a condition.
1663 The syntax for the conditions is given in section
1664 \begin_inset LatexCommand \ref{sec: Searching}
1669 For example, to select all files larger than 5Mb:
1672 Open the Select If minibuffer.
1682 Just those files over 5 Mb in size will be selected.
1683 The expressions you can enter are in the same form as described in section
1685 \begin_inset LatexCommand \ref{sec: Searching}
1693 ' has no effect since the contents of directories are never checked anyway.
1699 Action windows are those boxes that appear while you're doing a Copy/Move/Link/e
1701 The status line at the top of the window shows the current directory or
1702 object that the window is processing.
1703 The scrolling area below is the log area --- it shows what has been done
1704 and may display questions here.
1707 At the bottom are four buttons and, sometimes, some options.
1708 The buttons work as follows:
1711 Quiet will do simple operations without asking you to confirm each one.
1712 By turning this on and off during an operation you can use it like a pause
1716 Yes answers yes to the question displayed in the log area.
1719 No answers no to the question displayed in the log area.
1722 Abort kills the current operation (if any) and closes the action window.
1725 You can control which actions get started automatically (without you having
1726 to click on Quiet at the start) from the Options window.
1727 \layout Subsubsection
1729 Action window options
1732 Some actions have options, which appear as option boxes at the bottom of
1737 `Force' means that the filer won't treat non-writeable files as special.
1738 Normally, it confirms the deletion even if Quiet is pressed.
1739 Note that you still can't remove files from non-writeable directories because
1740 in that case you really don't have permission.
1743 `Brief' prevents the filer logging a message every time it does something.
1744 Use this to speed things up if large numbers of messages are being logged.
1747 `Recurse' means that doing something to a directory will also do the same
1748 thing to all its contents, and the contents of any subdirectories, and
1753 \begin_inset LatexCommand \label{sec: Searching}
1760 The Find feature looks through all the selected files and directories and
1761 any subdirectories (recursively) looking for items that match a particular
1765 If you know the name of a file then just enter it in the `Expression:' box,
1766 enclosed in single quotes.
1767 For example, to find a file called `log' you would enter:
1773 Remember to use normal quotes, not double quotes (
1776 \begin_inset Quotes eld
1788 As the filer finds matching files they are added to the results list.
1789 Clicking on an entry in the list opens a viewer showing the file you clicked
1791 The filer will use the same window to view other results (so, if you want
1792 the results shown in separate windows you must explicitly create a new
1793 window from the Window menu).
1794 \layout Subsubsection
1799 You can also put shell-style wildcard characters inside the quotes, for
1819 manpage if you want to know more about shell wildcards.
1822 If the pattern you enter contains a slash ('/') character then the pattern
1823 is matched against the file's full path, otherwise only the leafname is
1829 will find 'tmp' and 'tmpfile' but not '/tmp/file' ---
1833 will find all three.
1834 \layout Subsubsection
1839 As well as finding files by their names you can also find them by various
1841 Note that `file' is used here to mean anything that can appear in the filesyste
1842 m --- including directories, devices and so on.
1853 These look at the type of the item being checked:
1856 IsReg matches any regular (ie, normal) file.
1859 IsLink matches symlinks.
1862 IsDir matches directories.
1865 IsChar matches character device files.
1868 IsBlock matches block device files.
1871 IsDev matches block or character device files.
1874 IsPipe matches pipes.
1877 IsSocket matches sockets.
1880 These look at the permissions set on the file --- see section
1881 \begin_inset LatexCommand \ref{sec: Permissions}
1888 IsSUID matches files which have the Set-UID bit set.
1891 IsSGID matches files which have the Set-GID bit set.
1894 IsSticky matches files with the sticky bit set,
1897 IsReadable matches files which you can read from.
1900 IsWriteable matches files which you can write to.
1903 IsExecutable matches files which you can execute.
1906 And a couple of other useful ones:
1909 IsEmpty finds empty files (ie, those whose length is 0 bytes).
1912 IsMine finds files which you own.
1913 \layout Subsubsection
1918 You can combine the above tests in various ways to perform more advanced
1920 An expression is actually made up of a list of
1924 , separated by commas.
1925 The filer will try to match each case in turn until one matches or there
1926 are no more cases left.
1927 For example, to search for files with several possible endings:
1930 '*.gif', '*.htm', '*.html'
1933 Further, each of the cases is actually a list of conditions.
1934 The case only matches if all of its conditions are met.
1935 So, to find a directory called
1939 or a regular file ending in
1946 IsDir 'lib', IsReg '*.so'
1949 You can negate a condition by putting a
1953 in front of it and you can use a sub-expression as a condition by bracketing
1963 Not isdir and not isreg
1966 All three do the same thing.
1967 \layout Subsubsection
1972 You can also compare various values using the operators
1976 (for less-than, less-than-or-equal-to, equal-to, not-equal-to, greater-than
1977 and greater-than-or-equal-to).
1978 When comparing times, you may find it helpful to use
1994 to make things clearer.
1997 The following are read from the file being checked and may be used for the
1998 values being compared:
2001 atime The time that the file was last accessed.
2004 ctime The time that the file's status was last changed.
2007 mtime The time that the file's contents were last modified.
2010 size The size of the file.
2013 inode The file's inode (index) number
2016 nlinks The number of links to this file (that is, the number of directory
2017 entries which refer to this file.
2018 Note that symlinks don't count as references).
2021 uid The User ID of the file.
2024 gid The Group ID of the file.
2027 blocks The number of disk blocks being used by the file.
2030 Times are measured as seconds since the Unix Epoch (00:00:00 UTC, January
2033 When specifying constants to compare these values with you may use various
2034 keywords to scale the value:
2037 Byte(s) has no effect, but looks better.
2040 Kb multiplies by 1024, so 2Kb is the same as 2048.
2044 \begin_inset Formula \( 1024^{2} \)
2050 Sec(s) has no effect, but looks nice.
2053 Min(s) multiplies by 60 to get minutes.
2057 \protected_separator
2059 \protected_separator
2061 \protected_separator
2062 Year(s) likewise convert to the relevant unit.
2065 Ago makes the time in the past relative to when the check is done.
2068 Hence makes the time in the future.
2078 Some examples should make this all a bit clearer!
2081 mtime after 1 day ago
2087 IsReg and nlinks > 1
2090 The first finds files modified within the last 24 hours.
2099 but it's not so clear what is meant.
2100 The second finds files larger than 10 Mb and the last finds regular files
2101 with more than one directory entry.
2104 Be careful though --- the filer doesn't check the context of the modifiers,
2109 is allowed, although it doesn't make much sense! Also, forgetting to use
2118 will cause odd effects (the time will be measured relative to the Epoch
2119 rather than the current time).
2120 Finally, don't use = with times ---
2124 looks for a file accessed
2128 86400 seconds ago...
2129 \layout Subsubsection
2134 System(Command) executes `Command' on the file.
2135 The test succeeds if the command returns an exit status of zero.
2136 A `%' character in `Command' is replaced by the full path of the file being
2138 System is a very slow test to perform, so do it last if possible.
2139 For example, if you're looking for a .c file containing the word `main',
2144 '*.c' system(grep -q main
2159 so that the grep is only performed for files ending in .c (as opposed to
2160 only checking that the file ends in .c if it contains the word `main').
2165 \begin_float footnote
2168 Note that this is the opposite of the
2174 However, if it gets evaluated at all then it prevents the filer from checking
2175 inside the current directory.
2176 Remember the order in which the filer checks the expression!
2182 '*.old' system(echo rm %)
2188 The first displays a command to delete each file ending in
2192 ; you can either paste the results into an xterm to execute them or run
2193 the search again without the
2198 It's always a good idea to use
2202 first with dangerous commands! The second looks for
2206 files, but does not bother checking inside directories called
2211 The expression is evaluated like this:
2213 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center
2215 \begin_inset Figure size 216 180
2228 You can configure various aspects of ROX-Filer from the Options box.
2229 Choose `Options...' from a filer window menu to open it.
2233 At the bottom of the window are four buttons:
2236 Save puts all your choices into effect, and also saves them into your Choices
2237 directory for next time ROX-Filer is loaded.
2238 ROX-Filer will never save any preferences to disk unless you click on the
2239 `Save' button in the options window.
2240 Exactly where choices are loaded from and saved to is controlled by the
2245 environment variable --- see
2246 \begin_inset LatexCommand \cite{Choices}
2253 OK puts your choices into effect without writing anything to disk.
2256 Apply works like OK, but without closing the Options window.
2259 Cancel closes the options box and forgets any changes you made.
2260 \layout Subsubsection
2262 Action window options
2265 You can choose to start some operations automatically, without waiting for
2266 you to click on Quiet.
2267 Select each operation that you want to auto-start here.
2268 \layout Subsubsection
2270 Filer window options
2273 `Ignore case when sorting' treats upper and lower case letters as equivalent
2275 If this is off then `Zoo' comes before `animal', for example.
2278 `New window on button 1' swaps the actions of the two non-menu buttons when
2279 opening directories.
2280 This is provided for people who are used to the RISC OS mouse bindings.
2283 `Menu on button 2' swaps the actions of buttons 2 and 3 so that the middle
2284 button brings up the menus.
2285 This is provided for people who are used to the RISC OS mouse bindings.
2288 `Single-click navigation' treats a single click over an item as if it was
2290 This allows you to move around, run applications and open files without
2296 opening it you must hold down CTRL while you click.
2299 `Unique windows' prevents you from having two windows showing the same directory.
2300 Opening a second view onto a directory closes the first.
2303 `Toolbar type for new windows' allows you to choose what kind of toolbar
2304 will be used for future filer windows (the currently open windows are not
2306 None means that new windows will not have a toolbar, Normal provides a
2307 small bar of icons, and GNOME displays larger icons with textual labels
2308 and allows the bar to be detached from the window by dragging it.
2310 \begin_inset LatexCommand \ref{sec: Toolbar}
2317 The last display style and sort type you chose will also be saved as the
2318 defaults for next time.
2319 \layout Subsubsection
2321 Drag-And-Drop options
2324 ROX-Filer uses the standard XDND protocol for drag-and-drop.
2325 This protocol recommends that URIs should contain the hostname of the computer
2326 that the resource is on so that the program receiving the data can determine
2327 whether it can get the data directly or whether it must go via the X-server.
2328 However, many older programs (particularly GNOME applications) get confused
2329 by the hostname and fail to load the data correctly.
2330 If `Don't use hostnames' is on then the hostname part is omitted and ROX-Filer
2331 will work with these applications BUT you can't drag data to a program
2332 running on a different machine.
2335 `Allow dragging to icons in filer windows' controls what happens when you
2336 drop files onto icons in filer windows.
2337 If on then drops onto directories will save the data inside the directory
2338 while dropping onto programs will invoke the program on that data.
2339 If off then drops anywhere inside a filer window act like drops onto the
2340 window background --- that is, the data will be saved into the directory
2342 \layout Subsubsection
2347 The `Xterm here' program is the one used when you choose `Xterm here' from
2349 You can replace it with another program such as `gnome-terminal' if you
2351 In fact, any program will do, but note that you cannot pass any options
2352 to the program at present.
2358 ROX-Filer uses three sub-directories in your Choices directory for filetypes:
2361 MIME-info contains files which specify what the MIME type for a file should
2362 be, based on its extention.
2363 All the files in all the MIME-info directories are scanned when the filer
2365 ROX-Filer comes with many such rules --- these are installed into the MIME-info
2366 directory by the install script.
2370 Many applications now come with a file called `something.mime'; copy these
2371 files into your MIME-info directory to make ROX-Filer automatically recognise
2376 MIME-types contains symlinks, one for each MIME type, which point to programs
2377 that can handle files of that type.
2378 To set what program is run when you click on the file you should normally
2379 use the `Set Run Action' feature (see section
2380 \begin_inset LatexCommand \ref{sec: RunAction}
2385 However, you can also set the actions manually --- for example, to make
2386 opening an HTML file load it into Netscape:
2390 Find the Netscape application and go to `Link...' on the menu.
2393 Enter `text_html' as the name for the link and drag the icon from the Link
2394 box into the MIME-types directory.
2397 You can also put actual programs in here as well as links if you want to.
2401 MIME-icons contains the images used to display each type of file.
2402 So the filer will try to display an HTML file using the icon `MIME-icons/text_h
2406 In both MIME-types and MIME-icons directories you can also provide default
2407 actions/images for each media type.
2408 For example, if `text_html' isn't found then the filer will try simply
2412 Application directories
2415 An application directory is a directory which can be run as an application.
2416 It contains all the resources of an application --- source code, binaries,
2417 documentation and so on.
2418 Keeping everything in one place make installation and uninstallation much
2420 You can also keep multiple versions of a program by simply having several
2421 application directories.
2422 You may move and rename them as you please.
2423 Application directories are easier to use and install and are more secure
2425 \begin_float footnote
2428 Because you can compile an application as a user and then simply copy it
2429 as root rather than having to run an install script you are free from the
2430 danger of running untrusted code as root.
2431 All you have to watch out for is setuid binaries.
2436 To make a directory executable all you need to do is create a executable
2437 file called `AppRun' inside it.
2438 This file is run when the user double-clicks on the application.
2439 You should also provide `AppIcon.xpm' (which will be used as the image for
2440 the application) and `Help' (which is a directory that is opened when the
2441 user asks for help).
2442 Have a look at the ROX-Filer application directory for a full example.
2445 Internationalisation
2449 \begin_inset LatexCommand \label{sec: LANG}
2453 Selecting a translation
2456 ROX-Filer is able to translate many of its messages, provided suitable translati
2457 on files are provided.
2458 If you know that your language is supported then simply set the
2462 environment variable to the appropriate code for your country before starting
2466 LANG=fr; export LANG
2472 To see which translations are currently provided, open the ROX-Filer application
2473 directory (hold down Shift and double-click) and look inside the `
2480 Creating a new translation
2487 directory and create the file `
2502 Copy the file into the `
2506 ' subdirectory under
2511 \begin_inset Formula \( \langle \hbox {name}\rangle \hbox {\tt .po} \)
2515 Eg, if your language is referred to as `ml' (`my language'):
2519 $ cp messages.pot po/ml.po
2523 Load the copy into a text editor.
2526 Fill in the translations, which are all blank to start with.
2533 ' script to create the binary file which ROX-Filer can use.
2534 You will need the GNU gettext package for this.
2535 If you don't have it then just send me the
2539 file and I'll convert it for you.
2543 $ cd ROX-Filer/src/po
2549 Created file ../../Messages/ml.gmo OK
2553 Set the LANG variable to `
2557 ' and restart the filer (see section
2558 \begin_inset LatexCommand \ref{sec: LANG}
2569 file to me so that I can include it in future releases of the filer.
2572 Updating an existing translation
2575 Go into the directory containing the
2584 This checks the source code for new and changed strings and updates all
2585 the translation files.
2589 $ cd ROX-Filer/src/po
2596 Edit the file by hand as before, filling in the new blanks and updating
2597 out-of-date translations.
2598 Look out for `fuzzy' entries where
2602 has made a guess; check it's correct and remove the `fuzzy' line.
2612 Submit the updated file to me.
2619 info page for more instructions on creating a translation.
2625 This is a quick start guide for people who want to modify the source code.
2626 If you make useful changes or fix bugs, please send patches to me or to
2628 Tell me which version you're using!
2634 The first time you compile the program you need to do `
2638 ', but in future you only need to run `
2646 ' directory when you change the
2655 You might want to run `
2662 Creating and applying patches
2665 When people make small modifications to the sources they will often distribute
2670 --- usually on the mailing list.
2671 To apply a patch, go into the 'src' directory and run patch with the patch
2673 Then recompile, like this:
2682 $ ../AppRun --compile
2685 You can remove the patch by simply repeating the above sequence --- patch
2686 will detect that the patch is already applied and offer to remove it.
2687 To create a patch you need to take a copy of the old 'src' directory before
2688 you modify it (before you compile, even):
2697 Now, modify and compile until it works they way you want it to.
2704 $ diff -cr old_src src > my_patch
2707 This creates a human- and machine-readable patch file.
2708 Submit this to the mailing list.
2709 The are many reasons for posting patches rather that the modified files:
2712 They are smaller, and hence shouldn't bounce.
2713 They are also quicker to download for people with slow connections.
2716 People can see what they're getting into before applying them!
2719 Patches can (usually) be applied to slightly modified versions of the sources.
2720 This means that people can apply several patches without each new one overwriti
2727 Here's a quick explanation of the autoconf system in case you haven't used
2729 See `info autoconf' for full details.
2732 There's a file called 'configure.in' which contains various tests (`info
2734 You run `autoconf' and it reads through the file and generates a shell
2735 script to perform the tests, saving it as `configure'.
2736 `configure' is normally distributed with the program because not everyone
2740 You then run `configure' (in fact, let the `AppRun' script do it because
2741 it passes it some arguments), which performs all the tests.
2742 It reads in `Makefile.in' and `config.h.in' and fills in the missing values
2743 with the test results to produce `Makefile' and `config.h'.
2746 You run `make', which creates .o files from the .c files and links to produce
2753 The diagram below shows some of the major structures found in the filer
2754 along with their most important attributes and methods.
2755 Exactly which attributes have been included is a little hit-and-miss but
2756 it might help you get the overall picture.
2757 If you find it useful, please let me know and I'll try to keep it up-to-date
2758 (or even extend it!).
2761 To summarise, each window (or panel) has its own
2766 This structure has pointers to a
2770 (which is the widget which actually displays the files) and to a
2774 , which is used to cache the directory contents.
2783 have pointers to (the same)
2787 s, each of which corresponds to one filesystem object.
2792 s may share the same
2797 While scanning is in progress the
2801 keeps a list of the new items it has found (
2805 ) and the items which have changed in some way (
2810 It periodically notifies the filer window of the changes-so-far by calling
2811 all the functions in the
2823 to add and remove functions to or from the list).
2825 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center
2827 \begin_inset Figure size 595 842
2835 \layout Bibliography
2842 , <http://www.ecs.soton.ac.uk/~tal197/rox.php3>
2843 \layout Bibliography
2850 , <http://www.gtk.org>
2851 \layout Bibliography
2858 , <http://www.gnome.org>
2859 \layout Bibliography
2864 The Drag and Drop protocol
2866 , <http://www.its.caltech.edu/~jafl/xdnd/>
2867 \layout Bibliography
2872 The X Direct Save protocol
2874 , <http://www.its.caltech.edu/~jafl/xds/>
2875 \layout Bibliography
2880 The ROX Choices system
2882 , <http://www.ecs.soton.ac.uk/~tal197/choices.php3>
2883 \layout Bibliography
2884 \bibitem {enlightenment}
2890 <http://www.enlightenment.org>
2891 \layout Bibliography
2896 POrtable Dodgy Filesystems in Userland (hacK),
2898 <http://atrey.karlin.mff.cuni.cz/~pavel/podfuk/podfuk.html>
2899 \layout Bibliography
2906 , <http://www.gnome.org>