Custom Arch Linux setup with Openbox
After my summer vacation started, I bought a new laptop, and the first thing I did was to install Arch Linux on it. After a standard arch installation procedure, I started putting together my desktop environment, beginning with ArchLinux and Openbox, and then piecing all pieces together to build a proper desktop environment. Building a desktop this way follows the Unix Methodology; have software that each does one thing well, and when you put them together, you get something amazing.
When I first installed Arch, I had several choices. I tried
as my desktop environments. While both of them have their pros and cons, I ended
up liking none. The sole reason was the dependencies; these two software bring
with them. My only intention of installing Arch was to have something, which I
control, not like Ubuntu, where you are forced to use the preinstalled software
and when you try to uninstall something, you fear of breaking some other
So I end up going the route of building something up from scratch using Openbox as a base. At this point, I have a fast, lightweight desktop that is exceptionally stable and is genuinely my desktop as I have built it from the ground up, choosing every application.
After the installation of Arch, the first thing I did was to install
a tiling window manager. You may also try other window managers like
fluxbox, etc. but I chose Openbox because it is used everywhere.
Thus there is a plethora of information out there about customizing it.
For our window manager to show up, it needs to be added either in a login
manager or user's
~/.xinitrx file. There is a default version of this file
that contain some code which we may want to retain, so rather than making this
file from scratch, copy the default version of the file to the user's home
cp /etc/X11/xinit/xinitrc ~/.xinitrc
Now add the command
exec Openbox-session to the end of the file. Remember that
the system will ignore the lines following this command. An Openbox session
should be able to be started by entering the command
An openbox session can be started automatically upon login using shell's startup
script. Add following to the shell's startup script,
~/.bash_profile for bash
~/.zprofile for zsh.
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
Setting up openbox is quite simple. Four files make the basis of openbox
configuration. They are
These files controls everything about the window manager.
- rc.xml: Determine the behavior and settings of overall Openbox session
- autostart: Contains a list of applications to be launched with the window manager
- menu.xml: It makes the right-click context menu of the desktop
- environment: Can be used to export and set relevant environmental variables
For the configuration of Openbox, it is necessary to create a local Openbox
profile in the user's home directory. A global configuration file can be found
/etc/xdg/openbox, which is well documented, and copying the global
configuration to the user's directory will give a good starting point to start
cp -R /etc/xdg/openbox ~/.config/
These files can be edited by hand, although some graphical tools are also available, use of these may be desired.
lxappearance-obconf can be used to configure appearance and theme
of openbox session. There are quite a few themes available in
package. My personal favorite is
To see changes after editing a configuration file, the Openbox needs to be
refreshed. It can be done with the
The type and behavior of Openbox menus, accessible by right-clicking the
background, can be changed using
~/.config/openbox/menu.xml file. Openbox
provides two kinds of menus,
Dynamic menus (Piped and
Static menus are hardcoded in XML and is stored in the
menu.xml file. Whenever
you install a new application, you will have to update the XML file to update
the menu manually. It is a viable solution if the apps are not installed on a
day to day basis.
Pipe menus are the sections of the Openbox menu that Openbox creates on the fly by running a generic script and using its plain text output as menu entries. This scheme can be used in different ways, like adding a mail checker in the menu or adding a weather forecast menu. You can check openbox pipe menu page for more information.
Generators are the most convenient type of menus. These can be found in most desktop environments where applications show up in the menu automatically. If applications are being installed regularly, then this will probably be the preferred choice.
The process of making these menus can be automated by static menu generator like
obmenu. It will generate static menus from installed applications by looking
into certain directories. Others available tools are
Dynamic menus give the same kind of functionality most people are used to. So it
was my preferred choice. They can be used to generate full, complex menus on the
fly. One of the most popular application for generating dynamic menus is
obmenu-generator. Though it is not officially connected to Openbox, it is
In order to have
obmenu-generator make a menu on demand, the
should contain the following code as the only entry.
<?xml version="1.0" encoding="UTF-8"?>
<menu id="root-menu" label="OpenBox 3" execute="/usr/bin/obmenu-generator"></menu>
You can get any panel like
xfce4-panel or the simple and customizable
I chose tint2 because it very closely follows the openbox spirit of having easy
customization with plain configuration files. tint2 package also containg a
tint2conf for customizing panel and you can obviously go right
to the tint2 configuration file and edit it there. This also means it is easy to
pick up your configuration file and move it to another computer, or restore an
old configuration since it is as simple as pasting a text document in the right
place. tint2 can also have sections for each individual desktop and has various
small widget like programs that can be used with it such as a calendar,
gsimplecal, a volume application,
volumeicon, a battery indicator,
cbatticon, a network indicator like
wicd which also have a system tray icon
and a mini task tray. To start tint2 with openbox, you need to add
tint2 & to
Some file managers deeply integrate into desktop environments, and when
installed with Openbox, they end up pulling multiple dependencies, which is
certainly not desired. Our aim behind building an Openbox set up was to have
minimum dependencies so that we can get a lightweight desktop. However, there
are several file managers available that fit into the Openbox very well. In my
pcmanfm is the best choice here. pcmanfm is a lightweight and fast
file manager with network and thrash support. pcmanfm can also manage desktop
icons and wallpaper setting, although if you plan to use conky in your system,
then you may not want pcmanfm to manage desktop for you. The reason is that
pcmanfm treats desktop as a window, so when you switch to desktop, the conky
hides behind the desktop window. To get the icons and wallpaper, you can use
other standalone tools such as
nitrogen. To start pcmanfm
is the desktop mode, add the following to the autostart file.
pcmanfm --desktop &
and to stop it for managing desktop
pcmanfm --desktop-off &
Many functions present in modern file managers require the installation of a few
gvfs gives you the ability to mount volumes and have
trash control. It is not mandatory to have, but it allows on-demand
completely from within the file manager, as opposed to having to drop down to
the command line. A disk-volume manager such as
udisks2 will also be wanted,
and for auto-mounting removable disks,
udiskie works well with Openbox.
udiskie can be added to Openbox's autostart file like any other application.
Openbox does not provide native support for composition, although having a
compositor may prevent screen flickering and other distortion in applications
oblogout. Some options work great with Openbox. The one which I am using
and quite happy with is
compton. It can be used with or without any initial
configuration, although there are a lot of different configuration options if
you decide to customize the setup. To start compton in background with shadows,
use this in
compton -b -c &
While setting up my desktop using Openbox ended up being much more work than I could have with typical desktop environments. But now I have a much more stable desktop, about which I know, what is running in my system, and that my system is not cluttered with any software that I never use.
While it might not be for everybody having to configure every little bit of the desktop, I genuinely feel I have ended up with excellent user experience, and a system that is customized precisely to fit my needs.