No commit activity in last 3 years
No release in over 3 years
A window switcher: search for windows interactively using a patched dmenu utility (the gem fetches & patches it during its installation). This was originally made for Fvwm, but it's been rewritten to work with any EWMH-compliant stacking window manager. Requires a preinstalled jansson-devel C library. It differs from rofi & co in that it activates (brings up) windows _during_ the search.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies
 Project Readme

fvwm-window-search

Incremental window search & immediate switch to the selected window during the search. Uses a patched version of dmenu as a GUI.

$ gem install fvwm-window-search

demo

  • Should work w/ most EWMH-compliant stackings X11 window managers.
  • Filter by window name/resource/class.
  • Optionally list windows from the current desktop only.
  • Preserve minimised/shaded window states.

Reqs

  • Ruby 2.1+
  • dnf install jansson-devel freetype-devel

Compilation

Type make. This clones the dmenu repo, patches & builds it. It doesn't interfere w/ a system-installed dmenu.

Usage

$ ./fvwm-window-search -h
Usage: fvwm-window-search [options]
    -c path                     an alternative path to conf.yaml
    -d                          list windows from the current desktop only
    -r                          switch to a window only when <Return> is pressed

To scroll in dmenu (using Up/Down/Home/End/PgUp/PgDown) without windows activation, hold Shift.

To customise dmenu or filtering, create a yaml file $XDG_CONFIG_HOME/fvwm-window-search/conf.yaml, e.g.:

---
dmenu:
  fn: Monospace-12
  b: false
  selection_hook_activation_return_key_only: true
filter-out:
    name: ['System Monitor']
    resource: []
    class: []

Subkeys in dmenu are the usual CLOs for dmenu(1). selection_hook_activation_return_key_only is an equivalent of -r CLO.

filter-out key tells what windows should be ignored. Each value in a subkey is an array of regexes. See the defaults at the top of fvwm-window-search file.

Start-up time

As a task switcher, the program must not only run fast, but also start fast. I managed to get it under 70ms on my laptop, when you run ./fvwm-window-search directly from the repo.

This is not the case with rubygems! The latter generates a stub script that invokes ./fvwm-window-search file. This indirection may add ~140ms of additional delay.

License

MIT.