Dogsbody is a Tcl/Tk general purpose text-based program which provides multiple text editors and rxvt's, "clickable" directory listings which pop up the files in new editors a la xfm; clickable du listings which pop up directory listings as above; reads news and sends/reads mail. It's a rough-and-ready program which I invented to make the most of X in 8 meg with a slow serial line. 40 assorted open windows cost 3.2 meg in tk-3.6, somewhat more in 4.0. It has been tested on Linux only, with tk3.6 and tk4.0. The differences between the two versions require a diffs file of length 200k, so use the right version (the wrong one will segfault). You thus need GNU patch for the 4.0 version. I think one of the best features of the program is the fact that it has an enhanced version of the tk text command (the builtin textalt command in the special doggy_wish version of wish) which has several features as well as all the usual textwidget features. The new features involve command options beginning with a z, such as .textalt1 za $fd to initialise the widget as a quasi-rxvt which communicates with its shell via the file descriptor fd, assumed to be a pseudo-tty. There is also an option zb that reads the contents of a file into the widget much faster than the usual FileInText routine. The program was originally developed with XF using tk3.6, then hacked to persuade it to work with 4.0. I don't envy those who have to do the same with XF itself! It requires only tcl + tk to work; originally I used blt_bgexec but decided I didn't need the background execution facility so you can find a routine alt_fgexec.... Other system calls: it uses smail -t for sending mail, GNU time for formatting the New Groups news command, that's about it. Here follows the online help document (the thing that should come up in the first editing window), which explains things fairly well. DOGSBODY MANUAL. ------------------------------------------------------------------------------ How to use this program. (1) the basics. ------------------------------------------------------------------------------ 1. the Clone menu. (blue row of menubuttons, 5th in from left). You are viewing this help document from a dogsbody editor, probably labelled CjEditor #0 (C.J. are the author's initials). To try out the editing facilities, we suggest you leave this editor where it is and generate another to experiment with. Do this by opening the Clone menu by dragging mousebutton 1 (hereafter: B1) down, and then selecting the "New Editor" option which is the first on the list. A new editor will appear, CjEditor #1. 2. the Load button. (leftmost green button). At present editor #1 has nothing in it and is labelled "dummy.txt", a scratch file which is never saved. To change that, press the Load button, and a standard Tk File Selection box will appear from which you can choose a file to load. It will then appear in the editor. Incidentally, if you were already editing a file before you pressed Load, it would be saved automatically (see paragraph 7). 3. Basic editing procedures. Unlike most Tk programs this one is followfocus; you should find yourself focussed on Editor #1 as soon as the mouse enters its editing window (with the white background). The insertion cursor will be flashing in the top left corner. You can insert text there with the keyboard; move the insert cursor elsewhere by clicking B1 on the desired spot or using the keyboard arrow keys; look at the rest of the document by clicking/dragging the scrollbar to the right of the editing window. You can delete text character by character by using the backspace key. 4. Editing procedures involving the selection. You can select a region of text by dragging B1 from one end of it to the other. To select a region larger than a screenfull select one end of it, move to the other using the scrollbar, and click Shift-B1 at the far end. The selected region will be highlighted in light blue. You can copy the selected region somewhere else by putting the insertion cursor at the desired spot and then clicking B2. Repeated clicks will get you as many copies as you want. To move the selected text, deleting the original copy, place the insertion cursor at the desired spot - which must NOT be within the original selection, or even one character after it - and double-click B2. To destroy the selected text, click B3. Please note there is no way to undo this operation. Actually the doubleclick of B2 does exactly the same thing as click-B2 followed by click-B3. To "give up the selection" - i.e., get rid of that blue highlighting without deleting any text- drag B1 a short distance in the Commands/Pipes entry region to the bottom right of the text region. 5. Search and replace. (leftmost blue menubutton). To search for a particular string within the text, select "Find" from the Search menu. An input box will appear prompting you for the string you want to find. When you press Return or click B1 on Enter, the program will start one character after the insertion cursor and look for the string. If it finds it the insertion cursor will be moved there and the screen will be arranged so the cursor is on the top line. If not, the cursor and screen stay put. To search backwards instead of forwards from the cursor, select "Find Backwards" from the Search menu; to search everywhere select "Find Anywhere". To search and replace, place the insertion cursor where you want the search to start and select "Find and replace" from the menu. You will be prompted twice, once for the string to find and once for the replacment string. Then the search begins. Each time the string is found you are prompted whether you want to do the substitution (click B1 on the Yes button), skip this one but continue the search (No button), abandon the search altogether (Cancel button), or perform all the remaining substitutions without further prompting (Do All button). Use that one with caution. When the string has been found for the last time a box saying "Done" will appear. The search menu has one other option, repeat last find, which repeats the last search if it was either Find or Find Backwards. But this can be done more easily by just clicking B1 on the green Repeat button (5th from left). The Reverse button (6th from left) will do the same only reverse the direction of the search. Repeat and Reverse have the same effect on Move operations, for which see below. 6. Move. Of course you can use the scrollbar to do this and may prefer to. But the move menu contains options to move forward 10 lines (+10), similarly +100, -10 and -100, all of which can be Repeated or Reversed. There are also options to move to the beginning or end of the document, and the option To Line... which will prompt you for a line number. Useful when debugging C. 7. Save. (2nd green button from left). When you press this, the original copy of the file you were editing (say /root/gloobius) is moved to a backup file (/root/gloobius.bak, in deference to my DOSsish origins), and the text that's actually in the editor is written into the file /root/gloobius. The file dummy.txt, however (distinguishable because it isn't a full pathname) is never saved. You can, however, Save it As... 8. Save As (4th green button from left). This will prompt you for a filename using a Tk File selection box. The contents of the editor will be written into the file, overwriting previous contents if any. The name of the file being edited will change to the new name you have chosen. 9. New (3rd green button). This, summarily and without warning, will delete the contents of the editor, losing the edits, and restoring the filename to dummy.txt. Please use with due caution. 10. Insert (7th green button) This will give you a file selection box. The contents of the file you select will be placed in the editor at the insertion cursor. 11. cd (10th green button) This will prompt you for the name of a directory. Subsequent calls to Load or Save As will give you a selection box in that directory. The file you are now editing is not affected. If you clone several editors, you will notice that they each have their own working directories. 12. Quit (11th and rightmost green button). This, summarily and without warning, will destroy editor #1 and its contents, making no saves. If you were in terminal mode it would also kill the relevant instance of the shell and close the file descriptor communicating with it. It does not, however, exit the program. For that, you select Exit Program from the Options menu (7th blue menubutton). Or of course, kill the program externally (e.g. with the window manager). 13. Print. (3rd blue menubutton). This menu gives two choices, print the whole document or just the (blue highlighted) selection. Either way it makes a system call to lpr to do the printing. If you choose Print Selection when there isn't any selection, you will get an error message, as you will with various other selection-based features. ------------------------------------------------------------------------------ How to use this program. (2) Terminal mode. ------------------------------------------------------------------------------ 1. Ways of starting terminals. Dogsbody has an inbuilt rxvt emulator (alpha!) which can give you any number of terminals, like rxvt terminals or xterms in text mode. ANSI colours are supported, and by default you get 50 lines-worth of scroll-region. To get one, go back to the Clone menu and select New Terminal. A new CjEditor will appear, but in the editing region a shell-prompt should appear; the shell used will be as in your SHELL environment variable. Try keying in a few commands; you'll notice that the editor is positioned with the scrollbar at about 2/3 of the way down the text; drag the scrollbar up with B1 and there's your scroll region. Works nicely with the programs I like (jed editor, GNU colour listings etc