I still use Openbox daily, but recently decided to finally give some of the big desktop environments a serious try. The last time I really tried Gnome or KDE was before their big shifts (to 3. and 4. respectively). A friend had been speaking highly of the latest Gnome versions and claimed several features of it enhanced his workflow and productivity. Was I missing out on all these great developments by sticking with Openbox? I gave Gnome and KDE another try, using them for my usual work for a few days each. There are indeed some nice features in these newer versions, and I particularly liked some of the new aspects of KDE.

But I am now back with Openbox, because I feel so much more at home in it (having spent a few years fine tuning a desktop that suits my needs), and because I still don’t understand why I need to spend so much of my laptop’s resources on window and desktop management (resources that are not a plenty with older laptops!).

One feature of KDE I particularly liked: middle click on the desktop and the text in your primary X clipboard (the clipboard that contains the text that is merely highlighted, and that is normally pasted with a middle mouse click) is pasted into a new note on the desktop. Very handy for information you quickly want to store somewhere (for however long you want to)!

When I moved back to Openbox, I immediately decided to implement that in my Openbox desktop, using xpad. Here is how I did it.

Open your favourite text editor and create the following script:

#!/bin/sh
FILE="/tmp/xpadclick.txt"
xclip -selection p -o > $FILE ; xpad --new-from-file=$FILE

(If, for some reason, you want this to work with the text you copied with Ctrl+C use “xclip -selection c -o” instead of “xclip -selection p -o” in the above script.)

Note that this requires xclip to be installed (besides xpad, obviously). If you don’t have it installed, you can do so on Debian systems with the following command:

sudo apt-get install xclip

Save the script (I saved it as ~/.scripts/xpad-middleclick.sh), and make it executable (chmod +x ~/.scripts/xpad-middleclick.sh).

Now you have to tell Openbox to run the script whenever you middle click on the desktop. Open your rc.xml file and search for <mousebind action=”Press” button=”Middle”> in the mouse section, under <context name=”Root”>. The default is as follows:

<mousebind button="Middle" action="Press">
<action name="ShowMenu"><menu>client-list-combined-menu</menu></action>
</mousebind>

Change this into the following (make sure the path points to wherever you saved the above script):

<mousebind action="Press" button="Middle">
<action name="Execute">
<execute>~/.scripts/xpad-middleclick.sh</execute>
</action>
</mousebind>

Reconfigure Openbox, and you can quickly create an xpad note of the selected text whenever you middle click on the desktop.

If you don’t want Openbox to draw window decorations for xpad, add the following to your rc.xml (in the applications section):

<application name="xpad">
<decor>no</decor>
</application>

And here is a totally unnecessary picture of the end result:

xpadnote

(For those of you who prefer Tomboy: I’m not sure whether you can do this with Tomboy. Unlike xpad, Tomboy does not have a cli option to create a new note from file. Perhaps it is possible to achieve a similar result using tomboycli, but I have not tried to do so.)

The way openbox-session autostarts applications changed in Openbox 3.5, the latest release. Openbox-session is the session manager for Openbox, which is launched when you run Openbox as a stand-alone window manager, not as the window manager within a desktop environment like Xfce or KDE that has their own session manager. In earlier versions, openbox-session would look for the autostart.sh (now also renamed to just autostart) file in ~/.config/openbox, or, if that file did not exist, the system wide autostart file located in /etc/xdg/openbox. That autostart file contains a list of applications or commands that are launched whenever Openbox through openbow-session.

When I upgraded to Openbox 3.5 I noticed that whenever I launched openbox-session, a few applications I use in Gnome, but never in Openbox, would be launched at login, and some applications that I have listed in my autostart file would be launched twice.

After a little digging–the documentation on the Openbox website has not been updated yet–I figured out what was happening. Openbox-session now also launches /usr/lib/openbox/openbox-autostart, which in its turn runs /usr/lib/openbox/openbox-xdg-autostart.

Now, what does /usr/lib/openbox/openbox-xdg-autostart do? This is an Openbox implementation of the Freedesktop standards when it comes to autostarting applications. Similar to what Gnome and Xfce do, it looks in /etc/xdg/autostart and ~/.config/autostart for .desktop files of applications and launches those. These .desktop files are simple text files that tell the session manager what to launch at login. If besides pure Openbox, you also use desktop environments, you’ll have some .desktop files in there. Some applications (like wicd or gnome-do) also automatically copy a .desktop file into this directory when you install them.

This new behaviour is a little confusing, as openbox-session also still launches Openbox’ own autostart file, which means that some applications, such as wicd, will launch twice if you still have them in your autostart file. How do we fix that? You could just comment out the final line of /usr/lib/openbox/openbox-autostart (the line that says /usr/lib/openbox/openbox-xdg-autostart “$@”), but that may seem to some too crude a fix. That file will also be overwritten when you upgrade Openbox, so you’ll have to re-edit this file when you reinstall Openbox.

A more elegant, but more cumbersome, solution is to work with these new standards, and edit the .desktop files. As you might have noticed, not all of the applications that have .desktop files in these directories will be launched when you run openbox-session, because you can specify that you want these applications only launched or autostarted in specific desktop environments. To find out which applications will launch automatically by this openbox-xdg-autostart script, you can run the following command:

/usr/lib/openbox/openbox-xdg-autostart –list | less

If an application is marked to be launched at login, you can easily disable that by editing the application’s .desktop file, and adding a line telling it to only launch this application in certain desktop environments. Here is an example, using wicd’s .desktop file in /etc/xdg/autostart. This is the wicd-tray.desktop file:

[Desktop Entry]
Categories=Application;Network;
Exec=wicd-gtk –tray
GenericName=Network Manager
Icon=wicd-gtk
Name=Wicd Network Manager Tray
Comment=Display network connection status in the system tray
Terminal=false
Type=Application
Version=1.0
X-GNOME-Autostart-enabled=true
X-KDE-autostart-after=panel

If we want this file to be only used in Xfce or Gnome, and not in Openbox (because we already have the application listed in our autostart file, for example, or just because you don’t want to use this in Openbox), you can add the following line at the bottom of that file:

OnlyShowIn=’ENVIRONMENT’

Replace ENVIRONMENT here by your preferred desktop environment. The options are GNOME, KDE, ROX, XFCE, and one called “Old” which is supposed to be for “Legacy systems”, whatever that means. I believe LXDE also works. (Run /usr/lib/openbox/openbox-xdg-autostart –help for more information). If you want it to be launched in more than one DE, you have to separate the environment names with a semicolon, as follows:

OnlyShowIn=’GNOME;KDE’

Add this line to the .desktop files you don’t want launched in Openbox, and all should be normal again.

Since version 4.6, Xfce uses a settings editor, similar to Gnome’s gconf. You can edit the settings in xfconf from the command-line with its command-line utility xfconf-query. This is handy if you want to control certain aspects of Xfce through Openbox’ keybindings. On Loka, my desktop computer, I use Openbox as the window manager in Xfce, and use the xfce4-panel, which is set to be always visible. Occasionally, however, I want to hide the panel, and thanks to xfconf-query I can do that with a simple keybinding.

Here is what I use in the keyboard section of my rc.xml:

<keybind key="W-o">
<!--Autohide xfce4-panel-->
      <keybind key="h">
        <action name="Execute">
          <execute>xfconf-query -c xfce4-panel -p /panels/panel-0/autohide -s true</execute>
        </action>
      </keybind>
      <keybind key="S-h">
        <action name="Execute">
          <execute>xfconf-query -c xfce4-panel -p /panels/panel-0/autohide -s false</execute>
        </action>
      </keybind>
   </keybind>

This makes the Win+o+h keychain (auto)hide the xfce4-panel and Win+o+Shift+h make the panel visible again. (In my configuration, W-o starts the keychain for all Openbox and DE related keybindings)

Note that if you run more than one xfce4-panel, this keybinding will only hide the first panel (panel-0). If you want to hide a different panel, change /panels/panel-0/ to the appropriate value (/panel/panel-1/ for example). You can find out the panel number in the “Panel preferences” dialog (where “Panel 1” will be named “panel-0” in xfconf, “Panel 2” will be “panel-1”, and so on), or you can check it in xfce4-settings-editor.

By default, Openbox 3.5 has a vertical alt-tab dialog. If you prefer the old alt-tab icon dialog, you can revert to it by adding the <dialog>icons</dialog> to the PreviousWindow and NextWindow actions in your Alt-Tab (and, for me, Win-Tab) keybindings in your rc.xml, as follows:

<!-- Keybindings for window switching -->
<keybind key="A-Tab">
      <action name="NextWindow">
      <dialog>icons</dialog>
      </action>
    </keybind>
    <keybind key="A-S-Tab">
      <action name="PreviousWindow">
      <dialog>icons</dialog>
      </action>
    </keybind>
<keybind key="W-Tab">
      <action name="NextWindow">
        <allDesktops>yes</allDesktops>
      <dialog>icons</dialog>
      </action>
    </keybind>
    <keybind key="W-S-Tab">
      <action name="PreviousWindow">
        <allDesktops>yes</allDesktops>
      <dialog>icons</dialog>
      </action>
    </keybind>

Change <dialog>icons</dialog> to <dialog>list</dialog> to get the vertical dialog. Change it to <dialog>none</dialog> to have no dialog.

In the rc.xml there is now also a new setting to configure the font for inactive text in on-screen-displays, like the alt-tab dialog. If you’ve migrated your old configuration to Openbox 3.5, make sure you delete the OnScreenDisplay font settings in the theme section of your rc.xml and replace it with two settings: one ActiveOnScreenDisplay and one InactiveOnScreenDisplay. This section in my configuration file looks as follows:

<font place="ActiveOnScreenDisplay">
    <name>Corbel</name>
    <size>9</size>
    <!-- font size in points -->
    <weight>bold</weight>
    <!-- 'bold' or 'normal' -->
    <slant>normal</slant>
    <!-- 'italic' or 'normal' -->
  </font>
  <font place="InactiveOnScreenDisplay">
    <name>Corbel</name>
    <size>9</size>
    <!-- font size in points -->
    <weight>bold</weight>
    <!-- 'bold' or 'normal' -->
    <slant>normal</slant>
    <!-- 'italic' or 'normal' -->
  </font>

Manual Tiling in Openbox

October 30, 2011

Occasionally I want to tile two or three windows. In the past I’ve used tile or whaw for this. I also know of such applications like Pytyle. But all of these require me to have an additional application installed or a daemon running to tile my windows, which is too much work for the few times I want to tile my windows.

A while ago, aeiah of the Ubuntu Forums, told me of how he manually tiles windows in Openbox, using its MoveResizeTo action. He explains it at some length in this post. It takes some fiddling to get the settings right for your own monitor, but once you have it set up it is a great tool to quickly tile a handful of windows.

I have these actions bound to a keychain, beginning with Win + a (which I use for all my window actions), followed by the number of the numeric keypad that corresponds to the place I want the window to appear: 7 is upper left half, 3 the lower right half, 4 the left 60% of the screen, 6 the remainder of the right side of the screen, and so on. This allows me to quickly tile two or three windows, and only the windows I want (rather than all the windows in the current workspace), which is exactly what I wanted.

These are the settings I use for my 2048×1152 monitor:

   <keybind key="W-a">
<!-- Begin the keychains to manage windows -->
      <!-- aeiah's semi-tiling mode -->
      <keybind key="KP_6">
        <action name="UnmaximizeFull"/>
        <action name="MoveResizeTo">
          <x>1110</x>
          <y>0</y>
          <width>940</width>
          <height>1108</height>
        </action>
      </keybind>
      <keybind key="KP_4">
        <action name="UnmaximizeFull"/>
        <action name="MoveResizeTo">
          <x>0</x>
          <y>0</y>
          <width>1108</width>
          <height>1108</height>
        </action>
      </keybind>
      <keybind key="KP_8">
        <action name="UnmaximizeFull"/>
        <action name="MoveResizeTo">
          <x>0</x>
          <y>0</y>
          <width>2048</width>
          <height>576</height>
        </action>
      </keybind>
      <keybind key="KP_2">
        <action name="UnmaximizeFull"/>
        <action name="MoveResizeTo">
          <x>0</x>
          <y>564</y>
          <width>2048</width>
          <height>564</height>
        </action>
      </keybind>
      <keybind key="KP_9">
        <action name="UnmaximizeFull"/>
        <action name="MoveResizeTo">
          <x>1110</x>
          <y>0</y>
          <width>940</width>
          <height>554</height>
        </action>
      </keybind>
      <keybind key="KP_3">
        <action name="UnmaximizeFull"/>
        <action name="MoveResizeTo">
          <x>1110</x>
          <y>571</y>
          <width>940</width>
          <height>546</height>
        </action>
      </keybind>
      <keybind key="KP_1">
        <action name="UnmaximizeFull"/>
        <action name="MoveResizeTo">
          <x>0</x>
          <y>440</y>
          <width>720</width>
          <height>420</height>
        </action>
      </keybind>
      <keybind key="KP_7">
        <action name="UnmaximizeFull"/>
        <action name="MoveResizeTo">
          <x>0</x>
          <y>0</y>
          <width>720</width>
          <height>420</height>
        </action>
      </keybind>
<!-- other keychains to manage windows -->
    </keybind>

As aeiah mentioned, this method does not let you ‘untile’ windows. I have added another action to my rc.xml to allow me to untile the window, using the MoveResizeTo action. This action, bound to Win + a + r, moves the window to the centre of the screen and resizes it to a 800×1100 size, which is about the size I have most of my windows. Here is the relevant part of my rc.xml:

   <keybind key="W-a">
<!-- Begin the keychains to manage windows -->
    <keybind key="r">
    <action name="MoveResizeTo">
	<x>center</x>
	<y>center</y>
	<height>800</height>
	<width>1100</width>
    </action>
    </keybind>
<!-- other keychains to manage windows -->
    </keybind>

If you generally maximize your windows, as I do on my much smaller laptop screen, you could easily add a command to maximize the window again, using the Maximize or ToggleMaximize actions. If there are only a few applications you do not maximize, you can use the really nifty if action. (This works only in Openbox 3.5) For example, if I want to maximize all windows except Thunar, which I want to move to the centre and resize to a 800×600 size, I could use the following keybinding:

 <keybind key="W-a">
<!-- Begin the keychains to manage windows -->
<keybind key="r">
 <action name="If">
     <title>* File Manager</title>
  <then>
   <action name="MoveResizeTo">
	<x>center</x>
	<y>center</y>
	<height>600</height>
	<width>800</width>
    </action>
  </then>
  <else>
     <action name="Maximize"/>
  </else>
 </action>
</keybind>
<!-- other keychains to manage windows -->
</keybind>

To navigate between tiled windows you could use the DirectionalTargetWindow or the DirectionalCycleWindows actions (if you want to see a dialog). I had these bound to Win + the appropriate numeric keypad key, but never use them. Someone else might find these actions useful, though.

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).