I follow the advice that Adam gave me, and I put my main user configuration files (so far: .nanorc and .emacs) in version control. Specifically, a darcs repository. I then use SSH to pull the changes about the place. It has the twin benefits of making it easy to keep configuration files up to date when you work on multiple machines, and it means you can rollback if you ever break something in the files.
I use darcs a lot, because it is the version control system that we use on Tock. My least favourite feature is the exponential-time merge problem, but my favourite features are the fine-grained control and easy branching.
When you record a darcs patch, it asks which changes in each file you want to record. This allows you to easily separate out several changes in the same file into separate patches. This is not really peculiar to darcs; there is nothing preventing a similar frontend being built for SVN, but I find it amazing useful. In fact, something I'd like is the ability to split the hunks darcs has spotted into smaller hunks in some cases (when two changes happen to be on adjacent lines).
The easy branching allows repositories to be chained together. Our master darcs repository for Tock is on a machine that gets sync-ed up to the webserver. Adam has a repository chained off this for merging patches I send to him. On my end, I have a master repository for sending to Adam, but I actually do my work in branches chained off this repository. In some cases, I chain a repository from a branch on my home machine to a new branch on my university machine. This in turn may get branched. So that's up to six repositories in a chain, but all anyone else ever sees is the master repository.
I run MythTV. It took a while to set-up, and every time a software update arrives I cross my fingers before applying it. One thing that seemed to be lacking was the easy ability to start and stop the frontend using the power button on my remote control; I have a Hauppauge remote that came with my capture card. Here is a quick explanation of how to do it (very hacky, but it works). First, put a line like this in your lircrc file:
begin
prog = irexec
remote =
button = Power
config = /path/to/mythpowerbutton.sh
end
You will need to permanently run the irexec daemon, and give it this lircrc file. I did this in Gentoo by hacking together a service for it (in /etc/init.d). The contents of mythpowerbutton.sh are:
#!/bin/bash
PROG=startx
STATUS=`ps | grep $PROG | grep -v grep | wc -l | awk '{print $1}'`
if [ $STATUS -eq 0 ]
then
# Start X:
HOME="/home/mythtvfrontenduser" XSESSION="Xsession" $PROG -- :3 -ac -layout SimpleLayout &
else
# Kill the X display:
killall -u mythtvwatcher $PROG
fi
exit 0
This does the job. I hardcode MythTV to run on :3. SimpleLayout is the name of the display configuration in my xorg.conf file that uses my TV as the screen.
This page copyright Neil Brown, 2006-2009.