old-www/LDP/LG/issue01to08/linux_gazette.aug.html

1761 lines
64 KiB
HTML

<HTML>
<HEAD>
<TITLE>Linux Gazette August, 1995</TITLE>
</HEAD>
<BODY>
<H1><IMG ALIGN=MIDDLE SRC="./gx/homeboy_icon.gif">Linux Gazette August, 1995</H1>
<H3>A Publication of the Linux HomeBoy WebPage Series</H3>
<H5>
Copyright (c) 1995 John M. Fisk <I>fiskjm@ctrvax.vanderbilt.edu</I><BR><BR>
The LINUX GAZETTE is now a member of the LINUX DOCUMENTATION PROJECT.<BR>
For information regarding copying and distribution of this material see the
<A HREF="./copying.html">COPYING</A> document.<BR>
Linux Home Boy Pages logo created using <EM>David Koblas'</EM> excellent
program XPAINT 2.1.1
</H5>
<HR>
<H2><A NAME="toc"> Topics in this <EM>August</EM> issue include:</A></H2>
<UL>
<LI><A HREF="#welcome">Salutations and the Mail Bag</A>
<LI><A HREF="#tar_tricks">Yup, still <EM>more</EM> tar tricks</A>
<LI><A HREF="#vim">If you gotta use VI, use VIM</A>
<LI><A HREF="#ppp">Helpful PPP scripts</A>
<LI><A HREF="#mail">PINE + popclient - mail for the sendmail-impaired</A>
<LI><A HREF="#customx">Customizing X - So where <EM>is</EM> everything?</A>
<LI><A HREF="#vgaset">Customizing X with <EM>vgaset</EM></A>
<LI><A HREF="#xaw3d">Customizing X with Xaw3d - it's <EM>easy</EM>!</A>
<LI><A HREF="#wrapup">So, what's in store for <EM>next</EM> month?</A>
</UL>
<HR>
<!-- FIRST SECTION, WELCOME MESSAGE AND READER RESPONSES -->
<!-- -->
<H2><A NAME="welcome"><IMG ALIGN=MIDDLE SRC="../gx/mail.gif">Salutations and the
Mail Bag</A></H2>
<P>
Welcome to the August edition of the <B>Linux Gazette</B>. The Gazette is an
attempt to bring together a selection of tips, tricks, and ideas <B>to make
running Linux more fun</B>. Pretty shallow..., eh?
<P>
Well, this is the 90's. We're supposed to be shallow. Depth isn't on the
agenda for another decade or so.
<P>
What I'm beginning in this issue and plan to continue through at least the next
is to cover some of the things that can be done to make running X Window on your
Linux system a bit more fun. Don't believe all the nonsense about X being for
gurus or the slightly-deranged. In its &quot;out-of-the-box&quot; configuration
it's admittedly a bit of a fix-me-up'er but that's easy enough to change. Besides,
you'll want to experiment and tweak slowly and see what actually works and what
you like.
<H4>I'd also like to say thanks to several people who've written and encouraged
an ongoing writing of the Gazette.</H4>
<P>
<IMG ALIGN=BOTTOM SRC="../gx/letter.gif"> <B>Craig Goodrich</B>
&lt;craig@ms.ljl.com&gt; wrote the following:
<BLOCKQUOTE>
<P>
Just a quick note of appreciation. This and the Keystroke-HOWTO are
beyond a doubt the two most valuable frustration-reducers for LinNovices
I've seen.
<P>
Quick tip for the next issue -- if you have a CDROM on sbpcd, I suggest you
patch
up to 1.2.9 or .10; the cdrom code is substantially more clever (at least if
you
have a TEAC, as I do), and go into the sbpcd.h file to get rid of the
jukebox
effect (opening and closing the thing whenever it's mounted or probed).
Then
recompile [see issue 1].
<P>
Something that's needed is a good review of text editors. I started out in
'67 on a keypunch and became a DEC TECO guru in the late '70's, but I've
outgrown it -- even the old PE was more usable and intuitive than the
outrageously
perverse (and bloated) EMACS or the atavistic vi. I glowed with
anticipation
when I first fired up crisp, being a BRIEF fanatic, but that bubble was soon
burst.
I unztarred Xemacs (after downloading all 14 meg -- compressed! -- of it
through
a 14.4 ppp connection -- talk about a load of wash ...) only
to have it die with a segmentation fault, since I'm not yet well-ELFed.
<P>
Anyhow, I may eventually write up something on all this and submit it to the
gazette, if I can just keep my wife convinced that kernel-hacking and
playing
with Xconfig really is more important than cleaning out the garage or
babysitting
so she can go shopping.....
<P>
Thanks again--
<P>
Craig
</BLOCKQUOTE>
<P>
He also very kindly sent the following URL announcing the upcoming plans by
Caldera to work with Novell in porting <B>WordPerfect 6.0</B> to Linux. Look
for it at <A HREF="http://www.caldera.com/WPLinuxRelease.html">
http://www.caldera.com/WPLinuxRelease.html</A>
<P>
<IMG ALIGN=BOTTOM SRC="../gx/letter.gif"><B>Brad Greger wrote:</B>
<BLOCKQUOTE>
<P>
Just wanted to say thanks for all excellent tips and for the laughs (very
humourously written). You have discussed the very things that have been
anoying me about Linux and given great solutions; that would have taken
Linux newbies (thats me) many hours to figure out on my own.
<P>
Please keep the Linux Gazette going!
<P>
Thanks, Brad &lt;begreger@artsci.wustl.edu bgreger@thalamus.wustl.edu&gt;
</BLOCKQUOTE>
<P>
<IMG ALIGN=BOTTOM SRC="../gx/letter.gif"> <B> Cimarron Taylor</B> wrote with a
couple suggestions:
<BLOCKQUOTE>
<P>
Just read your gazette. I fall into the Multiple OS category.
I use Linux, Windows NT, Windows and DOS to handle all the
different things I do on my laptop. Here are some things I
feel no linux installation should be without:
<DL>
<DT> fips and loadlin
<DD>without these I never would have gotten
linux loaded in the first place. I really
don't like the concept of replacing the
dos or NT boot loader with LILO because
there is still so much stuff I need dos and
NT for and I don't want to risk losing that
data.
<P>
<DT> linux netscape
<DD>
I bought the windows NT version but I still
rely on the linux version to generate good
postscript output for printed documents.
<P>
<DT>kermit
<DD>
perhaps a matter of taste but it works really well
with all the sites I dial in to.
<P>
<DT>emacs <DD>
wouldn't use linux without it.
</DL>
<P>
The one thing that bothers me most about linux is the problems
dealing with data in multiple file systems. Linux can not read
or write data in a Windows NT file system and it does not
understand extended FAT file names. Similarly Windows NT cannot
access data in a linux partition. This means I cannot effectively
use all the storage available to me on my laptop.
<P>
Anyways, I enjoyed your gazette.
<P>
Cimarron Taylor<BR>
cimarron@acgeas.com<BR>
</BLOCKQUOTE>
<P>
<IMG ALIGN=BOTTOM SRC="../gx/letter.gif">
And <B>Hans Zoebelein &lt;zocki@web.tenn.com&gt;</B> dropped a much appreciated
note of encouragement.
<BLOCKQUOTE>
<P>
Hi John,
<P>
thanks for this refreshing page. Itis one of the best advertisings for LINUX I
have seen on the net.
<P>
Best regards<BR>
Hans<BR>
</BLOCKQUOTE>
<P>
Sorry that I can't include all of your letters. I really did jot a note to
everyone that wrote me, although our local mail server yacked up anything farther
away than about Boise. So for the folks from Germany and Italy who wrote, my
apologies. I'll see if I can get things working.
<P>
Anyway, hope you enjoy!
<P>
<A HREF="#toc"><IMG ALIGN=BOTTOM SRC="./gx/toc.gif"></A>
<A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu"><IMG ALIGN=BOTTOM SRC="./gx/sendmail.gif"></A>
<A HREF="./gazette_toc.html"><IMG ALIGN=BOTTOM SRC="./gx/index.gif"></A>
<A HREF="./linux/linux.html"><IMG ALIGN=BOTTOM SRC="./gx/home.gif"></A>
<BR><BR>
<HR>
<!-- SECOND SECTION, TAR TRICKS AND AFIO -->
<!-- -->
<H2><A NAME="tar_tricks"><IMG ALIGN=BOTTOM SRC="../gx/text.gif">Yup, still more
<EM>tar</EM> tricks...</A></H2>
<P>
Ok, so why more tar tricks..?
<P>
Well, have you ever taken a look at the man page for &quot; tar &quot; -- it's
about a bazillion lines long, and in the world of terse and tight-lipped UN*X
that's about as loquacious as it gets. Which brings up one of those interesting
character observations about the whole <EM>UNIX mystique...</EM>
<P>
Namely, that it's not very chatty.
<P>
I mean, consider MS Windows... Ok, OK! I know you'd all love to flame Billy G.
and the Evil Empire to an unrecognizable crisp... but hold your torches for just
a second... Ever notice that when you install something there are dialog boxes and
messages galore? Stuff like &quot; Hello, I'm your new OS, Windows2005 and I'm
about to eat your harddrive alive. &quot; Whereas UN*X barely belches when you
innocently type in
<PRE>
su
cd / ; rm -rf *
</PRE>
<P>
just because your smart aleck roommate told you it'd help clean out some
unnecessary files.
<P>
But I digress...
<P>
Tar really is a pretty impressive beast and is probably one of those quintessential
unix-type utilities. The salvation of it is, though, that for most of us to use it
requires only a rudimentary knowledge of it. However, on those rainy Saturday
afternoons when you've already ironed everything in your closet including the
tongues of your tennis shoes... and there's still not much to do, puruse the man
page for tar -- there are actually quite a few goodies hidden there.
<P>
Let me expound.
<P>
The nice thing about tar for all of us &quot; tape-backup-wannabee-havenots &quot;
is that it'll let you do multivolume archives. Just add the &quot; M &quot command
line option and you're all set. So, if you wanted to back up your /home/me
directory you could use:
<PRE>
cd /
tar cvMf /dev/fd0 /home/me
</PRE>
<P>
Now, want to maintain absolute pathnames -- <I>i.e.,</I> don't strip off leading
&quot; /'s &quot; -- then add a &quot;P&quot;. <BR>
Want to preserve file permissions -- add a &quot;p&quot;.<BR>
Want to give it a volume label -- add a &quot;-V &quotSome cute title &quot; &quot;
<P>
Now, this whole thing starts to get a bit out of hand, but it works:
<PRE>
cd /
tar -cvpMP -V "Home Directory Backup" -f /dev/fd0 /home/me
</PRE>
You just fire this up, and shovel in the disks. When you're done, you can admire
you new handiwork by re-inserting your first disk and then entering:
<PRE>
tar -tvf /dev/fd0
</PRE>
You should see your volume label at the top of the archive. If it goes scrolling
by at breakneck speed just pipe it through either &quot; more &quot; or &quot;
less &quot; or whatever your favorite pager happens to be.
<P>
There's one further bit of fun to have here... and then we'll call it quits for
today. Honest.
<P>
Suppose that you wanted to periodically make a backup of specific files. Now you
could hand enter every one of them and then use the &quot;-A&quot; option to
<EM>append</EM> each file to the archive. But that's a lot of work. Instead, you
can just have tar read a list of stuff to backup from a file. Use your favorite
text editor to create a list of files you want to backup, one file per line, and
then issue forth the command:
<PRE>
tar -cvpPM -V "Back me up Scotty..." -T "./backup.list" -f /dev/fd0
</PRE>
and you'll discover that you've neatly backed up all those files in your list.
Mucho cool.
<P>
So, where's this practical? If you're your own sysadmin, and I suspect that many
to most of you are, then after a few months you've made some pretty extensive
adjustments to your system. One ill-behaved program or one little power surge
later and your months of tinkering and tuning may be history. Like Mahamet...
it be Ghandi, man.
<P>
And since you're still in the &quot;tape-backup-wannabe&quot; group you wisely
buy a few disks to back up at least the essentials. One suggestion is to do
this by system. For example, if you've been messing around quite a bit with
X Window and that baby's humming... Create a list of your config files --
<PRE>
/usr/X11R6/lib/X11/XF86Config
/usr/X11R6/lib/X11/xinit/xinit.fvwm
/usr/X11R6/lib/X11/app-defaults/XTerm
...
/usr/X11R6/lib/X11/fvwm/system.fvwmrc
/home/me/.Xresources
/home/me/.fvwm
</PRE>
something like that. Call it whatever you want. Now, instead of having to type
in all those names, just tell tar to use your backup.list file to retrieve the
names. If you do this by system, then you can create a file for each of the
various &quot;systems&quot; you use. By this, I mean X Window, printing, SLIP or
PPP configuration, Mail, and so forth. If you make individual backups then you can
restore these individually if need be.
<P>
Of course, you can always just back everything up <EM>en masse</EM> and then
install individually from that. Your choice.
<P>
And here's another 2 cent tip:
<P>
Let &quot;find&quot; do some of your dirty work for you. How? Let's say that you
wanted to backup all the files in your /usr/lib/ppp directory. You've finally
gotten a consistent connection after weeks of tweaking. Man, that connection to
the 'Net is your <B>life blood</B>! So, to help save all your hard work try:
<PRE>
find /usr/lib/ppp > backup.ppp.list
</PRE>
and there you go. All the file names neatly typed up in your file. If you're a
bit of a cleaver chap, you just set up a shell script to do it for you. And here's
a word of advice -- if you haven't learned to shell script yet, <B>DO IT!</B>
<P>
Shell scripting can make your life a million times easier. No it won't get you a
hot date for Friday or clean up after your slovenly self like your mother did...
but it makes handling tedious, routine, and retitive tasks much easier. Get a
good book on it and learn.
<P>
But I've digressed. Back to tar.
<P>
Now there are a couple <EM>caveats</EM>. First, if you're creating multi-volume
archives you can't verify the archive using
the &quot;-w&quot; option, and maybe as important, you cannot create gzip'ed
archives if you happen to be using GNU tar (which is, of course, a far superior
product than Brand X tar). Tar simply will not verify or compress a multi-volume
archive. Ok, so what? right...
<P>
Wrong.
<P>
I tried to make a backup of about 5MB of .au sound files recently. So, I used the
ol' <B>find</B> trick, made a file listing, muttered the correct incantation, and
watched lazily as tar started grinding away on /dev/fd0. It wasn't until it started
demanding disks 6 and 7 that I really began to worry. About disk 8 I bagged the
fiasco and Ctrl-c'd it. It quietly obliged. Now I'm no rocket scientist at math
but it seemed that asking for 8 disks which hold over a MB in order to store away
5MB of files was a bit absurd.
<P>
So, now's the time to bring out <B>afio</B>. Afio is one of those great little
utilities that really does make life a bit easier. I won't go into all the
intricacies about it (we're talking about tar here, right...) but suffice it to
say that it easily got my 5MB of sound files onto four disks with room to spare.
If you get the archive, take a look at the README files. They'll give you some
ideas about how to get things working. Basically, it's:
<PRE>
find . -print | afio ivs 1440k -F /dev/fd0
</PRE>
to archive your files in the current directory onto floppies in your first disk
drive. Afio actually works best in a formal shell script backup program as it
requires a source of file names on stdin. Now you can do the same thing by
cat'ing your backup.list to afio. Also, if you add a &quot;Z&quot; to the
lineup of options it'll also compress the archive.
<P>
The nice thing about using <B>afio</B> with the compression option is that because
of the way that afio stores its archives, if one of the files becomes corrupted --
hey, it can happen to anyone -- it doesn't prevent you from retrieving the remainder
of the intact files. If you tar and gzip an archive and it has an error, you're
out of luck, pal. It's history. The <EM>whole</EM> thing.
<P>
MegaBummer.
<P>
By now, we're both getting tired of this so let's stop here. There are apparently
some handy pre-made backup scripts available at your favorite local Linux FTP
watering hole. I can't say that I've used any yet.
<P>
Any product testimonials? Drop me a note.
<P>
<A HREF="#toc"><IMG ALIGN=BOTTOM SRC="./gx/toc.gif"></A>
<A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu"><IMG ALIGN=BOTTOM SRC="./gx/sendmail.gif"></A>
<A HREF="./gazette_toc.html"><IMG ALIGN=BOTTOM SRC="./gx/index.gif"></A>
<A HREF="./linux/linux.html"><IMG ALIGN=BOTTOM SRC="./gx/home.gif"></A>
<BR><BR>
<HR>
<!-- THIRD SECTION, USING THE VIM EDITOR -->
<!-- -->
<H2><IMG SRC="../gx/text.gif"><A NAME="vim">If you gotta use VI, use
<EM>VIM</EM>!</A></H2>
<P>
OK, at the risk of becoming flame-bait, let me quickly put in a blatant plug for
a vi clone that I think is actually rather useable. It's the VIM editor and, if
you're using a stock Slackware distribution, you probably already have it installed
on your machine.
<P>
There are three things that I like about the editor:
<UL>
<LI>It actually <B>tells</B> you what mode you're in.
<LI>It has an easily accessible on-line help function.
<LI>It works quite well under X when teamed up with xterm.
</UL>
I'm actually using it right now under X and it says, way down at the bottom in
the left hand corner &quot;-- INSERT --&quot;, which reminds me that I am in
insert mode. It does the same thing when I'm in REPLACE mode. So why is this
so nice?
<P>
Because I absolutely HATE getting beeped at incessantly just because I can't tell
whether I'm in command, insert, replace, or any other mode. At least with vim you
know where you stand.
<P>
Second, it has an easily accessible help screen which is called up by entering
&quot;:h &quot; when in command mode. This has a bunch of helpful one-liners that
are organized by category -- motions, pattern search, inserting text, deleting
text, setting editor options, Multi-window commands -- and if you need more
information, the distribution comes with a much more long winded
<B>reference.doc</B> which is generally found in the /usr/doc/vim directory. Take
a look at it.
<P>
Finally, vim will easily run in an xterm under X. You even get a rather salubrious
farewell once your done -- check out the xterm title when you're done...
<P>
Now I realize that there are a LOT of much prettier and user friendly editors for
X and believe me, I use them. I think xcoral-2.4 and xwpe are my current favorites.
But, it's like anything else... mostly a matter of style and use. If you're having
to do a lot of editing, emacs or vi[m] is definitely the way to go.
<P>
Why?
<P>
Funny you should ask. I really didn't believe this myself until I started learning
how to use vi. It <EM>really</EM> is a lot faster to do things if you can keep your
hands on the keyboard and off your mouse. Granted the trade-off is that you've
got to learn a bunch of admittedly cryptic keystrokes to use it. But once you've
gotten the basics mastered, it's a matter of just adding to your repertoire little
by little.
<P>
So, what have I found that's handy? Try this...
<P>
In command mode enter &quot;v&quot;, a highlight block lights up at the cursor
position which you can move using standard vi motions -- &quot;j&quot; for down,
&quot;k&quot; for up, &quot;h&quot; for left, &quot;l&quot; for right. If you're
a touch typer then these are pretty natural. You can also use &quot;G&quot; to
take yourself to the end of the file. Once you've highlighted everything, then
edit it using standard commands -- &quot;y&quot; to yank, &quot;d&quot; to delete,
&quot;c&quot; to change text, and so forth.
<P>
There's also a handy tag function that let's you put your &quot;mark&quot; anywhere
in a document. For example, suppose you're working on a hypothetical Linux ezine...
you know, with a catchy name like the &quot;Linux Gazette&quot;, and you're working
on it section by section. After finishing one section, you begin the next, and
after adding the name anchor, you want to add it to your table of contents.
<P>
Well, at the current edit position you go to command mode and hit &quot;m a&quot;
which <EM>marks</EM> this position as tag &quot;a&quot;. Now, you go to the top
of the page, enter your information, and then hit &quot;'a&quot; which beams you
back down to your last edit point.
<P>
slick, eh...?
<P>
Anyway, there's a lot to learn. Use the online help frequently and using it
becomes a LOT easier as you pick up the commands. As I mentioned before, you can
also use it very nicely under X. Either fire it up in an xterm, or else if your
using one xterm and want to give vim its own then enter:
<PRE>
xterm -e vi [options] filename &
</PRE>
this will fire up an xterm. The &quot;-e&quot; option fires up an xterm window
which then <EM>executes</EM> the vi editor. When you're done editing and exit
the editor, the xterm ends. Nice and tidy.
<P>
Also, if you're needing to cut and paster you can try a couple things. Either
fire up vim and use the &quot;:split /home/me/anyfile.doc&quot; option to load
up a second file and split the screen, or else, if you're working under X, fire
up vim in its own window and cut and paste like you normally would -- typically,
this means using button 1 to highlight text, moving the cursor back to your
xterm with vim running, and then pressing button 2 to paste it in.
<P>
All of the commands to move between a split screen, resizing the screens, moving
between buffers and all is outlined in the online help.
<P>
Very cool.
<P>
A final point. I've been using vi and vim fairly loosely in the above discussion.
On my system, I've symlinked <B>vim</B> --> <B>vi</B> (and also, <B>less</B> -->
<B>view</B>). You can easily test drive your favorite vi clone by simply symlinking
it to whichever clone you like:
<PRE>
ln -sf /usr/bin/elvis /usr/bin/vi
OR ln -sf /usr/bin/vim /usr/bin/vi
OR ln -sf /usr/bin/nvi /usr/bin/vi
</PRE>
I've admittedly fallen into a comfortable rut using VIM, I really do think that it's
&quot;VI Improved&quot;.
<P>
<A HREF="#toc"><IMG ALIGN=BOTTOM SRC="./gx/toc.gif"></A>
<A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu"><IMG ALIGN=BOTTOM SRC="./gx/sendmail.gif"></A>
<A HREF="./gazette_toc.html"><IMG ALIGN=BOTTOM SRC="./gx/index.gif"></A>
<A HREF="./linux/linux.html"><IMG ALIGN=BOTTOM SRC="./gx/home.gif"></A>
<BR><BR>
<HR>
<!-- FOURTH SECTION, PPP STUFF -->
<!-- -->
<H2><IMG SRC="../gx/text.gif"><A NAME="ppp">Helpful PPP scripts</A></H2>
<P>Ok, before we go any further, let me explicitly state three assumptions:
<UL>
<LI>you have access to PPP dialup service
<LI>you've been able to get PPP up and running
<LI>your connection is fairly reliable
</UL>
<P>
If this is you -- congrats! Getting a stable, and reasonably reliable PPP
connection setup can sometimes be a bit frustrating. If you're having trouble
there are two very good places to look for help -- the <B>README.linux</B> file
that comes with the ppp-2.1.2 distribution (look for it in the /usr/lib/ppp
directory); and the <B>Network Administrator's Guide</B> which is part of the
Linux Documentation Project. You can find the Network Admin Guide at almost
any decent Linux FTP site, generally in the /doc/LDP directory.
<P>
Now that you've figured out how to get a connection up and going it's time to
make it more convenient and useful. Inititally, my dial up command was a
finger numbing:
<PRE>
pppd connect 'chat -v "" ATZ OK ATDT*70,123-1234 CONNECT "" name:
myname word: mypassword annex: ppp' crtscts -detach debug modem
defaultroute noipdefault /dev/cua1 38400
</PRE>
If you've gotten this far -- you're golden. Now, it's time to put Linux to work
to make things <EM>MUCH</EM> easier.
<P>
First, start cleaning things up by putting all the pppd options where they belong -
in the /etc/ppp/options file. All this is is a plain text file that needs to be
readable by everyone using it. It contains single line entries for all of the
options you use. For example:
<PRE>
-detach
crtscts
modem
defaultroute
noipdefault
debug
</PRE>
Early on, I included the <EM>debug</EM> option just to see what was going on.
As the output is automatically converted from plain text to a primitive form of
New Guinea tribal ISO-8956.03-glyph using an AI PERL 5.001 script, I quickly
deleted that line.
<P>
Now, to make the rest of this easier to use I tried my hand at script programming.
I'll quickly admit that I'm not much of a programmer, at least not yet. However,
the scripts I've set up work for me and they seem to work well. I'm currently
using LINUX on a standalone PC with a dial up PPP connection to a local university
which offers NNTP news, SMTP mail, and a POP 3 mail server among other things.
<P>
Since the university has five dial in lines and does dynamic IP addressing I wrote
a couple of simple scripts that do several things:
<UL>
<LI>allow user-input'ed redial interval at startup
<LI>initially, attempt a connection at each of the five dial up numbers
<LI>if these lines are all busy, fall back to periodic redial at the
user defined interval
<LI>once a connection is established, automatically update the /etc/hosts
file to reflect my current dynamically allocated IP address ( I
hated having to do this constantly by hand)
<LI>allow the user to query the POP server for mail
<LI>start a small script program to run in the background that would
periodically ping the gateway server to keep a connection from
timing out
<LI>start a small script program to run in the background that would
periodically check my mail as long as the PPP connection was
active.
</UL>
To set all of this up I simply created the /etc/ppp/options file above, put the
shell scripts in the /usr/lib/ppp directory (kinda keeps things tidy that way),
created symlinks from the script programs to /root/bin which is in my path,
and created a series of plain text files that contain all the information needed
by <EM>chat</EM> to dial up the various numbers. You see, chat can be made to
read all the command line options from a file, which makes setting up a script
program much easier. I simply named these vandy1, vandy2, vandy3, etc., and
then used the shell program to cycle through them.
<P>
Since it's easier to show you these than to tell you about them, I've included
a name-password-number deleted copy of these scripts. You can probably improve
on these, but at least they may give you a start:
<UL>
<LI><A HREF="./misc/ppp">ppp</A>: redialer script that establishes the
initial connection
<LI><A HREF="./misc/pppon">pppon</A>: run this script after a connection
is established to update /etc/hosts, check mail, and start the
background ping and mail check programs
<LI><A HREF="./misc/ppp-up">ppp-up</A>: periodically pings the gateway
host to keep a PPP connection from timing out
<LI><A HREF="./misc/popcheck">popcheck</A>: periodically queries the POP
server for mail
<LI><A HREF="./misc/vandy1">vandy1</A>: an example of an options file that
chat uses to dial a particular connection
<LI><A HREF="./misc/pppoff">pppoff</A>: run this script when you're ready
to close the connection down.
</UL>
<P>
So, how else can you make all of this easier? Glad you asked...
<P>
If you're running X then try this: you can call up the <B>ppp</B> script program
and run it in its own xterm. To do this just type in:
<PRE>
xterm -ls -C -e ppp &
</PRE>
Two things are important to note. First, adding the &quot;-C&quot options displays
all of the messages on the xterm that would normally be sent to the console. I
use this because I've set up the /etc/syslog.conf file to send error messages and
such for PPP to /dev/console so I can see what's going on. Normally, an xterm
doesn't print this stuff. If you're running <B>xconsole</B> you'll see it, but I
prefer to watch as the connection is established.
<P>
Second, adding the &quot;-e&quot; option forces xterm to execute a program -- in
this case it's my <B>ppp</B> shell script. Now, want to get fancy? I knew you
would...
<P>
Why type all of this in when LINUX is more than willing to work for you. There are
three simple things that you can do to make this even EASIER:
<P>
Create a function, which you can put in /etc/profile or in your own ~/.bash_profile
which defines xppp:
<PRE>
xppp() { xterm -ls -g 80x24+360+120 -C -e ppp & }
</PRE>
By setting the geometry, I can make the xterm pop up where I want it. On my screen
this puts it in front of the full screen xterm I use as &quot;home-base&quot;.
Now, all I type in is &quot;xppp&quot; and <EM>voila</EM>, there is my program
running in its own xterm. When the connection is established, I iconify it.
Nice and tidy.
<P>
But that's not all that can be done. If you're running <B>fvwm</B> then you can
either add it to the pop up menu or set it up as a button in the GoodStuff botton
bar.
<P>
To add it to a menu item simply edit your system.fvwmrc or ~/.fvwmrc file and
include:
<PRE>
Exec "xppp" exec xterm -ls -g 80x24+360+120 -C -e ppp &
</PRE>
in any of the popup menus. You could add this to, for example, the Applications
menu.
<P>
You can also add this to the GoodStuff button bar by adding a stanza such as:
<PRE>
*GoodStuff xppp modem.xpm Exec "xppp" xterm -ls -g 80x24+360+120 -C -e ppp &
</PRE>
In this example, I'm using modem.xpm as the pixmap for the button and then
starting up the xterm with ppp running in it just as I would at the command line.
Now, at startup, just fire up the GoodStuff module and there you are! Press the
button and xppp fires up just where you want it.
<P>
Too way cool...
<P>
Once you've gotten the connection up and running, make the xterm with ppp running
an icon and then start the &quot;pppon&quot; program. This will update /etc/hosts,
check the mail, start the background programs, floss the cat, and do your wash.
LINUX is great.
<P>
I'd be interested in any suggestions, criticisms, or comments on these programs.
One idea that I haven't gotten around to doing is simply to create an
&quot;xppp&quot; program that automatically does all of this and reads the
options such as redial time and ping/mail check interval from a ~/.xppprc
file. Then, instead of running one program and then invoking the second, it's
all included in one program.
<P>
Have to think about this one...
<P>
Anyway, <A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu">let me know</A> about your successes,
failures, or suggestions!
<P>
<A HREF="#toc"><IMG ALIGN=BOTTOM SRC="./gx/toc.gif"></A>
<A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu"><IMG ALIGN=BOTTOM SRC="./gx/sendmail.gif"></A>
<A HREF="./gazette_toc.html"><IMG ALIGN=BOTTOM SRC="./gx/index.gif"></A>
<A HREF="./linux/linux.html"><IMG ALIGN=BOTTOM SRC="./gx/home.gif"></A>
<BR><BR>
<HR>
<!-- FIFTH SECTION: PINE AND POPCLIENT MAIL PROGRAMS -->
<!-- -->
<H2><IMG SRC="../gx/text.gif"><A NAME="mail">PINE + popclient - mail for the
sendmail-impaired</A></H2>
<P>
If you've got a standalone system - <I>i.e.,</I> you're not networked - but
have access to an SMTP (Simple Mail Transfer Protocol) mail server that also runs
POP(Post Office Protocol) then it is possible to send and receive email <B>without
having to set up sendmail</B>.
<P>
If the thought of setting up sendmail wads your shorts in a knot and raises your
anal sphincter tone...
<P>
<B>read on.</B>
<P>
It is possible to set up <B>PINE</B> to act as an SMTP client, which will deliver
outgoing email to the SMTP server, and <B>popclient</B> which can be used to pick up
incoming email from the mail server via POP. The beauty of this type of setup is
that it completely obviates (<B>ob.vi.ate</B> [from the Latin <I>obviam</I>]:
to see before hand and dispose of: make unnecessary <B>syn</B> see PREVENT)
the need to set up
sendmail to get mail out of your machine. If your email needs are fairly
simple, this is something worth considering. To do this, you'll probably want to
do a couple things.
<P>
First, you'll want to get a copy of the source for PINE and compile it yourself.
<P>
This isn't hard. HONEST.
<P>
Trust me.
<P>
Get a copy of the latest PINE source -- it should be pine version 3.91 and will be
a rather sizeable file weighing in at almost 2MB. You can find a copy of it in
the /pub/Linux/system/Mail/readers directory of your favorite sunsite.unc.edu
mirror. You can also get it factory-direct. From the &quot;brochure.txt&quot;
file in the pine distribution:
<BLOCKQUOTE>
<P>
Pine, Pico, and UW's IMAP server are copyrighted, but freely available.
The latest versions, including source code, can be found on the Internet
host "ftp.cac.washington.edu" in the file "pine/pine.tar.Z" (accessible
via anonymous FTP).
</BLOCKQUOTE>
<P>
Once you've retrieved it, you can untar it into your favorite source workplace and
get to work on it. The document that gives you ALL the gory details is in the
/doc subdirectory and is called &quot;tech-notes.txt&quot;. It describes in detail
the underpinnings of PINE, outlines its impressive list of capabilities, and then
describes what you'll need to do to install it. But fear not, I promised you
this would be easy.
<P>
The compelling reason you'll want to compile PINE yourself has to do with a simple
problem: the &quot;From: &quot; field. You see, most mail user agents like
elm, pine, xmail, xmh, mailx, and others are &quot;smart&quot; enough to figure
out who you are and where you are. If you've set up a hostname for your machine it
will automatically pick that out and add your login name.
<P>
For example: I, in a rather cavalier fashion I'll admit, do most of my work under
LINUX as root. You know... it's a power thing. Anyway, when I send mail from
my machine using any of the aforementioned front ends my FROM: field is
automagically filled out and looks like:
<PRE>
From: root@FiskHaus.vanderbilt.edu
</PRE>
Now, that wouldn't be too bad except that anyone wanting to REPLY to my message has
a bit of a problem:
<P>
That address doesn't really exist. My &quot;real&quot; address is transient and
is something like <EM>dialup0032@ctrvax.Vanderbilt.Edu</EM>.
<P>
The way to fix that is to recompile PINE. You see, PINE allows you to modify the
&quot;From: &quot; field if this is a compile time option. Generally, this is
not a desirable quality as it allows nar-do-well's to masquerade as someone else
and engage in anti-social activities. However, if you're reading this, you're not
likely to fall into that camp.
<P>
So, here's a simple checklist of things to do to compile PINE:
<P>
[1] untar the archive
<BR><BR>
[2] edit the file /pine3.91/pine/makefile.lnx if you desire. This file contains
all of the compiler options including stuff like profiling and debugging options.
If you're one of those hair-on-your-chest kinda code hackers... hack away. For
the rest of us, there's really not much that needs to be changed.
<BR><BR>
[3] edit the file /pine3.91/pine/osdep/os-lnx.h -- this is where the real action
is located. This allows you to define much of PINE's behavior. While most options
can be set via its Setup menu, there are a couple things that can only be set at
compile time, and modifying your From: field is one of these. To do this, you'll
uncomment the stanza that defines this. It will look like:
<PRE>
#define ALLOW_CHANGING_FROM
</PRE>
The nice folks at Washington U. have provided a well commented header file that
explains what most of these options are. This is probably the most important for
what we're doing here.
<BR><BR>
[4] once you've edited these two files you're ready to compile. (see, I <EM>told
</EM> you it was easy) Now, go up to the top directory, the /pine3.91 directory,
where you'll find the script program <EM>build</EM>. To compile you'll simply
issue the commands:
<PRE>
build clean
build lnx
</PRE>
And that's it. When all the grinding on your HD has ceased you'll find several
nice, shiny new program executables in the /pine3.91/bin/ directory, including
<B>pine</B>. You can test drive this right from this directory or copy it to
your /usr/local/bin/ directory -- wherever you install new program files.
<BR><BR>
[5]
Now, to set up the correct &quot;From: &quot; customized headers fire up pine and
then hit &quot;s&quot; for Setup. Go to the &quot;Config&quot; section. This is
where you'll do most of the important configuration.
<P>
My configuration appears like:
<PRE>
personal-name = John M. Fisk
user-domain = vanderbilt.edu
smtp-server = ctrvax.vanderbilt.edu
nntp-server = news.vanderbilt.edu
inbox-path = /root/mail/mail-in
folder-collections = <NO VALUE SET: USING MAIL/[]>
news-collections = <NO VALUE SET>
default-fcc = <NO VALUE SET: USING "sent-mail">
postponed-folder = <NO VALUE SET: USING "postponed-msgs">
read-message-folder = mail-in
signature-file = <NO VALUE SET: USING ".signature">
global-address-book = <NO VALUE SET>
address-book = <NO VALUE SET: USING .ADDRESSBOOK>
</PRE>
The important entry is the smtp-server variable. If this is filled in with either
the IP address or the host name of the SMTP mail server then PINE will act as a
SMTP client and simply forward mail to this server.
<P>
The other important entry is found later on in the configuration menu and looks
like:
<PRE>
initial-keystroke-list = <NO VALUE SET>
default-composer-hdrs = <NO VALUE SET>
customized-hdrs = From: John M. Fisk &lt;fiskjm@ctrvax.vanderbilt.edu&gt;
saved-msg-name-rule =
</PRE>
I've set the customized-hdrs variable to my correct email address. Now
the correct From: entry is included with my outgoing mail and all REPLY's will
correctly include my email address. You'll also notice one other thing. In
the above configuration file I've also set the nntp-server variable. If this is
set you can use PINE as a Usenet news reader. It actually works quite well. If
you have access to an NNTP news server <B>you're, like, totally golden!</B>
<P>
Now see, that wasn't so bad!
<P>
And setting up popclient is even easier! To do this all you'll need to do is get
a copy of <B>popclient</B> from your favorite ftp archive. At the sunsite.unc.edu
mirrors its generally kept in the:
<PRE>
/pub/Linux/system/Mail/pop/
</PRE>
Put the program file in your favorite /bin directory, somewhere in your PATH, and
you're ready to get your mail!
<P>
There's one little &quot;feature&quot; of popclient that you must be aware of
if you're going to use it. You can set it up to pick up your mail from your
server <B>but you had better explicitly tell it where to deposit the mail it
picks up.</B> The reason is that popclient, at least the version I'm running,
will pick up mail from the server and then try to deliver it to the person
<EM>with the same login name</EM>. This is OK if your POP mail server login name
and your local LINUX login name are the same, but if they're not, then popclient
can't find anywhere to put the mail and it ends up in the bit bucket. Problem is
popclient is such a tidy thing that it also deleted your mail off the server.
<P>
Poof! no mail.
<P>
Ultra Mega-uncool SuperBummer... no mail.
<P>
So, how do you fix it? Easy.
<P>
Popclient has a number of command line options including one that will let you
specify the file to which mail will be added. On my machine, I invoke it with:
<PRE>
popclient -3 -v -u myname -p mypassword -o /root/mail/mail-in ctrvax.vanderbilt.edu
</PRE>
This invocation configures popclient to (-3) use POP 3 protocol, (-v) use verbose
output so I can watch what's going on, (-u) login in with my username, (-p)
login with my password, (-o) put the mail into the file /root/mail/mail-in, and
finally, pick it up from the mail server ctrvax.vanderbilt.edu.
<P>
Do yourself a favor... let LINUX do some work for you. Instead of typing all that
mess out every time you want to check your mail, you can set up an alias or a
function and then invoke it. Try something like:
<PRE>
popmail() { popclient -3 -v blah.blah.blah... }
</PRE>
which you can add to your ~/.bash_profile file. Then, to invoke popclient with
the correct command line options you simply enter <CODE>popmail</CODE> and it
runs the program to pick up your mail.
<P>
Before concluding this, though, you probably need to consider the limitations
of this type of mail system and determine if you're willing to put up with them:
<UL>
<LI>You MUST have access to a mail server that is SMTP and POP capable.
<LI>You MUST be willing to use PINE as your ONLY mail agent.
<LI>You can ONLY send mail out via the SMTP server.
</UL>
This prohibits you, for example, from using other mail user programs such as
elm, or mailx.
<P>
That isn't much of a hardship.
<P>
Where it DOES hurt is when you're running X and want to use one of the more
user-friendly mail programs such as xmail, xmh, xelm, or mumail. These have
very nice graphical interfaces. They often lack the breadth of features that
PINE has, but for simple mail use they are quite handy.
<P>
Also, if you have a Web browser running, and if you're running a SLIP or PPP
connection <EM>you should!</EM>, then you won't be able to use the <EM>mailto:</EM>
feature.
<P>
All in all, you'll need to weigh out the cost-benefit ratio for yourself. Keep in
mind that this setup can be used as an &quot;easy to set up&quot; configuration to
quickly get mail in and out while you're hacking away on smail, sendmail, or
sendmail+IDA.
<H4>WARNING: Blatant product testimonial follows...</H4>
<P>
Try sendmail+IDA.
<P>
Using a combination of the documentation that came with the sendmail+IDA
distribution and the Network Administrator's Guide, I was able to get this up and
running with less than an afternoon's amount of work. I have very simple email
needs and so configuration was fairly simple. All of the various mail clients
work well with sendmail+IDA and I'm using the university's DNS nameserver and
so can use the sendmail.bind.no executable.
<P>
Good luck! If you get things working... congrats! Drop me a note!
<P>
<A HREF="#toc"><IMG ALIGN=BOTTOM SRC="./gx/toc.gif"></A>
<A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu"><IMG ALIGN=BOTTOM SRC="./gx/sendmail.gif"></A>
<A HREF="./gazette_toc.html"><IMG ALIGN=BOTTOM SRC="./gx/index.gif"></A>
<A HREF="./linux/linux.html"><IMG ALIGN=BOTTOM SRC="./gx/home.gif"></A>
<BR><BR>
<HR>
<!-- SIXTH SECTION -- CUSTOMIZING X -->
<!-- -->
<H2><A NAME="customx"><IMG ALIGN=BOTTOM SRC="../gx/text.gif">Customizing X - So
where <EM>is</EM> everything...</A></H2>
<P>
Man, one thing about X...
<P>
<B>It's HUGE</B>
<P>
Getting X Window running on your LINUX box is one of those unforgetable
experiences. For every LINUX Newbie it's the rite of passage. It's the
milestone. It's a rush.
<P>
Customizing X then becomes a lifelong pass-time. And X will give you more than
ample opportunity to do this. Once again, I'm going to make a couple simple
assumptions:
<UL>
<LI>you've gotten X Window running
<LI>you're running the XFree86 3.1.x version of X
<LI>you're using fvwm as your window manager
<LI>you're ready to do a bit of tweaking
</UL>
The ONLY reason I'm making these assumptions is that this is basically the setup
I'm currently running. So, all the suggestions I'm making, which come from
experimentation on my system, are based on this setup. Now, if you're running
older versions of these programs the suggestions and ideas presented here will
probably work for you, but you may need to do a bit of reading/tweaking on your
own.
<P>
Anyway, let's begin...
<H4>So...where <EM>is</EM> everything...</H4>
<P>
A few of the more helpful configuration files include:
<DL>
<DT>/usr/X11R6/bin/xinit
<DD><P>
A Bourne shell script that is responsible for firing up X Window. It
looks for the .xinit script in the user's home directory which it
will use for instructions as to how to start the client programs.
If it finds none it will start an xterm from which a window manager
can be started.
<P>
<DT>/usr/X11R6/lib/X11/xinit/xinitrc.fvwm --> xinitrc
<DD><P>
A Bourne shell script that, among other things, loads up the resources
in various user and system .Xresources and .Xdefaults files, loads
up the keymaps in .Xmodmap files, turns the root window a pleasing
shade of deep blue (xsetroot -solid SteelBlue), and fires up the
fvwm window manager. This is the system-wide X initialization
program that can be used with startx.
<P>
<DT>~/.xinitrc
<DD><P>
A Bourne shell script that is found in the user's home directory. If it
is present it is used by either xinit or startx to start client
programs -- such as xterm, xclock, xman, etc. -- and/or a window
manager. This file allows each user to customize her/his X configuration.
<P>
<DT>/usr/X11R6/lib/X11/xinit/.Xresources
<DD><P>
A plain text file that sets various X client <EM>resources</EM>. This
particular file can be used with programs like xinit or startx to
set system-wide X resources if none are set by the user.
<P>
<DT>~/.Xresources
<DD><P>
A plain text file in a user's home directory that sets the various
X client resources <EM>for that user</EM>. As with the above file,
these resources are loaded using the <B>xrdb</B> (X Resource DataBase)
program.
<P>
<DT>/usr/X11R6/lib/X11/XF86Config
<DD><P>
A plain text file feared and hated by all X Newbies and the cause of untold
misery, anorexia, irritability, PMS, premature balding, and the federal
deficit. It's also used by the X server to set necessary configuration
parameters.
<P>
<DT>/usr/X11R6/bin/startx
<DD><P>
A Bourne shell script that, in its own words:
<BLOCKQUOTE>
<P>
# This is just a sample implementation of a slightly less primitive
# interface than xinit. It looks for user .xinitrc and .xserverrc
# files, then system xinitrc and xserverrc files, else lets xinit choose
# its default. The system xinitrc should probably do things like check
# for .Xresources files and merge them in, startup up a window manager,
# and pop a clock and serveral [sic] xterms.
#
# Site administrators are STRONGLY urged to write nicer versions.
</BLOCKQUOTE>
<DT>~/.Xmodmap
<DD><P>
A plain text file that is used by <B>xmodmap</B> to set key mapping under X.
The xmodmap program, in its own words:
<BLOCKQUOTE>
<P>
The xmodmap program is used to edit and display the key-
board modifier map and keymap table that are used by
client applications to convert event keycodes into
keysyms. It is usually run from the user's session
startup script to configure the keyboard according to per-
sonal tastes.
</BLOCKQUOTE>
<P>
In plain english, this allows you to remap your keyboard if you're so
inclined.
<P>
<DT>/usr/X11R6/lib/X11/fvwm/system.fvwmrc
<DD><P>
A plain text file that is used by the <B>fvwm</B> window manager to set up
a myriad (<B>myr.i.ad</B> [from the Greek <I>myriad-, myrias</I>]:
an immense number :ten thousand, INNUMERABLE) of configuration options.
Truly a joy to hack.
<P>
<DT>~/.fvwmrc
<DD><P>
<I>ibid.</I>, but in the user's directory.
<P>
<DT>/usr/X11R6/lib/X11/app-defaults/
<DD><P>
The directory in the LINUX FSSTND that houses the X client <EM>app-defaults</EM>
that set the default resources for these programs.
</DL>
<P>
I'm sure that I've forgotten something, but these are some of the more important
files and directories that are used to configure X and its clients.
<P>
So, where do you go from here? There are probably two things that you'll want to
do. First, MAKE BACKUP's OF EVERYTHING!! Make a backup of all those configuration
files that came with the distribution.
<P>
Why?
<P>
If you break it, you can fix it. Without a backup, you can be seriously hosed.
There's nothing like pawing through a pile a 40 disks looking for the set that
has the series that has the archive that has the file that has the default
configuration to fix something that you, in a moment of blinding stupidity,
mucked with and now can't remember what you did. It's like the old &quot;
flea on the spot on the frog on the bump on the log in the hole in the bottom of
the sea &quot; problem. You get the picture.
<P>
Back up. You'll never regret it.
<P>
Second, buy a scratch pad notebook and use it for all your tinkering around with
the system. Some of the best tweaking and tinkering is aided by pen and paper.
Honest.
<P>
Anyway, enough of that. Let's DO something.
<P>
<A HREF="#toc"><IMG ALIGN=BOTTOM SRC="./gx/toc.gif"></A>
<A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu"><IMG ALIGN=BOTTOM SRC="./gx/sendmail.gif"></A>
<A HREF="./gazette_toc.html"><IMG ALIGN=BOTTOM SRC="./gx/index.gif"></A>
<A HREF="./linux/linux.html"><IMG ALIGN=BOTTOM SRC="./gx/home.gif"></A>
<BR><BR>
<HR>
<!-- SEVENTH SECTION - USING VGASET -->
<!-- -->
<H2><A NAME="vgaset"><IMG ALIGN=BOTTOM SRC="../gx/text.gif">Customizing X with
<EM>vgaset</EM></A></H2>
<P>
There's a nifty little utility that truly represents one of those <EM>must-have</EM>
utilities: <B>vgaset</B>. What's it do? It's used to help tune your X Window
geometry. Basically, once you've found a modeline entry that works, no matter that
it's a bit lopsided and skewed to the left, vgaset can interactively help you tune
it up so you can stop constantly having to use your monitor controls to size and
place the window. If your monitor doesn't have these controls then it's even more
important to know how to use it.
<P>
So, OK. What'll you need to know? Vgaset needs information from the modeline
entry that you are currently using. That is, it needs to know:
<UL>
<LI>the <B>dot clock</B> that you are using
<LI>the <B>min and max horizontal and vertical frequencies</B> your monitor
supports
<LI>the size in pixels of the <B>desktop or virtual desktop</B> that your
are using.
</UL>
Actually, this isn't very hard. My current settings are:
<PRE>
Section "Monitor"
Identifier "RandomMonitor-0"
VendorName "Unknown"
ModelName "Unknown"
BandWidth 70
HorizSync 31.5 - 48.5
VertRefresh 50 - 100
Modeline "800x600" 49.87 792 808 928 1032 768 768 772 785 +hsync
Modeline "1024x768" 64.98 1024 1032 1176 1344 768 768 774 785 -hsync
Modeline "640x480" 31.50 712 752 798 896 503 511 514 544
EndSection
</PRE>
From my monitor's manual I know that my min and max horizontal freq's are
31.5 - 48.5 KHz and that my min and max vertical freq's are 50 - 100 Hz.
I'm currently using a virtual desktop of 1152x900 and am using the
&quot;800x600&quot; modeline entry which has a dot clock frequency of 49.87.
<P>
Thus, to use vgaset, I fire up an xterm and invoke it using:
<PRE>
vgaset -d49.87 -x31.5 -X48.5 -y50 -Y100 -v 1152 900
</PRE>
<B>CAVEAT: Since messing with monitor settings indescriminately can fry your
monitor, READ THE MANPAGE FOR VGASET BEFORE YOU USE IT.</B>
<P>
Don't say I didn't warn you. Still, if you follow the directions, vgaset can
be a huge help. Once you get it running, you can interactively change the
modeline settings which can change the size and orientation of the X Window
display.
<P>
There are single letter commands that allow you to change the settings:
<PRE>
Commands:
l - decrease the left margin
L - increase the left margin
r - decrease the right margin
R - increase the right margin
h - decrease the horizontal sync pulse width
H - increase the horizontal sync pulse width
t - decrease the top margin
T - increase the top margin
b - decrease the bottom margin
B - increase the bottom margin
v - decrease the vertical sync pulse
V - increase the vertical sync pulse
x - decrease x-resolution
X - increase x-resolution
y - decrease y-resolution
Y - increase y-resolution
? - reset initial values
CR - redisplay the settings.
q - quit
EOT - quit
</PRE>
So, if your root window is too wide/narrow try using the x or X command to
change the horizontal size. Likewise, use the y or Y command to change the
vertical size. Use the L, R, l, and r commands to position the margins so that
the window is centered.
<P>
Once you've sized and positioned the window where you want, jot down the
modeline values. On my machine it looked like:
<PRE>
Horizontal frequency: 48.3 kHz, vertical frequency: 58.3 Hz
Horizontal sync 2.41 us, vertical sync 82.78 us
Horizontal retrace 4.81 us, vertical retrace 786.36 us
Top margin increase
50 792 808 928 1032 791 791 795 830
</PRE>
There's a LOT of information provided here but what you're primarily interested in
is that last line. Use it to create an entry such as:
<PRE>
modeline &quot;800x600&quot; 49.87 792 808 928 1032 791 791 795 830
</PRE>
in your XF86Config file under the &quot;Monitor&quot; section. If you then list
this mode as the first entry in your &quot;Display&quot; subsection Modes list
then it will be the first mode that X will use.
<P>
Cool, eh?
<P>
Ok, so all we've done so far is move the window around a bit. BIG DEAL...huh?
Well, let's really spiff up X...!
<P>
<A HREF="#toc"><IMG ALIGN=BOTTOM SRC="./gx/toc.gif"></A>
<A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu"><IMG ALIGN=BOTTOM SRC="./gx/sendmail.gif"></A>
<A HREF="./gazette_toc.html"><IMG ALIGN=BOTTOM SRC="./gx/index.gif"></A>
<A HREF="./linux/linux.html"><IMG ALIGN=BOTTOM SRC="./gx/home.gif"></A>
<BR><BR>
<HR>
<!-- EIGHTH SECTION - INSTALLING THE XAW3D LIBS -->
<!-- -->
<H2><A NAME="xaw3d"><IMG ALIGN=BOTTOM SRC="../gx/text.gif">Customizing X with the
Xaw3d libs!</A></H2>
<P>
Of all the customizations that can be done for the stock XFree86 distribution,
the one that is the EASIEST and possibly the most immediately impressive is
installing the <B>libXaw3d libs</B>. But I'm <EM>sure</EM> that all of you have
already done this because in the <B>July, 1995 (Issue 15)</B> edition of the
<A HREF="http://www.ssc.com/">Linux Journal</A> there was an excellent article
by <B>Mark Komarinski</B> on page 54 entitled &quot;Installing the Xaw3d
Libraries&quot;. I'm sure there's no need to...
<P>
Pardon?
<P>
What!! You don't get the LINUX JOURNAL!!
<P>
<BLINK><B>CHEESER!!</B></BLINK>
<P>
Don't be a cheapskate! Repent thou niggardly skinflint!! These guys at
<A HREF="http://www.ssc.com/">Specialized Systems Consultants, Inc (SSC)</A>
are doing a great job of putting out an excellent resource for the LINUX
community.
<P>
Seriously, you really do need to get this magazine. You get a year's subscription
for a $22 and more importantly, you provide the support for all the hard working
folks at SSC responsible for its production. The July edition had articles such
as:
<UL>
<LI>Setting up X11 - a no-tears guide to Xfree86 configuration
<LI>Installing the Xaw3D libraries
<LI>HTML: a Gentle Guide
<LI>xfm 1.3 - a file and applications manager
<LI>product reviews including Metro-X and Motif for Linux
<LI>Games, Sound, and Other Agonies in Novice to Novice
</UL>
It really is a great magazine and worth the VERY reasonable subscription cost.
Go ahead and give these guys a call at (206) 782-7733 or send them email regarding
subscriptions at <A HREF="mailto:subs@ssc.com">subs@ssc.com</A>. Or, if you
REALLY, REALLY MUST, they do maintain a snail-mail address for the
electronically-and/or-sendmail-challenged. You can point your postage stamp at:
<PRE>
Linux Journal
P.O. Box 85867
Seattle, WA 98145-1867
</PRE>
<H4>DISCLAIMER - Nope, I don't work for these guys, nor have they given me money
to write this.</H4>
<P>
I really am impressed with work these guys are doing and they deserve your support.
You, on the other hand, deserve the fruits of their hard work. These articles
really are quite helpful and give you a larger picture of what's happening in the
LINUX community.
<P>
Back to the topic.
<P>
Setting up the Xaw3D libs is such a breeze that it'll make you feel good about
yourself once again. Honest. So just exactly <EM>what are</EM> these things?
The Xaw3D libs are the shared libraries of X Window Athena Widgets. Widgets are
the building blocks, if you will, of the graphical components of the X clients.
Widgets are the menus, buttons, boxes, sidebars, title bars, and so forth that
are put together to create the graphical component of a program. The original
Athena widgets, from the nice guru's at MIT, are referred to as Xaw. These
new 3d widgets were designed to give X a Motif-like 3D appearance.
<P>
The beauty of it is, that the new libXaw3D library is simply a drop-in replacement
for the old libXaw library. Installation is a cinch. Trust me.
<P>
So what do you need to do? Here it is:
<OL>
<LI>Get your hands on a copy of the Xaw3D libs. One of the easiest places to
find them is at one of the sunsite.unc.edu mirrors such as
<A HREF="ftp://ftp.cc.gatech.edu/pub/linux/libs/X/">GA Tech's sunsite archive</A>
in the /pub/linux/libs/X subdirectory. Using the precompiled binaries makes the
whole process very easy and you should find a copy there.
<P>
<LI>Untar the archive. At this point, you probably want to see what's in the
archive first -- try using <CODE>tar -tvf Xaw3D_X11R6.tar.gz</CODE> or whatever
the name of the file is -- to make sure that it's not stored with absolute
paths. If it is, you'll probably want to untar it from your root (/) directory
so that things are put where they belong. These libraries generally end up in
your /usr/X11R6/lib directory. If there are simply a series of files, you can
safely untar them anywhere and then copy or move them to your /usr/X11R6/lib
directory. BUT NOT BEFORE YOU...
<P>
<LI>Make a backup copy of your current libXaw.so.6.0 file. Copy it somewhere
safe such as a /usr/local/backup directory. That way, in the off chance that
things get really fouled up, you can simply reinstall the old library.
<P>
<LI>Once you put the files in /usr/X11R6/lib you should have several new files
including
<UL>
<LI>libXaw3d.so.6.0
<LI>libXaw3d.sa
<LI>libXawed.a
</UL>
You will now need to rename the libXaw3d.so.6.0 to libXaw.so.6.0. The easiest
way to do this is simply to copy over the old lib (once you've backed it up...
you HAVE backed it up, right?) by <CODE>cp libXaw3d.so.6.0 libXaw.so.6.0</CODE>.
<P>
<LI>Finally, run the program <B>ldconfig</B>. This is done by simply entering
<CODE>ldconfig</CODE> at the command line. This program automatically updates
the links between the actual library files and the file that <B>ld.so</B> will
be looking for. You see, for programs that are dynamically linked to the
libXaw library, ld.so will be looking for a file called libXaw.so.6, NOT
libXaw.so.6.0. So, the program ldconfig creates the proper symlinks so that
ld.so can find these files.
</OL>
<P>
Gotten this far? You're almost done!
<P>
The final bit of housekeeping is to add the necessary resources to make the Xaw3D
widgets look nice. This is also very straight-forward. Simply add the following
bit of configuration to your personal or system-wide .Xresources file:
<PRE>
! Good Xaw3d Defaults
!
*Form.background: #c0c0c0
*TransientShell*Dialog.background: #c0c0c0
*Command.background: #c0c0c0
*Menubutton.background: #c0c0c0
*ScrollbarBackground: #c0c0c0
*Scrollbar*background: #c0c0c0
*Scrollbar*width: 15
*Scrollbar*height: 15
*Scrollbar*shadowWidth: 2
*Scrollbar*cursorName: top_left_arrow
*Scrollbar*pushThumb: false
*shapeStyle: Rectangle
*beNiceToColormap: False
*shadowWidth: 2
*SmeBSB*shadowWidth: 2
*highlightThickness: 0
*topShadowContrast: 20
*bottomShadowContrast: 55
</PRE>
<P>
Alternatively, you can try these that were included with the Linux Journal
article:
<PRE>
*background: LightSkyBlue
*Form.background: grey90
*TransientShell*Dialog.background: bisque3
*Command.background: gray80
*Menubutton.background: gray80
*ScrollbarBackground: gray70
*Scrollbar*width: 16
*Scrollbar*height: 16
*Scrollbar*shadowWidth: 2
*Scrollbar*cursorName: top_left_arrow
! You can change the above to all kinds of icons, including gumby.
! Find out what icons are available by looking in
! /usr/include/X11/cursorfont.h - be sure to strip off the XC_
*Scrollbar*pushThumb: false
*ShapeStyle: rectangle
*beNiceToColormap: false
*shadow*Width: 2
! The above defines all shadowwidths to 2.
*Label*shadowWidth: 2
! The above overrides the definition from a few lines above for Label
! widgets.
*SmeBSB*shadowWidth: 2
*highlightThickness: 0
*topShadowContrast: 20
*bottomShadowContrast: 40
! The above two lines define how the shadows appear on the top and
! bottom of teh widgets. The higher the number, the lighter it is. This
! particular setting makes the top and left sides darker than the
! bottom and right sides.
</PRE>
<P>
You're now ready for a test drive. Make sure that the above has been added to
your .Xresources or .Xdefaults -- whichever is loaded by xrdb at initialization
-- and then fire up X. If you set your xterms up to include sidebars then you
should see an immediate difference. Try firing up something else. Try <B>xedit</B>
or something that uses the libXaw widgets and you'll notice a distinctive
improvement.
<P>
Congrats! X has just had a major facelift.
<P>
<A HREF="#toc"><IMG ALIGN=BOTTOM SRC="./gx/toc.gif"></A>
<A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu"><IMG ALIGN=BOTTOM SRC="./gx/sendmail.gif"></A>
<A HREF="./gazette_toc.html"><IMG ALIGN=BOTTOM SRC="./gx/index.gif"></A>
<A HREF="./linux/linux.html"><IMG ALIGN=BOTTOM SRC="./gx/home.gif"></A>
<BR><BR>
<HR>
<!-- LAST SECTION, WRAPPING THINGS UP -->
<!-- -->
<H2><A NAME="wrapup"><IMG ALIGN=BOTTOM SRC="../gx/text.gif">So... what's in store
for the <EM>next</EM> edition of the Linux Gazette?</A></H2>
<P>
Well, as always, there's a LOT more to write about, but this has already grown a
bit out of hand. I've been messing around with X for some time now and there's
so much that can be done to make it a lot easier, prettier, and more fun to use.
And the basic skills are pretty easy to get a handle on.
<P>
<B>My sincerest thanks to all of you who've written.</B> I mean it.
<P>
So, what's in store? Well, I've got pages of drafts and ideas jotted down that
were all supposed to fit in this edition. Soooo... next month's edition will be
a WHOLE LOTA X, including:
<UL>
<LI>fvwm configuration -- where to start
<LI>fvwm configuration -- adding popup menus
<LI>fvwm configuration -- creating GoodStuff button bars
<LI>fvwm configuration -- the power of Styles
<LI>fvwm configuraiton -- starting clients at init
<LI>fvwm configuration -- creating an efficient desktop
<LI>xterm bonanza -- fonts, menus, adding buttons, geometry
<LI>XFree86 tools for configuration
<LI>Must-have configuration utilities including xcolorsel, xkeycaps,
xbmbrowser, pixmap
<LI>X Toy of the Month: fly8 -- an awesome flight simulator!
<LI>X app of the Month: xarchie -- the power of archie + ftp
</UL>
These are some of the ideas kicking around. I'd be happy to hear any ideas,
suggestions, criticisms, or so forth. Now that you've got your PINE + popclient
mail system up and running. Write me.
<P>
Hope you've enjoyed!
<H4>One LAST bit of housekeeping...</H4>
<P>
I've talked with the gracious hosts of the Linux Gazette at
<A HREF="http://www.tenn.com/">Tennessee CommerceNet</A> who have tentatively
given an OK to set up a bit of ftp'ing. I'd be willing to put monthly editions
of the Linux Gazette, including the html code and images, into a tar.gz file
for downloading. This might make purusing it at your leisure a bit more
leisurely. I'm also willing to make available a plain text version as well.
<P>
If there's any interest in this, better let me know. Otherwise, I'll just keep
putting these online.
<P>
And if ANYONE broaches the subject of a PostScript file...
<P>
No.
<P>
Get real. Get a life. Or at least get a decent browser. :-)
<P>
<B>Y'all come back now...</B>
<P>
<A HREF="#toc"><IMG ALIGN=BOTTOM SRC="./gx/toc.gif"></A>
<A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu"><IMG ALIGN=BOTTOM SRC="./gx/sendmail.gif"></A>
<A HREF="./gazette_toc.html"><IMG ALIGN=BOTTOM SRC="./gx/index.gif"></A>
<A HREF="./linux/linux.html"><IMG ALIGN=BOTTOM SRC="./gx/home.gif"></A>
<BR><BR>
<HR>
<H4>Got any <I>great</I> ideas for improvements! Send your
<A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu">comments, criticisms, suggestions, and ideas.</H4>
<BR>
<A HREF="linux/linux.html"><IMG ALIGN=BOTTOM SRC="../gx/back.gif"> Back up to Linux
HomeBoy WebPage</A> <BR>
<BR>
<I>This page written and maintained by:</I><BR>
<ADDRESS>
<A HREF="jmf.html">John M. Fisk</A> at <A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu">
fiskjm@ctrvax.vanderbilt.edu</A>
</ADDRESS>
</BODY>
</HTML>