Alt+Space, x is the default shortcut for maximize/unmaximize in most window managers. Does that work?
Or maybe it's Alt+F6 and Alt+F7 as suggested in the Actions Documentation.
If not, you can add a binding using the information in the Openbox Bindings Documentation, but it sounds like you can only set shortcuts for all windows, not just for one program.
In brief, you find your rc.xml
file, then add something like this in the middle of it:
<keybind key="A-F6">
<action name="MaximizeFull"/>
</keybind>
Unless you meant unminimize / restore rather than maximize, i.e. a binding that works even when the window isn't focussed.
In that case, I'd suggest using xbindkeys
and wmctrl
. You'd have to write a script that runs wmctrl
to find the uzbl
window using wmctrl -l
, then run either wmctrl -a <win>
or wmctrl -R <win>
, then add an entry in .xbindkeysrc
to run that script whenever a specific keyboard combination was pressed.
Different window managers can use different keyboard mappings, and the keymapping defines how your Fn key is recognized. This is why what works in XFCE doesn't necessarily work in Openbox.
To check how X (and Openbox) interpret your Fn key, follow this guide.
Based on the results, you can either use the appropriate key symbol in rc.xml
instead of Fn.
Fn on my Thinkpad is recognized as XF86WakeUp
for instance. If it has no symbol assigned, you can assign one manually with xmodmap as per this guide and then use that symbol in rc.xml
.
Investigating further, it turns out that Fn is a special key on some notebooks (like IBM/Lenovo Thinkpads) in that the Keypress
and Keyrelease
events (or Keydown
and Keyup
in Microsoft terms) are generated simultaneously and only when the key is released. Further keypresses while Fn is depressed are simply not registered*. With xev, you can easily check if this is the case with your system as well.
This means that Fn cannot be used as a modifier key (combined with other keys like Alt, Ctrl or Shift). It can be assigned as a shortcut on its own though. Combined with Openbox's keychains, this is almost as good as using it as a modifier. You just have to release it before pressing the key you combine it with.
* There must be some way of registering keys combined with Fn though at least on Thinkpads, as Lenovo's own Windows tools do react to Fn plus other keys. But this seems to happen at a very low level. When I am in a VMWare guest on a Windows host, pressing Fn plus a key opens the appropriate tool in the Windows host, not in the guest OS. It would be interesting to look into the implementation of similar Thinkpad tools on Linux to see how they cope with Fn.
Here you find more Thinkpad-specific info on how Fn+Fx key combos generate ACPI events, which is what the Thinkpad tools react to. However, I suppose those events are only generated for specific combinations with Fx keys and not for other key combinations.
The page also describes how you can make ACPI events trigger key events. However, if Fn keydown and keyup don't generate separate events of their own (I believe they don't on Thinkpads), this doesn't really get you any further.
Best Answer
I ended up using xcape, a utility designed to do exactly this:
Quoted from the xcape readme
Using xcape, you can assign the press and release of a modifier key to a different key or even a sequence of keys. For example, you can assign Super to a placeholder shortcut like ⎈ Ctrl⇧ Shift⎇ Alt SuperD with:
Now when you press and release Super without pressing any other keys, xcape will send keyboard events simulating presses of ⎈ Ctrl⇧ Shift⎇ Alt SuperD (holding all the modifier keys down as if you pressed them like a shortcut).
If you press Super and another key (or hold Super too long, the default timeout is 500 ms), xcape will pass the keyboard events through as is, without firing extra keys.
If you put the placeholder shortcut in
rc.xml
, it will run when Super and only Super is pressed.Other shortcuts involving Super will not be affected.
Note that you'll have to run xcape each time you boot, so you may want to put it somewhere like
~/.config/openbox/autostart
where it will be run automatically.