As a followup to asking about how to do this a while back on the mailing list (and then asking a related question more recently), I'm sharing with the list how I have put this together.
The goal: allow me to select terminal windows from the keyboard in a manner similar to searching for text in a browser: hit a key, start typing a window name, and have some form of autocompletion. I don't feel the need to do anything clever if several terminal windows have the same name and I pick it; which window gets selected can be random. The tools you'll need in addition to FVWM: - xwininfo for getting window information. I think this is pretty standard to have installed. - dmenu, http://tools.suckless.org/dmenu/, for handling the general selection process. I have made a patch for dmenu that adds shell-like partial autocompletion, which is very useful for this and which my scripts assume: http://lists.suckless.org/dev/1202/10851.html I have a core driver script that I call 'term-front': #!/bin/sh # Keyboard selection of terminal windows with completion based on window # name, via dmenu. # dmenu will appear at the bottom of the screen. # Generate a list of unique names of terminal windows. genwins() { xwininfo -root -tree | egrep ': \([^)]* "(XTerm|Gnome-terminal|9term)"\) [0-9]' | awk '{print $2}' | sed -e 's/^"//' -e 's/":$//' | sort -u } # run dmenu to get the answer; exit if dmenu aborted. win=$(genwins | dmenu -b -P -p win -t) || exit 1 # pass the selected window to my ToWindow function in FVWM. echo "Function ToWindow \"$win\"" | FvwmCommand -c exit 0 (You may want to customize what font dmenu uses with '-fn ...'. My actual script runs a frontend script for dmenu that sets the font and my preferred dmenu colours; I omitted it here for simplicity.) In my FVWM config file I have the following relevant bits (in addition to starting the FvwmCommandS module as part of FVWM startup, so that FvwmCommand works): # Invoke terminal selection (ie term-front) via F4. # Stealing F4 may not be to everyone's tastes; customize to suit. Key F4 A N Exec exec term-front # Aggregate all terminal windows together by turning on State 2 for them. Style "XTerm" State 2 Style "Gnome-terminal" State 2 Style "9term" State 2 # Assist function for window selection via the keyboard. # Only matches terminal windows (ie windows with State 2 on). # Invoked as 'Function ToWindow "whatever"'. # - if the current window is $0, do nothing # - if there is no window $0, do nothing. # - otherwise deiconfy, focus, raise, and warp pointer to window. DestroyFunc ToWindow AddToFunc ToWindow + I Current (State 2, "$0") Break + I Next (State 2, "$0") ToWindow2 DestroyFunc ToWindow2 AddToFunc ToWindow2 + I Iconify False + I Focus + I Raise + I WarpToWindow 80 20 A longer writeup of this with more blathering can be found at: http://utcc.utoronto.ca/~cks/space/blog/unix/FvwmKeyboardWindows http://utcc.utoronto.ca/~cks/space/blog/unix/FvwmStatesUndertood You should read both (if you read them at all) because the second contains a valuable improvement after I finally understood States right. I have to thank Thomas Adam for finally getting some important stuff about States through my evidently thick skull. - cks