Thursday 5/20/10 2:52 pm

WARNING WARNING WARNING DANGER DANGER DANGER

If you destroy your home your car your neighbors’ pets — IT WILL BE ENTIRELY YOUR FAULT. I did nothing I hope for nothing I am free....

To Search the Contents: Reload the Page?

Might work; that is, if infuriatingly your search is finding things in this text, and you want to search in the contents over there, try reloading the page, which seems to reset the search to the left frame.

Introduction: What is OwenShow?

The short story is, over the years I’ve found a directory browser with primitive file-management and fairly elaborate batch-file-invoking capabilities extremely useful. Apparently I am alone in this predilection, but as I wandered alone and afraid into XP and then Linux, I still wanted one. This is it. (Neither Linux nor XP was comfortable with the 16-bit MSDOS legacy of my previous “OwenView” creation; Linux, of course, was particularly adamant.)

OwenShow is written in open-edition Kylix version 3 / Delphi version 7 (Borland’s Linux/Win32 EZ program RAD environment, 2002 vintage, occasionally available for free here and there), and OwenShow’s source is normally included with the program.3

OwenShow aka “OS” as it’s known to its friend, shows directories, files, and might copy, move, delete a few or more of the latter — or maybe your entire hard drive! ... OwenShow refuses to copy/move directories; use a fancier program for that. ... One of the first things I noticed about Windows and its hyper user-friendly illegitimate ancestor the Macintosh was an alarming tendency for directories to disappear or bound across trees at the swipe of a mouse, so OwenShow doesn’t do that; besides it would be a lot of work....

If you right-click on the directory window on the left side of OwenShow (or press F8), OwenShow’ll offer to scan the hard drive (it can take a while; 10 minutes/forever on today’s giant drives?, although using the “scan level” choice does things much faster, if less completely). Then, double-clicking a directory or pressing Enter shows the files on the right display; the bottom file display is “kept” as the top one changes, but you can flip between them by clicking the Flip Button (the double-arrow buttons on the lower-right hand corner of each of the files panels; see Flipping).

Note that OwenShow provides a cornucopia of WordStar-style control movement, + endless configuration (in OS.INI) — so it’ll never work out of the box. ... And why not look into “Why OwenShow”, yet another sentimental essay?

OwenShow Features

OwenShow has endless features (sometimes called “bugs”); highlights follow. In the endless wonderful text that follows, ^ is “control”, @ means “alt”, and the vertical rule | means “shift”; like it says in “Symbols”.

The Main Screen

There are three main panels in the program’s main screen, + a few minor panels — and virtually endless menu items.

OwenShow Won’t Delete or Do Anything Anyway

OwenShow won’t delete anything or rename or who knows what else — but I wouldn’t trust it, even then! — until you edit OS.INI and set allowdelete to 1 — or there are some individual enables too.

OwenShow Scanning: It Won’t Scan Unless You Scan

You must right-click on the directory window (or press F8) to see any directories after the program is first installed; OwenShow won’t scan unless you tell it to ... which is one of OwenShow’s huge features; see the Scan Menu for how-to. ... Virtually all other file managers, including Windows Explorer and Linux Konqueror, require you to “click-into” the top level of a directory tree, and explicitly click-in again for any lower levels in the tree. This was a historical fork that occurred after the very earliest MSDOS file managers, which would start-up by scanning the entire tree. Once hard drives got bigger than 20 megabytes, that took too long and they adopted the defensive kluje of starting with a top-level scan, and forcing an explicit request for each directory level. OwenShow does the obvious (?) and scans entire trees to any level you specify, and saves the result in a disk file — so you don’t have to do it the next time! That has defects the explicit-click kluje avoids; most obviously, it fails to keep-up with directory changes occurring outside the program. But directory trees don’t change that much anyway, and in OwenShow it’s easy-enough to rescan a section of interest when necessary.

Visited Directory Access

As one wanders one’s giant hard drive, OwenShow makes it easy to get back to previously-visited folders.

Running Programs

OwenShow is equipped with an elaborate (some would say infuriating) mechanism for executing external programs, using entries in the os.ini file.

Using Directory/File Names

The “Copy File Names” feature copies directory and file names, with or without path, to the clipboard.

Handy Custom Clipboard Stuff

The clips feature lets you keep a list of anything you want to put on the clipboard.

Linux and Windows

OwenShow is distributed in two versions, Windows and Linux. ... Absolutely free in either or both.

Fonts Often Work, Even in Linux

The “Font Fun” feature has provided legible fonts in every Linux system I’ve tried yet.

Layout Save/Restore

Not only does OwenShow often remember how it looked last, you can store named layouts and recall them at will!

OwenShow Might Run as Root in Linux

Although it’s almost certainly a bad idea. ... Linux OwenShow’ll run as root if the program directory contains the file “OwenShow.Dangerous.BadBad.RootOK”. After running OwenShow as root, OwenShow probably won’t run without root privileges because its numerous files will have been tainted by root ownership. I wrote a “fixown” script like

chown gregor:gregor *
chmod u+rw,g+rw,o+rw *

which I then ran in the OwenShow directory as root to fix this nonsense. But then of course that didn’t work in Mandrake 10.1 on an odd-numbered Tuesday.

... The better way to do this is make-up a /root/OwenShow directory, copy at least os.ini and osfonts.ini to it, and then run OwenShow like “/gregor/home/OwenShow/os -d/root/OwenShow” and, oddly, everything more-or-less worked, at least once or twice. See the “orut” script included in the OwenShow Linux distribution for an example.

And yes of course I’ve been using root OwenShow, dangerous as it doubtlessly is. It’s just too annoying to crawl around these machines on the command-line or even in the admirable but still directory-impaired Midnight Commander. I would probably hesitate to do it on a real machine owned by someone else. Although so far it hasn’t done a bad thing, in minutes of testing.

Irrational Hesitations

Sometimes, in Linux, I have to click the form to wake it up; sometimes just waving the mouse around works. This happens when it goes off for a while, i.e. during cumulative search or scan. In recent years, OwenShow’s been pretty good about this kind of thing, but just when I think I’m home free — it’ll freeze-up for 10 minutes in some weird corner.

Help

There used to be ASCII help in a little Delphi form, but I’ve concluded this HTML stuff is so much pleasanter, and I managed to implement context-sensitivity. ... True, it takes forever to load the browser, but there should be a lovely searchable listing of the help contents on the left here, at least if your browser is less than 5 years old. ... So other notes:

When Help Won’t Appear

Among the numerous OwenShow options, two or three are involved with showing this help: helpexecute, helphtm, and helpok, q.v.

OwenShow Data: A Sad Tale

Aka the “data directory”, including OS.INI, tree data, and whatever, is stored like this:

  1. If started like “os -dApath” then Apath is used.

  2. If started like “os -d” — an empty “-d” option — then the current directory is used.

  3. If started some other way, then the program directory is used for all OwenShow data.

  4. But Wait Wait! ... There’s still the Vista Memorial Way, which also applies to XP installations, but hopefully not Windows 98, for all you W98 fans: if OwenShow is installed from Windows ossetup.exe — i.e. not oswin.exe or in some other dubious fashion — it will attempt to use a data directory specified by the environment variable %APPDATA%; specifically %APPDATA%\os_data. If that directory exists or it manages to create it, it’ll use it, first copying the OwenShow distribution data files over there, which shouldn’t obliterate any existing installation files in the directory, because it only copies newer files, and it doesn’t copy things like os.ini and the tree data files.

Actually, it does this copy thing every time OwenShow starts, but only if a file named WIN_INSTALL exists in the installation directory, and only, as noted, as the program directory data files are newer than the ones in %APPDATA%\os_data. The OwenShow Windows install gadget places WIN_INSTALL in the program directory, and OwenShow will leave. (I had some difficulties covering all the bases in the logic, and I figured, what’s the difference? — it’s Windows....)

If you exist in an alternate universe and are actually updating an existing OwenShow installation with the Windows install ossetup.exe, and you suddenly discover OwenShow has lost its brains, you could delete the WIN_INSTALL file and it will resume using the program directory for data. Or better still, rename WIN_INSTALL to WIN_INSTALL.NOT, or just create the latter, and it won’t try to use the %APPDATA% directory ever again, even in subsequent installs. ... So, in summary, OwenShow installs perfectly in Vista....

Wait ... There’s More!

But then again, the most recent release of OwenShow (vh5 and later) probably won’t update your old installation of OwenShow, because the OwenShow Windows install defaults to c:\jgo\OwenShow (i.e., abandoning whatever wacko “Windows way” “c:\Program Files\x37\bongo” junk your latest version of Windows prefers), and does not put the WIN_INSTALL tag file there. (Which also means you should probably uninstall the previous version or I don’t know; just don’t use the Windows installer, really.) That is, I’ve officially given-up on the %APPDATA% mechanism. It sux. Vista sux. ... So does Windows 7. ... I mean, if you have numerous different users with different signs-ons, all of whom wish to use their own private copy of OwenShow, you can create the win_install file in the program directory .. and see what happens!

The Best Way to Install OwenShow

... Actually, the best way to install OwenShow is to crudely copy the OwenShow directory; probably zip it up — or for new installations use oswin.exe, available somewhere on http://owenlabs.org — and then explode it in the directory of your choice which, on Vista, definitely should be something like “c:\jgo\owenshow” i.e. not in “program files”, which was really just random stupidity; just another witless Microsoft wacko thing that never really worked-out. ... Full of sound and fury and signifying nothing. .. And anyway, if I ever release another OwenShow, the default Windows install directory is c:\jgo\OwenShow (and os it is!)....

Also see “do_splash” for information on the splash screen.

The Three Main Panels

There are three main panels in OwenShow: the left directory panel, and the two right files panels arranged vertically. You can change the size of these things by dragging a boundary; hold the mouse over the boundary until it changes to a double-arrow/double-line cursor, and then drag. OR resizing OwenShow will also resize the currently-selected (“lit-up”; you click on it) panel.

It is possible to make panels disappear by 1. enlarging OwenShow, 2. moving panels around, and 3. making OwenShow smaller. The panels don’t adjust themselves properly. But you can always make it bigger again and fix it. (If for some reason you can’t fix the size, try deleting “ossize.ini” in the OS directory — but only when OS isn’t running! — it just recreates the thing every time it exits. Note that this procedure seems to fix numerous appearance oddities, like squashed weird-looking dialogs, or at least it did just now in Linux Suse 9.1.)

The directory panel is linked to the file panel; whenever a file panel is selected (lit up), the directory panel is supposed to show that directory; and it does so most of the time. Double-clicking a directory in the directory panel will enter the top file panel in that directory.

You can “flip” the two files panels by clicking the double-arrow buttons (see Flipping). So the general way of things is you pick a directory in the directory panel, double-click it, click the flip button, click another directory in the directory panel, double-click it, and then you can copy/move between the two directories. A shortcut is holding-down control while double-clicking a directory, which flips the files and then enters the directory (but see control_enter_flip option).

The left-arrow key will goto the parent directory; the right arrow-key will goto a recently visited directory.

The two minor bottom panels can be resized; the left panel is the miscellaneous panel with some status information and a find tab, + a list of directory trees which is mostly intended for specifying different Windows drives (see “drivelist” option). Right-clicking on the tree list will produce a bigger version (same as “etc / tree”).

Changing File Field Sizes

The file, size, time, atts fields can be resized with the mouse. OwenShow will often remember how you’ve changed them. Because of the program’s quirkiness, sometimes it’s necessary to resize the name field first. Also, if you move the mouse off the field too quickly, it will sometimes “pop back”. Finally, both panels get resized together.

Lower Left-Hand Corner Directory Number

The status info in the lower left-hand corner is obvious, except perhaps for “directory #”. That’s the 1-based number of the current directory, followed by a slash and the total number of directories, followed by the 0-based hex directory # in parentheses. These are OwenShow fictions; the total count might match the machine if you have taken a few minutes and done a complete scan recently; the directory # itself just indicates the directory’s location in OwenShow’s storage. I.e., directory #2 will be on the second line of the c_tree.pix and c_tree.pth files.

The Lower-Middle Tree List

In the middle of Windows OwenShow on the bottom is a list of trees, usually corresponding to drives; the program must be configured with the desired trees. The drive list isn’t present in Linux (as per the “drivelist” option).

Lower Right-Hand Visited Directories Panel

The right bottom panel contains a list of “visited” directories which is added-to whenever a directory is entered (i.e. by pressing enter in the tree display, or in various other ways). This panel can be single-clicked to just set the directory panel to that directory or, more usefully, double-clicked to enter the directory. Holding-down control while double-clicking works like in the directory panel, “flipping” before entering.

When the list grows beyond MAXVISITED (in main.pas), the bottom item is deleted. Right-clicking pops-up a bigger version of the list, with various additional features; see Etc Visited Directories.

The Etc Menu

The Etc menu contains all the interactive options you’re going to get with OwenShow, as follows. Note that some might disappear depending on whether you’re in a tree or file panel.

Etc Clips

The “clips” item does not appear on the ETC menu unless there are some clips specified. In my ongoing effort to make Linux half-usable, I added the feature, so I can do canned formatting in jstar, for instance, without writing mystery macros (if it even does that).

The Clips Section in OS.INI

This might set-up the clips feature in OS.INI:

[clips]
———————=1
%_$_dt: dddd, mmmm d, yyyy%=1

That’d set it up with a line of hyphens and the current date (see Environment Variables in Exec). Then you can try and clip it into your text. A single BLR “_=1” will be translated to a space — to separate the things when you goto the list box. There’s an example in osex.ini, probably as “[LINUX:clips]”.

Within the [clips] section, the string “EqualS:” is a little sublanguage keyword, indicating the character that “EqualS:” is set to will be treated as an equals sign, since the ever-verdant Windows ini file format doesn’t seem to support equals signs. So if “EqualS:^=1” is followed by “^^^^^^^^^^^=1”, then clips’ll get a line of equals sign — so useful in weird things I want to stick into files. “EqualS:” without a character resets the mechanism. The magic keyword must be exactly as shown with a capital E, S and the colon.

Note that since the ini mechanism throws away spaces, you can stick your required “=1”s over on the right, so it’s not so ugly. In the form, just click something — or use shift or control to click more than one — and then click OK to send them all to the clipboard. ... See also clips_key.

Etc Fix Trees-Files to Local

When I’ve wandered my Windows network and mapped drives hither and yon, I wanted an easy way to stop OwenShow from looking at forbidden directories/files after I unmapped them. This is it; it depends on the local option.

Etc Clipboard File Names

Also see Clipboard Options. (At Fri 9/05/03 1:20 pm, the @N “List file names to file” feature is replaced by this enhanced file name copy function.)

“Clipboard file names” on the “etc” menu brings up the same-named form, where you should see two or three columns of marked (+) files, and if no marked files, then the selected file — or, if the directory panel is active, the current directory. The columns show different “styles” of the name: full path, just the name, or, in Windows, the short form. If “quotes” is checked, then if the full path or name includes spaces, it’ll be quoted — which often makes it useless in Linux, and sometimes in Windows. If a directory name is present, the “slash” checkbox controls whether the directory path ends in a slash.

The “data” checkbox, when checked, includes the information shown in the files display (size, date, atts) in the full display as a comma-delimited list. Checking the “cute” box changes the data display to something that might be suitable for pasting into a mono-spaced context i.e. like the TSE editor I use in Windows.

Checking the checkbox over the help button (default “^Insert options”) makes the Quickcopy feature use whatever style you’ve selected; when it’s unchecked, it defaults to the OS.INI specification. See Clipboard Options and “super_quickcopy=”.

The Clipboard File Names form starts with all files selected; you can change the selection in the usual Windowish ways (click, shift click, control click). Then click “Clipboard” and it’ll copy the selected names from the selected column to the clipboard (it ignores the names, selected or not, in the other columns). If there’s more than one name, they’ll be separated by line endings in the clipboard.

Copy File Names to File

Or you can click “File”, and it’ll ask for a file name, and copy — or append, if the file already exists — the list of filenames to the specified file.

Sadly, in KDE and on odd-numbered Tuesdays, the copy doesn’t work. At least, with my copy of Red Hat 8 / KDE, copy worked in emacs — but not xemacs (!) or the KDE editors or anywhere else, unless I went down to that clipboard mini-app on the tool bar (apparently not-present in \gnome?) and checked the thing I’d just copied to the clipboard. Then it’d show-up in all those other places. ... Whatever....

Also see Directories Clip Save, where idiosyncratic copy/save of directory tree info is described.

Etc Update “Edir” File Data File

A valuable feature! For years I’ve used a dog’s-breakfast pile of batch files and software to maintain an “edir” file in various MSDOS/Windows directories, which simply contains a list of the files demarked by special characters, so I can add helpful comments and excuses. I “inherited” this practice from the late MSDOS “PCWrite” editor, and found it extremely useful over the wandering years. Now lucky OwenShow users have this exciting feature built-in — which of course means I at last have it in Linux! ... See options “edir_” for various things you can specify. In the default, a file “edir.os” will be maintained in the current directory, with a vertical rule as the demarker, and with an @R hotkey.

Edir Sorting

The file names are sorted when they are first encountered; by default, by extension, or if edir_ext=0, then by name. But this only affects new files; the existing files in the edir file aren’t re-arranged, although they get tagged when they disappear with a “-” on the left. But new files always wind-up at the end of the listing, although the group of new file names is sorted.

Etc Unsort Files

When you yearn for the early days of MSDOS, you can sort your files the way the Deity intended, just the way they tumbled onto the disk. See Secret Sort for more....

Etc Edit OS Init File

OwenShow is nothing if not option-ridden, and this lets you edit them, usually in the file os.ini in the OwenShow data directory. Offensively-stupid default editors are used unless you configure the feature. You have to restart OwenShow for ini changes to take effect.

Etc Restart OwenShow

I.e., after you’ve edited the ini file, or if you just feel like it. It doesn’t ask for confirmation; click and restart....

Etc Reconstruct Tree: OwenShow Fixit

OwenShow stores it’s directory-tree information in an assortment of same-named, differing extension files (.pth, .ifo, .ofs, .ifo; see the “file” option). The program will reconstruct the necessary collection of files from the .pth file alone if other files don’t exist. I.e., if you have a nice list of paths, you can go “del x_tree.*” and then copy your paths file to “x_tree.pth”. Then when OwenShow tries to use the pth file, it’ll recreate the others when it finds them missing (of course os.ini has to be properly jiggered for x_tree; see “[trees]”). This is handy for keeping CD/DVD paths in files and restoring them without having to scan the thing. And if it detects an OwenView (my previous 16-bit browser) file, it’ll deal with that properly too! (See “Ttree.fixpaths” in dir.pas source.)

This behavior used to be an option “xlate=1”, but I could not conceive any case where I wouldn’t want it to happen. I left the option mechanism in just in case, I just don’t read it any more in getoptions.

The Etc feature is, as it wonders when you use it, might help fix an OwenShow tree that’s gotten cranky. This happens most reliably during backup to restore-points in XP — something that happens fairly frequently at OwenLabs....

Etc Tree Select

Duplicates the main-screen tree panel functionality, but pops-up a little box to select-from.

Etc Visited Directories

Right-clicking the visited directories panel, or clicking the etc menu “visited directories” command (or you can assign a shortcut, see “bigvisit”) brings-up a big version of the panel, where you can remove selected directories from the list with shift+click or dragging and then pressing DEL or the delete button. Or delete them by “level” — check the “Delete entries” checkbox, adjust the level, then click the delete button. Control+Enter acts like doubleclick etc. in the visited directories panel itself (or you can use doubleclick etc itself), or clicking OK is like a single-click in the visited dirs panel. Cancel exits without doing anything — including canceling any deletes. Or you can copy the selected directories to the clipboard with the Clip button (^Insert, ^C, @C works too).

Etc Find File/Directory

Pops you into the find panel; you can also get there by clicking the “find” tab in the lower-left main screen panel. But cumulative search is usually better.

Etc Create Empty File

It comes in handy in Linux; you get to name a new empty file in the current directory.

Etc Resize

It’s a way to resize OwenShow without the mouse, which can be very handy sometimes. Should be self-explanatory once you get there. Also see “resize_rate” option.

Etc Font Fun

It replaces the fairly cranky “font size” which I see I never documented. If your OwenShow screen looks like a dog’s breakfast, probably in Linux (but old W98 laptops can also offend), then you go to font fun and try to fix it. ... There’s a list of fonts, organized into panels.

The Left Side is what they start-out as, gathered by actually assigning a font from some part of OwenShow to the label there, + my terse description of the font’s role in OwenShow. There may be a “windows”-style name, or a Linux name, perhaps concocted by Kylix or who knows. Actually, in Linux this left side of the screen is shown without the font style, since the sometimes random font Linux/Kylix picks is sometimes invisible, but so far the default dialog font has been OK. See the “show_original_fonts” option for how to dangerously change this behavior.

The Right Side is what the font has been translated-to. They are changed either by you in the font fun form by clicking on one of the fonts, or by loading a saved file containing this information (see “osfonts”) at startup, or by automatic trickery in Linux when OwenShow starts and doesn’t find the osfonts file.

You can’t just change font sizes to your heart’s content, because the form layouts don’t magically accommodate such arrangements. The point of font fun is to try and pick fonts that work with whatever machine OwenShow is running-on, particularly in the wonderful born-free Linux world. ... See init show_original_fonts, osfonts, fontfun, and zerotime entries and comments in fontfun.pas.

Tab Height Adjust

Adjusts the tabs on the main form at least, which always seem to be too short in Linux. Also the heading labels on the “Clipboard file names” form. And maybe the files and dir status things. It’s a +/- thing.

Tree Height Adjust

The first spin control can add or subtract pixels from the tree line height, which can be useful with small fonts or just for the heck of it. ...

Abbreviated Main Menu

Used to be the os.ini option “short_menu”, but now you can change it in font fun. I first conceived the need for this on my pitiful W98 Toshiba, where the standard menu was too big — so this option abbreviates the main menu headings, so they’ll fit on the main form; apparently I can’t change the font size of that — well actually in Linux on odd-numbered Tuesdays the dialog font setting will apply. ... Whatever....

Header Line Scroll Fudge: Keeping the Selection in the Files Windows

Then there’re the fudge controls, which used to be an OS.INI option. Now they’re user-friendly spin controls — so far, mostly useful in Linux. The fudges default to 0 for Windows and Linux; there are guesses in fontfun.pas source that differ between Linux and Windows. The Linux defaults worked “as is” on two Mandrake systems here.

Note that the whole point of all the fudging is that Borland never finished Kylix or Delphi CLX, and in this case the TListView I use for the files panel has no way to tell me how large the visible section is; or, for that matter, the number of visible items, or what would’ve been far better and easier, the index of the bottom item (it will occasionally produce an index for the top item). So I have to fudge.

These things need adjustment if the highlighted files selection disappears off the bottom of the panel during scrolling, or it “jiggles” up a line and refuses to select the last item. The selection’s supposed to track and stay within the window. A general procedure for adjustment is to goto some directory with a lot of files — /usr/bin’ll probably do — scroll to the middle with the vertical “thumb”, and then use the thumb and/or ^W to scroll the selection off the bottom. If it seems wrong — if the selection disappears, or if it insists on staying on or two files from the bottom, you can try the following procedure.

1. Set-up the top file panel so there’re a small number of files/directories showing, like 5 or 6 — i.e. so they’re easy to count without using your fingers. Move the selection with the arrow keys to the very top of the panel — to the first item.

Alternately, the Linux distribution should include the file “test_scroll_lines.tgz”. In your OwenShow directory or somewhere, go “tar -zxvf test_scroll_lines.tgz”. This should create a subdirectory “lines100” and if you enter that directory in OwenShow, there should be empty files line001, line002, ... line100. Put the OwenShow selection on the line001 file. I’ve found this helpful on a few Linux systems.

2. Start with no horizontal scroll bar in the files panel; make sure OwenShow is wide-enough, and then adjust the “name/ext” field (or the other fields if necessary) so it’s small-enough so there’s no horizontal scroll bar in the files panel.

3. Goto “etc / font fun”. Make sure all the fudge spin controls are set to zero. Check debug fudge”. Exit font fun (confirming if it asks) and check if the problem still exists.

4. There should now appear a little debug mumbo-jumbo down on the upper-right hand corner of the stat memo — which is in the lower left-hand corner of the screen. Something like “6 lines (H:22;L:10;S:16 (0))”. “H”, “L” and “S” are the header, line, and scroll size in pixels — at least what OwenShow thinks they are, including any fudge values you establish. The number in parenthesis is either 0 or the scroll pixels, depending on whether the scroll bar is present (it took me at least a day to figure-out how to determine that).

5. If the debug lines number is wrong, start by going to font fun and adjusting the header fudge; if the debug lines number is too large, make the header fudge a positive number, else make it a negative number.

6. This will eventually of course work infallibly, or you’ll get so bored you erase OwenShow from your hard drive. Assuming the former, make the name/ext field wider so a scroll bar appears in the files panel.

7. Check the debug lines value; again, if it’s too small, use font fun to adjust the scroll fudge in a positive direction, or visa versa.

And that’s it! Everything will now work perfectly.

8. When it doesn’t work perfectly, you can try adjusting the line fudge, but that’s the one thing I thought I was able to figure-out in a rational way, using the test ListView on the fontfun form — oops, well it turns-out it wasn’t really working. You can tell if the line height is wrong when the fudge line count looks correct, but then becomes incorrect when you change the file panel height; i.e., if it says “3” for a three-line screen, but then says “17” for 19 lines, etc. You can tell my mumbo-jumbo is wrong if, after changing form a small font to a larger font, the “L” debug fudge number remains the same; it should change when you change font size. Whatever, before tinkering with the line height try restarting OwenShow (etc / restart) to see if that doesn’t make things right. Although I tried to adjust my mumbo-jumbo to make it stronger.

Note that I didn’t provide any fudge for the mechanism that decides if the scroll bar is present; if you try hard, i.e. move a field so the scroll bar just appears or disappears, you almost certainly can fool it. So don’t do that....

Tiny Fonts for File-Tree in Windows

At the frontiers of computer science, OwenShow marches backwards, landing recently on my Toshiba 800x600 Windows 98 (not second edition) laptop, and it was not happy — basically because the normal OwenShow Windows mono-spaced Terminal 6 font was too big, Terminal 5 was too blotchy, and the Windows “small fonts” 6, which is small-enough and looks much better, unfortunately is variable-spaced — which most noticeably messes-up the file date/time display.

Setting “zerotime=1” helps a bit. But then I dusted-off my Borland 3.1 Workshop font editor, and created JGO_SMAL.FON, which should wind-up in the Windows OwenShow installation directory. You must install the thing, by going to control panel, double-clicking the fonts folder-looking thing, then file / install, then laboriously navigate to the OwenShow installation directory, whereupon the fonts thingey should show “OwenShow Font (JGO)” which you click and then install — whereupon, in all likelihood, your computer will burst into flames. If that doesn’t happen, goto etc / font fun, click on the file/tree selection, look for the “jgo_small” font, and select that — which really ought to finish the machine off. ... The JGO_SMAL.FON is jiggered to have equal-width numbers, also the space, + the letter “a” is hacked to be the same width as “p” (so the time a/p time indicator lines-up). The “a” is fairly ugly, but the numbers don’t look half-bad. ... But now I notice it probably needs a tree height adjust of 1 — at least if you want to see the descenders....

Tiny Fonts

I should note that a major OwenShow goal/excuse is to show as much file and directory information as possible — and that’s why I want these tiny fonts. Even if they’re a little hard to see, I find the extra information so useful it’s worth a little blurriness. Your mileage may vary. ... And so has mine; I’ve since concluded it’s not really worth the trouble; or at least the above W98 nonsense wasn’t....

Font Fun #17

In the endless series of attempts to make font fun work better or at all, I gave-up trying to whack the fonts on “automatic pilot” as it were, and created a crude brute-force approach where fontfun reads a specially-prepared file which, basically, tells it about all the controls and fonts it should know about. See discussion of “osf.zip” in readme.src.

Font Fun Reset

When all else fails, you can try the font fun reset button, which’ll basically trash the font fun info and start again.

Etc Scan Timings

Somehow I’ve missed this exciting part of the etc menu in the past; the resulting display is filled with arcane info, but I’m particularly proud of “fls[70]” or whatever it says; it shows the sort value for the selected file, i.e. under the new improved string sort regime, q.v. “tssort” in files.pas.

Etc Left Directory

When you use the left-arrow key to goto the parent directory, you’ll wind-up at the first file in that directory — unless this option is checked, in which case you should flawlessly wind-up with the directory you just came from selected or something. ... I actually find this fairly useful....

The check state of the feature is saved/restored with the layout.

Etc Dir Create Time in Windows XP

When checked (default), directories in the files display will show the “created” time — which is the only way they appear in lesser Windows. Unchecking shows the “written” time — when something in the directory was written — an XP-only feature.

The check state of the feature is saved/restored with the layout.

Etc Numeric Atts in Linux

The “atts” column in OwenShow has always been essentially notional in Linux, presenting some ideas Borland had about the thing. Now you can check “Numeric atts” in etc. and the files panel will show an actual 6-digit octal #: the last three digits represent the Linux trinity of owner, group, other permissions; read, write and execute. The first three octal digits represent this dubious bunch (these are of course octal numbers):

S_IFMT   0170000 bitmask for the file type bitfields
S_IFSOCK 0140000 socket S_IFLNK 0120000 symbolic link
S_IFREG  0100000 regular file
S_IFBLK  0060000 block device
S_IFDIR  0040000 directory
S_IFCHR  0020000 character device
S_IFIFO  0010000 fifo
S_ISUID  0004000 set UID bit
S_ISGID  0002000 set GID bit
S_ISVTX  0001000 sticky bit

(You might have to adjust the atts width to make it fit all 6 digits.)

Note also that the currently-selected file’s permissions might appear in the middle panel in the more talkative “rwx” form, + owner, group names. In front of the “rwx” descriptions, a word summarizes some of the above

case (buf.st_mode and S_IFMT) of
  S_IFSOCK: s := 'sock';
  S_IFLNK: s := 'link';
  S_IFREG: s := 'file';
  S_IFBLK: s := 'blk';
  S_IFDIR: s := 'dir';
  S_IFCHR: s := 'char';
  S_IFIFO: s := 'fifo';
end;

followed by three letters or dashes, “sgu” for “set UID bit”, “set GID bit” and the famous “sticky bit”. Here’s some harmless chit-chat:

“The set GID bit (S_ISGID) has several special uses: For a directory it indicates that BSD semantics is to be used for that directory: files created there inherit their group ID from the directory, not from the effective gid of the creating process, and directories created there will also get the S_ISGID bit set. For a file that does not have the group execution bit (S_IXGRP) set, it indicates mandatory file/record locking. The `sticky’ bit (S_ISVTX) on a directory means that a file in that directory can be renamed or deleted only by the owner of the file, by the owner of the directory, and by root.”

— from www.die.net’s Linux manual pages

Finally, if “link” appears, then what the link refers to might appear in the bottom line of the lower-left corner of OwenShow (the “statmemoid” function) within double-quotes. (Note that you can drag the borders of the bottom panel around to make it wider and taller, so you might get to see the link name without scrolling as much.)

The check state of the feature is saved/restored with the layout.

Etc Show Short Files Size

Abbreviates file size with the famous suffixes “kmGTPEZY” — I stop at “G” myself — or a space, for <1000 bytes. The Video Files Memorial Option; and I capitalized the bigger ones so I’d notice and be frightened. ... Note that I don’t hold truck with any of this binary nonsense where a kilobyte is 1,024 bytes or whatever drivel they’re flogging this week. Also, the numbers are rounded, I think; if you want an accurate number, uncheck the option.

The check state of the feature is saved/restored with the layout.

Etc Position Recalled

If checked — default — then when the saved layout (next) is recalled, the position — top, left — will be recalled also. That is, if you want a layout to be recalled later without position info, then uncheck “Position Recalled”.

Etc Main Layout Recall

When you first use OwenShow, this won’t work. After exiting at least once, then this is supposed to recall the main layout. Or use Recall-Save.

Etc Recall-Save Layout

Once you have the main OwenShow form set-up the way you like, you can save it with the etc menu “Recall/Save layout”: click the “save” radio button, and save it to the default “main”, which should be selected automatically. Later, you can recall the main layout (also see “recall_save_layout” and “recall_main_layout” keys for shortcuts).

Or you can save alternate custom layouts with your own names: click “save”, type in a name in the “new” box, and click “Ok” or press Enter. (OwenShow probably comes with a “big” extra layout.) Then you can restore such custom layouts by going to the recall/save form again, and double clicking the desired layout name in the box — or selecting it with up/down arrow, or ^E^X, and pressing enter. Or, if you contrive to give your saved layouts unique first letters, just by typing the letter, followed by enter.

These layouts are saved in the OwenShow data directory in the form layout_{your_name}.ini. Efforts to add extensions, spaces, other punctuation to your name are supposed to be thwarted. There is a default name, usually “main”, used for the shortcut keys (see “layout_main” option) and the etc feature, and to which the form tries to default. If you want to delete or rename them, goto the OwenShow data directory and do that.

The position of the main form will be restored only if the “Etc” menu “Position Recalled” is checked. (This is the Owen Video Files Memorial Option ... well, along with the short files thing....)

Recall/Save Restatement

Let me restate the current (Mon 10/15/2007 6:32 pm) layout recall/save situation:

1. Layouts are recalled or saved only when you use the “etc main layout recall” feature — at which time the main layout is recalled — or the “etc Recall/Save layout” feature, where you can save and restore various layouts to your heart’s content.

2. When OwenShow starts it will restore the layout as it was when it last exited.

3. However, if at exit OwenShow doesn’t find a main layout, it will save whatever the current layout is as the main layout.

New Versions and Saved Layouts

When a new OwenShow version shows-up, or if the screen width and height changes, OwenShow will normally ignore the saved size/positions — so stuff doesn’t get screwed-up if I re-arranged a form, and/or disappear because you just moved to a tiny-screen netbook thing. Unless getsizes_anyway.

Built-in Keys and Mouse

The majority of control, arrow, and some other keys described in this section are built-in and can’t be configured (see Key Configuration for the configurable keys). Note that the built-in control keys entered my life long ago and far away with WordStar.

The “Tab” key moves through the three major panels. “Escape” (gotodir) exits either files panel to the directory panel. You can click the directories or files to select them; OwenShow doesn’t use Windows-style select and multiple select; you press + (or = sign) to mark a file for processing, - (minus) to unmark it (configurable as markon/markoff), and there are some mass mark commands; try right-clicking a file to see them.

Double clicking a directory in the files displays (or pressing Enter) goes to that directory, updating the tree display.

Symbols

@ means alt. ^ means control. | means shift.

The Keys

Home: goto home directory.

^Home: set home directory (if “alwayshome=0”).

^S, Left arrow: goes to parent directory.

^D, Right arrow: goto recently visited directories — i.e. those which you viewed in a files window recently. There’s a window on the bottom right showing these; ^d/right arrow goes to the directory after the highlighted one, or if no such, to the first. Shift + ^D/right arrow goes through the visited directories in the other direction. You can double-click in the window, too.

@Left arrow, ^A, @Right arrow, ^F: moves through directories at the current subdirectory level, up/down.

^E, ^X, Up, Down arrows: vertical movement.

Page up, ^R, Page down, ^C, End: vertical movement by page.

@Home, @Page up, ^Q ^R, @Page down, ^Q ^C: move to top, bottom.

^Z, @Up arrow, ^W, @Down arrow: scroll.

^J: “Cute”: move the cursor position to about 1/3 down the screen. Can be handy as a faster scroll in the tree display, for slow machines.

^Up arrow, ^Down arrow, ^Left arrow, ^Right arrow: resize OwenShow.

As described in Key Configuration, many keys can be customized, and some of these customizations may even work. In the text following, keys will be referred to by their default values, perhaps occasionally including the key configuration name in parentheses.

The Copy-Move-Delete Form

Copy, move, and delete (F1, F2, and F3) operations on files and directories (but you can’t move directories in OwenShow, because I’m so lazy) are all executed on the same form; for delete, you get to see a charming reproduction of my XP wallpaper; that’s me on the right-hand-lower corner, long ago and far away, shooting at the emachine greenish personoid. Copy/move operations have an edit box and various info instead.

File Copy and Paste in OwenShow: Use the + Key

Normal windows-style drag ’n’ drop is poorly supported. Instead use the OwenShow medieval keyboard replacement file marker: type “+” or “=” (markon) to mark a file, or “-” (markoff) to unmark it, and then copy/move/del bunches at once using the program menu or hot keys.

Home ~

In Linux, a leading ~ will produce the home directory in the Copy/Move destination edit field.

Drag and Drop

It kind-of works! I have successfully dropped files from Windows Explorer and Linux Konqueror onto an OwenShow files window — sometimes you have to wait a while until OwenShow wakes up — and I can actually drag files from an OwenShow files window into Explorer/Konqueror now and then. ... Note that OwenShow only drags files marked OwenShow-style (the little +) or, if nonesuch, the single selected file — just like the program’s Copy or Move. And you can’t drag/drop directories; the OwenShow Board of Arbiters wants you to use other programs for that, it’s so dangerous.

Naturally, everything’s inconsistent; when drag/dropping from XP explorer to OwenShow, the source files remained unmolested, but the other way round the OWENSHOW FILES ARE DELETED BY XP EXPLORER! in its infinite wisdom. On the other hand, in Linux Red Hat 8 Konqueror only every other drag or so worked. Actually it was getting better, after I specially bolixed OwenShow so drag ’n’ drop to the same directory will just off itself quietly — and so at worst, you just keep trying, dumping the misfires back on the source files panel! ... And if you must, you can even drag ’n’ drop between OwenShow files panels! (Where it correctly copies; i.e. not deleting source files like drag to XP explorer.)

An Example: Copying a File in OwenShow

When you start OwenShow, the left panel will indicate a particular directory, and the top file panel on the right will show the files in that directory. Assuming you’re in the top files panel — it’s “lit up” — and you want to copy something to that directory from another directory.

  1. Hit the “Esc” key to get to the directory panel.
  2. Wander around the directory tree until you see something you like, and press “@-” — alt “at” sign — which will stick that directory’s files into the bottom panel.
  3. Press tab, which will (a.) go back to the top panel and (b.) adjust the tree display to correspond to that directory.
  4. Tab again, which light-up the bottom panel and select the files you want to copy, by pressing “=” (aka “+”) at each desired file; the file gets marked with a “+”.
  5. Press F1 to copy; normally the other files directory — in this case, the top one — will be the default destination, so you should just have to click the “Yes” button. The files copied from the bottom panel will be marked with a “*”.
  6. Click on the top panel to continue working there; or press “Tab” twice.

There are endless variations on this procedure; which, of course, is the whole point of OwenShow. ... That, and wandering around directories with ease....

The Mark Menu

I would highly advocate setting-up a few test directories and trying out file copy/move a bit. Be sure to try the right-click menu in the files panel, particularly the bottom of the menu with its numerous marking options — also available on the “|F7” “mark” menu.

Skip Checkboxes

For copy, the “skip” options provide minor automation for certain kinds of copies. Normally, OwenShow will query for all overwrites, and for overwrites of newer files, it queries twice. If one of the “skip” boxes is checked (Overwrite, Newer, “Same”), then no queries will be made, and the qualified files will simply be skipped. Note that skips have priority: overwrite includes newer and “same”, and newer includes “same”. This is reflected in the check box logic. “Same” is quoted because the OwenShow sameness check checks time stamp and size, and can be easily-confused intentionally or by accident; this is the same mechanism that, with no skips, might query you about copying-over a “same” file. In multiple-file copies, the skipped files are marked with a “-” instead of an “asterisk” — so you can tell the copied files from the skipped ones.

See also “jcopy” and “jcopy_file” options for ways to pre-check the skip boxes as desired.

Cumulative Search

Typing normal characters (in the directory or file panels) will try and find what you’re typing. Any “funny” key — arrows, del, backspace, etc., or alt or control key (see the “cumulativestop” option) — resets the search, or it resets after cumulative_time milliseconds; you can see the characters in the caption at the top of OwenShow.

Cumulative Approximation

Pressing the | key (vertical bar, the default “exact” key) during a cumulative search changes the search strategy. Cumulative search starts assuming CONTAINS; it will try and find directories or file names that contain the junk you’re typing. Pressing | changes it to EXACT; pressing | again changes it to STARTS WITH. In the directory tree, “EXACT” has a variation: if you’ve typed any slashes, it will search for a directory that exactly matches the slashed thing you typed, i.e. the full path. However, if you just type a name, an exact search will try to find the next path that contains an element exactly equal to what you typed.

In the files panel, “b.exe” will find “ball.exe” i.e. the inexact comparison is done for the root and the extension separately. For instance, when I searched for “cl.exe” I found “tlaclip.exe” — which was annoying, but the nextkey or pressing the exact key once or twice usually does what I want. Without the root/extension logic, “b.exe” wouldn’t find “ball.exe”, which would be really annoying.

Slashes, funny characters: OS translates / to \ (or \ to / in Linux); if you want the exact thing, use the * (literal) key to enter characters that might get trapped otherwise, i.e. like “-” or “;” or something.

The semicolon ; (nextkey) will find the next matching thing; or, if the find thing is empty, it’ll fill it with the current thing — minus extension in files, or the right-most path element in tree panel — and try to find that.

Leading spaces are suppressed. If you want one, use the * (literal) mechanism.

During cumulative directory searches, the little status panel between the two file menus shows some activity indicating the current state of the search. Also, recent random changes try to abort the directory search for any keypress, which seems so far to work pretty good.

Slash Exact in Files Panel

Just because it annoyed me, in the files panel the slash key acts just like the exact key. That’s “/” in Linux, “\” in pitiful Windows.

Stopping Cumulative Directory Search

Cumulative searches in the directory, which can sometimes go berserk, can sometimes be stopped by pressing control or alt (see cumulativestop), or perhaps clicking or more likely double-clicking something. Sometimes you might have to click more than once, if W98 has tucked keys away in the queue.

The Find Tab

Clicking the “contains”/“exact”/“begins with” slogan there will set that; then type some text and click the little “Find” button. Or, if text is already there, clicking “contains”/“exact”/“begins with” will start the search off with that.

Flipping

The idea is to provide the ease-of-use of my 16-bit character-only single-panel OwenView. ... So double-clicking a directory, or Enter, in the tree display enters the upper file display.

@+ (flip) causes the top and bottom files display to change places, leaving which files panel was selected still selected.

The double-arrow buttons (on the lower-right hand corner of each files panel) also flip the top and bottom files display, plus the panel with the clicked button is selected (lit-up).

@- (stuff): In the tree (left panel) display, stuffs the current directory into the bottom file display without leaving the tree. In the files display, stuffs the current directory into the other file panel. ^- (stufftop): In the tree display, stuffs the current directory into the top file display without entering it.

^Enter, ^Double click: in the tree display, might flip and enter (but see control_enter_flip option).

The idea, of course, is to easily copy/move files between the two files displays.

File Sorting

Clicking the headers sorts the files in various ways; the default is by ascending extension, but can be changed with the “sort” option of course; also see upsort, click_upsort options.

Why is the File Screen Yellow?

Because you entered a directory with “sortmax” or more files, in which case it is not automatically sorted. Or perhaps it exceeded scanmax.

The Secret Sort

So I didn’t know how to display it on the screen, but in such cases you might want to sort to whatever order it is now, which is supposed to happen when you click the left-most header button. And as a special feature, it’s now on the right-click menu (“Sort the Unsorted”) and the etc menu.

Stop sorting by clicking or double-clicking the stop button in the lower-left hand corner. If that button doesn’t appear, supposedly it all happened so quickly it wasn’t important. Your mileage may vary. Of course, if you do that, even if was sorted already, it won’t be now, and the file screen’ll probably turn yellow.

See also “scanmax”, the maximum file count to scan.

The Scan Menu

WARNING/HINT: The green Scan Levels button on the left is the safest choice, since it only scans directories to the specified level. Scanning a directory tree to its furthermost limits can sometimes be quite time-consuming. I often want to do that, so I wrote OwenShow. But sometimes we’re in a hurry....

So in the directory panel, right-clicking or pressing F8 (scan) produces the scan form which offers a few choices, including entering the selected directory (same as “Files / Enter / Double-click”). The Scan Directory button scans all the subdirectories below the selected directory; the obviously-preferable Scan Levels button will scan only down to the level specified in the spin box.

Clicking the Top Level New Only check box causes a special deluxe trouble-making scan that will only add new subdirectories it finds in the selected directory — it leaves unaltered subdirectories that are already present in the tree file. The option affects both the level and full scan. This is actually quite useful for speeding-up directory scans, particularly in the root, where it often works.

Forget Level causes OwenShow to purge the selected directories at the specified level from the tree file without attempting to actually delete anything. A level of 0 will will forget all the subdirectories. “Forget Level” uses a dangerous, innovative and time-consuming technique which can’t be stopped at the “tree changing” end of the process. Forget Directory forgets the entire selected directory tree.

In the Linux version, a sys OK check box is provided, which is normally unchecked. If you check it, OwenShow tries to frighten you into leaving it unchecked. ... I was scanning /usr/lib/qt3-gcc3.2, which would always show a “doc” subdirectory, but not the subdirectories of the “doc” subdirectory — except that if I scanned the doc subdirectory explicitly, then they’d appear. This behavior is actually more-or-less correct, since “doc” was a symlink to something. If you really want to see it there, the sensible thing is to just scan it explicitly. But you can live dangerously by checking “sys OK”. I expect something awful will happen if you encounter one of these circular links which lunatics sometimes (frequently?) use.

Other

The bottom of the scan menu contains various buttons (with their keyboard equivalents in parenthesis if such): the top two files buttons will enter the file panel; the flip version puts the top files on the bottom panel, and then enters. The Stuff files buttons “stuff” the current directory files into the top or bottom files panel without entering it (lighting it up). The flip files button reverses the top and bottom panel displays without entering. The clip selected button copies the directory name — what’s shown in the raised panel — to the clipboard. And the describe button will produce a dialog describing some stats about the selected directory.

Directories Clip-Save

The small How button changes the directories clip/save button. The available choices are “clip names”, which copies the visible directory paths to the clipboard, “clip pix”, which copies the disappointing ASCII representation of the directories to the clipboard — which I wanted one day, and found useful — and “save graphic”, which produces a dialog so you can save the the graphic image to a Windows BMP file — which apparently is all it can do in Linux, too. But Linux is so smart these days you can probably get hold of it with the Gimp or something. ... (See README.SRC for the thrilling tale of how I disciplined QDialogs.pas’s TSaveDialog so it’d work in Windows 98.)

The graphics save feature is modified by two global options:

grafinfo=0 DEFAULT. If xinfo is on, then grafinfo=0 makes it disappear in the saved image; grafinfo=1 preserves it.

grafselect=0 DEFAULT. Disappears the select color if set to 0.

Finally, “save ibm pix” will save an IBM-graphics-character version of the directories, which can also be useful — although probably not in Linux, but then again the file might find its way to Windows. “IBM graphics characters” are the symbols and primitive-line-drawing characters IBM introduced in the original PC, occupying the “left-over” 128 positions from 0x80 to 0xFF. They survive today in the Windows console — even on XP — in the mono-spaced Windows “Terminal” font, and in the Microsoft “MS Line Draw” true type font, although I don’t think that’s distributed anymore.

Also see Clipboard File Names for ways to save file names and information to clipboard/file.

OwenShow Environment Variables

Various OwenShow options support MSDOS-style environment variables, even in Linux: %PATH% for instance, might expand in various contexts to the path string. Also OwenShow has its own environment variables it’ll try to set, the default names of which are os_d (Windows drive), os_c (OwenShow code directory), os_p (OwenShow data directory path). See OwenShow_drive, OwenShow_code, OwenShow_path, add_path, add_gates_exec, and gates_sux.

Environment Variables in Exec (and elsewhere)

The exec feature “exec” and argument fields can include environment variables. There are also a limited selection of OwenShow’s own built-in “pseudo” environment variables, probably with a distinctive two underlines aka base-line rules separated by a dollar sign. As far as I know, these are not introduced into the OwenShow environment, i.e. they won’t be passed to execed programs — and of course in Windows 98 they wouldn’t be anyway.

OwenShow Pseudo Environment Variables

%_$_gnome_squote% Produces a single quote and sets a flag which the exec code uses to detect its usage; if 1 and 1 only of this silly thing is used in the arguments for an exec, then before execution, it’ll tack a single-quote on the end. This was an attempt to make gnome-terminal work in Ubuntu 7.04. And it seemed to do what I wanted, but then gnome-terminal failed with some error message I found littered about the web. ... The idea is gnome wants stuff like gnome-terminal -e ' jstar "os.ini" ' — that is, the “-e” option stupidly insists on a quoted string. ... And after all that, it turned out I was using the gnome “-e” option, which requires quotes; what I should’ve used is of course the “-x” option silly me, which doesn’t require quotes, and worked fine.

%_$_osdir% Produces OwenShow’s idea of the current directory; see usage in osex.ini. Various trailing characters in random order produce various flavors: %_$_osdir/% — with a slash — produces a slashed version of the directory. Sticking a double-quote after the thing produces a quoted directory if the directory name has spaces in it; two quotes always quotes the directory. So %_$_osdir"/" will produce an inevitably quoted, slashed directory. Finally, a trailing ! will produce the short version of the directory — in our favorite monopolistic operating system Windows, where directories with spaces still don’t work that well all the time. (Of course they don’t work so good in Linux either.)

%_$_pgmdir% Like osdir, but produces the directory OwenShow thinks it executed from.

%_$_datdir% Etc., but OwenShow’s data directory.

%_$_dt: dddd, mmmm d, yyyy% Probably produces Monday, August 1, 2005 — or whatever the date is. Use the following Borland format specifiers (Copyright 2002 Borland Software Corporation) to compose these things; although they’re a little cranky. “am” doesn’t actually work; “am/pm” is what you want. However you can always use bits and pieces in separate “%_$_dt:%” expressions, if you have time on your hands.

Borland Time Specifier Codes

c Displays the date using the format given by the ShortDateFormat global variable, followed by the time using the format given by the LongTimeFormat global variable. The time is not displayed if the date-time value indicates midnight precisely.

d Displays the day as a number without a leading zero (1-31).

dd Displays the day as a number with a leading zero (01-31).

ddd Displays the day as an abbreviation (Sun-Sat) using the strings given by the ShortDayNames global variable.

dddd Displays the day as a full name (Sunday-Saturday) using the strings given by the LongDayNames global variable.

ddddd Displays the date using the format given by the ShortDateFormat global variable.

dddddd Displays the date using the format given by the LongDateFormat global variable.

e (Windows only) Displays the year in the current period/era as a number without a leading zero (Japanese, Korean and Taiwanese locales only).

ee (Windows only) Displays the year in the current period/era as a number with a leading zero (Japanese, Korean and Taiwanese locales only).

g (Windows only) Displays the period/era as an abbreviation (Japanese and Taiwanese locales only).

gg (Windows only) Displays the period/era as a full name. (Japanese and Taiwanese locales only).

m Displays the month as a number without a leading zero (1-12). If the m specifier immediately follows an h or hh specifier, the minute rather than the month is displayed.

mm Displays the month as a number with a leading zero (01-12). If the mm specifier immediately follows an h or hh specifier, the minute rather than the month is displayed.

mmm Displays the month as an abbreviation (Jan-Dec) using the strings given by the ShortMonthNames global variable.

mmmm Displays the month as a full name (January-December) using the strings given by the LongMonthNames global variable.

yy Displays the year as a two-digit number (00-99).

yyyy Displays the year as a four-digit number (0000-9999).

h Displays the hour without a leading zero (0-23).

hh Displays the hour with a leading zero (00-23).

n Displays the minute without a leading zero (0-59).

nn Displays the minute with a leading zero (00-59).

s Displays the second without a leading zero (0-59).

ss Displays the second with a leading zero (00-59). z Displays the millisecond without a leading zero (0-999).

zzz Displays the millisecond with a leading zero (000-999).

t Displays the time using the format given by the ShortTimeFormat global variable.

tt Displays the time using the format given by the LongTimeFormat global variable.

am/pm Uses the 12-hour clock for the preceding h or hh specifier, and displays ’am’ for any hour before noon, and ’pm’ for any hour after noon. The am/pm specifier can use lower, upper, or mixed case, and the result is displayed accordingly.

a/p Uses the 12-hour clock for the preceding h or hh specifier, and displays ’a’ for any hour before noon, and ’p’ for any hour after noon. The a/p specifier can use lower, upper, or mixed case, and the result is displayed accordingly.

ampm Uses the 12-hour clock for the preceding h or hh specifier, and displays the contents of the TimeAMString global variable for any hour before noon, and the contents of the TimePMString global variable for any hour after noon.

/ Displays the date separator character given by the DateSeparator global variable.

: Displays the time separator character given by the TimeSeparator global variable.

’xx’/“xx” Characters enclosed in single or double quotes are displayed as-is, and do not affect formatting.

Options: OS.INI

OS.INI is the enormous average Windows-style options file from which OwenShow gets all its amazingly complicated options. Note that OwenShow can’t actually cope with the comments shown in this text: the format is almost always “thing=whatever” with no extraneous text. Lines beginning with “;” are probably ignored; indeed, anything that isn’t spelled right is ignored. ... Oh, the other common form is “[section]”, which is how the ini file introduces lists. Everything in the ini file has to be in some section or other. ... The DEFAULT setting is indicated for most things when appropriate.

You can edit OS.INI with the edit_ini_key, usually @I, which will invoke an appalling editor on the file if you haven’t fixed edit_ini.

OSEX.INI

OwenShow is distributed with an “OSEX.INI” file. If no os.ini file exists when OS starts-up, and OSEX.INI does, then it’ll rename OSEX.INI to OS.INI. This arrangement gets around clobbering an existing os.ini upon which my vast user base may have lavished care and sentiment.

Case Sensitive OS.INI in Linux Kylix Delphi

Yes you must use exact case in your Linux os.ini file. ... For all my magic words in here; for any things you specify. If under “[trees]” you got “LINUX_mnt=1” and there’s a section “[Linux_mnt]” — OWENSHOW WON’T FIND IT! ... Got to be “[LINUX_mnt]” — although probably only on Tuesdays. ... I tried to make all the magic words either all lower-case or all upper — but I missed some. Check the source. ... I think the key designations (F1 etc.) can be anything; I took care of that probably....

Ringers: All Section Names Are Global

If something weird seems to be happening and you’re actually certain you’ve specified everything correctly, remember that every section name (the windows.ini-style things in [brackets]) in the ini file is global. You must not, for instance, have two sections named “[empty]”; they are ambiguous. After years of toil, I forget; and again and again, it has caused me sorrow.

Datadirize, Pgmdirize: OwenShow Directories

Things marked “[DWD]” (“data working directory” probably) in these notes gets “datadirized” which means that if the file name doesn’t have a “:” or a leading slash, it’ll get the “data directory” path. Note however if it starts with a +, then it won’t get datadirized, but the + will be removed. Also the data directory is probably the program directory, unless you’ve done something. Or you installed in Vista. ... And then there’re things that might be marked [PWD] for “pgmdirized”.

Environment Variable Substitution

Things marked “[EV]” get %var%s replaced with environment variables; see Environment Variables in Exec for more random thoughts.

The OS Section

[os] The global options begin with the “[os]” section name.

Special Section Names in OS.INI

These tricky section names (as follows) can be a convenience, especially as I switch between operating systems — but you have to make sure that other section names in each section are unique. I.e., a windows version could have an [execs] “shell” referring to a “[shell]” section; but if the [LINUX:execs] also had a “shell” reference, OS’ll probably always use only one version, depending on its position in the ini file. (Of course sometimes one might want a common section.) So if things get too elaborate, use the “-i” command-line option to specify different init files.

LINUX=LINUX You can tell OS to read options from different sections — so I wouldn’t have to keep flipping ini files. The LINUX option is only compiled in the LINUX version. So in the LINUX version of OS, if such a spec is included anywhere in the [os] section, then all other main options would be read from the [LINUX:os] section; the [trees] section would instead be [LINUX:trees]; [execs] would be [LINUX:execs]; and so forth. You might have an OS.INI like

[LINUX:os]
...
[LINUX:trees]
...
;etc....
...
[os]
LINUX=LINUX

Remember these names like “LINUX” are case sensitive in Linux! Also note that the “LINUX” on the right in the example is just used to create confusion; I could’ve used “LINUX=LXOS” or whatever, and then [LXOS:os] etc. — but that would’ve been too obvious....

section=LINUX Before I figured-out the obvious LINUX hack above, I provided the exact same trick with the “section” specification, which works exactly the same way — except it is compiled in both MSWINDOWS and LINUX. It might be handy if you want to have different versions you can switch between by commenting / uncommenting a thing or two.

Clipboard Options

These determine what happens when you use the quickcopy key unless “^Insert options” is checked in the Clipboard File Names Form q.v., and are the start settings for that.

fullpath=1 DEFAULT. Full directory / file name paths; else just the name part.

trailingslash=1 DEFAULT. For directories, include a trailing slash.

short=0 DEFAULT. Windows only. If “=1”, use the 8.3 short form of the file or directory.

quotes=1 DEFAULT. Directories or file names with spaces will get quoted — which often makes them useless in Linux, but is customary in some (but by no means all) MSWINDOWS contexts.

data=0 DEFAULT. For file names, if data=1 then the “fullpath” copy includes OwenShow’s size, time, and atts opinions, in comma-delimited list with quotes.

cute=0 DEFAULT. Also for file names, if data=1 and cute=1, then OS attempts to construct a “cute” version of the data, suitable for pasting into a mono-spaced editor.

OwenShow’s Pitiful Macro Language

os_instructions= DEFAULT is empty. [DWD]. Set this to a file name to implement OwenShow’s own pathetic little macro facility. The deal is, if a file with this name is detected, OwenShow will attempt to execute instructions from it according to a simple-minded keyword scheme documented as follows, and then delete the file. (The file is also deleted at OS startup, in case one got left lingering around.)

It might be necessary to write the file in an atomic way, i.e. writing it something like “yourname.x” and then renaming it to “yourname” so the stuff in it gets executed appropriately in a lump. Then again I found it so difficult to do that in XP batch language where I was testing this, I just let it fly and it seemed to work OK. ... So the available commands are (case must match):

OwenShow Macro Commands

tree c: would attempt to execute the “tree” command (etc / tree), using the “c:” argument to search through the tree list, selecting the first item that matches for the length of the argument, if any such. If the selected tree is the current tree, nothing happens.

files_match attempts to execute “etc / fix trees” command, which needs no argument.

close OwenShow might close. This is fairly useless, since typically one would be doing this from a procedure, and OwenShow won’t close until it gets the focus back from the procedure. I wrote a wretched little “refocus” utility in Windows, but it’s unreliable.

files_scan If a files window is selected, rescan the files. This supports selective rescanning, i.e. if you just want to rescan after you’ve changed a file’s attributes, for instance.

restart Restart poor OwenShow.

notice key_name g:->xp911 puts a notice in the notice tab — down there on the lower left with the “info”, “find” tabs. “key_name” is an arbitrary identifier. If such a notice is received, then the “notices” tab appears with a highlighted tab. If there is only one current notice — only a single key_name is current — then the tab gets the caption; otherwise the tab says whatever the alert option is set to — default is empty, so it shows a blank “highlighted” tab if there are more than a single key_name current. Clicking on the silly tab will still show a pitiful list of the notices.

notice key_name erases the record associated with the key_name — i.e., the “notice” keyword with no argument. If that is the list current notice, the tab is made invisible. If the tab was selected, the “info” tab is selected.

I use the notice mechanism to “integrate” my bailing-wire ’n’ batch file network drive-mapping, but it could be used for all kinds of harmless activities.

unwarn g: suppress the root-scan warning for a tree that contains, in this example, “g:”. Some of my network drives should never be scanned in the root, particularly those where I borrow the tree from other copies of OwenShow in a vast rube goldberg-esqe scheme; others, like the Macintosh, must be scanned.

unwarn g: reverse the root-scan warning suppression.

The first two commands above allow me to implement a sequence I use often on my Windows machines, which is to goto a directory on a networked-mapped-drive, do work, then go back to the current machine on drive c:, and disconnect the network drive. I was doing an annoying 3-step dance to do the latter, consisting of the above commands, and executing my “unnet” batch file, but I replaced it with my altu.bat command in my OwenShow directory, which is in its entirety

@echo off
set nm=c:\jgo\OwenShow\Os_iN~
echo files_match >>%nm%
call unnet

and of course in os.ini

os_instructions=Os_iN~

and then an execs entry like

[execs]
altu=1

+ the appropriate corresponding entry

[altu]
exec=altu.bat
prompt=0
key=@u
directory=*

so that now I can happily just hit alt-U and have all these things done for me! Ah bliss. ... Of course, since you have the source, you can write your own totally-incompatible macro commands — see the main.pas os_instructions procedure.

Note use of “>>” when writing to the instructions file; OwenShow will delete the file when it executes the instruction, but if a batch file is executing it might execute something else that also uses the pathetic macro facility, and OwenShow might not get around to executing the instructions until the last batch file gives up.

Note: If in some way you have managed to avoid having at least one local drive (see “local=” for more info) then this example wouldn’t work.

Miscellaneous Global Options

Usually listed in most-recently contrived order.

error_clip=0 DEFAULT. When you press ^Insert, OS tries to copy the selected file/directory names. If there are none — an empty directory — it would produce this error message. But not since that conflicted with the admirable Word Web which, when you invoke it via its hot key, attempts to insert a ^Insert into the keyboard stream, and often succeeds! Invoking this error annoyinglyunder some conditions when I just happen to want to look-up a word.... I spent a long time trying to figure-out how OS was seeing a ^Insert when I was pressing the Word Web hotkey ^@W!

bewarned=1 DEFAULT. Produces a garish flashing for delete and move. A geezer option. ... If you find that annoying, you can always set it to 0....

pathpurge= DEFAULT is empty. The Pinnacle Memorial Option; if your giant video program, even after it’s uninstalled, leaves a root kit that maintains its directory names in your path, even when the directories no longer exist, pathpurge might tide you over until, as inevitably must happen, you wipe your Windows system. You might go “pathpurge=ppurge” and then

[ppurge]
pinnacle=1

and the kindly OwenShow will examine the path, and any path elements that contain “pinnacle” — case ignored in Windows — will be deleted, and the path reset. Which will subsequently affect shells from OwenShow only of course; but still it’s something. ... But then I just noticed a Roxio directory in the path on another machine — oh, Owen, it just went away when I modified the path in “control panel / system / advanced / environment variables”; I mean, I can’t expect a program’s uninstall to take care of those kind of boring details, can I?! ... Of course, the Pinnacle virus ignores what I tell control panel. ... Well it wasn’t a virus at all; I finally figured-out Pinnacle created a path statement in c:\autoexec.bat, the clever devil! ... Which, apparently, XP copies on to the end of any path statement you might try to set! ... This, after years of my cunning evasion of installation programs that modified autoexec! I used to have batch files to save it — and c:\config.sys, which they also liked to mutilate without fear or favor — so I could restore them after the installation chaos. ... But all that went away with XP! ... Or so I thought! ... And not, apparently, for Pinnacle. ... You understand, Pinnacle does this so stupid users won’t (1.) change the path and then (2.) plug-in some video gadget which won’t work, and (3.) call-up and lodge costly complaints to Pinnacle! ... Or maybe even return their video product, with which Pinnacle was included! ... So they had to do it! ... Stupidly! ... It was like a gun pointed at their head!

logexec=0 DEFAULT. ORed with the exec log to decide if the exec should be logged — the degree of logging still depends entirely upon my whim or whimsey. ... This global is unlike most of the global/execs/tree thingeys, where the global is simply the default; this one, if true, ignores the execs “log”.

helpexecute= DEFAULT is empty; firefox in Linux, although you might have to write your own “firefox” procedure to make it work. On an old Mandrake system I changed it to “mozilla” to made it work, but that was my existing procedure also. We shall see. ... Well, a Suse system brought-up the help without fear or favor; in any system where the command-line “firefox /os_program_path/helphtm/ohelpfrm.htm” works, OwenShow help might also. ... If helpexecute is blank in Windows I use the amazing ShellExecute function on the HTM file directly which will always work perfectly of course.

helphtm=helphtm\ohelpfrm.htm Windows DEFAULT; helphtm/ohelpfrm.htm for Linux of course. [PWD] OwenShow keeps its help in the “helphtm” subdirectory, like

These two htm files were created1 from ...

helpok=1 Windows DEFAULT; Linux default is 0. It controls the appearance of a little info box offering apologies and excuses for this help, assuming it never appeared. It only will do that once an OwenShow invocation, but if that gets tiring, set “helpok=1”.

little_files=0 DEFAULT. Linux only. When I finally came across a file greater than 2.1Gig — around 10/07; time or at least giant files move slowly in the computer attic — I had to renovate OwenShow’s file-size info. It was fairly costless in Windows, but in Linux I had to make an extra system call; conceivably this could slow things down — it didn’t particularly as far as I could tell, and the test machine is year 2000 vintage — but you can defeat the call by setting little_files to 1.

edit_ini= Edit OwenShow’s ini file. If not specified: (1.) if edir_exec was specified, that’s used; (2.) or set-up for emacs in Linux and notepad.exe in Windows. Or you can specify actual usable editors, like with edir_exec q.v. Note that after editing the ini file, you must restart OwenShow (etc / restart) for any changes to take effect.

edit_ini_key=@I DEFAULT. To invoke the edit_ini function.

dir_ext=0 DEFAULT. In files “EXT” sort, sort the directories as if it’s a “name” sort. If dir_ext=1, sort the way it used to before Thu 9/27/2007 2:41 pm; which was stupid because (1.) directory extensions almost never have the kind of significance file extensions do and (2.) it’s the way the directory tree is always sorted.

resize_rate=0 DEFAULT except for Windows 98, where it is 333 milliseconds. The repeat rate for the “etc resize” feature; it would get way ahead in at least one Windows 9x system when it was faster than 3 a second & etc. “0” of course is no slow-down.

keepright=1 DEFAULT. When using ^Right ^Left (resizes OwenShow), keeps the right side of OwenShow in the same position. This is the default setting for me, because I usually have OwenShow in the upper right hand corner. If you used the program — well if anyone used the program — in the left corner, you might set keepright=0 — in which case OwenShow defaults to maintaining the left margin.

autodir=1 DEFAULT. Makes OwenShow more like other file/directory browsers: when you press ENTER at a directory in the file panel, even if OwenShow hasn’t scanned that particular directory, it will automatically be entered and added to the tree. Otherwise, OwenShow asks first. In either case, the directory is only scanned to a single level, just like the average browser. To make OwenShow always ask first, set “autodir=0”.

jcopy= DEFAULT is empty. The default setting for “Skip Checkboxes”. The legal value values are “overwrite”, “newer”, “same”, which will set the copy files checkboxes to the specified value for any copy.

jcopy_file= DEFAULT is empty. One might specify this like “jcopy_file=.jcopy” and then when the file copy screen starts, it’ll try and read the file “.jcopy” in the current directory, and get its “jcopy” values from there — i.e. the file can contain the words “overwrite”, “newer”, or “same”. If you include a path in the spec, it’ll probably try to read it from there, which might be useful (?).

insert=konsole DEFAULT is empty. On the exec prompt screen, if this is set, then a button appears with whatever insert is set to. Then somewhere else, you might have a section with the specified name.

[konsole]
exec=+konsole
xop1=—vt_sz
xop2=80x20
xop3=-e

which’ll get insert into the thing like that when you click the button. ... The syntax is a la “[execs]” entries. Might be useful....

execute_error=1 DEFAULT. Produce error message for an “[execs]” execution failure.

execute_check=1 DEFAULT. 1. Try to find “[execs]” executables in the path (trying appropriate extensions in Windows). 2. Allow backout if executable not found.

execute_nil=1 DEFAULT. In Windows CreateProcess (exec.pas), always set lpApplicationName to nil. (This is just black-magic.)

layout_main=main DEFAULT. See “Etc Recall-Save Layout”.

delete_destination=1 DEFAULT; Windows only. I discovered that when I copied-over a file “sbrs.pas” onto a destination “sbrs.PAS” — i.e., difference in case — the copied name would become “sbrs.PAS”! This is something in the bowels of Windows; it does it both in W98 and XP, and the command-line copy in XP does it too! Apparently the clever squirrels over in W98 noticed, and there the command-line copy does it right. Anyway, my fix is to delete the destination file first; this is OK probably, because it’s the line of code immediately before it creates the destination file, which should obliterate it anyway. ... Oh I think I see what they were up-to; it’s something to do with the squirrely short-file-name mechanism, and the desire to preserve a short file name over operations like this. ... Well, tough titty; OwenShow’ll just whack ’em to heck, and debil take the hindermost — unless you set delete_destination=0.

startup=nil DEFAULT. [DWD] Set it to something, and OS’ll try to execute it on startup; “startup=os_startup” would refer to a section [os_startup] setup as for [execs].

alert= DEFAULT is empty. See “notice key_name”.

antiskid=0 DEFAULT. For pathological machines with insane typeahead, setting antiskid to non-zero will limit the number of repeated motion keys OwenShow will tolerate in an antiskid_time period. You want to set antiskid to a nonzero value if holding down up-arrow in the directory panel for a while and then letting it up scrolls up for hundreds of directories. ... The Linux machine on which I observed this probably had hardware problems — although OwenShow didn’t do it in the Windows version. On that machine, setting antiskid=1 and antiskid_time to the default 100 was about right. Multiples seemed to work i.e. 4 and 400, and might’ve been an improvement.

antiskid_time=100 DEFAULT. See antiskid.

stupid_yes=1 DEFAULT. When copying/moving a file, if you press “Y”, it’ll pop-up a complaint once, pointing out that if you’re trying to confirm the copy/move, you have to press alt+Y. ... Because I stupidly press “Y” and obliterate the stuff in the edit field when I’m trying in my finger-tied way to confirm the copy/move.

disablenot=0 DEFAULT. If OwenShow hangs-up, try disablenot=1. Look around in main.pas for why that might be.

reread_enable=1 DEFAULT. See “reread_enable” in [execs].

reread=6000 Windows DEFAULT; Linux 3000. See “reread” in [execs].

rereadwait=0 DEFAULT; see “rereadwait” in [execs].4

non_modaldelay=0 DEFAULT; Windows 98, 1000. see “non_modaldelay” in [execs].

execkey_delay=0 DEFAULT; the exec key “whatever” delay (see “exec=@G”); that is, when you select an executable in the file window, and @G it, this is the non_modaldelay.

linux_time=1 DEFAULT. There’s a timer in main that calls os_idle now and then in case Borland forgets — in both Linux and Windows. During a recent round of crashing I got nervous about that, so I can set it to 0 — but I’ve finally concluded it’s not a problem. Linux seems less excitable about the whole thing, and in any case it’s necessary there for various reasons.

linux_timer=500 DEFAULT. The milliseconds interval for the so-called linux timer; os_idle gets called at this rate, even when throttled.

minutesversion=0 DEFAULT. If true, the cryptic three-letter version shown on the main form caption gets an even-more cryptic two- or three-letter minutes addition, so I can tell these things apart as I fling them around my imaginary network kingdom.

LinuxExecWait=100 DEFAULT milliseconds; n/a to Windows. When executing a Linux program, OwenShow waits a bit to check if the executed program ever made it (Gpid_gone in exec.pas); this is how long it waits.

numeric_key= DEFAULT is empty. Shortcut for toggling numeric attributes; see Etc Numeric Atts.

[clips] DEFAULT is empty list; see Etc Clips.

ext_field=4 DEFAULT. When files panel is sorted by extensions, the file name is stuck in a TStringList in the form extension+filename — so that the sort will occur on the extension, and then the filename. The extension, with a leading dot, is actually lodged in a field of spaces which will be a least ext_field wide; that is, if the file is “bingo.a”, for purposes of extension sorting it will appear as “.a bingo”. (You can actually see how it appears by looking for the “fls” entry in “etc / scan timings” along with other obscure details that appear there.) Ideally, the extension sort should occur on the entire extension, and then the file name; the mechanism described only does that properly if the extension is 3 letters or less — or, up to 98 letters if you set ext_field to 99. Increasing the size of ext_field will probably slow-down the extension file sorts.

Edir Options

See Etc Update “Edir” for what these are about.

edir_name=edir.os DEFAULT. The name of the edir file.

edir_bak=bak DEFAULT. It gets backed-up to edir.bak.

edir_tag=| DEFAULT. The beginning demarker defaults to the vertical rule.

edir_midtag=| DEFAULT. Right before file name.

edir_endtag=| DEFAULT. Ending demarker.

edir_ext=1 DEFAULT. Files are sorted by extension; else name.

edir_see=0 DEFAULT. If 0, don’t show edir_name in the edir file, or the root of edir_name + “.” + edir_bak.

Note that the edir tags can be multiple characters if you are really seeking grief. I figured the vertical rule |, used for piping in both Windows and Linux, was a good choice, since you’d be nuts to put it in a file name. You can’t, in Windows; of course wild-west Linux’ll let you do anything, but it’d still be really stupid. Also note that during update, if a file name is detected using any of the tag expressions, it’ll be rejected, along with any edir_skip_chars, edir_dot, and edir_skips you specify (see following).

edir_exec= If not specified, set-up for “emacs” in Linux and “notepad.exe” in Windows. You can specify actual usable editors with an execution description, like those in “[execs]”; some settings will be overridden — i.e., a fixed argument list is set-up with edir_name, so the args, select and marked fields are ignored; or since the edir_key is used, the key parameter is ignored. Also, the reread/rereadwait parameters are ignored, since the code has its own ideas; however non_modaldelay is observed. If you have an existing [execs] specification for an editor you like, you can just use that. Setting edir_exec to “none” defeats the editing function.

edir_selectanyway=0 DEFAULT. If edir_exec fails or is specified as “none”, then the edir_name file is selected so, I suppose, it can be edited manually. But that’s usually annoying if I’m using it to make notes on files and stuff, so if after edir_exec succeeds, the selection isn’t changed. Set edir_selectanyway=1 if you always want the edir_name file to be selected.

edir_scan=both DEFAULT. Other values are “before”, “after”, and “never”. The edir feature gets its files from the file panel, so if it doesn’t scan, you may miss a file. Another value would be “2000” or something, to specify a maximum number of files — as already seen by OwenShow — it should automatically scan.

edir_skip_chars=~ DEFAULT. If a file name contains these letters, skip it. You can put more than one character, like “edir_skip_chars=~#”.

edir_dot=1 Linux DEFAULT; Widows 0. If 1, then skip .files — Linux “configuration” files with a leading dot.

edir_seedot=seedot.os DEFAULT. If “edir_dot=1”, then if the directory contains a file named “seedot.os”, it’ll see them anyway; because sometimes in Linux you want to do that in specific directories.

edir_skips= DEFAULT is empty. You can specify a section name, which can contain a list of extensions or wild-card matches that should be skipped, i.e. set “edir_skips=ediros” and then somewhere else in the ini file

[ediros]
.bak=1
.b~k=1
s*.dcu

will skip .bak and .b~k extensions, or any file that begins with “s” and ends with “.dcu”. The program takes any extension it finds in the skips section — something that begins with a “.” and doesn’t contain “?” or “*” or “[” — and adds a “*” to the beginning. Then at edir time, all the names in the list are compared to each prospective edir name, following the rules of Delphi’s “MatchesMask” function, which are:

edir_key=@R DEFAULT. You can specify a shortcut key to start this valuable function; or set it to blank to defeat the default.

Note that “edir_name”, the “_tags”, “_edit”, “_skip_chars”, “_scan”, and “_see_dot” may contain embedded environment variables in the form %var%; see OwenShow Environment Variables. They are evaluated at startup.

More Miscellaneous Options

debug=0 DEFAULT. Suppresses the display of at least the “dbg” messages in OwenShow on the middle panel — which normally don’t occur anyway; might affect some other stuff. Mostly so I don’t have to remember to get rid of things.

OwenShow_drive=os_d DEFAULT. Windows only. The name of the environment variable which will contain the lower-case drive letter of the data directory OwenShow started with. If OwenShow_drive is set to nothing — “OwenShow_drive=” then the environment variable is not set.

OwenShow_code=os_c DEFAULT. The name of the environment variable which will contain the program directory path OwenShow started with. The variable is provided with no trailing slash. If OwenShow_path is set to nothing — “OwenShow_path=” then the environment variable is not set.

OwenShow_path=os_p DEFAULT. The name of the environment variable which will contain the data directory path OwenShow started with. The variable is provided with no trailing slash. If OwenShow_path is set to nothing — “OwenShow_path=” then the environment variable is not set.

add_path= DEFAULT. Anything specified in add_path will be added-on to end of the system PATH variable. Environment variables can be used in the value, so for instance “add_path=%os_p%;%s_p%\elsecoms” would add the OwenShow data directory and a subdirectory of that directory named “elsecoms” to the path (Windows style shown). OwenShow’ll add the first “;” or “:” as required, but it’s up to you to include the correct separators if you want to add more than a single path item.

add_gates_exec=0 DEFAULT. Windows only. Set to 1 if you want the “gates_sux” (next q.v.) file to include an execution function.

gates_sux= DEFAULT is empty; Windows only. In Windows 98, the above environment variables will not appear in your batch files started from OwenShow, because command.com is a 16-bit program, and a Wrathful Deity has decreed that it is impossible for a 32-bit program to transfer environment variables to a 16-bit program in W98 — or remove them, apparently. If you fill-in gates_sux with, say, “ox.bat”, then at startup OwenShow will emit that file in the data directory, with the appropriate set statements to implement the environment variables — if they haven’t been set to empty — which your lucky batch files, in turn, can call. If “add_path” is non-empty, the file will include an appropriate path statement. Finally if add_gates_exec=1, the end of the file is like

if %1.==. goto done
%1 %2 %3 %4 %5 %6 %7 %8 %9
:done

This lets one set up your vast repertory of OwenShow [execs] so they’ll run successfully in strange W98 machines. I.e., if you had an [execs] entry like

[altx]
exec=altx.bat
key=@x

to make it work with this idiotic add_gates_exec nonsense, you might change it to

[altx]
exec=ox.bat
xop1=altx.bat
key=@x

so instead of calling “altx.bat” OwenShow would call “ox.bat altx.bat” followed by any additional arguments! You understand, ox.bat is automatically provided with the OwenShow data directory path (it’s [DWD] q.v.); and then ox.bat provides it for the stuff it executes — but the real point is to provide an enhanced path for the stuff altx.bat executes. ... Seista? It’s all so simple. ... It took me a few days to get this close; the idea is that now I can just copy a pile of files somewhere and not have to mutilate the path in autoexec.bat or something — even in Windows 98!

cumulative_time=1500 DEFAULT. How long cumulative search waits for a key stroke before giving-up.

cumulative_dir_delay=500 DEFAULT. How long cumulative search waits around tapping its foot for another key during directory searches. Set to 0 to stop that.

mkdirsearch=1 DEFAULT. Ooops! It was easy to make OwenShow show two copies of the same directory in the tree! I did this accidentally when (1.) the tree already showed the directory and (2.) the directory didn’t actually exist. I mean, these things happen. So OwenShow’d go ahead and (1.) merrily make the physical directory, and (2.) add the directory to the tree. Fixing this means searching before making a directory in the tree, which makes the process longer. If you think it’s too long — it didn’t seem so here on a fairly enormous XP machine — set mkdirsearch to 0, and just “forget” (right-click the directory, “forget”) any double directory that shows-up. ... Of course! The search gets all the directory files into the disk cache which is what’s needed for addDir thing anyway.

keyabort=0 DEFAULT. During long apparently hung-up operations — scans, describes — OwenShow might stop for a click or double-click or, in the olden days, a keypress. Setting keyabort to 1 will make it like that again. In either case, keys pressed during such activities are probably discarded. This behavior change gets rid of those annoying occasions when OwenShow thinks you want to abort a file scan that starts, for various reasons, when I return to the program from a shell and start typing wildly.

oslog= DEFAULT is blank. If set to a name, then various OS debris gets logged to the file. [DWD]. Error messages (i.e. that used the os “errorf” function) and dbg message are logged; also see fontfun and scanlog. In the log a line space followed by a line of hyphens indicates OS starting. If the oslog gets too big — above 800,000 bytes? — OS might complain at startup — at which point it sets logclose (next) to true, so you can delete the oslog if you feel like it.

logclose=0 DEFAULT. Normally the oslog is left open, and closed at OS exit. If things are so bad that doesn’t happen right, setting this to true will close the log after each log event, so it may survive OS crash.

copy_error_stop=0 DEFAULT. Sets the OwenShow state of the “stop on error” checkbox on the copy/move/delete file form — which, when set, causes a multiple-file action to abort at the first error. OwenShow’s old and default action is to keep going, and then complain about the final/most recent error only at the end of the multiple-file operation; note that the asterisked files on the files display will show which “+”ed files got acted-on without error. The default behavior is traditionally useful — that’s correct, traditionally, i.e. in OwenView and even more ancient predecessors! — for copying multiple files to floppy disks or some other limited space medium, so that it does a crude “copy what fits” before it stops, and then you change to a blank floppy and continue to copy the remaining still “+”ed files. Of course we don’t copy to floppies much anymore. ... Note the “stop on error” checkbox is only visible for multiple file operations.

currentdir=0 DEFAULT. Start with the specified directory. Command-line “-c”. Note that if the startup tree (“whichtree”) does not contain such a directory, OwenShow’ll probably complain about it and try advancing up to a parent directory until it finds one that exists.

name=OwenShow DEFAULT. So I can have more than one copy of the program running and tell them apart. It affects the caption on top of the main form.

drivelist=0 LINUX DEFAULT; WINDOWS, 1. Setting it to zero makes the usually-useless-in-Linux little list of trees disappear from the bottom panel. The “tree” (default @F10) hot key (or “etc / tree”) shows ’em anyway.

ontop=0 DEFAULT. OwenShow starts-up on my XP machine automatically — but then it would lose the focus. Setting ontop=20000 for instance would make it bring itself back and focused after 20 seconds. 0 of course does nothing.

osystem=W98 In [execs], translate “cmd.exe” to “command.com”, and “*.cmd” to “*.bat”. If “XP”, visa versa. Set it to LINUX and nothing happens. If osystem isn’t specified, in Windows OwenShow guesses between w9x/XP based on GetVersionEx dwMajorVersion — unless you specify “none”.

casesort=0 for file sorts. DEFAULT. I.e. ignore case when sorting.

scantalk=0 DEFAULT. Chat some more for directory scan errors. Look in dir.pas source.

sort=+ext DEFAULT. Set initial file sort; legal values are +name, -name, +ext, -ext, +size, -size, +date, -date, +atts, -atts.

upsort=0 DEFAULT. If set to 1, the files sort direction for keypresses (i.e. “sortname=F7”) is always up (+). I found the reverse sort not terribly useful, and really did it just because I could. ... But then ...

click_upsort=0 DEFAULT. If set to 1, click sort direction — i.e. clicking the column headings in files — is always up (+). See, I did upsort for both key and click, but then very occasionally a reverse sort would be useful: most likely, when cumulative searching for a file name, but desiring to start with the most recent file. So I changed the meaning of the “upsort” option to just do keys, which is what I use normally, and then added click_upsort — where you’re more likely to notice what you just did, because of the visual feedback that happens right after you click it. To replicate the previous “upsort=1” behavior just set upsort and click_upsort to 1.

resort=1 DEFAULT. Whenever you enter a directory, the specified sort order is reinstituted. If “resort=0”, then the last specified sort order is used in all new file sorts.

sortmax=6000 Windows DEFAULT; Linux 3000. It won’t sort at all if the number of files is >= to sortmax — unless you click one of the sorting keys on the top. Or the unlabeled little lozenge to the left of the file name/extension button; or there’s a “sort the unsorted” entry in the right-click menu. Or “etc unsort”.

scanmax=6000 Windows DEFAULT; Linux 3000. If non-zero, entering a directory will only scan that many files, and the hints and what-not will say “missing files”. The file panel will have a funny color, because it won’t get sorted either. You can then explicitly scan all the files by double-clicking the directory panel at the bottom of the file panel. The major annoyance this limitation is intended to forestall is not the time is takes to scan the files — although that’s annoying — but the mysteriously lengthy time it takes to clear the CLX listview when another set of files is scanned. For 20,000 files, it took approximately forever on a cheap XP system.

enabledelay=100 DEFAULT — if more than one panel is “lit-up” when OS regains focus after yielding to another program, enabledelay should probably be bigger. Maybe. Also used in Linux for the minimum time to display the clipform at quickcopy — or OS looses the focus. Focus focus who’s got the focus?... And if the dangerous TRICKY_FILE_SCROLL / TRICKY_3 file select mechanism is defined (i.e. in the source), then some multiple of enabledelay is used to prevent undesired file panel flip after returning from shell. If enabledelay is “too” long, then you won’t be able to select file panels with the scroll control, and/or selection won’t be properly maintained during file scrolling with scroll control. ... Translation: it’s a mumbo-jumbo timing quantity.

whichtree=c:tree Which [trees] to start with. DEFAULT is empty. If empty or no such tree, opens with the first defined tree. Except in Windows, it’ll go through the list of trees and guess the first one whose drive matches the drive OwenShow started from. See [trees]; specifically the “local” option can make OwenShow ignore whichtree.

treeifo=treeifo DEFAULT [DWD] [EV]. The name of the file in which the current tree name is stored; see “local”.

del_dir=\pq\old DEFAULT: empty. If you’re nice, OS’ll move ’em there instead of an actual delete. If you specify del_dir, program’ll complain if it starts-up and doesn’t find one. However, subsequently, if it doesn’t find the del_dir, it just removes the “don’t save” checkbox from the del dialog, and doesn’t save them. Linux behavior: The whole del_dir scheme in Windows is based on the idea that it’s as “cheap” to move files as delete them — if the save directory’s on the same drive as the to-be-deleted file. Linux doesn’t need no stinking drives, so (1.) I use code that’ll move the files instead of deleting, conceivably taking a long time, (2.) I warn you in the caption if they will be “saved to a different file system”, and (3.) checking the dont-save box under such conditions does not arouse the “you sure” dialog. (Windows has some subst or something trickery that’ll map directories from other drives, and that’ll probably behave poorly with OwenShow.) Also see “recycle”.

dont_save_ok=0 DEFAULT. If you set it to one, there’ll be no query when you click “don’t save”; OwenShow’ll just do what you want without asking. Could be good.

allowdelete=0 DEFAULT; don’t delete anything. I.e. you must add “allowdelete=1” to OS.INI to delete anything or do a number of other things.

mkdir=0 rendir=0 deletedir=0 copyfile=0 movefile=0 renamefile=0 deletefile=0 Just to make things more amusing you can also selectively enable various operations if allowdelete=0. And also there are a few constants in the source that selectively enable/disable various key functions I was agonizing-over. All DEFAULT as shown.

wreck=1 DEFAULT: during multiple file copy/move, allow suppression of repeated writeover queries.

debugscan=0 DEFAULT. Closes and opens scan file for every entry so we can find out why OS crashes not only itself but all Linux when it’s trying to scan the tree. ... As it turned-out, it was probably a Bad Linux / Delphi combination — but it’s still a good debug option.

scanlevels=1 DEFAULT. Right-clicking on a directory (or F8) provides various kinds of scanning: everything, + a level scan, which only goes down a certain depth. This is the default depth (you can alter it on the form).

spacebreak=0 DEFAULT. Set it so the cumulative search will reset at a space. When spacebreak is set, a ^space will be interpreted as a space, if you want one of those. (This is the way the sainted OwenView worked.)

ossize=ossize.ini DEFAULT. Where OS saves/restores size/position info; normally it gets set-up with the same directory as OS.INI, i.e. unless you specify a path. OS uses a separate file, incidentally, because in Kylix, writing to the main ini file clobbers all the comments, which seemed excessive. Note that if, in the directory where OwenShow got its init file, there exists, for instance, a file named “scan.dontsize”, then the scan form will not get its size recalled — but scan.dontsize will be deleted, so it only happens once. ... Whatever....

getsizes_anyway=0 DEFAULT. OwenShow normally ignores the saved size file when the version changes (this supercedes the previous “name.dontsize” file distribution mechanism). Setting getsizes_anyway=1 defeats this behavior.

formguard=1 DEFAULT. If OwenShow somehow mislays a form off the screen, the formguard mechanism (see code.pas) is supposed to stop that, or at least stick enough of the form on the screen so you can drag the rest. If that’s annoying for some reason, set formguard=0.

osfonts=osfonts.ini DEFAULT. See “font fun”; saves/restores font fixes.

fontfun=0 DEFAULT. Set it to 1 and then, after OwenShow exits, the log file includes what OwenShow thought it was doing about font fun, and perhaps why it doesn’t work (see oslog).

show_original_fonts=0 Linux DEFAULT; Windows, 1. In windows, the original fonts on the left side of the fontfun form will probably be readable. In Linux however there is no such likelihood. So we leave them as average dialog fonts, which so far have been visible in Linux. The behavior can be fiddled-with here.

fontfun17=OwenShowFonts DEFAULT. Refers to a distribution file that should show up in the program directory; it’s supposed to help fontfun figure-out fonts, and is created by the program osf; see “osf.zip” in readme.src. If fonts seemed really whacked after I introduced this system around Tue 9/13/2005, then (1.) try fontfun “Reset”, or (2.) you could set “fontfun17=” which’ll fall-back to the old fontfun system, which kind-of worked often. Note that when fontfun17 is active, there’ll be the suggestion “(ff17)” in the font fun form caption.

scanlog=false DEFAULT. Probably not in this version, but if LOG_SCAN is defined in the osops.i source, setting this value to true will include scan drivel into log (see oslog).

driveinfo=d:cd{{e:zip{{g:network DEFAULT is empty. This stuff’ll show up at file copy/move, and the idea is to leave yourself reminders of where things are, or you could copy and paste them with the usual keyboard shortcuts. The “{{” gets converted to a line-end.

hintdelay=10000 DEFAULT. Hints sometimes contain useful information in OwenShow, so it defaults to 10 seconds.

cumulativestop=alt_control DEFAULT. Legal values are “alt”, “alt_control”, “control”, or “off”. OwenShow’s cumulative search gets reset when various arrow keys and functions are used, and when the control or alt key is pressed — if cumulativestop is set to the appropriate value.

control_enter_flip=1 DEFAULT: entering a directory with the control key pressed saves whatever files are shown in the top panel into the bottom panel, discarding whatever is in the bottom panel. When set to 0, then the bottom panel gets the directory entered, while the top panel stays the same, is entered, and the directory tree repositions to show the top-panel directory.

halt=1 DEFAULT. I used to set this true for Linux, XP, and false for W98. But then I thought I saw shutdown problems in W98 — after I actually started using OwenShow there — and in any case, it seems to work there, so what the heck — although some Windows 98 system still seem to like “halt=0”. ... So it’s like

if Goptions.halt then
Halt(0);

in main Tform1.FormClose. This fixes the famous inability of XP and Linux (Red Hat 8 at any rate) to shutdown with OwenShow running. In both operating systems, OwenShow’d close, but the system wouldn’t shutdown — until you did the shutdown/logout thing again. Now they both shut down / log-out correctly. Of course it looks dangerous — and may be for all I know. You can override it by adding “halt=0” to your os.ini file.

otherdir=1 DEFAULT. OwenShow saves what’s in the lower panel, and might restore it, unless otherdir=0, in which case it’ll just put the stuff that winds-up in the upper panel.

dir_fix=1 DEFAULT. An attempt to speed-up the OS all-graphics directory display. Set to a non-zero millisecond value, and the directory updates will only occur after the specified delay and no applicable directory keypress (up/down, pgup/down) — but in any case, update always occurs after a third of the directory is traversed. Setting dir_fix to 1 selects the default value: options.pas dir_fix_default, maybe 150 milliseconds. The down-side is gobbledygook showing up momentarily in the directory display as you zip about. On one slow Linux machine, dir_fix=1 made things worse.

dir_fix_more=0 DEFAULT. Set it to 1 on faster machines maybe to speed-up directory movement.

dir_fix_scroll=0 DEFAULT, for XP, Linux; for w9x, 2. So, directory scrolling (^Z, ^W) shouldn’t run ahead; it shouldn’t even type ahead. On most machines I tested, this worked OK, but with at least one combinations of slowness/fast typeahead and moon-phase and Windows 98, the typeahead would get annoyingly ahead of the scrolling. Setting dir_fix_scroll to practically any value above 0 seemed to fix it; I suspect the system call somehow disrupts the typeahead or something....

dir_page=80 DEFAULT. The percentage of the directory screen that a PgUp/PgDn will move; another way to try and deal with the slowness of OS — i.e. set it to 30 and use it as a quick way to get around the directories but not too far.

Note that another way to move around the directory tree is with ^J the “cuteify” key. As opposed to scrolling, which can be slow.

throttle_wait=1000 DEFAULT. See “The Story of Throttling”. You can set the throttle period.

nop=nop DEFAULT; Linux only [DWD]. See “nop_name” in exec.pas for what I do with this; you would never change it. Note there was once a NOP.C source in the standard OwenShow Linux release; version qhj obsoleted the need for the nop program; see “Raiter’s True Program” in Readme.src.

dirmark=1 DEFAULT. One day I couldn’t remember why you can’t mark directories in the OwenShow file view — although it’s slowly coming back to me — so I made it do that, unless dirmark=0. But “mark all” still won’t mark directories.

clickscan=0 DEFAULT. Normally you double-click on the status thing at the bottom of the file panel to re-scan the files (+ key file_rescan:Insert does it, or the sequence ESC Enter does it for the top panel). If clickscan=1, only one click is required — but only if the file panel is already selected, so it doesn’t rescan just because you clicked on it to select the panel.

checkspeed=0 DEFAULT. If 0, OS tries to concoct a suitable number based on mindless heuristics whenever it scans some directories. ... If non-zero, as the number gets smaller, OS checks the user more often. OS converts the checkspeed into a mask to use it. 8191 is of course $1FFF, but whatever number is used, OS converts it to a mask with all bits set after the first set bit. You can make a slower machine more responsive by setting checkspeed=0 or 255 or something, but then it’ll still be even slower — i.e., as it checks more often. If responsiveness is that bad, the machine is probably too slow for OwenShow. Faster machines might benefit from setting checkspeed to 0 or 16000 or something. Discussion: Around Wed 5/26/04 3:13 pm, I destroyed the embarrassingly-baroque user check system. The idea was, when OS goes off mumbling to itself like for instance during long directory scans, to give the user a chance to abort. The problem is, if you check too often, whatever you’re doing takes much longer; and if you check too infrequently, can’t abort (“program unresponsive”). I have tried to fix this in many ways; I started-off by using a timer mechanism to just poll the user “frequently-enough”, which would’ve worked great, except calling the timer mechanism (in the operating system somewhere) was quite time-consuming itself! Various other trickery followed, until today I just made all the code that did this kind of thing use a simple mask against a counter, and if the ((counter & mask)==0), then do the check. The mask is formed with the checkspeed value. If you think OS isn’t checking often enough, try making it a smaller number. As noted, you have to divide or multiply by two before you’ll see any effect. Set it to 0 to let OS guess (“etc. / scan timings, info, etc.” shows the value of checkspeed). ... Then around 7/17/08 I decided the automatically-figured checkspeed should be calculated, at least once, right before a directory scan — I was having problems when OwenShow would calculate erroneously because it was starting-up with the rest of mammoth Windows. But then I would do something like launch my first scan on — gasp! — a CD, which Windows is sometimes very picky about, and likes to hang-up for half an hour inspecting the bytes very very carefully. ... Then at Monday, December 1, 2008 5:19 pm I’m having it calculate the delay for every scan, which is not annoying on today’s fast Walmart $300 machines; if it’s noticeable, then set the number to something.....

checkmod=0 DEFAULT (-2 for Windows 98). Set it to 1 to make checking occur twice as much; 2, four times as much. -1, twice as slow. Etc. ... For those of us who don’t want to puzzle over the hex number in “etc / scan timings, info etc.”, this is a harmless way to modify the check strategy. In one old Windows 98 system, “-6” seemed helpful, although I’m not really clear why....

dontfixcheck=0 DEFAULT. Then around Tue 1/04/2005 I was spending half an hour F9 “describing” the temporary internet files on my esteemed associate’s old machine, and I figured there should be some mechanism to automatically make the thing smaller as time passed — that is, after it decides its time to check, it makes a relatively cheap investigation of how long it’s been since the last time it checked, and if too long, cuts the check mask in half — proportionally, more-or-less: if it’s been four times as long as it should be, then the check mask is cut in quarters, etc. .... If you don’t want this to happen, put a “dontfixcheck=1” in here.

fixtoolong=2500 DEFAULT. When it checks if it’s been “too long” (as per implausible excuses in dontfixcheck), this is “too long” in milliseconds.

visited_delete_level=5 DEFAULT. Sets what the “Etc visited” delete level delete starts at.

zerotime=0 DEFAULT. If you’re using a variable-spaced font for the files display, setting “zerotime=1” will make the date/time display with a leading 0 instead of a leading space, which improves things a little.

dont_kill_offsets=0 DEFAULT. I will delete an offsets file (i.e. “*.ofs”) dated before 7/20/2004 5:02 pm, because I changed the format of the file (see “parent_sibling” in dir.pas). Set this option to 1 to suppress that behavior (because for instance your clock is broken and OwenShow continues to delete the file unnecessarily).

dbytes=1 DEFAULT. Feverish innovations around 7/04 resulted in the copy code adopting the novel approach of checking first if there was enough room on the destination. But when this doesn’t work, set dbytes (“Destination BYTES”) to 0.

rename*?=0 DEFAULT. LINUX only. I went through some effort to make OwenShow capable of renaming files to names containing stars and question marks, i.e. in Linux — but it’s so stupid, you shouldn’t do it. ... And how ’bout that option name? ... So fitting for the topic, punctuation marks in the option name. ... See Weird Linux Names for additional random thoughts.

inversionmessage=0 DEFAULT. See “INVERSION” in dir.pas source; by now (Tue 6/14/2005) most of the comments and junk have been cleared-out, but it still rears its ugly head now and then. To see debug messages (in red print between the file panels) about this bug, set inversionmessage to 1.

grafinfo=0 DEFAULT. grafselect=0 DEFAULT. Affects how a graphics image of the directory is saved; see “The Scan Menu”.

tricky_inhibit_timer=600 DEFAULT milliseconds. See “set_tricky” in main.pas. (I.e., incomprehensible mumbo-jumbo.)

update_delay=50 DEFAULT milliseconds. Shouldn’t ever be larger than tricky_inhibit_timer.

dont_uncolor=0 DEFAULT Windows only. If you don’t want OwenShow to indicate it’s unselected by coloring its file and/or directory window to the unselect color, set to 1. ... Just noise really....

Key Configuration

First of all, the key customizations may not work. OS.INI has numerous key customizations, some of which probably don’t work because of mysteries I discovered as I went along. Basically, if I check the key in os_keys (main.pas source) or its derivatives, using the program’s “is_key” function, then it works however it was specified. But there are various confusing exceptions. Sorry....

So in an OS.INI key customization, a leading @ (alt), ^ (control), | (vertical-rule means shift) might modify key. OwenShow also knows the names F1 to F12, and “Insert”. If you want to use a weird key — alt-atsign or something — use a \ to close the modifier, i.e.: “@\@” specifies “alt”, then the “\” specifies the rest of the thing is just a key.

Normal letter keys are not usually used in OwenShow configuration, but there are always exceptions, and if the key is a shift, you must include the shift. For instance, the default “literal” is |* — the asterisk. Or the letter “A”, if you should be so foolish, should be “|A”. I’m not sure what a lower-case “a” would be....

To “empty” a particular key definition, go like “feature=empty” i.e. use the word “empty”. This is useful if you don’t like some of my default assignments and want to use the key for something else and don’t care about the function already using it (because it’s in a menu, for instance).

Note that these definitions, aside from endless bugs in my code and Borland weirdness, require some thought. For instance, the flip key defaults to @=, but I always think of it as @+; I could’ve incorporated such delusions into the code, but it’d just make it more confusing. That is, when you press the ’@’ key and the “plus” key, you’re actually pressing the equals key, and you might as well admit it. At least here on Long Island, American keyboard, Thu 3/18/04 6:30 pm.

But then again, “+/=” is a special code meaning, obviously, either equals or plus (see markon). ... Finally, a nice set of keys I never got around to using for various functions was control-0 through control-9.

Main Menu Shortcuts (things across the top)

copy=f1 DEFAULT.

delete=f2 DEFAULT.

move=f3 DEFAULT. OS only moves files; no directory move.

create=f3 DEFAULT. Move/create are allowed to have the same key, because they don’t occur at the same time (i.e. create directory, move file).

rename=f4 DEFAULT. Did you know that many OwenShow default function key assignments are vaguely inherited from the PC Magazine “D” and “CO” utilties?

scan=F8 DEFAULT. Our raison d’etre; scan directories to show in the tree display.

describe=|F9 DEFAULT. I.e. describe a directory — byte, file count etc. — or a file. I added the latter because occasionally I want to know a ridiculously-lengthy file name without adjusting the size of the OwenShow form. And see “directory number” for what that means in the describe screen.

exec=@G DEFAULT. When the global exec key is used, it shoots you into the exec menu (see [execs]) and the special arguments execution — i.e., execute the selection — but provides a backout where you can edit it or cancel before actually doing something.

execform=|@G DEFAULT. This is how you invoke the normal execform.

mark=|F7 DEFAULT.

etc=|F8 DEFAULT.

help=@H DEFAULT.

Other Keys

clips_key=empty DEFAULT is empty; see “Etc Clips”.

recall_main_layout=@F8. See “Etc Main Layout Recall”.

recall_save_layout=@F9. See “Etc Recall-Save Layout”.

exact=|\| DEFAULT; that’s “shift” “vertical-rule”. Cycles cumulative search from “Contains” to “Exact” to “Starts with”. Note that whatever this key is specced-to, it will not be available for file names that can be found with searches, unless the literal key (next) is used.

literal=|* DEFAULT. Used in cumulative search to enter forbidden characters. Note that @ and ^ shouldn’t be used with literal, since those keys reset the search mechanism (although see cumulativestop). If you’re searching for a file with *s in it, use * itself to enter a *.

nextkey=; DEFAULT. To find the next thing. Note that, like literal, the key shouldn’t have @ or ^ (although see cumulativestop).

markon=+/= Mark file. DEFAULT. “+/=” is a special code meaning either equals or plus will mark a file.

markoff=- Turn off mark. DEFAULT. Note files right-click menu also has mark on/off.

markall=f5 DEFAULT. “+” all files in a directory.

unmarkall=f6 DEFAULT.

markstars=@f5 DEFAULT; Linux DEFAULT is |F5. Mark *ed files; they get *ed after they’re copied, etc.

unmarkstars=empty DEFAULT. See “The Darkness of Alt-F6” for a pitiful story.

marktop=empty DEFAULT is no key assignment. ... markbottom=empty DEFAULT is no key assignment. ... Incidentally, the idea of marktop/markbottom (available through “mark” menu, or files-panel right-click) is you clear everything (unmarkall), sort some way or other, size or time seem likeliest, and then use one of these to delete/move a bunch of files.

flip=@= DEFAULT. See “Flipping”. ... Even ’though it says “@=” I think of it as Alt-Plus.

stuff=@- DEFAULT. See “Flipping”.

stufftop=^- DEFAULT. See “Flipping”.

gotodir=ESC DEFAULT. Go back to dir from files panel.

tree=@F10 DEFAULT. In the etc. menu; provides quick access to the tree list by taking the first letter typed and selecting the tree that matches. And of course like the sacred MSDOS OwenView. This is more likely in Windows i.e. for selecting another drive.

fixfiles=@F Windows DEFAULT; Linux DEFAULT is empty. In Windows, it’s useful when I change trees, i.e. typically DOS drives. The sainted OwenView was too stupid to show files and directories at the same time, so you were always at a single DOS drive. OwenShow can be ambiguous; one file panel can be in one tree/drive, and the other in a different one — which of course I want so I can copy files between them. And typically, I should note, the other drive is a mapped network drive which I will soon unmap. So the fixfiles key — also available as the “Etc” menu “Fix tree-files to local”. The feature will fix the tree and all files display to be local drives (see “local=”) except if you have managed to have no local drives at all, then it will make all files display corresond to the current tree.

sortname=F7 DEFAULT. sortext=F8 DEFAULT. sortsize=F9 DEFAULT. sortdate=F10 DEFAULT. Like clicking on the associated column header in the files display.

sortnot=^F7 DEFAULT. Unsorted.

quickcopy=^Insert DEFAULT. Like the “Clipboard File Names” feature, but (1.) always copies to the clipboard and (2.) no confirmation, (3.) the “style” is usually set to the global fullpath, trailingslash, and short setting unless the “Clipboard File Names” “^Insert options” is checked. (Note that ^Insert might still work as “copy” in text fields.)

super_quickcopy=@Insert DEFAULT. Like quickcopy, except it produces a little menu allowing selection of quotes/slash behavior; the downside is you have to do two keystrokes.

cuteify=^J DEFAULT. Make the directory or file selection “cute” — i.e. so it’s not right next to the top or bottom.

file_rescan=Insert DEFAULT. See discussion around clickscan.

[skip]
bak=1
b~k=1
ddp=1
dcu=1

The cumulative search in the file view will skip the specified extensions unless you specify them deliberately. DEFAULT: none.

bigvisit=empty DEFAULT. Shortcut to the “Etc Visited Directories” feature.

Trees Section Global Variables

In the [trees] section, various MSDOS drive trees are specified; and maybe you can think of something useful in Linux; I couldn’t, except for test during development.

retry_wait=2000 DEFAULT for Windows 98; XP default is -1; non-existent in Linux. Sets the default for the same-named tree parameter.

alwayshome=2 DEFAULT. A global which sets the default value for the same-named tree parameter.

xinfo=1 DEFAULT Windows; Linux DEFAULT is 0. Sets the default for the tree xinfo setting. In Windows, makes the drive letter appear in the tree display, which I find very helpful in my little attic kingdom, as I change from one to another very similar network-mapped drive. The whole multiple-tree thing makes less sense in Linux, but if you enable it — or, in Windows, if xinfo is >1 — then the feature shows the first xinfo letters of the tree name; also see xinfo_skip.

xinfo_skip=0 DEFAULT. Just to tinker needlessly, you can specify how many characters to skip at the beginning, if xinfo specifies using the tree name. I mean I have no idea why one would do this, i.e. presumably in Linux. I had multiple trees during development as a convenience, but I can imagine, assuming OwenShow becomes a standard tool across the universe, situations where one wanted, say, a /mnt/windows tree separate from the main / tree. And the xinfo nonsense provides a way to denote which tree you think you’re at. Or something. This is the default value for the tree xinfo_skip, and it can be overridden there. If xinfo for a tree is less than 2, then xinfo_skip is set to 0.

xinfo_big=1 DEFAULT Windows; Linux DEFAULT is 0. Sets the default for the tree xinfo_big attribute. When xinfo_big is >0, the xinfo message in the tree section — normally the driver letter in Windows — is made larger and uglier — gets a dark red color. Otherwise, it is rendered in “Teal” which is a kind of blue I’d guess. When info_big is between 1 and 9, xinfo is set to a font height of 120. However you can set it to something else by specifying an xinfo_big of 11 or greater.

Xinfo Color and Fonts

When xinfo is greater than 1 and xinfo_big=0, then the xinfo message is shown in a font with a height of 35 and the color Teal. If xinfo=1, it’s Teal and a 60 height. If 1 <= xinfo_big <= 9, the color is a dark red, and the height is 120. For xinfo_big>=10, the color is the same dark red, and the height is xinfo_big.

Trees Section

The “[trees]” section is a list of trees that OwenShow can switch to, with entries in the list like

[trees]
c:tree=1

where the “=1” denotes a section somewhere else — i.e., the line refers to a “[c:tree]” section somewhere in the ini file. (These entries do not partake of the LINUX and special section mechanisms described elsewhere.)

Default Tree Sections

If a line in [trees] doesn’t have a corresponding tree section, then OwenShow makes one up. The first essential item is the filename root, used to make-up the 3 or four files for each tree used by OwenShow. This will be concocted from the name, with punctuation converted to a single BLR (“_”). ... In Windows, the drive is taken as the lower-case version of the first letter of the name.

It is easy to bolix-up these things; you could for instance cleverly use two names with different punctuation and produce two trees with the same-named files. Go ahead if you feel like it! The idea was to provide an EZ way to get a bunch of drives up in Windows, as provided in the osex.ini/os.ini default ini file.

Tree Section Entries

Entries in a tree section are described as follows — i.e., the sections described under the [trees] heading. An example Windows tree is depicted here; in Linux I so far have used more than a single tree only for test. ... Assuming the section “[c:tree]” then, various fields beneath could be as follows.

name= [EV] DEFAULT is the section name (i.e. in this example “[c:tree]”). You can change it to something else, in particular you can use environment variables, which is useful in Windows if you want OwenShow to “see” the environment designation of a drive, i.e. “name=%XPCD%:cd”; and in Windows you might continue with “drive=%XPCD%”.

local=0 [EV] DEFAULT — except if no local is specified in the ini file (either =0 or =1), then the whichtree tree will get its “local=1” automatically. Normally OwenShow will startup using the tree it was using at close, so long as the tree is a local tree. This is intended to make it possible to use Windows systems with more than one hard drive, although who knows where it will wind-up. ... So if you have a drive c: and d:, you would mark the section of each with “local=1”, and then that tree will be saved in the “treeifo” file and used to decide which tree to start with when OwenShow starts again.

The local feature also affects the “fixfiles” feature. Unless you have specifically contrived os.ini so there are no local drives; in that case, the “Fix tree/files to local” entry in the “Etc” menu changes to “Make files match trees”, and such will be the effect of the feature.

autodir= DEFAULT is global autodir setting.

recycle=0 Windows DEFAULT; nonexistent in Linux. Don’t set in Windows 98! — it takes one-half second at least to delete each file! Sends deleted files on the tree to the recycle bin. If there is no recycle bin, just deletes them, probably. I couldn’t figure-out how to tell programmatically if there was a recycle bin, so this way you decide, and for that matter who knows how well it works anyway? See also “del_dir=” for the alternate and almost undoubtedly preferable homegrown mechanism. ... Actually, if OS thinks the computer is an XP system, recycle’ll be set to 1 in the “naked OwenShow” case when Windows OwenShow is started without os.ini — this probably means in XP, if no del_dir, then OwenShow’ll recycle....

file=c_tree [DWD] [EV]. The root for the name we save it in. If not present, I think OwenShow attempts to derive it from the tree name. This week, the tree will be saved in these four files:

The above two files are kind of interesting in their own right, and might be useful for one thing or another. For instance, in the 16-bit OwenShow, the directory file (c_tree.pth here) is used by a command-line utility I wrote to change to directories based on guesses.

[info]
count=11782
homedir=c:\gregor\OwenShow\
otherdir=c:\pq\t
key=5212988

where “count” is the directory count, and “key” is the parent/sibling optimization key.

drive=c WINDOWS only. DEFAULT. [EV]. Actually the drive is initialized to the first character of the section name specified in the [trees] section; a “drive” entry in the section overrides that.

otherdir=c:\pq\t [EV] The lower panel might show these files. Actually I don’t believe there are any conditions under which this’ll happen; maybe the first time a newer version of OwenShow is used after an older, non-otherdir version. So it’s pointless. Might be handy someday.

homedir=c:\gregor\OwenShow\ [EV] It might go there to start. But normally ...

alwayshome=Global alwayshome. [EV] I.e., the DEFAULT — which you get if you specify nothing — is the value of the global alwayshome option which itself defaults to 2. The home directory is where you go with the home key, and where OwenShow starts-up the next time. If alwayshome=1, then the home directory is the last home directory set with the ^home key, which is often saved into the tree.info file. If 0, then the homedir specification rules when OwenShow starts; ^home’ll change it for the session, but it’ll revert. “alwayshome=2” works like “1”, except OS’ll start-up in the exit file-view directory — which is more-or-less the way the sainted OwenView does it.

rootwarning=1 DEFAULT. Require confirmation for scan of root. In DOS or who knows where else, you might set the CD or floppy tree rootwarning to 0.

retry_wait= DEFAULT is the global retry_wait. Windows only. When you try to access a drive (tree), it’ll cycle around at this millisecond rate, retrying. The revered OwenView used to do this quite nicely; of course I hadn’t tried that particular feature out on XP, and apparently the new modern soon-to-be-obsolete operating system defeats it even more decisively than OwenShow. ... Setting retry_wait to 0 will restore the behavior as of yore — which is pretty bad, but usually you can manage to cancel it while the operating system keeps popping-up dialogs frantically. ... Setting retry_wait to -1 will end any OwenShow dialog box when trying to access a new tree; it’ll just fail. This is appropriate for XP when it’s decided it wants to do its own totally-modal dialog. For retry_wait=-1, OwenShow’ll flash something black and red for a short while if the error happened quickly-enough, just to let you know something happened.

xinfo= DEFAULT is the global xinfo.

xinfo_skip= DEFAULT is the global xinfo_skip.

xinfo_big= DEFAULT is the global xinfo_big.

exclude=c:exclude DEFAULT is empty. The name of an optional exclude section; somewhere else in the file, for this example, might appear

[c:exclude]
c:\System Volume Information=-1

where you could place one or more directories to exclude in a tree scan in an exclude section. “c:exclude” must be referenced in the tree section like “exclude=c:exclude”. The number on the right side of the equals sign indicates how the exclude directory should be treated: -1 means it should be skipped entirely; 0 means the directory will appear in a scan of the parent directory, but no subdirectories. 1 means a single level of subdirectories will appear. This more-or-less corresponds to the levels on the scan form. (A number lower than -1 will cause the entry to be ignored.) The reason I wrote this is so, in Linux, I can exclude the “mnt” like “/mnt=1”. So I don’t scan my entire samba-mounted XP system when I scan the system.

Explicit Scan Ignores Exclude

Note that if you scan a directory explicitly — put the tree cursor directory over “System Volume Information” for instance, and go F8 and click “Scan Directory” — the exclude instructions are probably ignored; because it is assumed you want to see the subdirectories in such a case.

The Execs Section: OwenShow Execution

Below the “[execs]” section heading can be a list of names of possible OwenShow executables — programs you can execute from within OwenShow with a specified shortcut-key or by finding them in the exec menu. ... The things you can execute from OS are specified in the [execs] section, where each executable name is listed; then, like the [trees], the listed names each has its own [section]. The plan is that you specify batch or exe files which will then be invoked with file and/or directory names on the command-line.

In each section, a keyboard short cut can be defined, and numerous other parameters. You can execute these things through the “Exec” menu, which produces a list and which is also sometimes helpful in figuring out what you think you’re doing. The first item on the exec menu always includes all the marked arguments or the selection, so you can shoot-off executables from the file display randomly.

As a special treat, some OwenShow environment variables can be used in execs. Also see Windows 98 Environment Errors for nonsense about that.

[execs]
jgodir=1

Each “=1” entry below the [execs] section heading denotes a section somewhere else in the os.ini file. Note that the “1” can be represented by an environment variable, i.e. “jgodir=%jgod%” or something. Also, the convention is that any value for the right side of the assignment will enable the exec, except blank or “0”. Also note that if two [execs] specification have the same shortcut key (see “key=”), the one first in the list will get selected for the key. So you could leave “jgod” undefined, for instance, so that that a shortcut key might do one thing, or define it, so the key would do “jgodir”. ... So, for an example “jgodir” executable, there might be a

[jgodir]

section, beneath which you can have an endless cornucopia of options, as follows.

exec=jgodir.exe [DWD]. But if a leading +, no [DWD] — i.e. “exec=+cmd.exe” would execute “cmd.exe” without a path. And if you specify a full-path — i.e. “c:\elsecoms\jgodir.exe” — then no DWD. ... If you specify something beginning with *, then the exec will be blank. This is handy for filling-in an executable name, I guess. When the exec is blank in this way, the exec prompt screen behaves differently: the focus is on the memo control, so you can type in the desired exec, and pressing enter will start the execution — normally you’d have to click Yes or do @Y. Also see OwenShow Environment Variables.

options=jgodir:ops You can’t execute “jgodir /u” because there is no such program. As I found out after how many years? ... Anyway, this is the new improved way you add options — and particularly, in Linux KDE, how I finally managed to execute the jstar (“joe”) editor (it needed “konsole -e jstar”; see osex.ini/os.ini that comes with the distribution). The name specified by “options” refers to yet another section, same-named, like

[jgodir:ops]
/u=1

with as many separate options as you like. Each option will be added to the execution in the order they are listed so long as they end with “=1”; semi-colon comments are apparently permissible, and the option is apparently trimmed before digestion, so

[jgodir:ops]
/u     =1
oth_op =1

is ok. The “=1” can actually be useful, as a way of temporarily removing an option for test, although just sticking in a “;” works just as well — but in any case, Delphi wants them there.

Old XOPs Style

For one or two options, there is an old “xop” syntax where you just include “xop1=/u” in the “[jgodir]” section directly, is easier (note that if the “options=” style is used, any xops in the exec section are ignored). xop0 to xop20 are available, and will be added in order before the files and/or directory arguments. Missing xops — i.e. if you have xop1 and xop4 but no 2 and 3 — should work OK. Also see OwenShow Environment Variables.

Note that options are affected by the “quotes=” specification for the exec.

xin=all DEFAULT. Or “dir” or “files” to restrict execution to the tree or files panel respectively.

prompt=1 Put up a prompt and let it be edited / canceled. DEFAULT. Note that if the exec screen is used to select an execution, then the prompt always occurs. I.e. the prompt option only affects shortcut-key execution (see “key”). Except if ...

prompt=no Defeats prompting even if exec screen — so I can put things up there I just use occasionally and don’t deserve a shortcut key, but still don’t want the stupid prompt. Like

[editos]
exec=C:\pgmjunk\tsepro\g32.exe
args=0
prompt=no
xop1=%_$_datdir/%os.ini

edits the OwenShow ini file without prompting when I double-click it in the list. (Of course then I made this into the built-in etc feature.)

short=0 Use old dos short names. DEFAULT is false. Of course meaningless in Linux.

quotes=1 Quote if spaces in arguments or options. DEFAULT.

fullpath=0 Make file names full path. DEFAULT is off.

argfile=bingo [DWD]. DEFAULT is empty. Instead of passing the executable and arguments, create a file and pass the file name to the executable. Probably doesn’t work, but I think I tried it out a few weeks ago Tue 8/12/03 2:42 pm.

modal=0 DEFAULT. You can specify that OwenShow should wait for your executable to finish: OwenShow minimizes, restoring itself when the process exits. However, you can restore OwenShow prematurely by clicking on it somewhere somehow — i.e. in both Windows and at least a few KDE desktops, there’s a little icon on a panel at the bottom you can click to bring the thing back to life. When you do that, OwenShow assumes you got bored with the modal thing. I did it this way because it’s so terribly clever, and because the way I was doing it before was dangerous and frightening, frequently leaving OwenShow in a sort-of shattered wrecked state, with windows slowly fading in and out, keys useless.

reread_enable= DEFAULT: global reread_enable. All the following nonsense about rereading won’t happen unless (1.) reread_enable is 1 or (2.) the “other_section” elaboration is adopted. reread_enable is an easy way to turn-off the reread feature which I have sadly concluded is more trouble than it’s worth, mostly. ... At least in Windows XP, where it may (?) lead to random 20-second hangs-ups.

reread= DEFAULT: global reread. If modal, then after execution, reread file window if the filecount in that window is less than or equal to the specified value. This of course is the filecount before you execed, but still prevents annoying endless scan/sorts in giant directories. If non-modal, the reread will occur the next time OwenShow gets the focus. “reread=1” will reread the directory regardless of the number of files.

In Windows, “reread=other_section” will cause the reread value to be derived from the specified section based on the current tree name, i.e. like

[other_section]
a:floppy=12
g:network=1000

The entries in the section are the precise names of trees in “[trees]”). This section would specify rereads on floppy directories with 12 or fewer files in them, and network mapped directories on drive g: with 1000 or fewer files. To specify a value other than the default for other trees, the keyword “otherwise=5000” can be used in the section. I did this largely so large windows network directories wouldn’t reread under annoying conditions.

In Linux, the OwenShow “tree” feature is not particularly useful, so there the reread section should contain a list of the starting-part of directories, i.e.

[other_section]
/mnt/=1000

which would supposedly set reread value for files in directories “/mnt/*” to 1000.

rereadwait=0 DEFAULT: global rereadwait. The non-modal version of reread uses the rereadwait value to decide when to start checking for OwenShow activation. If the reread happens while the other program is still running, then making this value higher probably helps; on the other hand, when it’s too high, OwenShow will mysteriously steal the focus back. ... If when returning to OwenShow you have to wait before OwenShow wakes up, then you might set rereadwait lower. ... Note that if rereading the files makes too much trouble, just set reread=0 (or see readread_enable). ... Also see LinuxExecWait.

non_modaldelay= DEFAULT: global non_modaldelay. Ignored for modal execs. Waits that long after the exec.

key=@j DEFAULT: None. Execute, for example, with alt-J. Key must be control (^) or alt (@) — or FileEnter, in which case the specified activity will only occur in the file directory, and only for files (for directories in file display, enter-directory behavior overrides).

args=1 DEFAULT; include arguments. If there are no marked files, uses selected file, or directory. args=0 means pass no arguments. Unless select or marked is set.

select=0 DEFAULT. If 1, then always use the selected file and ignore marked files, regardless of “args” setting.

marked=0 DEFAULT. If 1, then don’t use selected arguments, but only use marked arguments, if any — and ignore “args”.

doubleclick=0 DEFAULT. One of your execs can receive the exalted doubleclick parameter, which causes the exec to get activated when the user double-clicks on a file (actually OS’ll just pick the first one in the [execs] list). Of course the smart thing to do is make that a menu or something with appropriately powerful choices. I connected it to my ancient “ALL.BAT” program which executes things depending on the file-type — i.e. like Windows “start”, except less stupid. ... The doubleclick attribute shows-up in the exec form display as a trailing “dclick”; might have to make the left column a little wider to see it. ...
Doubleclick won’t happen in the tree display or on a directory in the files display, where double-clicking enters the directory.

directory= DEFAULT is the empty string. If not empty, then instead of changing to the current directory before execution, the specified directory is used. If the directory “*” is specified, then changes to the OwenShow data directory (i.e., where OS.INI hangs-out) before execution. See the “altu” example; in that case, my clever hack wouldn’t work when I was in an illegal XP directory on a mapped network drive (i.e. one for which I didn’t have permissions) presumably because the directory passed to Windows wasn’t permitted (duh); “directory=*” fixed it.

invisible=0 DEFAULT. “invisible=1” will keep the item off the exec menu — which might be appropriate for a keyboard shortcut you didn’t want to see in the exec list.

log=0 DEFAULT. If set to 1, might log (see “oslog=”) some info about the exec when it occurs, to see why it doesn’t work. At the moment, it just logs the current directory, because my @U batch file occasionally just blips, like there’s no working directory. It’s so easy!... See also logexec....

Favorite Directories

OwenShow can be given names of files which contain lists of “favorite” paths that will be stuck into the visited dirs panel at startup — and kept, i.e. they don’t get deleted as easily; such directories are denoted with leading underlines or something. ... Files containing such paths can be specified on the command-line with the “-v” option (“-vafile -vanother”), and/or listed in the “[favorites]” os.ini section like

[favorites]
afile=1
another=0

The “=0” would defeat the use of the file named “another”. Within these files, empty lines and lines beginning with “;” are discarded; all others are stuffed into the visited directories panel.

The visited directories file names are Datadirized.

If a directory name in a favorites file has the form

d:\Program Files\ZiLOG\ZDSII_eZ80Acclaim!_4.9.1\|d:dtree

i.e., with a vertical rule followed by a tree name, then that tree will be used — if it exists. Note that these things tend to be stuffed-in no matter what errors are encountered; it doesn’t complain if a directory or tree doesn’t exist.

Command-Line Options

OS uses the option flag “/” (MSDOS-style) or “-” (LINUX-style) interchangeably.

There are various options:

1. “os -dApath” Start OS using Apath as the data directory. See OwenShow Data and DATADIRIZE for more info.

2. “os -ios2.ini” Start OS with os2.ini as the ini file.

3. “os -c” Start showing the current directory (instead of the home directory or something).

4. “os -f” Sets “Goptions.disablenot” true; also os.ini “disablenot=1”.

5. “os -vAFileName” See Favorite Directories.

6. “/r” Does a recall main layout at startup (see Recall/Save).

Random OwenShow Topics

Over the weary years, OwenShow has inspired many perfectly-forgettable meditations, which follow.

The Story of Throttling: A Faster Better OwenShow

I’m not referring to what my vast customer base would want to do to OwenShow ... no I did it. ... For a sad time, there were mysterious slowdowns when executing things from OwenShow, including Delphi when I was developing OS in XP; and the shell, and emacs, in Linux; noticeably slower than the competition (Explorer, Konqueror etc). Since this is one of OwenShow’s major roles — to run batch files and other nonsense — this was a disappointment.

However it turns-out that it was that devil main:os_idle up to its usual cycle-stealing tricks, not letting the program you wanted to execute a chance to get its enormous self started and take the focus from OwenShow. Setting non_modaldelay to something like 5000 helped, so long as the program got started in time — of course by no means assured in our modern era. And if on the other hand it was a quick execution and for some reason you wanted to go back to OwenShow, you’d have to wait around while the non_modaldelay finished.

So I added a “throttling” flag to the execs which made os_idle slow itself down, only executing every 200 milliseconds or so (see “throttle_wait”) until a key-press or mouse movement or something....

But once I realized how wonderful it was — letting the rest of the computer have a whack at the CPU and all — I turned it on in lots of places, including after a second of user inactivity. (OwenShow isn’t happy with throttling always-on: one of the many cranky things in os_idle does something with the files panel cursor movement that slows down tremendously if always throttled).

You can tell when OwenShow is throttled, which now is usually: a fairly steady “T” or “t” appears around the “sanity” indicator between the file panels. And then around 11/06, even if throttled os_idle’ll get called every linux_timer milliseconds — just in case Delphi forgets, I guess....

Read-Only

The famous MSDOS attribute is treated by OwenShow like the operating system does, which is to let you rename/move (on the same drive of course) read-only files. Like the sainted OwenView, OwenShow does add one little trick: it sets the archive bit (in Windows only of course) for moved/renamed files. There is no archive bit in Linux, so that’s OK. Files that show-up in Linux/OwenShow with the “r” marking typically mean you don’t have permissions — actually it’s up to Kylix, which provides the translation (see fileutil.pas OS_readonly; also see Linux Permissions).

Linux Permissions and Ownership

I was all set to add a “permissions” form, with elaborate check boxes and lists, but I knew I was going to have to spawn a script since whenever I want to change a permission or ownership it’s almost always because of something stupid I did as root — and Unix programs can’t promote themselves; it’s against the law. So I’d have to write a clever Linux script — actually, they’re all clever, there’s no choice — that’d process arguments from OwenShow to chown/chmod, first doing “su” — because scripts can promote themselves; of course. ... Or something....

I was planning on modeling my permissions form on the Midnight Commander “File / chmod” and “File / chown” and perhaps “advanced chown” menus — and then of course I realized it’d be a lot simpler to just use Midnight Commander itself! So the osex.ini that appears in the distribution — and gets used for new installations — has this exec:

[midnight root]
exec=+konsole
xop2=—vt_sz
;xop3=80x60
xop3=120x40
;set the terminal size.
xop4=-e
xop5=su
xop6=-c
xop7=mc
key=@m
prompt=0
args=0

but you must edit the line “midnight root=0” to “midnight root=1” to enable the thing — because it will be quite dangerous. But anyway, it works great. Case closed. Problem solved. ... You really have to figure-out how Midnight Commander works; if it’s too menacing, you probably shouldn’t be changing permissions anyway, certainly not as root, not to mention all the other mayhem a root MC can wreak.... But a few MC things I forget regularly: mark/clear files (i.e. for processing, like OwenShow +/-) with the insert key (mark all, +/-?); exit with F10. Temporarily “disappear” MC and do stuff on the command-line: ^O.

Miscellaneous Files

test_scroll_lines.tgz: In Linux. See Header, Line, Scroll Fudge.

debuglx: if such a file exists in the program directory, then when OS starts-up it will wait 3 seconds in FormCreate. In open-source versions of Kylix, this might allow the GNU warning time to go away before some breakpoint you want to see pops-up.

do_splash, splash.png: If the two files “do_splash” and “splash.png” exist in the program directory, OS will attempt to display a splash screen consisting of “splash.png” during start-up. The OS distribution normally leaves-out the “do_splash” file — which is just a flag, i.e. empty or anything with the right name.

hyperx (Linux). There are two two execs examples in osex.ini altx and altc. These have actually worked in KDE konsole; basically you get to edit the stuff with average edit key strokes and WordStar control sequences, plus there’a pathetic history maintained (up/down arrows). Altc produces a field with OwenShow arguments, which is actually useful; altx has no arguments, and I’m not clear why it’s easier than just shelling — but I find it so, probably because I’m used to my Windows versions (which are not included in the distribution, incidentally, at least until the onset overwhelming public demand). Note that the hyperx source is included in the Linux os_src.zip (in the hyper subdirectory), but not in the Windows os_src.zip. It’s mostly amusing as an example of how to horribly hack Windows code to make it kind-of work in Linux. Oh to exit some kind of mumbo-jumbo requires two escapes, please.

jgo.ico: Linux OS will put a cute icon onto the program if it finds the appropriate file in the program directory. And if the Linux desktop supports it.

os.dpr: If this file — the Kylix IDE file for OwenShow — exists in the program directory, then the program won’t disable the main form. It otherwise disables the main form for a while whenever “os_activate” occurs, so that when the user clicks the thing he won’t accidentally select a directory or something. While I’m debugging, Delphi goes nuts now and then when this happens.

osex.ini: q.v.

OwenShow, xos, orut: In the Linux distribution, these procedure files give some hints on how to start OwenShow in that astonishing operating system. “orut” is how to start it as root — extremely inadvisable.

raiter_true: In Linux, an executable created by OwenShow; look for “Raiter” in readme.src.

Linux Disappearing Windows

New windows appear behind others aka “focus stealing prevention”. Not my fault! In Fedora CORE 3 and Mandrake 10.1, and apparently other contemporary KDEs (well it’s apparently KDE 3.0.0 c. 2002), program modal windows open behind the main form. Also apparently in Gnome, but I don’t think I can do anything about that. After hacking OwenShow unsuccessfully — it can’t be stopped — I found other sufferers on the web (including OpenOffice.org), and then grubbing around I found a ”fix“:

Fedora Core 3 KDE: start menu, (KDE) control center, desktop, windows behavior, advanced tab, adjust “Focus stealing prevention level” from “low” to “none” — and OwenShow at least seemed to behave better.

Mandrake 10.1: there it’s hidden at “start menu / System / Configuration / Configure your desktop / LookNFeel / Windows Behavior / Advanced”.

Googling for “Focus stealing prevention level” revealed some who found setting it to a higher level useful for something, and some who didn’t. So maybe this’ll make other problems — but whatever, I didn’t do it!

Mon 3/13/2006 12:27 pm. And now I read (British PCPro 3/06 p 163) that XP supposedly has a focus-stealing-prevention feature — supposedly enabled by default — which is doubtless where the Linuxoids got their dubious ideas....

Copied File Has Wrong Size

Or, “When I copy a file in a directory, the copy has a different size than the original”. ... This happens to me when I’m editing the source file and saving it now and then. One of OwenShow’s many charming traits is it doesn’t update anything until you tell it to, so it won’t reflect the new size of the file (i.e., until you rescan or something). However, when you copy it, OwenShow will show the new file without looking at all the others, so then you’ll see the new size.

Windows 98 Environment Errors: Out-of-environment in a batch file

Use the PIF, Luke.... In Windows 98, when you first set-up some kind of batch invocation using the fabulous OwenShow [execs] mechanism, it might spit-out repeated “out-of-environment” errors as the batch file executes. You can fix the individual offending batch file like this: in the W98 DOS window the batch file opened, you click the “properties” button (icon on the top of the DOS window, square thing with a finger pointing to it), “memory” tab, “Initial environment”: change “auto” to “2048” or something. Then you might move to the “Program” tab and check “Close on exit”, which is probably what you also want, i.e. so you don’t have to manually dismiss the batch file. IF YOU SCREW IT UP so the batch file fails, only flashing momentarily while doing so — it’s EZ, and it might be like that already for mysterious reasons — delete the PIF file: if you had ALTU.BAT for instance, editing its properties as described will alter/create ALTU.PIF, and to get back to square one, you can delete ALTU.PIF.

An alternate scheme is, in Explorer, to right-click various magic files, “properties”, and similarly mutilate as above. Popular suspects for this treatment:

which are supposedly global locations where windows figures-out what incredibly stupid default to use for its piffey purposes. ... Hey kids, collect ’em all! ... Today Friday, November 23, 2007 1:12 pm, I’ve been using the WIndows magic files system, and since nothing in Windows actually works correctly — it’s OK I guess.... In my previous 16-bit adventure in file management with the gracious and charming OwenView, I concocted some scheme to invoke things with command.com including an environment-size setting argument (i.e. “/e” or something), but OwenShow is too high-minded for that sort of thing....

Weird Linux Names

The “rename*?” option allows you to make file names in Linux with embedded asterisks and question marks. But as noted, don’t. ... But it’s even better! Linux lets you name files with any control character you want — not in OwenShow, but in stupid software you write. ... Even on the command line, you can go

"touch stupidCrCrCr"

— replacing each “Cr” by pressing Enter, finishing-up with the double-quote — and on my Mandrake 8.2 installation here it created a file with a name including embedded line returns! I wrote a stupid program that actually created a file with a name including all the control characters from ^A to ^_! Just like CP/M.... (The nul ^@ is out: that’s the string terminator in the Sacred C Language.)

Anyway, it’s probably possible to delete or rename such files (i.e. to something usable) in OwenShow. At least it was, once or twice. They appear in the files display with ?s instead of control characters; in the cpyfiles dialog for rename or delete, it may not look quite as tidy, and I’m not going to bother fixing it, but it was good enough in one or two tries to delete or rename. So take that, Midnight Commander! ... Well actually, MC is pretty-much on a par; such files look a little weird, but can be renamed/deleted.... Konqueror was just a trifle little less copacetic; OS and MC see “hi^J^J^Jho” but the file was just a blank in Konqueror (^J is line feed often, aka \n).

The Darkness of @F6

The “unmarkstars” function — it unmarks any asterisked i.e. “processed” files — was historically Alt-F6 in the sacred OwenView (OwenShow’s runs-in-MSDOS predecessor). Then I discovered, in the fullness of OwenShow development, that Linux + KDE uses @F5 for something, and it turned-out I can’t set a Kylix sub-menu to ^F5 on Tuesday. So just for Linux, I set the default for markstars and unmarkstars to SHIFT F5, F6 instead of ALT F5, F6 (henceforth @F in the OwenShow vernacular). (Actually I think Linux does something with other @F keys or maybe all of them, or at least I had to change @F7 and @F8 to |F7, |F8 — shift etc. ... Of course I really mean Linux KDE Mandrake 8.2 or whatever....)

But today Tue 1/04/2005 3:37 pm, years into OwenShow development, I noticed @F6 doesn’t work in Windows 98! ... My excuse is I haven’t used OwenShow in W98 until the last year or so, when it got fast-enough for the slower W98 machines. Anyway, I was floundering around wildly, trying to figure-out what stupid thing I had done, when it turned-out Microsoft wants it that way: see “http://support.microsoft.com/kb/q146869/” aka “ALT_F6 Key Combination Does Not Work in Windows 95”.

It’s hard to see that @F6 actually does anything in W98; apparently in w95 it’s supposed to switch windows, but my last w95 system just gave up the ghost, so I’ll probably never know for sure — wait wait I just remembered the W95 laptop; there, it’s starting up ... there’s the “Windows95 Microsoft Internet Explorer” splash, remember those golden days!? ... No it does nothing in W95. ... No wait I think I know what the idiots might mean; switch windows inside a program of course! How stunningly stupid! Ah yes the terrible thirst to switch between documents in Word with a handy alt key! ... Well it does seem to do something like that in Windows 95, although I don’t have Word in that one; and actually in Word (97) in W98, it shifted the focus between the top document and the program itself — well actually it did something like that with OwenShow so I suppose it doesn’t count. ... Oh look look: when I stopped using @F6 as a shortcut key in OwenShow, I can open OwenShow help — and yessirree @F6 does switch between the help2 and the main form! Oh golly gee I’m just so content!... (This of course before the html help.)

In XP, it’s a bit worse; @F6 switches to the main OwenShow form from help2 — but not back! Ho ho ho. ... Note @F6 works fine in a DOS box where I run OwenView — i.e. it does what I told it to. ... My guess is, like so many astonishing Microsoft features, the thing never really worked, and it took ’em a version or two to subdue it. ... But your mileage etc. ... And I suspect, since it involves ops inside a program, it was part of the ol’ Microsoft “rope ’em and brand ’em” friendly monopolistic strategy.... Or hey maybe it was like there was some awful program that had to work in Windows 95, so they of course hacked the operating system. Yes that sounds plausible....

But the great thing, for me, is how Linux screws @F5 etc., apparently in an effort to be just as talented as Windows! It’s so inspiring. ... Whatever, I changed the default for unmarkstars to “nothing”; obviously, I hardly ever use it, and I can always get it from the right-click menu, while on the other hand, I use markstars every day and would find it annoying to switch from @F5 to |F5, just to be consistently with a “fixed” |F6. You of course can configure anything you like — and it may even work in the operating system of your choice!

Kylix Position Fix

dontfix_kylix_positions=0 DEFAULT. While I was delving away on another topic, I discovered that Kylix/KDE/whatever was idly changing the positions of my forms despite my explicit instructions to the contrary. Specifically it seems to add 20 to the top and 4 to the left, although I’m absolutely confident this is phase-of-moon dependent. Anyway, setting this option to true might defeat that.

kylixleft=4 DEFAULT. kylixtop=20 DEFAULT. On the assumption that this is totally bogus, I provided a way to alter the adjustments the position fix makes. These values actually work on a Mandrake 8.2 system. If the idiocy is Kylix/qt, then they might work elsewhere; if it’s a Mandrake idiocy, who knows? Set them to zero if you want....

kylixcount=2 DEFAULT. I think I’ve caught the main form occasionally jumping around a bit; it was gradually drifting towards the bottom of the screen, in a slinking kind of way.... So in Kylix, it’ll reset top/left after kylixcount os_idles. If that’s annoying, just set it to 0 or something...

Isn’t it all so weird? ...

Kylix vs. Windows Filedates

Copying a file from a windows drive to a linux drive preserves the date/time; not so in the other direction maybe, either because Kylix didn’t bother, or more likely file system trickery didn’t — because Kylix almost certainly just uses some libc function. Whatever....

Where is OwenShow in Linux “ps -All”?

Not home; because I compress it with UPX, which apparently creates executables that always appear as “3”, and I can find no way around it; Linux apparently has no setproctitle() or setprogname(). ... At least it’s not 42....

Why OwenShow?

OwenShow and its predecessors have a venerable history, starting in 1988 (!) with my assembly-language hack of PC Magazine’s D and CO utilities; that led around 1992 to “OwenView”, a C-language MSDOS program which I still use on lesser machines, although at Wed 6/02/2004 4:54 pm I’ve switched to OwenShow on most of my menagerie, XP or W98. ... OwenShow, however, does not run on Windows 95 or anything before that.

OwenView, of course, got long file names grafted-on along the weary years (well, around 1996), but it can still run in naked DOS! But it wasn’t really happy in XP; I knew the end was near when I discovered that all 16-bit applications refuse to run where the current path is longer than 64 characters, even the short version — even though W9x seems to cope with such conditions. And of course MSDOS/Windows software runs poorly under Linux. The obvious solution was to write the grand new OwenShow with the Delphi “CLX” components, which transfer over to Kylix / Linux, and thus get two programs for one! And I did....

BSD-Style License

Tue 2/06/2007 1:15 pm. OwenShow is copyrighted under a BSD-style license as follows. Note that before Tue 2/06/2007, OwenShow was released under a GNU license. But I can change the license whenever I want. If you compile the program under the Borland free GNU-license Kylix — which should work — then I don’t know what your obligations might be, but in any case you can re-release it under a GNU license any time you want — I think — since the BSD-style license is probably less restrictive. ... Heck, I don’t know, and almost certainly no one else cares....

Copyright (c) 2002-2009, James Gregor Owen All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

* Neither the name of the author nor the names of any associates may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

j.g. owen * * * * * * * * * * * * *
web: http://owenlabs.org/
email: owen_bda4@yahoo.com
* * * * * * * * * * * * * * * * * *


NOTES

1. For the help software that created OwenShow’s frame and index files, might be at http://home.att.net/~owen_labs/rant17.htm#ohelp and/or grovel around in http://owenlabs.org for my rant pages and “owenhelp”.

2. The @F6 drivel is about the old tired ASCII help that was before this beautiful HTML stuff; and maybe used in it’s “detached” mode where you could supposedly look at and still work with OwenShow, although it’d balk and switch back without warning occasionally. Which is one of many reasons OwenShow has this HTML help.

3. Actually, in a pathetic effort to avoid an endless and menacing proliferation of Delphi versions, the Windows OwenShow is created with the professional version of Dephi 7, so it won’t flash the Borland license warning at startup. And recently, even the Linux version is created in Windows with the marvelous CrossKylix. But when you recompile with your free free Linux Kylix/Delphi, you’ll get the flashing message back.

4. THE DRIVEGLEAM STORY Fri 8/08/2008 4:12 pm. Ha Ha Ha! ... OwenShow was loosing the focus as usual, and I thought it was the dreaded reread and/or its evil sidekick rereadwait, but after considerable spelunkery, it was a gadget I installed! ... DriveGleam, a wonderful free resident utility which replaces the drive activity light our digital overlords have decided we don’t need anymore. ... I actually read some pitiful macintosher, who of course got this beautiful feature before us behind-the-times Windows users, trying to explain why this was a good thing. ... DriveGleam can replace the drive activity light with the keyboard scroll lock light — but apparently by shooting the scrolllock keycode into some queue or other! Which all the Delphi formkeydown events get to see! (And probably every other top-level window, including screensavers apparently.) And of course, I only had the marvelous DriveGleam installed on the newer machines, and I thought it was something to do with their speedy style; and of course random disk drive activity would drive me mad! ... Perhaps my search for the perfect drive activity light replacement is not yet finished.