Need help with j4-dmenu-desktop?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

enkore
491 Stars 49 Forks GNU General Public License v3.0 286 Commits 11 Opened issues

Description

A fast desktop menu

Services available

!
?

Need anything else?

Contributors list

j4-dmenu-desktop

Travis Build

j4-dmenu-desktop is a replacement for i3-dmenu-desktop. It's purpose is to find .desktop files and offer you a menu to start an application using dmenu. Since r2.7 j4-dmenu-desktop doesn't require i3wm anymore and should work just fine on about any desktop environment.

You can also execute shell commands using it.

Project status

I consider j4-dmenu-desktop pretty much feature complete since a few years: larger new features need a compelling reason and a good patch. Preferably discuss it before putting more work into it.

Build requirements

  • Compiler with basic C++11 support (GCC 4.77 or later required, Clang works, too)
  • CMake

Building is the usual cmake/make thingy:

cmake .
make
sudo make install

Distribution packages

Archlinux Packaging status

The package is provided by the AUR. You can install it with an AUR helper of your choice:

j4-dmenu-desktop-git
or
j4-dmenu-desktop
. Else, you may install it manually by invoking the following commands as a regular user. (to build packages from the AUR, the
base-devel
package group is assumed to be installed)
git clone https://aur.archlinux.org/j4-dmenu-desktop.git    
cd j4-dmenu-desktop
makepkg -si

or for the latest:

git clone https://aur.archlinux.org/j4-dmenu-desktop-git.git
cd j4-dmenu-desktop-git
makepkg -si

FreeBSD

j4-dmenu-desktop is now available in the FreeBSD Ports Collection. A prebuilt package can be installed via

pkg install j4-dmenu-desktop

Gentoo

j4-dmenu-desktop is available in Portage for the

amd64
and
x86
architectures. You can install it via
echo "x11-misc/j4-dmenu-desktop ~amd64 ~x86" >> /etc/portage/package.accept_keywords
emerge --ask x11-misc/j4-dmenu-desktop

The package is also provided by the

gentoo-el
overlay. You can install it with the following commands as root. (you need to have
layman
installed and configured)
layman -a gentoo-el
echo "=x11-misc/j4-dmenu-desktop-9999 **" >> /etc/portage/package.accept_keywords
emerge x11-misc/j4-dmenu-desktop

Ubuntu

The package is now in the apt repository. You can install it via

sudo apt-get install j4-dmenu-desktop

Debian

j4-dmenu-desktop is in Debian stable:

sudo apt install j4-dmenu-desktop

Nix / NixOS

j4-dmenu-desktop is in nixpkgs:

nix-env --install j4-dmenu-desktop
# Or use pkgs attribute of the same name in NixOS configuration 

Invocation

Usage:

j4-dmenu-desktop [--dmenu="dmenu -i"] [--term="i3-sensible-terminal"]
j4-dmenu-desktop --help

Options:

--dmenu=
    Determines the command used to invoke dmenu
    Executed with your shell ($SHELL) or /bin/sh
--use-xdg-de
    Enables reading $XDG_CURRENT_DESKTOP to determine the desktop environment
--display-binary
    Display binary name after each entry (off by default)
--no-generic
    Do not include the generic name of desktop entries
--wrapper=
    A wrapper binary. Useful in case you want to wrap into 'i3 exec'
--term=
    Sets the terminal emulator used to start terminal apps
--usage-log=
    Must point to a read-writeable file (will create if not exists).
    In this mode entries are sorted by usage frequency.
--wait-on=
    Must point to a path where a file can be created.
    In this mode no menu will be shown. Instead the program waits for 
    to be written to (use echo > path). Every time this happens a menu will be shown.
    Desktop files are parsed ahead of time.
    Perfoming 'echo -n q > path' will exit the program.
--no-exec
    Do not execute selected command, send to stdout instead
--help
    Display this help message

Environment variables

  • $SHELL is respected, and if absent /bin/sh is used
  • XDG-spec variables (XDGCURRENTDESKTOP, XDGDATAHOME, HOME) are respected

FAQ / RAQ / RMR

Case insensitivity?

Add the

-i
option to the dmenu command

I want it to display normal binaries, too, yes?

You can put this in a script file and use it instead of calling j4dd directly:

j4-dmenu-desktop --dmenu="(cat ; (stest -flx $(echo $PATH | tr : ' ') | sort -u)) | dmenu"

Exchanging the

cat
and
(stest ... sort -u)
parts will swap the two parts (j4dd's output and the list of binaries).

Get the output into a pipe / launching a program by arbitrary user input

GOTO

How much faster is it?

% time i3-dmenu-desktop --dmenu="cat"
[{"success":true}]
i3-dmenu-desktop --dmenu="cat"  0.37s user 0.02s system 96% cpu 0.404 total
% time ./j4-dmenu-desktop --dmenu=cat
./j4-dmenu-desktop --dmenu=cat  0.01s user 0.01s system 107% cpu 0.015 total

More than 25 times faster :)

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.