Faking a quake terminal (like kuake / yakuake) in FVWM
This guide assumes you have a basic understanding about configuring FVWM. You don’t need to be an expert (I’m not) but you should at least know how FvwmButton’s work.
I used KDE for a long time, and a big part of the reason for that is yakuake which is probably the best terminal available. For those who don’t know what it is, it is a terminal emulator that behaves like the quake console. That is, when you press a button it comes scrolling down/up. Very handy.
Yakuake doesn’t work very well in FVWM. It kind of works… but there are a bunch of bugs, such as text overlapping and what not.
However by editing your FVWM configuration file you can replicate the functions of yakuake rather nicely, and also add some nice extras.
The key is the Panel option in FvwmButtons. This enables you to drop down a FvwmButton from anywhere by clicking another FvwmButton. If you also would want to enabel this drop down terminal to a keyboard button, then the FakeClick method fixes that decently. It is a bit buggy if you move your mouse too much while toggling but it is good enough.
Simply create a button swallowing the terminal you want to have as a drop down console, and then make another button call the console button by Panel. Specify where it should drop down and that’s pretty much it.
Setup the button
DestroyFunc StartFunction AddToFunc StartFunction + I Module FvwmButtons MenuButtons
The button calling the panel. You should add the Panel-call to any of you buttons instead of using this (but this is an example)
DestroyModuleConfig MenuButtons: *
*MenuButtons: Rows 1
*MenuButtons: Columns 1
*MenuButtons: Back black
*MenuButtons: Geometry 50x50-2-2
*MenuButtons: (1x1, Panel(down, delay 0, steps 30, position root left 0 0) \\
SubPanel "Module FvwmButtons SubPanel")
The subpanel that holds the terminal
DestroyModuleConfig SubPanel: * *SubPanel: Geometry 1280x350 *SubPanel: Rows 1 *SubPanel: Columns 1 *SubPanel: (1x1, Swallow(UseOld,NoHints,Respawn) "xterm" `Exec exec xterm`)
Now you have a button which you can click to get down the console holding an xterm. If you want to bind this to a button then use FakeClick like this to fool your system that you are clicking the button (ugly fix but the only one I’ve found).
The button press calls a function…
Key f12 A N press_fakebutton
The function quickly places the mouse cursor over the button, fakes a click and returns it.
DestroyFunc press_fakebutton AddToFunc press_fakebutton + I SetEnv CURSOR_X $[pointer.x] + I SetEnv CURSOR_Y $[pointer.y] + I All [MenuButtons] WarpToWindow 25p 25p #middle of button + I FakeClick depth 0 press 1 wait 10 release 1 + I WindowId root 1 WarpToWindow $[CURSOR_X]p $[CURSOR_Y]p
Adding styles to the SubPanel is smart. Displaying it on all pages for an example is quite nice.
Also feel free to use another terminal with tab support if you want to be able to use a tabbed console like in yakuake. Or maybe a drop down python interpreter instead? It’s of course possible to have the drop down console have more than 1 row/col and have them swallow other applications as well. The possibilities are endless
Here are some screenshot of how it can look (without any style tags).
Please do not complain on this configuration as it is work in progress
I would love to be proven wrong and have some easier way to do this but right now this is my method of choice. Please feel free to comment.



Recent Comments