I've been using OpenBSD as a desktop for the last 7 months and have been pretty satisfied, although I still have ArchLinux as well. (Please see OpenBSD as desktop
for details.) Most people who try a BSD for this purpose choose FreeBSD. I did install FreeBSD myself about 18 months ago but I encountered various difficulties and gave up after a week. But now I've had another go and this time my experience was much better. Perhaps this is because there is now a new version of FreeBSD (10.1) or because I'm more familiar with BSDs in general after using OpenBSD for a time.
Whatever the reason, I'm enjoying using FreeBSD in this way. I hope what I write here may be useful for any Linux users who are thinking of exploring the BSD world. I include some comments on the differences among FreeBSD, OpenBSD, and Arch.
To start with, I'll say what I want in a desktop, which may be different from what a lot of other people want. This will help to explain why I find the BSD idea attractive. In a word, it's KISS (Keep It Simple, Stupid), which is also the motto of ArchLinux.
What I want in a desktop
Perhaps I should have said "What I don't
want in a desktop". I don't want Gnome, KDE. or any other desktop environment. I don't want complicated window managers either, with lots of widgets or decorations. My window manager is spectrwm; if I wasn't using that it would probably be dwm or ratpoison. If you are looking for more fancy stuff you probably won't use any BSD, although I'm sure that both FreeBSD and OpenBSD can provide it on request.
Currently I'm using mostly Thinkpad T60s with 2GB ram. These are 32-bit machines, which means that they won't run PC-BSD, but FreeBSD and OpenBSD are fine. (Even if PC-BSD did run on 32-bit machines I wouldn't use it, because it installs a desktop manager by default and that isn't what I want.)
Installation of the base system is easy, although not quite as easy as for OpenBSD. Unlike with OpenBSD you are not offered the option of installing X, but this is easily done later via the packaging system (see below). Throughout, I relied on the excellent FreeBSD manual, available on line or you can download it to your system. This documentation is well-known for its high quality and I found it to be even better now than when I last encountered it.
Now you can install X and anything else you want, using the new and improved packaging system (pgk). This is much easier than installing everything via ports, which is what I did previously, although ports are, of course, available if you want them. Sound worked out of the box for me.
So far, so good, but I encountered a few difficulties setting things up as I wanted them. You will note that most of them concern third-party applications and not FreeBSD itself.
1. Blank black screen on exiting X
Af first when this happened I thought I needed to do a hard reset using the power button to get out. Then I found I could reboot by typing the command in the (invisible) terminal, although I couldn't see anything on screen. The real solution to this problem is to put this line in /boot/loader.config:
2. Entering "Sleep" when lid is closed
This worked out of the box for me wth OpenBSD but it seems to be a problem in FreeBSD, to judge by the discussion on the Net. I found that it was enabled for me with this command:
To make it happen on boot I inserted the line in /etc/rc.conf.local. I think some machines may need something other than S3, and the command may not work for all machines.
I use fetchmail to collect mail from my ISP. In FreeBSD I got error warnings about certificates being incorrect, although the mail still arrived. The solution is given in the fetchmail man page: use these switches to eliminate the error messages:
fetchmail --sslproto 'SSL3' --sslcertck
My printer is a networked Brother HL5250DN. In OpenBSD printing worked fine with CUPS. In FreeeBSD I set up CUPS without problems and a test page was printed, but I couldn't get lpr, lp, or lpq to work. This seemed to be because of a conflict with the native BSD printing commands, but stopping the BSD daemon didn't help. After a day's fruitless experimenting I followed the example of another FreeBSD user I found on the Net: I gave up on CUPS, used the BSD daemon following the setup instructions in the FreeBSD manual, and installed apsfilter. I then got good printing, using the generic Postscript driver.
Here is my /etc/printcap.
# - don't delete start label for apsfilter printer1
# - no other printer defines between BEGIN and END LABEL
# APS1_END - don't delete this
5. Lyx on FreeBSD
I use Lyx a lot, for witing books and papers and for making slides with Beamer. When I loaded a Beamer file to edit it, Lyx complained that beamer.cls and anumber of other files weren't on the system. I therefore installed the packaged texlive-texmf, which provides the necessary files. But even after reconfiguring Lyx it still complained that the files were not there. After more on-line research I found I needed the tex-formats package as well. (It provides pdflatex.) FreeBSD has been criticised elsewhere for failing to install all needed dependencies for third-party packages and this is certainly something that needs attention.
FreeBSD works well as a desktop. So does OpenBSD, but I think FreeBSD may be marginally better for this purpose, because it is slightly more convenient to manage day to day (but note the criticism in the preceding paragraph). FreeBSD packages seem to be mostly a little more up to date than those in OpenBSD, though there are exceptions. As for keeping the base system up to date, I particularly like FreeBSD for its tool freebsd-update, which manages both security fixes and upgrades to minor and major versions. In OpenBSD I've used the -current branch, which works well but takes longer to use and can occasionally break things, although that hasn't happened to me. None of these differences is decisive and both OSs are good choices for a BSD desktop. I'm still running both, on different machines.