Openbox - Tint2 vs Lxpanel

By Paul Arnote (parnote)

As you may have noticed, the PCLinuxOS version of Openbox comes in two versions: a “full” version with a full compliment of pre-installed applications, and the “Bonsai” version, which is a lightweight installation that comes with a minimum of pre-installed applications. But the differences don’t stop there.

One notable difference is the selection of the panel used by the two versions. The “full” version uses tint2 as the panel, while Bonsai uses lxpanel to provide the end user with a useful panel.

Lxpanel is “borrowed” from the LXDE desktop. Tint2 is a product of a “Google Summer of Code” project, with the aim to create a simple, easy to use and lightweight panel. Currently, tint2 is up to version 0.11.


Lxpanel


Tint2

Both work exceptionally well, and both are excellent choices for a lightweight panel. Which you use depends on what you are expecting from a panel.

At first glance, the most noticeable difference is that lxpanel has an application menu, a quick launch area, and a desktop pager, while those items are lacking in the tint2 panel. However, both lxpanel and tint2 have a task bar area, a system tray and a clock. My initial reaction to the tint2 panel wasn’t all that positive, since it was missing some of the items I was accustomed to using on my panel. However, the “missing items” on the tint2 panel really aren’t all that missed, since all of those items are available from the Openbox right click menu, regardless of which panel you choose to use.

Since we have already covered lxpanel in a previous issue (October, 2010) when we were covering the LXDE desktop, much of the rest of this article will deal with tint2 and how to configure it.

Tint2

Let’s start off by taking a closer look at the tint2 panel.



The tint2 panel, by default, does not show you all desktops in a single view, nor does it separate the icons by desktop. Thankfully, the tint2 panel is configurable and easy to configure, thanks to the tint2rc file. It is located in your /home/username/.config/tint2 folder. With just a few simple edits of the tint2rc file, you can easily configure tint2 to be the panel you want.

Here’s the tint2rc file from my Openbox installation:

# Tint2 config file
# Generated by tintwizard (http://code.google.com/p/tintwizard/)
# For information on manually configuring tint2 see http://code.google.com/p/tint2/wiki/Configure


# Background definitions
# ID 1
rounded = 7
border_width = 2
background_color = #000000 60
border_color = #FFFFFF 16


# ID 2
rounded = 5
border_width = 0
background_color = #FFFFFF 40
border_color = #FFFFFF 48


# ID 3
rounded = 5
border_width = 0
background_color = #FFFFFF 16
border_color = #FFFFFF 68


# Panel
panel_monitor = all
panel_position = bottom center horizontal
panel_size = 94% 30
panel_margin = 0 0
panel_padding = 7 0 7
panel_dock = 0
wm_menu = 0
panel_layer = top
panel_background_id = 1


# Panel Autohide
autohide = 0
autohide_show_timeout = 0.3
autohide_hide_timeout = 2
autohide_height = 2
strut_policy = follow_size


# Taskbar
taskbar_mode = multi_desktop
taskbar_padding = 2 3 2
taskbar_background_id = 0
taskbar_active_background_id = 0


# Tasks
urgent_nb_of_blink = 8
task_icon = 1
task_text = 1
task_centered = 1
task_maximum_size = 140 35
task_padding = 6 2
task_background_id = 3
task_active_background_id = 2
task_urgent_background_id = 2
task_iconified_background_id = 3


# Task Icons
task_icon_asb = 70 0 0
task_active_icon_asb = 100 0 0
task_urgent_icon_asb = 100 0 0
task_iconified_icon_asb = 70 0 0


# Fonts
task_font = sans 7
task_font_color = #FFFFFF 68
task_active_font_color = #FFFFFF 83
task_urgent_font_color = #FFFFFF 83
task_iconified_font_color = #FFFFFF 68
font_shadow = 0


# System Tray
systray = 1
systray_padding = 0 4 5
systray_sort = ascending
systray_background_id = 0
systray_icon_size = 16
systray_icon_asb = 70 0 0


# Clock
time1_format = %H:%M
time1_font = sans 8
time2_format = %a %B %d
time2_font = sans 6
clock_font_color = #FFFFFF 74
clock_padding = 1 0
clock_background_id = 0
clock_rclick_command = orage


# Tooltips
tooltip = 0
tooltip_padding = 2 2
tooltip_show_timeout = 0.7
tooltip_hide_timeout = 0.3
tooltip_background_id = 1
tooltip_font = sans 10
tooltip_font_color = #000000 80


# Mouse
mouse_middle = none
mouse_right = close
mouse_scroll_up = toggle
mouse_scroll_down = iconify


# Battery
battery = 0
battery_low_status = 10
battery_low_cmd = notify-send "battery low"
battery_hide = 98
bat1_font = sans 8
bat2_font = sans 6
battery_font_color = #FFFFFF 74
battery_padding = 1 0
battery_background_id = 0


# End of config

I do NOT recommend using the “Tint Wizard” program to control and change your settings. Rather, I recommend editing the tint2rc file by hand, by loading it into Geany – or any other plain text editor. From my personal experience, I can attest to the fact that the Tint Wizard program is quite capable of producing corrupt tint2rc files. While a good idea, it doesn’t seem to be well implemented. You will have more consistent results by hand editing the file – at least for now, until the Tint Wizard bugs are worked out.

Background IDs

The very first thing that is listed are the background definitions. We can define as many background definitions as we feel are necessary. In the default setup of tint2 in Openbox, there are three backgrounds defined. These blocks of settings determine whether or not the particular background has rounded corners, border widths, and the colors of items.

Even though all of our background definitions set the border width to zero, we must also set a color definition for the border. Likewise, we also set a color definition for the background. All color definitions are preceded by a “#” symbol, followed by the hexidecimal color code for the color we want to use. The number after the hexidecimal color definition sets the transparency for that color, where 100 is opaque and zero is completely transparent.

As we go through each of the other sections, you will note that each section specifies which background ID to use when it is drawn on your screen.

Panel

The panel section of the tint2rc file determines much of the overall appearance of the tint2 panel. The first item, panel_monitor = all, tells tint2 to draw the panel on all the monitors it finds connected to your computer. You can also specify it to draw the tint2 panel on specific monitors connected to your computer, should you have multiple monitors connected.

The second item, panel_position, tells tint2 where to draw the panel on your screen. The default value, at least in the PCLinuxOS Openbox installation, is to draw the panel at the bottom of your screen, in a horizontal aspect, and centered on your screen.

The panel_size parameter tells tint2 the width and height of your panel. My panel is set to occupy 94% of the width of my screen, with a height of 30 pixels. Setting your width to “0” will cause the tint2 panel to occupy the full width of your screen.

Panel_margin tells tint2 whether or not to employ a margin in relationship to your monitor edge. The defaults in PCLinuxOS Openbox are “0 0” and place the tint2 panel up against the screen edge, without a margin. However, if you want to insure that there is a little “breathing room” around you panel, specify how many pixels you want your horizontal margin (the first number), and how many pixels you want your vertical margin to be (the second number), in relationship to the nearest screen border as defined in the panel_position parameter.

The fifth item, panel_padding, tells tint2 the horizontal, left-to-right, padding (the first number), the vertical padding (the second number), and the horizontal spacing (the third number).

Panel_dock tells tint2 whether or not to place the tint2 panel in the window manager’s dock. The default value is “0,” which causes tint2 to bypass the Openbox dock.

The seventh item, wm_menu, determines whether or not the default window manager menu is displayed when you right click on the tint2 panel. The default value is “0.” Changing this to “1” may be useful, depending on how you work with your computer.

The panel_layer setting allows you to specify if the panel is drawn on the top layer, the bottom layer, or is treated like a normal window. The default value in PCLinuxOS Openbox is “top.”

Finally, the panel_background_id parameter tells tint2 which of the previously defined background IDs to use when drawing the panel. In our case, that would be to use the first background ID that we defined, with a black background color and an opacity of 60%, and a white border color, with an opacity of 16%.

Panel Autohide

As you might expect, the “panel autohide” section of the tint2rc file controls the autohide capabilities of the tint2 panel. By default, the tint2 panel’s ability to autohide is turned off (autohide = 0). When the tint2 panel is in this state, the rest of the settings have no effect. Changing it to “autohide = 1” will cause the tint2 panel to autohide, and only appear when you mouse over its intended location.

When autohide is activated, the other settings become active. The autohide_show_timeout (default 0.3 seconds) specifies how many seconds (or tenths of a second) delay before the panel is shown when you move your mouse over the intended location of the tint2 panel. The autohide_hide_timeout parameter (default of 2 seconds) specifies how many seconds the panel is shown after you move your mouse outside the boundaries of the revealed panel, before it is hidden again. The autohide_height parameter (default of 2 pixels) specifies how many pixels the hidden panel occupies on your screen.

The last setting in this section of the tint2rc file, strut_policy, actually belongs to the panel section. STRUTs are used by the Openbox to decide the size of maximized windows. It determines if 'maximized windows' should follow tint2 size (follow_size, and default) or use the minimum size (minimum), or use the screen size (none).

Taskbar

Here, we define the appearance of the taskbar section of the tint2 panel. The taskbar_mode settings, as they exist in PCLinuxOS Openbox, default to showing the icons only from the current desktop (taskbar_mode = single_desktop). However, changing “single_desktop” to “multi_desktop” will show all of the icons of running applications on all desktops.

Given that tint2 has no pager, per se, changing the setting to “multi_desktop” mimics pager-like activity, since all of the running applications are grouped on the taskbar by desktops. Additionally, you can click and drag applications from one desktop to another, plus you can switch desktops simply by clicking your mouse on the corresponding section of the taskbar.

The taskbar_padding setting determines the horizontal_left_right padding (pixels from the horizontal edge of the taskbar), vertical padding (pixels from the top and bottom edge of the taskbar), and the horizontal spacing between items on the taskbar. The default value in PCLinuxOS Openbox is “2 3 2,” providing two pixels of horizontal padding from the horizontal edge of the taskbar, three pixels of padding between the upper and lower edge of the taskbar, and two pixels of spacing between items.

The taskbar_background_id setting determines which background to use when drawing the taskbar on your computer screen, while taskbar_active_background_id determines which background ID to use for the current desktop. If you changed the taskbar_mode to “multi_desktop,” you won’t notice any effect from the taskbar_active_background_id setting.

Tasks

The tasks section of the tint2rc file controls how each of the tasks are drawn on the taskbar. To start off, the urgent_nb_of_blink setting tells the tint2 panel how many times to blink a taskbar element when urgent attention is requested. The task_icon and task_text settings determine, respectively, if an icon or text is displayed on the taskbar item. By default, both items are displayed in PCLinuxOS Openbox. The task_centered setting determines if the task name is centered (1, the default) or not (0).

To economize space on the taskbar, it would be quite easy to mimic the KDE Smooth Tasks plasmoid by choosing to display an icon only on the taskbar by turning off the display of the text label – and altering one other setting, which we’ll mention here shortly.


Tint2 panel with tasks set up to mimic KDE Smooth Tasks plasmoid

The task_maximum_size determines the maximum size of the task item. It consists of two numbers, the width and height. By default in PCLinuxOS Openbox, these are set to 140 pixels wide and 35 pixels tall. If you like displaying the text on your task buttons, as is the usual case, these “measurements” typically work out fine. But if you want to mimic the KDE Smooth Tasks plasmoid’s way of displaying running tasks on your taskbar, change the task_maximum_size width to 40 pixels, turn off the text (task_text = 0), and your tint2 panel will look much like the screenshot above.

With the task_padding setting, we can control the horizontal and vertical padding of the individual task buttons displayed on the taskbar. The rest of the settings in the tasks section of the tint2rc file deal with which background ID to use to display tasks in their various states (active, urgent and iconified).

Task Icons

The task icons section tells tint2 how to display icons on the panel. The task_icon_asb setting controls all icons that don’t fall into the other designated special categories. The task_active_icon_asb setting controls how the icon of the active window is displayed. The task_urgent_icon_asb setting controls how an icon is displayed when a window is requesting your urgent attention. The task_iconified_icon_asb setting controls how the icons of an iconified (minimized) window are displayed.

Each setting has three sets of numbers, separated by a space. The numbers indicate the alpha (transparency) of the icon (0 to 100), followed by the saturation (-100 to 100), then the brightness (-100 to 100).

Fonts

The fonts section specifies how tint2 displays fonts. To save space on my tint2 panel, I have the text turned off. If you do the same, none of the following settings will really have any effect. If, however, you prefer to see a more traditional panel and choose to have the text of the window’s title bar displayed on your panel items, then you can customize how tint2 displays that text.

The task_font setting tells tint2 which font to use, any optional special style instructions (bold, italic or bolditalic), followed by the size of the font. The task_font_color setting sets the color of the font (specified with a “#” sign, followed by a 6 character hexidecimal color code), a space, then the opacity of the text color (0 to 100, with 100 being opaque and 0 being transparent).

The task_active_font_color sets the color and opacity of the text for the active window icon, while task_urgent_font_color and task_iconified_font_color sets the color and opacity of the text for icons of windows requiring your attention and icons of iconified windows, respectively.

The font_shadow setting (0 or 1) tells task2 whether or not to draw a shadow under the text displayed on the panel.

System Tray


As the name indicates, this section controls the system tray area of the panel. The systray setting allows you to set whether the system tray is embedded in the tint2 panel (set with a value of 1), or whether the system tray is disabled (set with a value of 0), and is not displayed at all. The systray_padding uses three sets of numbers, separated by a space, that govern the horizontal left-to-right padding, vertical padding, and horizontal spacing.

The systray_sort setting allows you to tell tint2 the ordering to use when displaying the icons of the system tray. In Openbox, the default value is “ascending,” which means that the icons will be placed in alphabetical order, based on the name of the application, from A to Z, left to right. The other options are: descending (reverse alphabetical order), left2right (display icons from left to right, based on the order in which the applications are loaded), and right2left (display icons from right to left, based on the order in which the applications are loaded).

With the systray_background_id setting, you control which of the previously defined panel background definitions to use when drawing the system tray. The systray_icon_size setting sets the size, in pixels, to draw the icons on the system tray. The systray_icon_asb, as with the previously discussed task_icon_asb settings, sets the alpha, saturation and brightness levels to use when displaying the icons in the system tray.

Clock


Just as its name suggests, the Clock section of the tint2rc file controls how tint2 displays clock information on the tint2 panel. The format for the clock information displayed uses the format of strftime. Refer to the manual page at the previous link.

The time1_format setting controls the formatting for the top item displayed in the clock, while the time2_format setting controls the formatting for the bottom item displayed in the clock. By default, in PCLinuxOS Opbenbox, those correspond to the time on the top, followed by the day and date on the bottom. To eliminate either line of the clock display, simply comment out the line you don’t want displayed by placing a # at the beginning of the line. Commenting out both lines will prevent the clock from being displayed at all on your tint2 panel.

The time1_font and time2_font settings allow you to specify what font, style (bold, italic or bolditalic) and fontsize to use to display your clock information. The clock_font_color allows you to set the hexidecimal font color and the opacity of the text. The clock_padding sets how many pixels, horizontal and vertical, is padded around the clock information when it is displayed. The clock_background_id setting tells tint2 which of the predefined backgrounds to use when displaying the clock information.

The clock_rclick_command setting tells tint2 what command to execute when you right click on your clock. The default in PCLinuxOS Openbox is to open the Xfce calendar program, called Orage. However, Orage is not installed in my default installation of Openbox. It should be easy enough to install it via Synaptic, though.

One setting that is not in the default PCLinuxOS Openbox configuration of tint2 is the clock_tooltip setting. Here is the entry on my Openbox installation:

clock_tooltip = %r, %A, %B %d, %Y

With the addition of this line to the Clock section of your tint2rc file, the time, day of week, month, day and year will appear as a tooltip whenever you hover your mouse over the clock.

Tooltips

The tooltips section of the tint2rc file controls the display of the tooltips on your tint2 panel, if activated. Setting tooltips = 1 turns tooltips on, while tooltips = 0 turns them off and prevents their display.

The tooltip_padding, tooltip_background_id, tooltip_font, and tooltip_font_color settings work exactly like their counterparts in the other sections. However, there are two other settings that are unique to the display of tooltips. The tooltip_show_timeout setting sets the number of seconds of delay to show the tooltip when hovering your mouse cursor over an item on the tint2 panel. The default in PCLinuxOS Openbox is 0.7 seconds. The tooltip_hide_timeout setting sets the number of seconds before the tooltip disappears when your mouse leaves the item on the tint2 panel. The default in PCLinuxOS Openbox is 0.3 seconds.

Mouse


The mouse section of the tint2rc file contains instructions for how your tint2 panel should respond to various mouse clicks. The mouse action choices should be rather obvious by reading their description. Each of the four mouse actions can have any of the following as their setting:

close:            close the task
toggle:           toggle the task
iconify:               iconify the task
toggle_iconify:   toggle or iconify the task
maximize_restore: maximized or minimized the task
desktop_left:     send the task to the desktop on the left
desktop_right:    send the task to the desktop on the right
next_task:                 send the focus to next task
prev_task:                 send the focus to previous task

The default right click action in PCLinuxOS Openbox is to close the task. Since I’m used to right clicking on a panel task to access its window menu in all the other panel applications, I found myself inadvertently closing applications that I wanted to remain open. So, I changed the right click mouse action to toggle_iconify. This way, the application remained opened, and it only changed its state from visible to iconified – or vice versa.

Battery


Unfortunately, I could not test the battery section of the tint2rc file. Whenever I tried to activate the battery notification, I received an error in my open terminal session that read:

ERROR: battery applet can't open energy_now

After this message, tint2 exited with a segmentation fault. Instead, I’m using the Gnome Power Manager to monitor my battery states.

Summary

Tint2 makes a very suitable panel replacement. It’s lean, mean, stable and attractive. You will find it easy to control, as well. There are reports of users running multiple panels on a desktop, and tint2 can be made to load up a custom resource file. Simply issue the command tint2 mysecondpanel.tint2rc, where mysecondpanel.tint2rc is the resource file that contains the information that controls the behavior of the second panel.

Feel free to explore all the options of tint2, by checking out its configuration page. You will find some entries that don’t work with our current version of tint2 in the PCLinuxOS repository. The version in our repository is the latest stable version, and there are some instructions on the configuration page that apply only to the beta version.