Probably more for my own amusement (especially in a year’s time) than for anyone else’s, and in an attempt to document the evolution of my aesthetics, I here give a summary of my own 2008, in screenshots.

The wallpapers I use for my desktops generally reflect my mood, and have some special significance for me at the time. What follows is therefore not just a collection of screenshots, but a reflection of what has been on my mind the last year. Not all the screenshots I’ve taken the past year are here. I’ve left out the odd desktops (like this one or this one) that didn’t last very long.

The screenshots are arranged per computer, roughly chronologically. Yantra is my main computer, on which I do most of my work. Grantha is the computer at my office. Mitra is the old Dell Inspiron 2500 laptop I wrote about earlier.

Most of the screenshots are of Openbox, which I started using in early 2007 (if my memory serves me well…). By the end of 2007, I discovered Pekwm and used that window manager almost exclusively for a few months in the beginning of 2008. In the summer, I started experimenting with Awesome 2.3, which became the standard window manager on one of my computers (mitra), and which I use frequently on another (yantra). All of these screenshots are of Debian or Ubuntu systems. Early in 2008, grantha still ran Windows XP, but that now runs Debian Testing (lenny). One of the early mitra screenshots may be one of Arch Linux, which I had installed on that laptop for a few weeks when I just started using it.

I’ve been using the same themes on grantha and mitra for months now (see the last screenshots for both). The themes on yantra tend to change more often, though I’ve been alternating a lot the last few months between the Children of the Earth themes and the Mythos theme.

I’ve had a lot of dark desktops this year, and have used a couple of dark Gtk themes often (Royalty, Mythos and Eidolon). It really is very pleasant on the eyes, especially at night, even if not all websites go well with it.

For all of you with a slow internet connection: know that this is quite a lengthy post, with more than 40 300×225 thumbnails!

Read the rest of this entry »

Changing the size of BBdock

December 2, 2008

EDIT: It turns out that all this can be accomplished in a much easier way by launching BBdock with the command “bbdock -d 24×24″ (or width x height), as David mentions in the first comment to this post. Oh well… :-)

BBdock, one of the many useful little applications created to work with Blackbox, is a handy application launcher or dock. Though created for Blackbox and not updated in a few years, it can be used in any window manager that has a place to load dockapps, such as Openbox or Fluxbox. It is entirely configurable in a single text file (~/.bbdockrc). You can any .png file you want for the icons, and BBdock is able to raise applications you have already launched, instead of launching a new one.

The only downside to BBdock is its size. The default icon size it uses is the standard 64×64 of WindowMaker dockapps. Even if you use smaller image files, the dock itself will remain at that clunky size.

Luckily, this is not very hard to change. I prefer to have icons of 24×24, so that BBdock integrates nicely with lal, and bbpager (another one of the BBtools). Here is picture of BBdock and some other dockapps running in Openbox:

bbdock

BBdock, lal, BBpager, and docker in Openbox 3.4.7

So, how do you change the default size? You’ll need to edit the source code and then compile that, so start by downloading the source code from the BBdock website:

	wget http://bbdock.nethence.com/download/bbdock-0.2.8.tar.gz

Extract the archive, and move into the src directory of the newly extracted tarbal:

	tar xzf bbdock-0.2.8.tar.gz
	cd bbdock-0.2.8/src

Next, you’ll have to edit the Dock.hh file:

	nano Dock.hh

Search for the slotwidth( 64 ) and slotheight( 64 ) values (they should be on line 116-117), and change them to whatever size you’d prefer BBdock to use for its icons (I chose a square of 24×24):

	Settings() :
	   slotwidth( 24 ),
	   slotheight( 24 ),

Save the file and exit. Now you can compile the source code in the usual way. First install the necessary dependencies (make sure you have the source (deb-src) urls enabled in /etc/apt/sources.list!):

	sudo apt-get build-dep bbdock

Move back into the root directory of the source code, compile and install BBdock:

	cd ..
	./configure
	make
	sudo make install

(Use sudo checkinstall if you’d like to create a .deb package of the source code and install that, so that you can remove it easily later on through apt, aptitude or Synaptic)

If the installation is successful, the default icon size will be 24×24 (or whatever else you specified). Note that this size is static; even if you use smaller or bigger images, the size will remain the same.

To configure BBdock, create and edit the ~/.bbdockrc file. Each line in that file configures an icon in bbdock. You first specify the path to the icon file, followed by the command BBdock should execute when you click on the icon. If you’d like BBdock to raise applications that have already been launched instead of raising a new instance, you can specify that too. Here are some examples from my ~/.bbdockrc:

	~/.icons/bbdock/window.png:xte 'key Pause'::
	~/.icons/bbdock/text.png:mousepad::
	~/.icons/bbdock/opera.png:opera:*opera
	

The first icon uses xte to simulate a keypress of the PrintScreen key, which I have configured in Openbox’s rc.xml to launch the client-list-combined-menu which shows all running applications on all desktops. The second icon will launch a new instance of Mousepad whenever I click the icon, and the third icon will launch Opera or raise an already running instance of Opera.

Here is a question to all of my kind hearted readers with some knowledge of programming. :-)

I’m one of those users that loves the dock in Openbox. For nearly as long as I’ve been using Openbox (once I figured out what it really was), I’ve used it to load the few things I normally required from a panel: a clock (initially bbtime and later lal) and a system tray/notification area (always the simple docker). Later I added bbpager to it, and now, inspired by mulberry, created a little dock by combining all the above with bbdock (modified so its default icons are 24×24 in size, rather than the standard 64×64). Here is what it looks like:

bbdock, lal, bbpager and docker

I’d like to do more with the dock, though. Unfortunately, most dockapps are either too big (the standard 64X64 Window Maker squares) or aesthetically not very pleasing, or both. The BB-tools, created to be used with Blackbox, are much nicer and smaller, but rather limited and no longer developed (apart from bbpager, it seems).

For a little while now, I’ve been trying to get more things to display in my dock. I’d like to be able to show my reminders in it (using remind), and possibly even things like current cpu/memory usage (in a more attractive way than the existing dockapps). The things I normally use conky or dzen2 for, in other words.

Wouldn’t it be great if you could load conky into the dock? Or even better, wouldn’t it be great if you could load dzen2 into the dock?

Awesome is able to do something like this, by creating widgets with dzen2 and loading them into the statusbar — though this seems a little less complicated than it would be in Openbox (you can’t autohide or move the widgets around like you can in Openbox’ dock).

I don’t know exactly how something similar would be accomplished in Openbox, or even if it could. Perhaps the dzen2 code could be modified so as to give it the window properties of a dockapp, or perhaps this would be done through a third party application that loads into the dock and into which dzen2 loads, perhaps Openbox itself would need to be modified.

I am no programmer — I know just enough bash to get me around and can only make some very simple modifications to existing code, often through trial and much error, and that is about it. But if you are a competent programmer, you share my enthusiasm for this and are willing to invest some time into it, please do! You’d make this happy Openbox user, and perhaps countless others, even happier. And you might even become famous. ;-)

My Openbox keybindings

July 22, 2008

One of Openbox’ great strengths is that you can control every aspect of the window manager with your keyboard, provided you spend some time configuring your keybindings. Since I use my computer extensively to process text, I have configured Openbox such that I only need to use the mouse when I really want to, and don’t have to move away from the keyboard. It speeds things up considerably, once you are used to it!

Below I give all the keybindings I use in Openbox. Some of these keybindings I don’t use very regularly. The ones that I use extensively are those that launch applications (Win+F1-9 to launch applications, or Alt+F1-6 to launch menus or application launchers); those that control the volume (Ctrl-Up/Down) and mpc (Ctrl-Alt + other keys); those to switch windows (Alt-Tab and Win-Tab) or to switch workspace (Ctrl-Alt-Left/Right); those for basic window actions, such as close (Win-A-C), maximize (Win-A-M), iconify (Win-A-I), send to bottom (Win-A-B), etc; those to move windows in the current workspace (Win + some direction key); to move windows to the next workspace (Win-A-N) or previous workspace (Win-A-P); or to follow windows to the next (Win-A-Shift-N) or previous workspace (Win-A-Shift-P).

When I mention “(with osdsh)”, it means that the action that is performed is shown on screen with osdsh. Thus, when I reconfigure Openbox, the message “reconfiguring” on my screen, or when I turn the volume up it says “volume up”. (I know osdsh has a mixer display, but that uses a lot of CPU in Hardy!). When I mention “(with script)” in the launcher section, I launch a script to raise the application if it is already running or to open a new instance if it isn’t. The shutdown and logout keybindings (Win-O-S and Win-O-E) launch a gmessage script that gives me the option to reboot, shutdown, logout, or lock the screen.

As you will see below, I make extensive use of keychains. Keychains are great! They enable me to keep most of my keybindings fairly simple and straightforward: Win-A starts the keychain for window actions (thus ‘Win-A + C’ closes the focused window, and ‘Win-A + N moves it to the next workspace); Win-O governs all the Openbox related actions (Reconfiguring, editing the configuration files, etc.).

I have also posted my current rc.xml file, for those interested. I’m pretty sure there are some additional keybindings in that file (probably duplicate actions) that are not mentioned below; if that is the case they are keybindings I no longer use, but forgot to remove.

		#########################
		## Launchers and Menus ##
		#########################
		Alt F1		root menu
		Alt F2		gmrun
		Alt F3		dmenu
		Alt F5		dmenu for configuration files
		Alt F6		client-combined-list

		Win F1		mousepad
		Win F2		notecase
		Win F3		xfce4-terminal (script)
		Win F4		thunar (script)
		Win F5		gmpc
		Win F6		epiphany
		Win F7		ooffice writer
		Win F8		opera (script)
		Win F9		stardict
		Win F10		gedit
		Win F11		gnome-alsamixer
		Win F12		Lock screen (xlock)

		Ctrl Alt Del	htop

		#########
		## MPD ##
		#########
		Ctrl Alt space	mpc toggle (with osdsh)
		Ctlr Alt Prior	mpc next (with osdsh)
		Ctlr Alt Next	mpc previous (with osdsh)

		####################
		## Volume control ##
		####################
		Ctrl Up		Volume up (PMC) (with osdsh)
		Ctrl Down	Volume down (PMC) (with osdsh)
		Ctrl Shift Up	Volume up (Master) (with osdsh)
		Ctrl Shift Down	Volume down (Master) (with osdsh)
		Ctrl Alt End	Volume mute (with osdsh)

		####################
		## Window actions ##
		####################
		Win a		Window actions
			m	Toggle maximize full
			v	Toggle maximize vertical
			h	Toggle maximize horizontal
			i	Iconify
			c	Close
			s	Toggle Shade
			t	Toggle always on top
			b	Send to bottom
			Shift b	Toggle always below
			Shift l	Send to normal layer
			Shift d	Toggle omnipresent
			d	Toggle decorations
			l	Lower, focus to bottom, unfocus
			p	Send to previous workspace
			n	Send to next workspace
			Shift p	Follow to previous workspace
			Shift n	Follow to next workspace

			g	GrowTo
				Left	GrowToEdgeWest
				Right	GrowToEdgeEast
				Down	GrowToEdgeSouth
				Up	GrowToEdgeNorth

		Win space	Show client-menu

		#############
		## Openbox ##
		#############
		Win o		Openbox actions
			r	Reconfigure (with osdsh)
			c	Edit rc.xml
			m	Edit menu.xml
			s	Shutdown (gmessage)
			e	Exit/logout (gmessage)
			l	Lock screen (xlock)

		###############
		## Worspaces ##
		###############
		Ctrl Alt Left	Go to the workspace on the left
		Ctrl Alt Right	Go to the workspace on the right
		Alt Shift Left	Send window to the workspace on the left
		Alt Shift Right	Send window to the workspace on the right

		Win Shift F1	Send window to workspace 1
		Win Shift F2	Send window to workspace 2
		Win Shift F3	Send window to workspace 3

		Win d		Show desktop

		######################
		## Window switching ##
		######################
		Alt Tab		Next window
		Alt Shift Tab	Previous window
		Win Tab		Next window (all desktops)
		Win Shift Tab	Previous window (all desktops)

		##################
		## Move Windows ##
		##################
		Win Left	Move window left
		Win Right	Move window right
		Win Down	Move window down
		Win Up		Move window up

		Win Prior	Move window to top right corner
		Win Next	Move window to bottom right corner
		Win Home	Move window to top left corner
		Win End		Move window to bottom left corner

		####################
		## Resize Windows ##
		####################
		Alt Left	Increase left edge
		Alt Right	Increase right edge
		Alt Up		Increase top edge
		Alt Down	Increase bottom edge

		Alt Shift Left	Decrease right edge
		Alt Shift Right	Decrease left edge
		Alt Shift  Up	Decrease bottom edge
		Alt Shift Down	Decrease top edge

		Alt F12		Toggle fullscreen

		Ctrl Alt d	Toggle autohide dock
		

A “tabbed” desktop

July 21, 2008

K.Mandla has already written about my “tabbed desktop”. Here is a little more information:

To create the effect of a ‘tabbed’ desktop, I have been running tint2 at the top of my screen, covering the window decorations. With the right colour and size settings, you can easily create the appearance of a tabbed desktop.

Hayagriva and my “tabbed” desktop

Two things make this method somewhat practical: First of all, I run most of my applications maximized; smaller, ‘floating’ windows somewhat destroy the tabbed feel of the desktop. Secondly, since tint covers the window decorations and makes it thus unable to close, iconify or shade the window, make it sticky, or send it to another desktop, you should be able to perform these actions with the keyboard, through keybindings.

Since K.Mandla’s post, I’ve made a small adjustment to the desktop: I added a clock and remind to my top task bar, using dzen2 (I initially also had a volume bar in it, but dropped that). My dmenu scripts also load in that exact area, using the same colour settings and covering both tint and dzen.

If you’re interested, this is my dzen2 script, and this is my tintrc. The Openbox and Gtk theme I use is Bygone (somewhat modified).

I’ve figured it out! You may remember I was trying to get a Exposé-type behaviour with Skippy in Openbox: move the mouse in a screen corner and Skippy launches to show you all non-iconified windows on that workspace. Well, I’ve found a solution using Xautolock.

As the name suggests, Xautolock is meant to launch a screen locker, such as xlock, automatically when the mouse cursor is inactive in one or more of the screen corners. It can, however, easily be used to launch any type of application.

Here is how you can use it with Skippy. Add the following line to your Openbox autostart file:

xautolock -locker  "xte 'key Scroll_Lock'" -corners 0+00  -cornerdelay 1 &

This will launch xte (-locker “xte ‘key Scroll_Lock’”) when the mouse cursor has been in the upper right corner (-corners 0+00) for a full second (-cornerdelay 1). You can specify many more options; have a look at the very detailed man page for more info. Xautolock runs very light (80 kb on this computer), so it shouldn’t slow things down.

Xte comes with xautomation. It simulates a key press, in this example of the Scroll_Lock key, which is the key I use to launch Skippy. If you launch Skippy with a different key (the default is F11), make sure to change the above xte command appropriately. You obviously need to have Skippy running for this to work. Unfortunately Skippy is not in the Hardy repositories (though it was in the repos from Dapper to Gutsy), so you’ll have to build it from source.

And that’s it! Whenever you move the mouse cursor into the upper right corner Skippy will show you all non-iconified windows. Here is a picture:

This should also work in Fluxbox or other window managers. Pekwm still has issues with Skippy, unfortunately, so this won’t work as elegantly in that window manager.

As is probably clear to the reader of this blog, I mainly use two window managers: Pekwm and Openbox. Both look very differently on this computer, though. My Openbox session is dark blue and purple; my Pekwm session, on the other hand, looks orange and black.

Up until very recently, the first thing I often had to do after I logged into either sessions, was to edit the .gtkrc-2.0 file and (re)set the appropriate Gtk theme settings. I have suggested elsewhere to use both the xfce-mcs-manager and the gnome-settings-daemon to avoid clashing themes between sessions, but I prefer not to load these daemons.

Here is my current solution. First, I created two new gtkrc files that contain the Gtk settings I use in Openbox and Pekwm: ~/.gtkrc-2.0.Openbox and ~/.gtkrc-2.0.Pekwm. I then added the following line to my (auto)start file to overwrite the default ~/.gtkrc-2.0 file with the gtkrc file for Pekmw/Openbox:

For Openbox:

	cp /home/USERNAME/.gtkrc-2.0.Openbox /home/USERNAME/.gtkrc-2.0 &

For Pekwm:

	cp /home/USERNAME/.gtkrc-2.0.Pekwm /home/USERNAME/.gtkrc-2.0 &

And voilà! No more Gtk settings that conflict with the Pekwm/Openbox theme or wallpaper. This solution is probably very obvious to many, but perhaps some of you will find it helpful. This will, of course, also work if you use Openbox and a destkop environment (as separate sessions); just uncomment everything your custom Gnome/Xfce gtkrc file (as above), so that its daemon can set the themes properly.

Do you often end up with a cluttered desktop where you have several instances of the same application running? You need quick access to a particular application (often a file manager or terminal in my case) and instead of looking for the current open instance you launch a new one. After a few hours, you notice you have 4 terminals running and three Thunar windows, where one instance of each would suffice. If you often end up in a similar situation, despair no more!

Vaughn Dickson posted a very handy script on the Openbox mailing list and his wiki that either launches an application or gives it focus if it is already running.

I have modified the script a little and created a second one for Thunar. In my version, it moves the open instance of Thunar or the terminal to the current desktop (rather than moving me to the desktop where that window currently is running). You can find my Thunar script here, and my Terminal script here. If you would like to open a new Terminal/Thunar window if there is none on the current desktop, instead of moving the existing window to the current desktop, replace the last line of the script with $terminal_exec & or $thunar_exec &. Note that you need to have wmctrl installed to use this script (it should be in the repositories of most distributions).

Make the script executable (chmod +x path to the script) and assign a keybinding to it. I bound these two scripts to the keys I normally use to launch the xfce4-terminal and Thunar (Mod4+F3 and Mod4+F4). It speeds everything up enormously, since I no longer have to wait for the application to launch (or go looking for it among my open windows).

Thank you very much, Vaughn! This is a great tool :D

Judging from the search engine terms that show up in my WordPress dashboard, a lot of the visitors to this blog are searching for a comparison between either Fluxbox and Openbox, Openbox and Pekwm, or Pekwm and Openbox (search terms such as Pekwm vs. Openbox, or Openbox vs. Fluxbox are rather common).

To satisfy the desires of my dear readers, and to help those who want to know more about some window managers, I have therefore created the following table comparing four very popular window managers (or three very popular ones and one that I happen to like a lot :-) ): Icewm, Fluxbox, Openbox and Pekwm.

Icewm, Fluxbox and Openbox have a wide user basis, and a very loyal following. Pekwm is a lesser known window manager that deserves more attention. I mainly use Openbox and Pekwm, and occasionally Icewm.

Please note that this table is not an indication of the most versatile, most developed or ‘best’ window manager. If a window manager lacks a feature, it may have some different strengths. Openbox, for example, does not support pixmap themes, but its theme options are the most complex and elaborate theme options of these four window managers (which makes creating themes for Openbox so much more fun!). Some features may also be primitively implemented: Pekwm supports dockapps, for instance, but its harbour is not very well developed. Nor does this chart provide an exhaustive list of features for these window manager. Icewm, for example, has a number of unique features that are not mentioned in this table (such as an email indicator and some system monitoring tools for the taskbar), and a lot of the basic features of window managers are left out.

I created the table so you could easily find out what each window manager can or cannot do. Choose whichever window manager you like best. Using one over the other doesn’t make you superior. :-)

There is a reasonable possibility that this table contains some errors. If you find any, please let me know. If I can think of more categories, I’ll add those later.

Icewm Fluxbox Openbox Pekwm
First release 1997 2001? 2002 200?
Last stable release 1.2.34
(27-12-2007)
1.0.0
(08-10-2007)
3.4.7
(17-04-2008 )
0.1.6
(28-05-2007)
Language C++ C++ C C++
Based on Blackbox originally Blackbox originally aewm++
EWMH standards partial partial yes partial
Panel yes yes no no
Support for dockapps no yes (slit) yes (dock) yes (harbour)
Native wallpaper support yes yes no no
Alt-tab dialog yes (vertically and horizontally!) no yes yes
Command dialog yes (in taskbar) yes (fbrun) no yes
Xinerama support yes yes yes yes
Native (fake) transparency no yes no no
Pixmap themes yes yes no yes
Multiple workspaces yes yes yes yes
Viewports no no no yes
Add/remove workspaces no no yes no
Usable screen edges no no no (in git version) yes
Strut support no no yes no
Right-click desktop menu yes yes yes yes
Configurable client menus no no no yes
Keyboard shortcuts in menus yes yes yes no
Dynamic menus no yes yes (pipe-menus) yes
Additional custom menus no yes yes yes
Icons in menus yes yes only in client-list-menus no (only in client-list-menu of git version)
Grouping/Tabbing of windows no yes no yes
Opaque moving/resizing yes yes only resizing yes
Minimize window to tray yes no no no
Hide windows yes no no no
Tiling yes (vertically and horizontally) no no (GrowTo… actions) no (‘MaxFill’ actions)
Per-app settings yes only grouping yes yes
Configurable key bindings yes yes yes yes
Chainable keygrabber no yes yes yes
Configurable mouse behaviour Some in the preferences file yes (in keys file) yes yes
Session management/
Autostarting applications
yes yes yes yes
Confirm logout yes no yes (3.4.7) no
Shutdown/reboot control no no yes (3.4.7) no
Graphical configuration tools plenty Fluxconf, Fluxmenu Obconf, Obmenu no

Thanks to the infinite knowledge of Mikachu, I’ve finally figured out how to switch window managers while running Openbox without having to terminate any running applications. Using the Openbox ‘restart’ action, you can launch a different window manager. To do so, add the following to your menu.xml file (using Pekwm as an example):

	<item label="Pekwm">
	<action name="Restart"><command>Pekwm</></>
	</item>

You won’t be able to do this through Obmenu, but text files aren’t that scary. ;-)

For all you Pekwm enthusiasts: you can do the same thing easily in Pekwm using the RestartOther action ({ Actions = “RestartOther openbox” } for example). I’m not sure how that works in other window managers; you might not be able to switch back to Openbox without logging out.