emenu

Emacs version of dmenu
Log | Files | Refs

commit b8dd3ec95218d8ae274f1a335e047c3f9a00ddd4
Author: Erik Oosting <crazazy@tilde.cafe>
Date:   Mon, 21 Feb 2022 16:10:47 +0100

Initial commit

Diffstat:
Aemenu.el | 30++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+), 0 deletions(-)

diff --git a/emenu.el b/emenu.el @@ -0,0 +1,30 @@ +(defun all-commands () + "does a completing read of all the programs accessible to you in $PATH" + (let ((ls-output (mapcan (lambda (path) + (when (file-readable-p path) + (cl-remove-if (lambda (file) + (let ((fullpath (concat path "/" file))) + (or (file-directory-p fullpath) + (not (file-executable-p fullpath))))) + (directory-files path nil directory-files-no-dot-files-regexp nil)))) + (split-string (getenv "PATH") ":" t))) + (alias-output (split-string (shell-command-to-string "alias -p | sed -E 's/^alias ([^=]*)=.*$/\\1/'") "\n"))) + (append ls-output alias-output))) + +(defun emenu (&optional command-list) + "A dmenu-inspired application launcher using a separate emacs frame" + (interactive) + (with-selected-frame (make-frame '((name . "emenu") + (minibuffer . only) + (width . 151) + (height . 1))) + (unwind-protect + (progn + (call-process + (ido-completing-read "Command: " (or + command-list + (all-commands))) + nil + 0) + (keyboard-quit)) + (delete-frame))))