{"id":13418516,"url":"https://github.com/enkore/j4-dmenu-desktop","last_synced_at":"2025-05-15T04:05:45.416Z","repository":{"id":7487455,"uuid":"8836266","full_name":"enkore/j4-dmenu-desktop","owner":"enkore","description":"A fast desktop menu","archived":false,"fork":false,"pushed_at":"2025-03-04T18:02:42.000Z","size":1239,"stargazers_count":700,"open_issues_count":20,"forks_count":71,"subscribers_count":12,"default_branch":"develop","last_synced_at":"2025-04-14T05:55:28.570Z","etag":null,"topics":["dmenu","i3","j4-dmenu-desktop"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enkore.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-03-17T15:18:27.000Z","updated_at":"2025-04-08T18:21:32.000Z","dependencies_parsed_at":"2023-01-14T11:41:07.884Z","dependency_job_id":"6f3de7b7-2675-4ea2-a70a-8701c7323f7a","html_url":"https://github.com/enkore/j4-dmenu-desktop","commit_stats":{"total_commits":720,"total_committers":36,"mean_commits":20.0,"dds":"0.38611111111111107","last_synced_commit":"8e6c279359cd69649c0ab312b45666a7e6cdd6b8"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enkore%2Fj4-dmenu-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enkore%2Fj4-dmenu-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enkore%2Fj4-dmenu-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enkore%2Fj4-dmenu-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enkore","download_url":"https://codeload.github.com/enkore/j4-dmenu-desktop/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254270646,"owners_count":22042859,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dmenu","i3","j4-dmenu-desktop"],"created_at":"2024-07-30T22:01:03.211Z","updated_at":"2025-05-15T04:05:40.401Z","avatar_url":"https://github.com/enkore.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# j4-dmenu-desktop\n\nj4-dmenu-desktop is a fast desktop menu using `dmenu` (or compatible programs).\nIt scans .desktop files in $XDG_DATA_HOME and $XDG_DATA_DIRS, providing a menu\nfor launching applications.\n\nIt is inspired by i3-dmenu-desktop. Like i3-dmenu-desktop, j4-dmenu-desktop\noffers optional integration with i3wm and Sway (but j4-dmenu-desktop should work\njust fine on about any desktop environment).\n\nYou can also execute shell commands using it.\n\nhttps://github.com/user-attachments/assets/311779a5-4ebf-41db-b942-cb90747649f9\n\n## Features\n\n- speed\n- conformance to the [Desktop Entry Specification](https://specifications.freedesktop.org/desktop-entry-spec/1.5/)[^1]\n- daemon mode with `--wait-on` which parses desktop files ahead of time\n- support for history sorted by usage frequency using `--usage-log`\n- automatic desktop file loading/removal in daemon mode using inotify/kqueue\n- support for any dmenu-like program (j4-dmenu-desktop is independent of any\n  desktop environment + it works with both Xorg and [Wayland](#examples))\n- (optional) i3/Sway IPC integration\n- multiple formatters available (program name, program name with executable\n  path...)\n- completions for all major shells + a manpage\n- and more!\n\n## Build requirements\n\n* Compiler with C++17 support\n* CMake or Meson\n\nBuilding with Meson:\n\n    ./meson-setup.sh build\n    cd build\n    meson compile\n    sudo meson install\n\nBuilding with CMake:\n\n    mkdir build\n    cd build\n    cmake ..\n    make j4-dmenu-desktop\n    sudo make install\n\nSee [BUILDING](BUILDING.md) for more info.\n\n## Distribution packages\n\n### Archlinux \u003ca href=\"https://repology.org/project/j4-dmenu-desktop/versions\"\u003e\u003cimg src=\"https://repology.org/badge/vertical-allrepos/j4-dmenu-desktop.svg\" alt=\"Packaging status\" align=\"right\"\u003e\u003c/a\u003e\n\nThe package is provided in the Arch Linux extra repository. You can install it via\n\n    sudo pacman -S j4-dmenu-desktop\n\n### FreeBSD\n\nj4-dmenu-desktop is now available in the FreeBSD Ports Collection. A prebuilt package can be installed via\n\n    pkg install j4-dmenu-desktop\n\n### Gentoo\n\nj4-dmenu-desktop is available in Portage for the `amd64` and `x86` architectures. You can install it via\n\n    echo \"x11-misc/j4-dmenu-desktop ~amd64 ~x86\" \u003e\u003e /etc/portage/package.accept_keywords\n    emerge --ask x11-misc/j4-dmenu-desktop\n\nThe 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)\n\n    layman -a gentoo-el\n    echo \"=x11-misc/j4-dmenu-desktop-9999 **\" \u003e\u003e /etc/portage/package.accept_keywords\n    emerge x11-misc/j4-dmenu-desktop\n\n### Ubuntu\n\nThe package is now in the apt repository. You can install it via\n\n    sudo apt-get install j4-dmenu-desktop\n\n### Debian\n\nj4-dmenu-desktop is in Debian stable:\n\n    sudo apt install j4-dmenu-desktop\n\n### Nix / NixOS\n\nj4-dmenu-desktop is in [nixpkgs](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/misc/j4-dmenu-desktop/default.nix):\n\n    nix-env --install j4-dmenu-desktop\n    # Or use pkgs attribute of the same name in NixOS configuration\n\n### Void Linux\n\nj4-dmenu-desktop is packaged in Void Linux:\n\n    sudo xbps-install -S j4-dmenu-desktop\n\nThis package is maintained my me, [meator](https://github.com/meator). As a\ncollaborator of j4-dmenu-desktop and an active Void Linux user, I ensure a\nhigher standard of quality for this package. This package is officially\nsupported, feel free to [open\nissues](https://github.com/enkore/j4-dmenu-desktop/issues/new) or ask for\nsupport related to the Void Linux package here.\n\n## Examples\n\nRun j4-dmenu-desktop:\n\n    j4-dmenu-desktop\n\nSpecify custom dmenu (useful on Wayland, [tofi](https://github.com/philj56/tofi)\nis used as example):\n\n    j4-dmenu-desktop --dmenu=tofi\n\nDisplay 5 entries vertically at once:\n\n    j4-dmenu-desktop --dmenu=\"dmenu -l5\"\n\ndisplay binary name alongside name (for example `Chromium` will become `Chromium\n(/usr/bin/chromium)`):\n\n    j4-dmenu-desktop --display-binary\n\nDon't display generic names and use `alacritty` as terminal emulator:\n\n    j4-dmenu-desktop --no-generic --term alacritty\n\nEnable I3/Sway IPC mode:\n\n    j4-dmenu-desktop --i3-ipc\n\n## FAQ / RAQ / RMR\n\n### I want it to display normal binaries, too, yes?\n\nYou can put this in a script file and use it instead of calling j4dd directly:\n\n    j4-dmenu-desktop --dmenu=\"(cat ; (stest -flx $(echo $PATH | tr : ' ') | sort -u)) | dmenu\"\n\nExchanging the `cat` and `(stest ... sort -u)` parts will swap the two parts (j4dd's output and the list of binaries).\n\n### Get the output into a pipe / launching a program by arbitrary user input\n\n[GOTO](https://github.com/enkore/j4-dmenu-desktop/issues/39#issuecomment-177164865)\n\n### How much faster is it?\n\n    % time i3-dmenu-desktop --dmenu=\"cat\"\n    [{\"success\":true}]\n    i3-dmenu-desktop --dmenu=\"cat\"  0.37s user 0.02s system 96% cpu 0.404 total\n    % time ./j4-dmenu-desktop --dmenu=cat\n    ./j4-dmenu-desktop --dmenu=cat  0.01s user 0.01s system 107% cpu 0.015 total\n\nMore than 25 times faster :)\n\n[^1]: Some minor features like [handling of `TryExec`\n      key](https://github.com/enkore/j4-dmenu-desktop/issues/165) are missing.\n      If there are any problems with compliance to the Desktop entry\n      specification, please [submit an\n      issue](https://github.com/enkore/j4-dmenu-desktop/issues/new).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenkore%2Fj4-dmenu-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenkore%2Fj4-dmenu-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenkore%2Fj4-dmenu-desktop/lists"}