Yeganesh
This is a small wrapper around dmenu. Like dmenu, it accepts input on stdin and writes the chosen result on stdout. Unlike dmenu, it mangles the input before presents its choices.
In particular, it displays commonly-chosen options before uncommon ones. Here's a partial screenshot after about 30s of use today:
As you can see, I've used Firefox several times already, as well as the Gimp, some chat programs, and my music player. The rest of the programs in my PATH follow, as usual for dmenu.
Download the source or a binary for version 2.5 (released 21 April, 2012; changelog) today! New releases will be cross-posted to the Haskell and xmonad mailing lists. You can
-
darcs get http://dmwit.com/yeganesh
for the latest, unstable version, whatever state it happens to be in - Download version 2.4, released 6 December, 2011
- Download version 2.3, released 17 October, 2011
- Download version 2.2.1, released 6 September, 2010
- Download version 2.2, released 2 September, 2010
- Download version 2.1, released 24 September, 2008
- Download version 2.0, released 6 September, 2008
- Download version 1.1, released 1 September, 2008
An important note about dmenu-4.4
If both of the following apply to you:
- you used yeganesh (any version) with version 4.3.1 or earlier of dmenu, and
- you used yeganesh version 2.3 (exactly) with version 4.4 or later of dmenu,
then you probably have duplicate entries in your profiles. Any affected profile can be fixed with the new executable provided by the yeganesh package, yeganesh-strip
. It accepts exactly the same command-line arguments as yeganesh itself, ignoring all but the --profile
option. Running yeganesh-strip
is safe, even if the profile is from a newer version of yeganesh or does not have duplicates.
Details
Yeganesh is written in Haskell, so it is technically cross-platform, but it probably doesn't make sense outside of the *nix world. Installation should be second nature for those of you familiar with Cabal. For everybody else, and assuming GHC >= 6.8:
- Install dmenu.
- Install cabal-install if you don't have it already. (If
cabal --help
prints some stuff, you already have it.) There is an installation script namedbootstrap.sh
in the tarball. If necessary, add$HOME/.cabal/bin
to your$PATH
. - Type
cabal install yeganesh
and wait for it to complete.
You should now be able to use yeganesh! Try running "yeganesh -x" a few times. The first time might be a bit unspectacular; however, on the second run, you should see all your executables listed. The third time, whichever program you chose on the second run should be promoted to the front of the list.
The scope of yeganesh is pretty small. The number of command-line options is correspondingly small. The typical usage is yeganesh [-p profile] [-f] [-x] [[--] DMENU_OPTIONS]
:
-f
or--filter
: Only the lines given on stdin will be shown (the default is to also show cached values from previous runs).-p
or--profile
: Theprofile
argument lets you specify a filename under the "$XDG_DATA_HOME/yeganesh" directory (or "~/.local/share/yeganesh" if $XDG_DATA_HOME is not set) to store the state in; it defaults to "default".-x
or--executables
: After your choice is made, scan through$PATH
for executables and add them to the cache.--
: All options after the--
will be passed on verbatim to the underlying dmenu process.
Bugs and feature requests should go to the tracker. Log in with user name "guest" and password "secret" to see the current bugs and feature requests; log back out to submit a new bug or feature request.
And, oh yeah, the name! "Yeganeh" (یگانه) is a Farsi word meaning "unique." This refers to the fact that each command occurs at most once. And "Ganesh" (sometimes "Ganesha") is the Hindi god of beginnings -- perfect for a launcher.