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
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 gtk-config command,
169 like this ($ is the shell prompt):
172 $ gtk-config --version
181 Change to the directory containing the ROX-Filer subdirectory.
184 Run the AppRun script with the --compile option, like this:
188 $ ROX-Filer/AppRun --compile
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.
199 You can now run the filer by running the AppRun script without any options,
206 A window should appear and display the contents of your home directory.
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.
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
224 $ ROX-Filer/AppRun /home /usr /usr/local
227 If you want one of the directories to be opened as a panel put
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.
243 $ ln -s $HOME ~/Panel/Home
246 $ ROX-Filer/AppRun -b ~/Panel &
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}
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):
261 $ ROX-Filer/AppRun -o -b ~/Panel &
264 Mouse button and key bindings
267 By default, the mouse button bindings are different to fit in better with
269 You can get the old RISC OS bindings by opening the Options window and
270 clicking on a few toggle buttons.
273 By default, the mouse buttons and key bindings for filer windows are as
351 Select (only) the item clicked on, or clear the selection.
355 Toggle the item between being selected and unselected.
360 Hold down Ctrl while clicking to go directly to
364 the Selection submenu.
368 Copy the file(s) to the destination (an application or another filer window)
372 Hold down Shift to move the file, or Ctrl+Shift to create a symbolic link.
374 Drag (not over an item)
376 Select a group of items by dragging a box around them.
380 If you use the left button then the boxed items only are selected, otherwise
384 the boxes items are toggled between selected and unselected.
386 Double click left button
388 Open the file or directory or run the application.
392 Holding down Shift while clicking does the same thing as choosing
396 `Shift Open' from the menu.
398 Double click middle button
400 Open the file and close the directory viewer,
404 or open the directory in a new window.
408 Change to viewing the parent directory.
412 Move the cursor around.
416 Move up and down in steps of ten rows at a time.
420 Move to the first/last entry in the directory.
424 Open the item under the cursor.
425 With Shift held down this acts like choosing 'Shift Open' from the menu.
429 Toggles the item under the cursor between being selected and unselected.
432 You can simulate a click of the middle mouse button by clicking with Ctrl
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
444 While items are selected in a ROX-Filer window the filer has the global
446 You can then paste into another window to get the pathnames of the selected
448 For example, to extract the files from a .tgz archive on a floppy disk into
452 Choose `Xterm here' from the menu in your home directory.
455 Type `tar xzf ' (but don't press Return)
458 Click on the .tgz file to select it.
461 Click the middle button in the xterm window to paste the name of the file
465 Press Return in the xterm to execute the command.
469 \begin_inset LatexCommand \label{sec: Toolbar}
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:
480 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
504 Change to parent directory
508 Change to home directory
512 Reread the directory contents
518 You can open a menu by right clicking
519 \begin_float footnote
522 If the Use `RISC OS mouse bindings' option is on then use the middle button
525 over a panel or filer window.
526 Here is a full description of each choice and what it does:
528 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
558 Select every item in this window.
562 Unselect every item in this window.
570 Create a new directory in this one.
574 Open an xterm with its current directory set to this directory.
575 \layout Subsubsection
579 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
624 Each object in the directory is shown as a large icon with its name below.
628 Items are drawn smaller that usual, allowing you to see more files at once.
638 Entries are displayed with their icon, name, type, permissions, owner and
643 Items are arranged in ASCII order.
644 Note that `Z' is considered to come before `a'.
648 Items are grouped by their MIME-types and sorted by name within the groups.
652 Most recently modified first.
660 If on, files beginning with a dot are shown, otherwise they are hidden.
664 Rereads the contents of the directory and details of all the files in it.
668 Use this if the display becomes out-of-date.
679 If ROX-Filer was unable to find ImLib
680 \begin_inset LatexCommand \cite{ImLib}
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}
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
701 Whichever group applies to the ROX-Filer process itself is shown underlined.
702 The fourth group shows any special flags.
705 The meanings of the characters are:
708 r Permission to read the contents of a file, or the names of files in a
712 w Permission to alter the contents of a file, or change which names appear
716 x Permission to run the file as a program, or refer to the files listed
717 within the directory.
720 U This program executes with the
724 of its owner rather than the person who ran it.
727 G This program executes with the
731 of its group, regardless of who ran it.
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.
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.
752 The rules which determine which permissions apply may vary slightly between
753 operating systems, but a rough guide is:
760 of the process is equal to the file's owner, then the owner permissions
768 of the process is equal to the file's group OR the file's group is one
773 then the group permissions apply.
776 Otherwise, the 'other' permissions apply.
785 have no effect (except that a process may set its real IDs to its effective
787 \layout Subsubsection
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
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.
804 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
876 Make a copy of this object in the same directory.
880 Change the name used for this object.
884 Create a symbolic link to this name in the same directory.
888 Opens applications as directories, files as text/plain, mount points
892 by mounting or unmounting them and symlinks by opening the directory
896 containing the thing they point to.
900 This is the same as double-clicking with Shift held down.
904 Explain what kind of thing is selected.
909 display the help files.
913 Display extra information about this object.
917 Open the file as if it was a directory --- see section
918 \begin_inset LatexCommand \ref{sec: vfs}
926 Mount or unmount each mount point selected.
930 Remove all the selected entries from the directory.
934 Subdirectories will have their contents deleted first.
938 Deleting symlinks only removes the link, not the thing it points to.
942 Count the sizes of all the selected items.
943 Directories also have their
948 Symlinks count themselves, not the things they point to.
952 Allows you to change the permissions for the selected files.
956 Search for files by specifying various conditions --- see section
957 \begin_inset LatexCommand \ref{sec: Searching}
962 \layout Subsubsection
966 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
1002 Open a new window displaying this window's parent.
1006 As above, but reuse this window.
1010 Open another window onto this directory.
1018 Open the path-entry box (see section
1019 \begin_inset LatexCommand \ref{sec: mini}
1027 Open the shell command box (see section
1028 \begin_inset LatexCommand \ref{sec: mini}
1036 Same as selecting ROX-Filer and choosing `Help' from the menu.
1037 \layout Subsubsection
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.
1052 \begin_inset LatexCommand \label{sec: vfs}
1056 Virtual file systems
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
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.
1066 To use this feature you must have one or both of the following:
1069 A system (such as PODFUK
1070 \begin_inset LatexCommand \cite{PODFUK}
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
1077 You will require root access to install such a system, however, and it
1078 is not available on all platforms.
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
1091 ) in a system library directory or in the directory in the environment variable
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.
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:
1110 /home/fred/archive.zip#uzip/
1119 Don't forget the final slash!
1120 \layout Subsubsection
1122 Step by step example of adding VFS support
1125 This assumes that you have the Midnight Commander source in a directory
1127 You might need to replace
1150 If you have the root password then install the library in a system library
1151 directory as normal.
1161 $ cp libvfs.so ~/lib
1164 $ cd ~/Apps/ROX-Filer
1171 file to include this as the
1178 LD_LIBRARY_PATH=${HOME}/lib; export LD_LIBRARY_PATH
1181 This will ensure that ROX-Filer will look for the library in the new
1189 $ ./AppRun --compile
1195 checking for mc_stat in -lvfs...
1199 If you saw that line then it's worked! Well done!
1204 \begin_inset LatexCommand \label{sec: mini}
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
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
1227 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center \LyXTable
1251 Open the currently selected item.
1255 Shell-style tab completion.
1259 Select the previous/next matching entry.
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*
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:
1279 Open the minibuffer by choosing 'Enter Path' from the Window menu.
1280 I usually bind this function to the slash (`/') key.
1283 Press CTRL-U to delete the existing contents --- this moves you to the root
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
1313 This provides a quick way of entering shell commands if you don't want to
1315 If you don't know what shell commands are, skip this section!
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
1332 \layout Subsubsection*
1344 Open the minibuffer by choosing `Shell Command' from the Window menu.
1345 I usually bind this to the bang (`!') key.
1352 ' and click on the file.
1353 The leading space is automatically inserted.
1356 Press Return to execute it.
1359 To print all the selected files:
1362 Open the shell command minibuffer.
1370 \layout Subsubsection*
1375 Be careful; you will not be asked to confirm! If in doubt, start the command
1380 ' so that it will be displayed rather than executed.
1383 The above command won't work if some of the files contain spaces --- use
1395 ' instead to be safe.
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.
1404 Commands execute in the background, so you can say:
1408 sleep 240; xmessage Time to go!
1415 Action windows are those boxes that appear while you're doing a Copy/Move/Link/e
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.
1423 At the bottom are four buttons and, sometimes, some options.
1424 The buttons work as follows:
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
1432 Yes answers yes to the question displayed in the log area.
1435 No answers no to the question displayed in the log area.
1438 Abort kills the current operation (if any) and closes the action window.
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
1448 Some actions have options, which appear as option boxes at the bottom of
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.
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.
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
1469 \begin_inset LatexCommand \label{sec: Searching}
1476 The Find feature looks through all the selected files and directories and
1477 any subdirectories (recursively) looking for items that match a particular
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:
1489 Remember to use normal quotes, not double quotes (
1492 \begin_inset Quotes eld
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
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
1515 You can also put shell-style wildcard characters inside the quotes, for
1535 manpage if you want to know more about shell wildcards.
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
1545 will find 'tmp' and 'tmpfile' but not '/tmp/file' ---
1549 will find all three.
1550 \layout Subsubsection
1555 As well as finding files by their names you can also find them by various
1557 Note that `file' is used here to mean anything that can appear in the filesyste
1558 m --- including directories, devices and so on.
1569 These look at the type of the item being checked:
1572 IsReg matches any regular (ie, normal) file.
1575 IsLink matches symlinks.
1578 IsDir matches directories.
1581 IsChar matches character device files.
1584 IsBlock matches block device files.
1587 IsDev matches block or character device files.
1590 IsPipe matches pipes.
1593 IsSocket matches sockets.
1596 These look at the permissions set on the file - see section
1597 \begin_inset LatexCommand \ref{sec: Permissions}
1604 IsSUID matches files which have the Set-UID bit set.
1607 IsSGID matches files which have the Set-GID bit set.
1610 IsSticky matches files with the sticky bit set,
1613 IsReadable matches files which you can read from.
1616 IsWriteable matches files which you can write to.
1619 IsExecutable matches files which you can execute.
1622 And a couple of other useful ones:
1625 IsEmpty finds empty files (ie, those whose length is 0 bytes).
1628 IsMine finds files which you own.
1629 \layout Subsubsection
1634 You can combine the above tests in various ways to perform more advanced
1636 An expression is actually made up of a list of
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:
1646 '*.gif', '*.htm', '*.html'
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
1655 or a regular file ending in
1662 IsDir 'lib', IsReg '*.so'
1665 You can negate a condition by putting a
1669 in front of it and you can use a sub-expression as a condition by bracketing
1679 Not isdir and not isreg
1682 All three do the same thing.
1683 \layout Subsubsection
1688 You can also compare various values using the operators
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
1710 to make things clearer.
1713 The following are read from the file being checked and may be used for the
1714 values being compared:
1717 atime The time that the file was last accessed.
1720 ctime The time that the file's status was last changed.
1723 mtime The time that the file's contents were last modified.
1726 size The size of the file.
1729 inode The file's inode (index) number
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).
1737 uid The User ID of the file.
1740 gid The Group ID of the file.
1743 blocks The number of disk blocks being used by the file.
1746 Times are measured as seconds since the Unix Epoch (00:00:00 UTC, January
1749 When specifying constants to compare these values with you may use various
1750 keywords to scale the value:
1753 Byte(s) has no effect, but looks better.
1756 Kb multiplies by 1024, so 2Kb is the same as 2048.
1760 \begin_inset Formula \( 1024^{2} \)
1766 Sec(s) has no effect, but looks nice.
1769 Min(s) multiplies by 60 to get minutes.
1773 \protected_separator
1775 \protected_separator
1777 \protected_separator
1778 Year(s) likewise convert to the relevant unit.
1781 Ago makes the time in the past relative to when the check is done.
1784 Hence makes the time in the future.
1794 Some examples should make this all a bit clearer!
1797 mtime after 1 day ago
1803 IsReg and nlinks > 1
1806 The first finds files modified within the last 24 hours.
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.
1820 Be careful though --- the filer doesn't check the context of the modifiers,
1825 is allowed, although it doesn't make much sense! Also, forgetting to use
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 ---
1840 looks for a file accessed
1844 86400 seconds ago...
1845 \layout Subsubsection
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
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',
1860 '*.c' system(grep -q main
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').
1881 \begin_float footnote
1884 Note that this is the opposite of the
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!
1898 '*.old' system(echo rm %)
1904 The first displays a command to delete each file ending in
1908 ; you can either paste the results into an xterm to execute them or run
1909 the search again without the
1914 It's always a good idea to use
1918 first with dangerous commands! The second looks for
1922 files, but does not bother checking inside directories called
1927 The expression is evaluated like this:
1929 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center
1931 \begin_inset Figure size 216 180
1944 You can configure various aspects of ROX-Filer from the Options box.
1945 Choose `Options...' from a filer window menu to open it.
1949 At the bottom of the window are four buttons:
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.
1958 OK puts your choices into effect without writing anything to disk.
1961 Apply works like OK, but without closing the Options window.
1964 Cancel closes the options box and forgets any changes you made.
1965 \layout Subsubsection
1967 Action window options
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
1978 `Ignore case when sorting' treats upper and lower case letters as equivalent
1980 If this is off then `Zoo' comes before `animal', for example.
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.
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.
1993 `Single-click navigation' treats a single click over an item as if it was
1995 This allows you to move around, run applications and open files without
2001 opening it you must hold down CTRL while you click.
2004 `Unique windows' prevents you from having two windows showing the same directory.
2005 Opening a second view onto a directory closes the first.
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
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.
2015 \begin_inset LatexCommand \ref{sec: Toolbar}
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
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.
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
2047 \layout Subsubsection
2052 The `Xterm here' program is the one used when you choose `Xterm here' from
2054 You can replace it with another program such as `gnome-terminal' if you
2056 In fact, any program will do, but note that you cannot pass any options
2057 to the program at present.
2063 ROX-Filer uses three sub-directories in your Choices directory for filetypes:
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
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
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:
2084 Find the Netscape application and go to `Link...' on the menu.
2087 Enter `text_html' as the name for the link and drag the icon from the Link
2088 box into the MIME-types directory.
2091 You can also put actual programs in here as well as links if you want to.
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
2100 Many sample files are supplied as part of the ROX desktop
2101 \begin_inset LatexCommand \cite{ROX}
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
2114 Application directories
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
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
2127 \begin_float footnote
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.
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.
2147 Internationalisation
2151 \begin_inset LatexCommand \label{sec: LANG}
2155 Selecting a translation
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
2164 environment variable to the appropriate code for your country before starting
2168 LANG=fr; export LANG
2176 no translations currently exist
2178 --- if you want to help with a translation then please get in touch.
2181 Creating a new translation
2188 directory and create the file `
2203 Copy the file into the `
2207 ' subdirectory under
2211 (not the other one!) as
2212 \begin_inset Formula \( \langle \hbox {name}\rangle \hbox {\tt .po} \)
2216 Eg, if your language is referred to as `ml' (`my language'):
2220 $ cp messages.pot po/ml.po
2224 Load the copy into a text editor.
2227 Fill in the translations, which are all blank to start with.
2234 ' script to create the binary file which ROX-Filer can use.
2238 $ cd ROX-Filer/src/po
2244 Created file ../../po/ml/LC_MESSAGES/ROX-Filer.mo OK
2248 Set the LANG variable to `
2252 ' and restart the filer (see section
2253 \begin_inset LatexCommand \ref{sec: LANG}
2264 file to me so that I can include it in future releases of the filer.
2267 Updating an existing translation
2270 Go into the directory containing the
2279 This checks the source code for new and changed strings and updates all
2280 the translation files.
2284 $ cd ROX-Filer/src/po
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
2297 has made a guess; check it's correct and remove the `fuzzy' line.
2307 Submit the updated file to me.
2314 info page for more instructions on creating a translation.
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
2323 Tell me which version you're using!
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.
2335 Creating and applying patches
2338 When people make small modifications to the sources they will often distribute
2343 --- usually on the mailing list.
2344 To apply a patch, go into the 'src' directory and run patch with the patch
2346 Then recompile, like this:
2355 $ ../AppRun --compile
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):
2370 Now, modify and compile until it works they way you want it to.
2377 $ diff -cr old_src src > my_patch
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:
2385 They are smaller, and hence shouldn't bounce.
2386 They are also quicker to download for people with slow connections.
2389 People can see what they're getting into before applying them!
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
2400 Here's a quick explanation of the autoconf system in case you haven't used
2402 See `info autoconf' for full details.
2405 There's a file called 'configure.in' which contains various tests (`info
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
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'.
2419 You run `make', which creates .o files from the .c files and links to produce
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!).
2434 To summarise, each window (or panel) has its own
2439 This structure has pointers to a
2443 (which is the widget which actually displays the files) and to a
2447 , which is used to cache the directory contents.
2456 have pointers to (the same)
2460 s, each of which corresponds to one filesystem object.
2465 s may share the same
2470 While scanning is in progress the
2474 keeps a list of the new items it has found (
2478 ) and the items which have changed in some way (
2483 It periodically notifies the filer window of the changes-so-far by calling
2484 all the functions in the
2496 to add and remove functions to or from the list).
2498 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center
2500 \begin_inset Figure size 595 604
2508 \layout Bibliography
2515 , <http://www.ecs.soton.ac.uk/~tal197/rox.php3>
2516 \layout Bibliography
2523 , <http://www.gtk.org>
2524 \layout Bibliography
2531 , <http://www.gnome.org>
2532 \layout Bibliography
2537 The Drag and Drop protocol
2539 , <http://www.its.caltech.edu/~jafl/xdnd/>
2540 \layout Bibliography
2545 The X Direct Save protocol
2547 , <http://www.its.caltech.edu/~jafl/xds/>
2548 \layout Bibliography
2553 The ROX Choices system
2555 , <http://www.ecs.soton.ac.uk/~tal197/choices.php3>
2556 \layout Bibliography
2557 \bibitem {enlightenment}
2563 <http://www.enlightenment.org>
2564 \layout Bibliography
2569 POrtable Dodgy Filesystems in Userland (hacK),
2571 <http://atrey.karlin.mff.cuni.cz/~pavel/podfuk/podfuk.html>
2572 \layout Bibliography
2579 , <http://www.labs.redhat.com/imlib/>