Running on OpenBSD - The Workstations (Part 2)

In a world that three operating systems dominate (Windows, Linux, MacOS) and alternative sounds weird we gave a run at OpenBSD as our operating system from end-to-end. The following document is the second part of a four part paper that describes how we managed to setup our entire company using only OpenBSD and its provided ports and tools.

We hope you enjoy the reading.


In the previous post we described how OpenBSD and its features provided us with the required platform to develop our network. However, OpenBSD servers are not that rare, what it is a bit rare is the use of OpenBSD as a desktop operating system for our workstations.


One of the most challenging configurations (in the initial installation) was the one of the workstations. Although in the server area OpenBSD is quite well equipped, in the workstations area you have to work quite a bit to achieve something worth looking.

Users want to look at beautiful things and the default FVWM that comes with OpenBSD is not quite there yet. One of our greatest concerns was the fact that we wanted to interchange and have a similar look and feel in all our workstations. What's more, we needed the window manager to be ready from the early stages of the installation (right after the installation), and if that was depending on an external port we might face difficulties. For this reason we invested some time on FVWM and we are quite happy with the results.

Window Manager

As we mentioned earlier we initially chose FVWM for our main window manager because it was already there in the default installation of OpenBSD. However, later on we realised that yet again the OpenBSD developers made an exceptional choice. FVWM is insanely fast and lightweight. Whats more it supports configuration of every possible little thing of the window environment which makes it more flexible and adaptable.

Theme and configuration

In order to be able to exchange themes more easily with each other the theme was created from the default OpenBSD fvwmrc file. We tried to separate certain things that change often (menu, colours) from the main configuration and we place all files under our home directory (including the application icons) in order to make it as independent as possible.

Desktop Screenshot

For different applications, such as QT and GTK, we used the provided packages to make them look a bit more smooth (less ugly). Clearlooks for GTK and gtk-theme-switch2 made the job quite easy. Similarly for QT the provided qtconfig and Platinum theme made the whole thing visible (qt looks so ugly, that even with this theme it seemed horrible to me).

GTK Theme Switch


For our terminal needs we used the default XTerm coupled with some Xdefaults and looked pretty neat. For more fancy jobs the ports of wterm for a nice fancy, transparent terminal, and the QuadKonsole made administration and system clean up hustle free.

Web Surfing (Browsing)

The ports collection provided us with more than we needed Mozilla, Firefox, Lynx, links+ to name but a few of the available ports. With the arrival of Firefox 2.0 in the ports tree another thing that got improved quite a lot was the support for plugins. Most Firefox plugins are working and very few specific plugins failed to work (the ones who were specific to an operating system).

Our Firefox has four profiles each of which different plugins:

  • default
    • Multiple Dictionaries
    • CustomizeGoogle
    • ScrapBook
  • Anonymous
    • Cookie Culler
    • FlashBlock
    • FoxTor
    • NoScript
  • Developer
    • Web Developer
  • Audit
    • Add n Edit Cookies
    • JSView
    • Live HTTP Headers
    • Modify Headers
    • ShowIP
    • Tamper Data
    • View Source Chart

However, our configuration would not be complete if we didn't do our Firefox look and feel better using our own colours, for this we installed the Cylence Green theme on all the profiles.

Firefox Screenshot


For our DVD and DivX encoded movies mplayer did the trick without problem. While for our audio needs XMMS took care of our mp3 and ogg hunger.

No work and no play? Being old fashioned we couldn't resist the installation of DosBox and LinCity from the ports. With a huge collection of old DOS games we were able to satisfy our need whenever it felt right. Although is worth mentioning that OpenBSD comes with a huge list of games and emulators if you feel like taking a look.


For our mail clients we used Thunderbird for its ability to handle user certificates, sylpheed/sylpheed-claws for external mailboxes for its ability to strip html completely from the messages, and the default mail client that comes with Mozilla for rare occasions. All those applications where installed through the ports and yes all of them had colours that matched our theme.


For our instant messaging, MSN and Yahoo!, needs we used GAIM straight from the ports. For IRC chat we used Epic4 and for less experienced users Xchat all of which came from the ports.

Remote Desktop

In order to be able to access our desktops remotely we used VNC (there is a variety of vnc clients and servers available in the ports). However, since we were responsible for some Windows servers as well we used Rdesktop (and OpenSSH).

Virtual Machines

For testing purposes under a safe environment we really needed support for virtual machines, OpenBSD comes with two of the best Open Source emulators available Qemu and Bochs. Although we installed both of them, we mostly got addicted to qemu.

After we created a couple of virtual machines such as Windows XP, Linux (Fedora, Ubuntu, Slackware etc.), OpenBSD snapshots (different configurations as mail, web, database servers), we placed all the OS images into a central file server and we used the snapshot support, of qemu, in order to avoid messing up with the main files.

We created menu items in our window manager and we were able to boot straight up the OS we wanted which made the entire experience much better.

Document Editors

Most of us were familiar with vi however we wanted to make the workstations more accessible for others too. For this purpose we installed the following really simple ports:

  • Abiword
  • Gvim
  • CoolEdit
  • Nedit
  • Leafpad
  • Ted
  • LyX

Office Applications

For our office needs we used the following ports:

  • OpenOffice
  • Koffice
  • Siag

It is worth mentioning that we use LaTeX quite extensively for any kind of document that goes outside the company as PDF file. However we could not stop our friends and clients from sending us Word and Excel files. For this task OpenOffice was the most commonly used since it provided very good support for the documents we received.

Development Environments

Since a lot of development is going around all the time we needed the best tools for different types of programming languages. For PHP we used Eclipse with PHPEclpise plugin. For HTML, XML, Shell scripts and generally everything else vi or (g)vim for colour highlighting.

However as far as complete environments go, we installed the following directly from the ports:

  • Eclipse
  • Xwpe
  • Glimmer

File Managers

Although we need nothing more than Midnight Commander, the interface however is not easy to cope with when you have never seen it before. For this purpose we installed Rox Filler file manager with a lot of customised actions for different application types (so that avi files were run with mplayer, mp3 with xmms etc).


For all our graphics needs including diagrams, brochures, image editing we used a plethora of ports which the kind OpenBSD package maintainers provided for us.

  • Gimp for all our graphics manipulation
  • Sodipodi for scalable graphics and brochures.
  • Qcad for our CAD needs (we really have simple CAD needs)
  • GTKsee and gqview as image viewers
  • Dia and Xfig for various diagrams


The workstations would not be complete without offering the users (us) with some quick guidance when they needed it. The window manager menu included a Help section with easy links to the following places:

  • OpenBSD Help pages (firefox remote)
  • PF Manual
  • System Manual Pages
  • Intranet Documentation (Wiki Server)