I got a bit of feedback the other day from Nate asking if I had dot
files. I certainly do. I assume what they meant is if I have
particular customizations, and then if I would care to share them.
I definitely have a bunch of particular changes, and as for sharing
them, why not. It lets me get a bunch of shots in at things that have
become annoying over the years, and that means it’s perfect for stirring
up the hornet nests with a Friday night post.

Starting on my daily driver box that runs Debian, then:

I have a .bashrc that has a bunch of dumb two- or three-letter aliases
which amount to ‘ssh (otherbox)’. For some reason that is lost to time,
they all start with the letter m, and then the second letter sometimes
reflects the name of the target system – “mm” takes me to my Mac Mini
(which also runs Debian), for instance.

The stock PS1 bugged me a bit, so I mangled it down to this:

export PS1=’h:w$ ‘

… which turns into “hostname:/some/path$ “, in other words.

I think I’ve had a prompt like that on my personal machines basically
forever – probably back to 1994 if not before. That’s fine when I’m
just running things as myself. If I run sudo, I get the stock setting
which ends up looking like this:

root@hostname:/some/path#

… and that’s fine, too. Making it look a bit different when rootly
powers are in force is a good thing.

The next one is switching off another annoyance:

alias ls=’/bin/ls -N’

The -N switch to ls says “print entry names without quoting” … and
it’s the difference between having just the filename shown, spaces or
no, and having it ‘wrapped like this’. The way I see it, if you’re
printing quotes there, they’d better be part of the damn name.
It reminds me of the time they started doing crazy UTF-8 “smart quotes”
in their error messages and I didn’t know it had changed. Cue me going
“WTF is this gunk in this filename?” and thinking we had major
corruption in the system somewhere.

I’d probably put up with the quoting if it didn’t bump everything else
out to the right another column. Two spaces between the time and the
filename? Heresy!

The next two are filed under “everyone sucks at setting colors in Unix
tools so stop adding it to everything”. The first one is for sar:

export S_COLORS=never

… and the second one is something I
found
a little later which seems to be something that might work across
multiple programs (assuming they’ve been patched to recognize it):

export NO_COLOR=”eat flaming death you [elided]”

You can guess what the rest of it says. The actual value doesn’t
matter. Just having it set does the job. The value I put there is just
to make me feel better every time I have to fight to get back to the
perfectly working system I’ve had.

That’s it for .bashrc. Next, I have .gitconfig which is mostly boring.
There’s a [user] section which has name= and email=, and those are set
to about what you would expect.

I have pull.rebase set to true because that’s always what I would use
anyway when doing a pull, and it started whining at some point. So I
put this in here to make it keep doing what I wanted. This is because I
don’t do branches and other goofiness and just want a nice simple
continuous timeline for my commits.

I also have init.defaultBranch set to main because, eh, why not? I’ve
designed enough systems based on the old broken naming schemes and don’t
need any more.

I have a .gdbinit. Why? Same old story: the default now sucks. It has
one line:

set style_enabled off

It’s amazing just how awful it is when it changes colors every time it
hits a ( or ” or whatever. How do people deal with that stuff? So bad.
It’s so nasty.

Next up, .nanorc, and this one is a three-ring circus. Basically, for
the longest time, I didn’t need one of these. Now, I add about one
line on average every three or four years because – again – things keep
changing for the worse.

Here’s where things are now:

syntax "all" ".*"
color yellow "^$"
unset locking
set emptyline
set breaklonglines

The first two have been with me for quite a while now, and serve to
disable syntax highlighting across the board. Again, not my thing.

Line three stops it from pooping out stupid ~ files everywhere. Not
wanted, not needed, didn’t ask for it, was forced upon me, had to murder
it with a setting.

Lines four and five just put back behaviors that they dumped in 4.0: the
blank line right below the status bar at the top, and the wordwrap that
happens when you hit a certain column. I use that all the time, like,
well, *right now* writing this post. It hard-wraps at 72, because OF
COURSE it does.

Next is my .Xresources which provides a way to disable some obnoxious
behavior in urxvt without having to recompile it. For the longest time,
I’d chop it out and drop a custom binary into my bin directory. Then I
realized it could be tamed without such mangling, and here we are:

URxvt.perl-ext:
URxvt.perl-ext-common:

This has the effect of making it so a double-click highlights the whole
word, and a third click highlights the whole line *even if* someone’s
holding a
LISP convention
on that particular row of the terminal.

Then I have a .xsessionrc which needs to exist because I now log in
through xdm, and the window manager (fluxbox) ends up inheriting *that*
environment. Yep, it doesn’t get a .bashrc type thing applied to it.
(Not gonna lie – this took a while to figure out. Quick, which of
.bashrc, .bash_profile, .profile et al get run for any given type of
login you do to a box? Text mode, X *and* ssh all matter.) Anyway,
that means I have to twiddle my PATH in there, or the commands that
fluxbox runs for me won’t find anything in those extra directories.

That is, I like my .fluxbox/menu entries to be short and sweet, like
“term”. That’s a small stupid script in my bin directory. If that’s
not in my PATH then I’d have to spell out the whole /home/blahblah
thing, and that’s just idiotic.

Speaking of fluxbox, that has a dot directory, and a startup script in
there to set a few things up properly.

xset b off
xset r rate 250 30
xset dpms 1900 2000 2100
xscreensaver &

Line one turns off the console beep – not that my machine has a PC
squeaker any more, but I think some things try to be “helpful” by
sending a beep into the system audio path. That can be really
obnoxious, like when I’m deliberately holding down a key for whatever
reason and get to the beginning of the line.

Line two is about getting that key-repeat going at a speed I like. If I
end up on a machine where that’s not fast enough, it becomes obvious
pretty quickly, and I have to go adjust things. Not every situation
allows for things like ^W to eat a word or ^U to eat the whole line, and
so holding down backspace to change the wording of something is what I
want.

Likewise, if I want to put a “————-” divider somewhere, I don’t
want to wait for it to get going. It looks like that means “wait 250 ms
before repeating, and then repeat at 30 Hz”, but I had to look it up
because it’s been set like that for as long as I can recall.

Or maybe I want to hold down the cursor key to scroll something, or just
move somewhere else on the line. Same thing.

Annoyingly, this seems to be set in the keyboard itself and not on
anything local to the machine, so if I have to replug the keyboard for
some reason, I have to run that again or it’ll be stuck in stock
molasses mode. This feels like a regression from the PS/2 days but I
haven’t bothered plugging in one of my old model Ms to verify this.

Line three just sets up the power-saver specifics on the monitor. Those
don’t usually matter too much since I have a hotkey that explicitly
locks things and then forces it to go to sleep right away, and I push
that when I’m done using this thing.

Line four, well, that’s my dose of jwz, and that’s what actually keeps
the screen locked, as opposed to the legions of craptacular also-ran
“lock” programs that always end up sucking and failing open. I can’t
imagine how many years in total my screens have been protected by
xscreensaver in “lock” mode.

The rest of that file just starts my three Window Maker-era widgets and
those aren’t important or even interesting. There’s a clock/calendar,
the CPU load, and something to twiddle the system volume for when I have
speakers or headphones connected.

That’s about it. I don’t use .plan or .project files any more since I
haven’t run fingerd for decades, and besides, my machines are all just
me and nobody else, and so a local finger is also not a thing. (Oh, get
your minds out of the gutter. It’s the “ratting out to the cops” sense
of “finger”.)

Want to see the last time I used one that stuff? Here’s the file in my
homedir archive from the last machine which had that running:

-r-------- 1 rkroll rkroll 34 Apr 28  1996 .plan

See, told you it’s been decades. All I did was rip off a line that I
had seen in someone else’s file that was intended to sow confusion:

Segmentation fault (core dumped).

The idea is that you’d think that the far-end finger process crashed, or
the far-end finger daemon, or maybe even *your local finger client*, and
then you’d run around trying to figure it out. Then you’d eventually
realize what was going on and shoot a nerf dart at whoever wasted your
time.

Ah, the ’90s.

Read More