Openbox Themes and Apps

From ArchWiki
Revision as of 23:04, 18 August 2012 by Archer777 (Talk | contribs) (File managers)

Jump to: navigation, search
Note: This article is a supplement to the main Openbox article.

This wiki article deals with customizing the appearance of Openbox in Arch Linux. Helper programs such as panels and trays are also explained.

Themes and appearance

With the exception of the Openbox Themes topic, the following section is intended for users who have configured Openbox to run as a standalone desktop, without the assistance of GNOME, KDE or Xfce.

Openbox themes

Openbox themes control the appearance of window borders, including the titlebar and titlebar buttons. They also determine the appearance of the application menu and on-screen display (OSD).

Some themes are available for installation with the openbox-themes package in the official repositories.

This package is by no means definitive. You can download more themes at websites such as:

Downloaded themes should be extracted to ~/.themes or ~/.local/share/themes and selected from obconf or lxappearance-obconf. Theme selection can also be done manually by opening rc.xml and changing the <name> key in the <theme> section.

Creating new themes is fairly easy and well-documented. For those who prefer a GUI, obthemeAUR is a very capable editor.

X11 appearance

Main article: Xdefaults

If you are running Openbox as a standalone, you will need to configure the .Xdefaults file. Save a copy to ~/.Xdefaults and /root/.Xdefaults (for windows opened as root).

Xdefaults is a user-level configuration dotfile, typically located at ~/.Xdefaults. When present, it is parsed by the xrdb (Xorg resource database) program automatically when Xorg is started, and can be used to set or override preferences for X and X applications. It can do many operations, including:

  • defining terminal colours,
  • configuring terminal preferences,
  • setting DPI, antialiasing, hinting and other X font settings,
  • changing the Xcursor theme,
  • theming Xscreensaver and
  • altering preferences on low-level X applications (xclock, xpdf, etc.)

X11 mouse cursors

Extract the desired Xcursor theme to either /usr/share/icons (system-wide access) or ~/.icons (local user access). There are also a limited amount of themes available in the [community] repository that can be installed using Pacman.

Add this to ~/.Xresources:

Xcursor.theme:   [name-of-cursor-theme]

where [name-of-cursor-theme] is the name of the cursor theme directory. For example:

Xcursor.theme:	Vanilla-DMZ-AA

To change the size:

Xcursor.size: [size]

Sometimes it is required to symlink the icon directory into each user directory to make the window manager use them:

$ mkdir ~/.icons
$ ln -s /usr/share/icons/[name-of-cursor-theme] ~/.icons/default

For more information read the Arch Wiki: X11_Cursors

GTK themes

GTK2/ GTK+

First, extract the desired theme to /usr/share/themes (system-wide access) or ~/.themes (local user access), then:

GTK themes can be managed easily with the lxappearance (part of the LXDE Desktop), gtk-chtheme, or gtk-theme-switch2 utilities.

If you have the gnome-settings-daemon running, it can keep you from changing the GTK theme by reverting back to original theme. By default, the autostart file provided by Openbox runs it, so make sure that you do not have it running if you wish to properly use GTK themes.

GTK1

For legacy GTK1 themes, install the gtk-theme-switchAUR package and run switch to select a desired theme.

GTK fonts

To manually change the type and size of your fonts, add the following to ~/.gtkrc.mine:

style "user-font"
{
font_name = "[font-name] [size]"
}
widget_class "*" style "user-font"
gtk-font-name = "[font-name] [size]"

where [font-name] [size] is the desired font and point size. For example:

style "user-font"
{
font_name = "DejaVu Sans 8"
}
widget_class "*" style "user-font"
gtk-font-name = "DejaVu Sans 8"

Both font_name and gtk-font-name fields are required for backwards compatibility.

You can also use gtk-chtheme or lxappearance to set GTK font settings.

GTK icons

First, extract the desired icon theme to /usr/share/icons (system-wide access) or ~/.icons (local user access), then:

Add the following to ~/.gtkrc.mine:

gtk-icon-theme-name = "[name-of-icon-theme]"

where [name-of-icon-theme] is the name of the icon theme directory. For example:

gtk-icon-theme-name = "Tango"

Ensure ~/.gtkrc-2.0 is configured to parse ~/.gtkrc.mine:

# ~/.gtkrc-2.0
# -- THEME AUTO-WRITTEN DO NOT EDIT
include "/usr/share/themes/Rezlooks-Gilouche/gtk-2.0/gtkrc"
include "/home/username/.gtkrc.mine"
# -- THEME AUTO-WRITTEN DO NOT EDIT

You can use lxappearance to choose GTK icon themes. Alternatively, use the development versions lxappearance-gitAUR ot lxappearance2-gitAUR and lxappearance-obconf-gitAUR for the latest features.

Desktop icons

Openbox does not provide a means to display icons on the desktop. To provide this function, one can use:

http://docs.xfce.org/xfce/xfdesktop/start || xfdesktop
  • PCManFM — An extremely fast and lightweight file manager used by the LXDE desktop.
http://pcmanfm.sourceforge.net/ || pcmanfm
  • ROX — A small and fast file manager which can optionally manage the desktop background and panels, part of the ROX Desktop.
http://roscidus.com/desktop/ || rox
  • IDesk — A simple tool that gives users of minimal wm's (Fluxbox, pekwm, Window Maker, Obenbox, etc) icons on their desktop.
http://idesk.sourceforge.net/html/index.html || idesk
  • Nautilus — The file manager of the GNOME desktop.
https://live.gnome.org/Nautilus || nautilus
  • Spacefm — A gtk2 multi-panel tabbed file manager
http://ignorantguru.github.com/spacefm/ || spacefm

Desktop wallpaper

Openbox itself does not include a way to change the wallpaper. This can be done easily with programs like Feh or Nitrogen. Other options include imagemagick, hsetroot, xsetbg and more advanced choices such as PCmanFM or Xfdesktop.

You can disable the wallpaper loading in gnome-settings-daemon like this:

$ gconftool-2 --set /apps/gnome_settings_daemon/plugins/background/active --type bool False

In Gnome 3 use:

$ gsettings set org.gnome.desktop.background draw-background false

One approach, using hsetroot is possible by placing the following command in autostart:

hsetroot -fill /path/to/image.file

A similar command for feh is:

feh --bg-scale /path/to/image.file

Recommended programs

Note: The main Openbox article has information on installing Openbox, but this additional section details specific lightweight applications you may want to deploy after installing Openbox.

For a more complete choice of applications available on Arch, look at the list of common applications. You can also look at the list recommended on the official Openbox website, although most overlap with the following suggestions.

Display managers

Template:Box

  • SLiM (Simple Login Manager) — A lightweight and elegant graphical login solution.
http://slim.berlios.de/ || slim
  • Qingy — An ultralight and very configurable graphical login independent on X Windows (uses DirectFB). It supports login to either a text console or an X session.
http://qingy.sourceforge.net/ || qingy

Desktop compositing

  • Xcompmgr — A lightweight composite manager capable of rendering drop shadows, fading and simple window transparency within Openbox and other window managers.
http://cgit.freedesktop.org/xorg/app/xcompmgr/ || xcompmgr
Note: Xcompmgr is no longer developed, so any issues are unlikely to be fixed. Various forks are available in the AUR that fix some of the more pressing problems: xcompmgr-danaAUR, xcompmgr_tint2-gitAUR (provides real transparency for Tint2) and compton-gitAUR (some shadows and transparency fixes).
http://cairo-compmgr.tuxfamily.org/ || cairo-compmgr-gitAUR

Desktop utilities

A number of utilities provide panels / taskbars, system trays, or pagers to Openbox:

Panels

Template:Box

http://wiki.awn-project.org/ || avant-window-navigator-bzrAUR
  • Bmpanel — A lightweight, NETWM compliant panel for the X11 system.
http://nsf.110mb.com/bmpanel/ || bmpanelAUR
  • Cairo-Dock — A highly customizable dock/laucher.
http://www.glx-dock.org/ || cairo-dockAUR
  • Docker — A docking application which acts as a system tray.
http://icculus.org/openbox/2/docker/ || docker
  • fbpanel — A lightweight, NETWM compliant desktop panel.
http://fbpanel.sourceforge.net/ || fbpanel
  • LXPanel — A lightweight X11 desktop panel and part of the LXDE DE.
http://lxde.org/ || lxpanel
  • Pancake — A highly configurable, modular panel for X.
http://www.failedprojects.de/pancake/ || pancakeAUR
  • Tint2 — Simple panel/taskbar developed specifically for Openbox.
http://code.google.com/p/tint2/ || tint2
  • wbar — A quick launch bar developed with speed in mind.
http://freecode.com/projects/wbar/ || wbar
https://live.gnome.org/GnomePanel || gnome-panel
  • PerlPanel — A lightweight panel that supports applets.
http://savannah.nongnu.org/projects/perlpanel || perlpanel
  • PyPanel — A lightweight panel/taskbar for X11 window managers written in Python.
http://pypanel.sourceforge.net/ || pypanel
  • Screenlets — A widget framework that consists of small owner-drawn applications (weather widget, clocks, system monitors, mail checkers, etc.).
http://screenlets.org/index.php/Home || screenlets
http://docs.xfce.org/xfce/xfce4-panel/start || xfce4-panel

Trays

  • Stalonetray — A stand-alone system tray with minimal dependecies.
http://stalonetray.sourceforge.net/ || stalonetray
  • Trayer — A lightweight GTK2-based systray.
https://gna.org/projects/fvwm-crystal/ || trayer

Pagers

  • IPager — A configurable pager with transparency, originally developed for Fluxbox.
http://useperl.ru/ipager/index.en.html || ipagerAUR
  • Neap — An non-intrusive and light pager that runs in the notification area of your panel.
http://code.google.com/p/neap/ || neap
  • Netwmpager — A NetWM/EWMH compatible pager.
http://sourceforge.net/projects/sf-xpaint/files/netwmpager/ || netwmpager
  • Pager — A highly configurable pager compatible with Openbox Multihead.
https://github.com/BurntSushi/pager-multihead || pager-multihead-git

If you wish to set desktop layout without using a pager, try the obsetlayoutAUR package from AUR.

File managers

Template:Box

Three popular lightweight file managers are:

  • PCManFM — An extremely fast and lightweight file manager used by the LXDE desktop.
http://pcmanfm.sourceforge.net/ || pcmanfm
  • ROX — A small and fast file manager which can optionally manage the desktop background and panels, part of the ROX Desktop.
http://roscidus.com/desktop/ || rox
  • Thunar — The file manager of the Xfce Desktop with many plugins and features.
http://thunar.xfce.org/ || thunar

For even lighter options, consider:

  • Gentoo — A lightweight file manager for GTK.
http://www.obsession.se/gentoo/ || gentooAUR
  • emelFM2 — A file manager that implements the popular two-pane design.
http://emelfm2.net/ || emelfm2
  • Xfe — An Microsoft Explorer-like file manager for X (X File Explorer).
http://sourceforge.net/projects/xfe/ || xfe
  • muCommander — A lightweight, cross-platform file manager with a dual-pane interface written in Java.
http://www.mucommander.com/ || mucommanderAUR

Alternatively, you may use GNOME's Nautilus as your file manager. It is heavier and slower than the previous solutions, but Nautilus has many helpful features such as virtual file systems, allowing folder access via SSH, FTP, or Samba.

Application launchers

Template:Box

  • gmrun — A lightweight GTK based application launcher, with ability to run programs inside a terminal and other handy features. To enable Template:Keypress functionality add the following to the <keyboard> section:
~/.config/openbox/rc.xml
<keybind key="A-F2">
    <action name="execute"><execute>gmrun</execute></action>
</keybind>
http://sourceforge.net/projects/gmrun/ || gmrun
  • dmenu — A fast and lightweight dynamic menu for X, which is also useful as an application launcher. To enable Template:Keypress functionality add the following to the <keyboard> section:
~/.config/openbox/rc.xml
<keybind key="A-F2">
    <action name="execute"><execute>dmenu_run</execute></action>
</keybind>
http://tools.suckless.org/dmenu/ || dmenu
  • Bashrun2 — Provides a different, barebones approach to a run dialog, using a specialized Bash session within a small xterm window. To enable Template:Keypress functionality add the following to the <keyboard> section:
~/.config/openbox/rc.xml
<keybind key="A-F2">
    <action name="execute"><execute>bashrun2</execute></action>
</keybind>

To make Bashrun2 act more like a traditional run dialog add the following to the <applications> section:

~/.config/openbox/rc.xml
<application name="bashrun2-run-dialog">
    <desktop>all</desktop>
    <decor>no</decor>  # switch to yes if you prefer a bordered window
    <focus>yes</focus>
    <skip_pager>yes</skip_pager>
    <layer>above</layer>
</application>
https://code.google.com/p/bashrun2/ || bashrun2AUR
  • Kupfer — A launcher inspired by Quicksilver, written in Python. To enable Template:Keypress functionality add the following to the <keyboard> section:
~/.config/openbox/rc.xml
<keybind key="A-F2">
    <action name="execute"><execute>kupfer</execute></action>
</keybind>
http://engla.github.com/kupfer/ || kupferAUR
  • Launchy — A less minimalistic approach; it is skinnable and offers more functionality such as a calculator, checking the weather, etc. It is launched with the Template:Keypress key combination.
http://www.launchy.net/ || launchy
  • LXPanel — A lightweight X11 desktop panel and part of the LXDE DE. The run dialog can be executed with:
$ lxpanelctl run
http://lxde.org/ || lxpanel
  • GNOME Panel — The default Gnome panel. The run dialog of the GNOME Panel can be executed with:
$ gnome-panel-control --run-dialog
https://live.gnome.org/GnomePanel || gnome-panel

Clipboard managers

Template:Box

You may wish to install a clipboard manager for a richer copy/paste experience. The following are the more lightweight options:

  • Clipman — A clipboard manager for Xfce. It keeps the clipboard contents around while it is usually lost when you close an application. It is able to handle text and images, and has a feature to execute actions on specific text selections by matching them against regular expressions.
http://goodies.xfce.org/projects/panel-plugins/xfce4-clipman-plugin || xfce4-clipman-plugin
  • Glipper — A clipboard manager for GNOME with more features and plugin support.
https://launchpad.net/glipper || glipperAUR
  • Parcellite — A lightweight yet feature-rich clipboard manager.
http://parcellite.sourceforge.net/ || parcellite
  • ClipIt — A fork of Parcellite with additional features and bugfixes.
http://sourceforge.net/projects/gtkclipit/ || clipit

Make sure you add your chosen clipboard manager to ~/.config/openbox/autostart.

Volume managers

  • GVolWheel — An audio mixer which lets you control the volume through a tray icon.
http://sourceforge.net/projects/gvolwheel/ || gvolwheelAUR
  • GVTray — A master volume mixer for the system tray.
http://code.google.com/p/gtk-tray-utils/ || gvtrayAUR
  • Obmixer — A GTK mixer applet for Openbox that runs in the system tray. It is lightweight and works with both pulseaudio and alsa, has mute/umute feature which remembers your previous volume.
http://jpegserv.com/obmixer/ || obmixerAUR
  • PNMixer — A fork of Obmixer. It has many new features such as ALSA channel selection, connect/disconnect detection, shortcuts, etc.
https://github.com/nicklan/pnmixer/wiki || pnmixerAUR
  • Volti — A GTK application for controlling audio volume from system tray with an internal mixer and support for multimedia keys that uses only ALSA.
http://code.google.com/p/volti/ || voltiAUR
  • VolumeIcon — Another volume control for your system tray with channel selection, themes and an external mixer.
http://softwarebakery.com/maato/volumeicon.html || volumeicon
  • VolWheel — A little application which lets you control the sound volume easily through a tray icon you can scroll on.
http://oliwer.net/b/volwheel.html || volwheel

Battery & CPU

Template:Box

  • Trayfreq — A light battery monitor and a CPU frequency scaler.
http://trayfreq.sourceforge.net || trayfreqAUR

Keyboard layout switchers

  • fbxkb — A NETWM compliant keyboard indicator and switcher. It shows a flag of current keyboard in a systray area and allows you to switch to another one.
http://fbxkb.sourceforge.net/ || fbxkbAUR
  • xxkb — A lightweight keyboard layout indicator and switcher.
http://sourceforge.net/projects/xxkb/ || xxkb
  • qxkb — A keyboard switcher written in Qt.
http://code.google.com/p/qxkb/ || qxkbAUR
  • X Neural Switcher — A text analyser, it detects the language of the input and corrects the keyboard layout if needed.
http://www.xneur.ru/ || xneurAUR, gxneurAUR (GUI)

Logout dialog

A few simple shotdown managers are available:

  • exitx — A logout dialog for Openbox that uses Sudo.
http://www.linuxsir.com/bbs/lastpostinthread350740.html || exitxAUR
  • exitx-polkit — A GTK logout dialog for Openbox with PolicyKit support.
https://github.com/z0id/exitx-polkit || exitx-polkitAUR
  • obshutdown — A great GTK/Cairo based shutdown manager for Openbox and other window managers.
https://github.com/panjandrum/obshutdown || obshutdownAUR

Alternatively, you can also use Openbox's menus to create a simple dialog. Which can also be binded to a key for easy access.

An example with exit-menu as the id and Exit as the label (using PolicyKit and D-bus):

<menu id="exit-menu" label="Exit">
	<item label="Log Out">
		<action name="Execute">
			<command>openbox --exit</command>
		</action>
	</item>
	<item label="Shutdown">
		<action name="Execute">
			<command>dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop</command>
		</action>
	</item>
	<item label="Restart">
		<action name="Execute">
			<command>dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart</command>
		</action>
	</item>
	<item label="Suspend">
		<action name="Execute">
		<command>dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend</command>
		</action>
	</item>
	<item label="Hibernate">
		<action name="Execute">
		<command>dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate</command>
		</action>
	</item>
</menu>

Add this to your ~/.config/openbox/menu.xml, then later in your menu or pipemenu of choice add:

<menu id="exit-menu"/>

If you would like to bind this to a key, simply add this example keybind to the <keyboard> section:

~/.config/openbox/rc.xml
<keybind key="XF86PowerOff">
  <action name="ShowMenu">
      <menu>exit-menu</menu>
  </action>
</keybind>

This will bind it to your power button, if you prefer otherwise change XF86PowerOff to your preferred key.