Want some programming help? [close]

Customizing Openbox Window Manager in Arch Linux

This article will walk through all the steps needed to create a unique and personalized desktop. I'll cover fonts, icons, mouse cursors, GTK themes, Openbox themes, Openbox menu generation, wallpaper and system monitors. In my example I will will make references to packages contained in Arch Linux. The same packages should be available for any popular Linux distribution, although the names may change slightly.

While Openbox is lightweight and efficient, it doesn't have all the features a full desktop environment would. For something with a few more features out of the box as well as some eye candy, check out Gnome 3. I wrote a similar article about Customizing Gnome 3 Desktop Environment in Arch Linux. If you are new to Arch Linux and looking for some more basic information on installing and configuring Arch Linux before you get to the desktop customization part, read my article Installing, Configuring, and Customizing Arch Linux.

Packages Needed

  • openbox - Window Manager
  • obconf - Openbox configuration tool
  • feh - Image viewer/wallpaper setter
  • conky - System resource monitor
  • gtk-engines - GTK engines for themes
  • gtk-engine-murrine - GTK engine required for our theme below
  • gnome-themes-standard - Standard Gnome themes that comes with the base themes needed for others
  • gnome-settings-daemon - if you want to use GTK3 themes this might be needed
  • menumaker (optional) - Menu generator that can create Openbox menus
  • gtk-chtheme (optional) - Easy GTK2 theme switching
  • fbpanel or tint2 (optional) - Taskbar / Panels

Resource Downloads

You will need to create or download the actual resources for your theme. This means you'll need to find GTK themes, icons, cursors, and wallpapers that fit your design. I will include links to the resources I chose for my desktop. I went with a dark theme with a light blue/aqua accent. The Delorean theme actually comes with 4 colored versions.

Fonts

In Arch Linux, installing a nice font is as easy as running pacman -S ttf-dejavu. To install fonts manually, copy the font folder to /usr/share/fonts and then edit ~/.gtkrc-2.0 and add the line gtk-font-name="Font Name"

Setting Wallpaper

Create or edit ~/.config/openbox/autostart and add the line feh --bg-scale /path/to/wallpaper.jpg

Setting Icons

  1. Move the icon theme folder to /usr/share/icons
  2. Edit ~/.gtkrc-2.0 and add the line gtk-icon-theme-name="Icon Theme Folder Name"

Setting Mouse Cursors

  1. Move the cursors theme folder to /usr/share/icons
  2. Edit ~/.Xdefaults and add the line Xcursor.theme: Theme_Name

Set Openbox Theme

  1. Move the theme folder to /usr/share/themes
  2. Run obconf and choose the them you want. If you put it in the themes folder, it should be listed.

Set GTK2 Theme

  1. Move the theme folder to /usr/share/themes
  2. Edit ~/.gtkrc-2.0 and add the line gtk-theme-name="Theme Name"
  3. Alternatively, you could try the program gtk-chtheme

Set GTK3 Theme

I'll be honest the GT3 theme worked 90% but I did run in to some minor issues with GT3 programs. It might have been my theme or my configuration but I will pass on what I learned.

  1. You might need the gnome-settings-daemon to be running in order for the theme to work properly. You can add it to your openbox autostart file ~/.config/openbox/autostart if necessary.
  2. Copy or create a symlink in your home folder's config to the GTK3 theme like this ln -s /usr/share/themes/THEME/gtk-3.0 /home/MYUSER/.config/gtk-3.0
  3. The gnome-tweak-tool might be helpful.

Generating Openbox Menus

You can use a number of programs to generate an Openbox menu. Menu Maker can search your computer for programs and generate an Openbox menu with mmaker openbox. It doesn't always find everything so it is not an end all be all but it is a good starting place.

Panels

I am not going to cover panel customization but two good panel choices are fbpanel and tint2. Make sure you add the panel to your Openbox autostart file like the other examples above.

Setting up Conky (System Monitor)

Conky is an extremely powerful tool that can do many things. Typically it is used to monitor system resources like RAM, CPU, and disk space. It can be extended and customized so much that there are plenty of resources online dedicated to this. Conky can be compiled with LUA support to do even cooler things. Just try searching for "conky configs" and enjoy. Create a ~/.conkyrc file and then edit ~/.config/openbox/autostart to have the line conky &.

For references and a starting template, here is my basic .conkyrc

background yes
use_xft yes
xftfont Sans:size=8
xftalpha 1
update_interval 1.5
total_run_times 0
own_window yes
own_window_transparent yes
own_window_type normal #desktop
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
minimum_size 300 200
maximum_width 600
draw_shades yes
draw_outline no
draw_borders no
draw_graph_borders yes
default_color white
default_shade_color black
default_outline_color white
alignment top_right
gap_x 15
gap_y 5
no_buffers yes
uppercase no
cpu_avg_samples 2
override_utf8_locale yes

color1 white
default_shade_color 7a999c
default_outline_color green

TEXT
${color}${font Radio Space:bold:size=10:}SYSTEM${hr 2}
${font OpenLogos:size=10}${color}- ${color1}${font}Kernel${alignr}${kernel}
${font StyleBats:size=10}${color}- ${color1}${font}Uptime${alignr}${uptime}

${font Radio Space:bold:size=10}${color}PROCESSORS ${hr 2}${font sans-serif:normal:size=8}${color1}
${font poky:size=10}${color}- ${color1}${font}AVG: ${cpu cpu0}% ${color}${cpubar cpu0}
${font poky:size=10}${color}- ${color1}${font}${color1}CPU1: ${cpu cpu1}% ${color}${cpubar cpu1}
${font poky:size=10}${color}- ${color1}${font}${color1}CPU2: ${cpu cpu2}% ${color}${cpubar cpu2}

${font Radio Space:bold:size=10}${color}MEMORY ${hr 2}
${font stylebats:size=10}${color}- ${color1}${font}${color1}${font sans-serif:normal:size=8}${color1}RAM $alignc $mem / $memmax
$alignr $memperc%
${color}$membar

${font Radio Space:bold:size=10}${color}DISK SPACE ${hr 2}
${font poky}- ${font sans-serif:normal:size=8}${color1}/ $alignc ${fs_used /} / ${fs_size /} $alignr${fs_used_perc /}%
${color}${fs_bar /}
${font poky}- ${if_existing /data}${font sans-serif:normal:size=8}${color1}Data $alignc ${fs_used /data} / ${fs_size /data} $alignr${fs_used_perc /data}% ${endif}
${if_existing /data}${color}${fs_bar /data}${endif}

${font Radio Space:bold:size=10}${color}TOP PROCESSES (MEMORY) ${hr 2}
${font StyleBats:size=10}${color}- ${color1}${font}${color1}${top_mem name 1}${alignr}${top mem 1} %
${font StyleBats:size=10}${color}- ${color1}${font}${color1}${top_mem name 2}${alignr}${top mem 2} %
${font StyleBats:size=10}${color}- ${color1}${font}${color1}${top_mem name 3}${alignr}${top mem 3} %
${font StyleBats:size=10}${color}- ${color1}${font}${color1}${top_mem name 4}${alignr}${top mem 4} %
${font StyleBats:size=10}${color}- ${color1}${font}${color1}${top_mem name 5}${alignr}${top mem 5} %

${font Radio Space:bold:size=10}${color}TOP PROCESSES (CPU) ${hr 2}
${font StyleBats:size=10}${color}- ${color1}${font}${color1}${top_mem name 1}${alignr}${top cpu 1} %
${font StyleBats:size=10}${color}- ${color1}${font}${color1}${top_mem name 2}${alignr}${top cpu 2} %
${font StyleBats:size=10}${color}- ${color1}${font}${color1}${top_mem name 3}${alignr}${top cpu 3} %
${font StyleBats:size=10}${color}- ${color1}${font}${color1}${top_mem name 4}${alignr}${top cpu 4} %
${font StyleBats:size=10}${color}- ${color1}${font}${color1}${top_mem name 5}${alignr}${top cpu 5} %

${font Radio Space:bold:size=10}${color}NETWORK (enp4s0)${hr 2}
${font PizzaDude Bullets:size=10}${color}- ${font}${color1}IP address: $alignr ${addr enp4s0}
${font PizzaDude Bullets:size=10}${color}- ${font}${color1}DOWN: $alignr ${downspeed enp4s0}/${totaldown enp4s0}
${font PizzaDude Bullets:size=10}${color}- ${font}${color1}UP: $alignr ${upspeed enp4s0}/${totalup enp4s0}

Even More Customization

If you want to take your customization even further, look into Dockapps and panel customization. Conky is one of the most configurable aspects so play with that as well. It can do more than just system monitoring it can output your media player info and more. Look in to a clipboard manager program to manage a clipboard between programs. Add a Window snapping feature to Openbox for convenience. Openbox allows you to configure your own keybindings too so create your own for common tasks. There are many options!

Conclusion

Hopefully all the information above will provide enough reference for you to create your own customized desktop. The only issues I ran in to with the Openbox customization was the GTK3 theme problem. Some GTK3 programs did not render 100% correctly though it was at least 90% close. When I installed the full Gnome3 desktop, the GTK3 theme worked fine, so I think I am missing a step, perhaps related to the gnome-settings-daemon that is needed for GTK3 themes. If anyone knows, please let me know!

Advertisement