A highly configurable file manager for x
gentoo [--version] [--locale-info] [--root-ok] [--no-rc] [--no-gtkrc] [--no-dir-history] [--left=path] [--right=path] [--run=ARG]
gentoo is a file manager for Linux and compatible systems. It allows you to interactively navigate your file system using the mouse, and also to perform various fairly standard operations (such as copy, move, rename, ...) on the files and directories contained therein.
gentoo always shows you the contents of two directories at once. Each of these is displayed in its own scrollable list, called a pane. At any time, exactly one pane is the current pane, and has a highlighted bar running across its top region. The current pane acts as the source for all file operations, while the other pane is the destination. You can select rows in panes using selection methods of varying complexity (from simply clicking a row, to selecting rows by name using a regular expression). Once you have a selection, you can click a button to perform some command on the selected files.
All file operations performed by gentoo are implemented natively. When you use gentoo to copy a file, for example, gentoo does not simply execute the system's cp(1L) command. Rather, gentoo contains its own code for opening source and destination files, and then reading and writing the right amount of data between them. This way of doing things makes gentoo independent of the availability of shell commands to do things.
gentoo incorporates a fairly powerful, object-oriented file typing and styling system. It can use a variety of ways to determine the type of the files it is displaying. Each type is then linked to something called a style, which controls how rows of that type are rendered in panes. You can use this system to control icons, colors, and various operations on the rows. For example, it is easy to make gentoo display all PNG images in red, and to invoke The GIMP(1) on them when double-clicked.
A design goal with gentoo has been to provide full GUI configurability, removing the need to edit a configuration file by hand and restart the program to see the changes, as is otherwise common in many programs for Un*x. As a result of this, gentoo features a Configuration dialog window where you can configure most aspects of its operation directly, using the mouse and standard GUI widgets.
gentoo borrows its basic look'n'feel from the classic Amiga file manager Directory OPUS, but is not a "clone" of any kind.
gentoo is not primarily driven by command line arguments, but the following are available:
--version
Causes gentoo to print its version number (a string of the form MAJOR.MINOR.MICRO, like 0.19.13) to the standard output, and then exit successfully. Numbers having an odd MINOR component indicate development versions of the program. So far, all versions of gentoo have been classified as being development versions.
--locale-info
Makes gentoo print a couple of localization settings, and then exit. This is mostly useful during development and debugging, and not of a lot of interest when just using the application.
--root-ok
Makes gentoo accept being run by the root user. Normally, this is not allowed since it is considered a big threat to system security. Note that gentoo has the ability to execute user-defined strings using the execvp(3) function. This is generally considered harmful. However, if you really want to run gentoo while logged on as root, supplying this option allows you to. It is not recommended, though.
--no-rc
Starts up gentoo without loading any configuration file. This makes it run using the built-in defaults, which are very Spartan indeed. Seldom comfortable, but occasionally handy when trying to determine if a problem is with the configuration or with the core code.
--no-gtkrc
Avoids loading the GTK+ RC file, thus disabling any widget customizations, and forces all widgets to use the default GTK+ look.
--no-dir-history
Avoids loading the file that holds the history, i.e. which directories have been previously visited by the two panes. Very rarely needed, included mostly for completeness' sake.
--left, --right (or -1, -2)
Sets the initial path for the left and right pane, respectively. If present, the path specified with one of these options overrides any other path for the pane in question. See below (Initial Directory Paths) for details.
--run ARG (or -rARG)
Runs ARG, a gentoo command. Commands specified this way are executed before gentoo accepts any user input through the graphical interface, but after the configuration file has been read in. You can use it many times in order to make gentoo run a whole series of commands. Remember that gentoo's command names are case-sensitive, and that built-in commands (like "About") always begin with a capital letter.
Any non-option command arguments will be silently ignored. If an argument "-h" or "--help" is given, gentoo will give a summary of its supported command line options and exit successfully. If an unknown option is given, or a option is missing a required argument, gentoo will whine and exit with a failure.
When gentoo starts up, it will open up its single main window, which is split vertically (or horizontally; it's configurable) down the middle, forming the two panes mentioned above. It also contains a bank of buttons along the bottom.
The actual paths shown in the two panes upon start-up can be controlled in various ways. There are four ways of getting a path to show up in pane. In order of decreasing priority, they are:
1. Command-line Argument
Using the --left and --right (or their short forms, -1 and -2) command-line arguments overrides any other setting.
2. Configured Default Directory
If no command-line argument is present, and the "Default Directory" configuration option is set, that directory is used.
3. Most Recently Visited Directory
If no default directory exists, the most recently visited directory is taken from the directory history for each pane. This only works if a directory history file has been found and loaded.
4. Current Directory
If all else fails, gentoo uses the current directory (".").
Navigating around the file system using gentoo is very simple. The two panes act as independent views of the file system, and both are navigated in exactly the same way.
You can always see which directory a pane is showing by reading its path, shown in the entry box below (by default--you can change the position to above) the pane.
To enter a directory, locate it in the pane and double click it with the left mouse button. gentoo will read the directory's contents, and update the display accordingly.
There are several ways of going up in the directory structure. To enter the directory containing the one currently shown (the current dir's parent), you can: click the parent button (to the left of the path entry box); hit Backspace on your keyboard; click the middle mouse button; select "Parent" from the pop-up menu on the right mouse button, or click the downward arrow to the right of the path box (this pops up the directory history menu), then select the second row from the top.
Before you can do anything to a file, you need to select it. All file-management commands in gentoo act upon the current selection (in the current pane). There are several ways of selecting files, but the most frequently used are mouse-based. Note that the word "file" used below really should be taken to mean "file or directory", since selection doesn't distinguish between the two.
To select a file (or directory), just point the mouse at the name (anywhere in the row is fine), and click the left mouse button. The colors of the clicked row will change, indicating that it is currently selected. To select more rows, keep the mouse button down, and drag the mouse vertically. gentoo extends the selection, including all rows touched. If you drag across the top or bottom border, the pane will scroll, trying to keep up. This is a very quick and convenient way of selecting multiple files, as long as they are listed in succession.
If you click again on an already selected file, you will unselect it. You can drag to unselect several files, just as when selecting.
To select a sequence of files without dragging, first click normally on the first file that you wish to select. Then release the mouse button, locate the last file in the sequence (it can be either above or below the first one), hold down shift on your keyboard, and click the wanted file. gentoo now adds all files between the first and the last to the current selection.
If you follow the instructions given above to select a sequence, but press control rather than shift before clicking the second time, gentoo will unselect the range of files indicated.
If you click on a file with the meta key held down (that's actually a key labeled Alt, located to the immediate left of the space bar, on my PC keyboard), gentoo will do something cool: it will select (or unselect, it's a toggle just like ordinary selection) all files, including the clicked one, that have the same type as the one you clicked. This can be used to select for example all PNG image files in a directory even if you can only see one. Occasionally very useful.
If you click on a file with both the shift and control keys held down, gentoo will toggle the selected state of all files having the same file name extension as the one you clicked. This can sometimes be useful to select files that you don't have a proper type defined for, as long as those files do share an extension, that is.
The files and directories listed in each of gentoo's two panes are always sorted on some column: typically file name. You can chose to sort on some other field by clicking the appropriate column title once. If you click on the field that is already current, the sorting will be reversed (i.e., for names it will be Z-A rather than A-Z).
If your display includes icons, try sorting on that column: gentoo will then order each row according to its File Style, grouping the rows based on their parent styles, all the way up to the root of the Style tree. This means that, for example, JPEG and PNG pictures (both having an immediate parent style of Image) will be shown together, and before all Text files (HTML, man pages and so on). It's quite cool, really. :)
Commands are used to make gentoo do stuff. The typical command operates upon the set of selected files in the current pane, so it's usually a good idea to first select some files. See the previous subsection for details on how to select files. Once you have a bunch of files selected, you need to tell gentoo which command to execute. There are several ways of doing this.
Most basic file operations (e.g. copy, move, rename, and so on) are found on the (cleverly labeled) buttons along the bottom of gentoo's main window. To copy a file, just select it, then click the button labeled "Copy". It's really that simple. Most of these built-in (or native) commands automatically operate recursively on directories, so you could copy (or move) a whole directory of files by just selecting it and then clicking "Copy".
If you can't see a button that does what you want to do, there's a chance that the command exists, but isn't bound. Click the right mouse button in a pane, this opens up the "pane pop-up menu". Select the "Run..." item. This opens up a dialog window showing all available commands. Select a command, and click "OK" to execute it.
gentoo is a pretty complicated program; it has a rather large amount of configuration data that it needs in order to be really useful. For example, my current personal configuration file contains well over a thousand different configuration values.
To store this hefty amount of configuration data, gentoo uses a heavily structured configuration file. In fact, the file is (or at least it should be) legal XML!
When new features are added to gentoo, they will typically require some form of configuration data. This data is then simply added somewhere in the existing configuration file structure. Effort is made to assign reasonable built-in default values for all such new features, so older configuration files (that don't contain the values required by the new features) should still work. The first time you hit "Save" in the configuration window after changing your version of gentoo, your personal configuration file will be updated to match the version of gentoo.
Describing how to go about configuring gentoo is too big a topic for a manual page to cover. I'll just say that the command to open up the configuration window is called "Configure". It is by default available on a button (typically the top-right one), in the pane pop-up menu, and also by pressing the C key on your keyboard.
~/config/gentoo/gentoorc
A user's personal configuration file. When gentoo starts up, it will try to load this file. If the file isn't found, the old name ~/.gentoorc is tested, and if that also fails a site-wide configuration (see below) will be tried instead.
/etc/gentoorc
This is the site-wide configuration file. If a user doesn't have a configuration in his/her home directory, gentoo loads this file instead. The actual location of this file is slightly system-dependent, the above is the default. As an end user, you typically won't need to access this file manually.
~/config/gentoo/dirhistory
This file contains lists of the most recently visited directories, for both panes. These are the lists that appear in the drop-down menu when the arrow next to the path entry box is clicked. Can be disabled in the Dir Pane configuration.
~/config/gentoo/gtkrc
This file allows you to control the look of the widgets used by gentoo, through the GTK+ style system. You can change the actual path in gentoo's Configuration window, the above is the typical default for a modern Linux-based system. If a file named gtkrc is not found in the configured path, the names gentoogtkrc and .gentoogtkrc (note the period), in that order, are also tested.
/etc/passwd, /etc/group
These two files normally hold the system's password and group information. These are (probably) the ones gentoo uses to map user IDs to login names, to do tilde-expansion (mapping of user name to directory path), and to map group IDs to group names. That is probably, because gentoo doesn't actually refer to these files by name. Instead, it uses the (BSD-style) API function calls getpwent(3) and getgrent(3) to access this information.
/etc/fstab, /proc/mounts, (or /etc/mtab)
These files contain data on available and mounted file systems. They are read by gentoo's auto-mounting code. You can configure the exact file names used, on the "Mounting" tab in the main configuration window. Note that using /proc/mounts rather than /etc/mtab is recommended on Linux systems; they contain roughly the same data, but the one in /proc is always up to date, and faster to read!
All releases of gentoo numbered 0.x.y, where x (the so called minor version number) is odd, are to be considered development releases, as opposed to stable ones. This means that the software will probably suffer from bugs. If you find something that you suspect is indeed a bug, please don't hesitate to contact the author! For details on how to do this, see below.
If you're concerned about using potentially buggy and completely unwarranted software to manage your precious files, please feel free not to use gentoo. The world is full of alternatives.
The chances that a bug gets fixed increase greatly if you report it. When reporting a bug, you must describe how to reproduce it, and also try to be as detailed and precise as possible in your description of the actual bug. If possible, perhaps you should include the output of gdb(1) (or whatever your system's debugger is called). In some cases it might be helpful if you include the configuration file you were using when the problem occurred. Before reporting a bug, please make sure that you are running a reasonably recent version of the software, since otherwise "your" bug might already been fixed. See below for how to obtain new releases.
Also, you should locate and read through the BUGS file distributed with gentoo, so you don't go through all this hassle just to report an already known bug, thereby wasting everybody's time...
gentoo was written, from scratch, by Emil Brink. The first line of code was written on May 15th, 1998. It is my first program to use the GTK+ GUI toolkit, my first program to be released under the GPL, and also my first really major Linux application. However, it is not my first program! ;^) I've been writing (increasingly complex) code for almost two decades now. I have recently finished my Master of Science degree in Computer Science and Engineering at the Royal Institute of Technology in Stockholm, Sweden.
The only efficient way to contact me (to report bugs, give praise, suggest features/fixes/extensions/whatever) is by Internet e-mail. My address is <[email protected]>. Please try and include the word "gentoo" in the Subject part of your e-mail, to help me organize my inbox. Thanks.
The author wishes to thank the following people for their various contributions to gentoo:
Johan Hanson (<[email protected]>)
Johan is the man behind all icon graphics in gentoo, and also the author of the custom widgets used in it. He also comes up with plenty of ideas for new features and changes to old ones, some of which are even implemented. Johan has stuff at <http://www.bahnhof.se/~misagon/>.
Jonas Minnberg (<[email protected]>)
Jonas did intensive testing of early versions of gentoo, and eventually persuaded me into releasing it (back around version 0.9.7 or so).
Ulf Petterson (<[email protected]>)
Ulf drew the main gentoo logo (the one shown in the About window), and also designed the main HTML documentation's layout.
Josip Rodin (<[email protected]>)
Maintainer of the gentoo package for Debian Linux, and also a source of suggestions for improvements, as well as a relay for bug reports from Debian Linux users.
Ryan Weaver (<[email protected]>)
Maintainer of the gentoo packages for Red Hat Linux, and probably one of the fastest package creators out there. :)
Oliver Braun, Jim Geovedi and Pehr Johansson
Maintainers of gentoo ports to FreeBSD, OpenBSD, and NetBSD, respectively.
Thanks also to all people who have mailed me about gentoo, providing bug reports, feature requests, and the occasional kind word. :^) It's because of people like yourselves that we have this wonderful computer platform to play with.
gentoo is released as free, open-source software, under the terms of the GNU General Public License (GNU GPL), version 2. This license is included in the distribution under the traditional name of COPYING, and I suggest that you read it if you're not familiar with it. If you can't find the file, but have Internet access, you could take a look at <http://www.gnu.org/>. It is important to realize that the mentioned license means that there is ABSOLUTELY NO WARRANTY for this software.
Some unfinished, outdated, but still pretty informative documentation is available, in HTML format, in the docs/ subdirectory in the distribution archive. If you haven't installed gentoo from the original .tar.gz distribution archive, you might need to either inspect the distribution you did use (perhaps it came as some form of "package"), or contact a system administrator.
The GTK+ GUI toolkit that gentoo requires is available at <http://www.gtk.org/>. gentoo uses the slightly outdated stable series, called 1.2.x. The latest known release in that series is GTK+ 1.2.10. Because of severe performance problems, gentoo will probably not be ported to use the current (2.0.x) series of GTK+ any time soon.
The latest version of gentoo is always available on the official gentoo home page, at <http://www.obsession.se/gentoo/>.
regex(7), file(1), magic(5), fstab(5), strftime(3)
Manual page section numbers in this page refer to sections on (some?) Linux systems, your mileage will most likely vary. Try the apropos(1) command, it might help you out.