Interactions between Hyprland and the Emacs minibuffer-frame
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
Mitchell Marquez 14500783c8 updated for bedrock linux etc, plus merge xorg stuff 2 months ago
.gitignore Initial commit 6 months ago
LICENSE Initial commit 6 months ago
README.org updated for bedrock linux etc, plus merge xorg stuff 2 months ago
hypop.el updated for bedrock linux etc, plus merge xorg stuff 2 months ago

README.org

hypop - emacs minibuffer-frame + hyprland

Installation

elpaca:

(use-package hypop
  :elpaca (:repo "https://git.mitchmarq42.xyz/mitch/hypop.el")
  :demand t)

straight:

(use-package hypop
  :straight (:repo "https://git.mitchmarq42.xyz/mitch/hypop.el")
  :demand t)

Doom:

(package! hypop
	:recipe (:host nil
			:repo "https://git.mitchmarq42.xyz/mitch/hypop.el")
	:files ("*.el"))

Manual:

ehh, just download hypop.el and stick it in your load-path .

Variables:

  • hypop--frame-name : Title of the frame to configure on the hyprland side. Set to dentarthurdent as it's a simple string but unlikely to be used by anything else.
  • hypop--scratch-workspace : name of hyprland scratch workspace. If you don't have one, just set it to the desktop you look at least - that's what I did.

Hyprland integration

Window Rules

windowrule = float,title:dentarthurdent        # match frame-name obviously
windowrule = size 1000 245,title:dentarthurdent
windowrule = center,title:dentarthurdent
windowrule = nofocus,title:dentarthurdent
windowrule = pin,title:dentarthurdent
windowrule = noanim,title:dentarthurdent

Workspaces

Just make sure you have a scratchpad set up, or pretend to. The actual window-moving is done on the lisp side with calls to hyprctl .

Other Emacs packages that help

Vertico + Consult + Marginalia + Orderless + Embark

This suite of packages provides a modular but elegant completing experience - which has been documented extensively elsewhere. Google is your friend.

Since this package just enables a built-in feature of Emacs (minibuffer frame) and rigs the window manager up to it, minibuffer-based completion frameworks work pretty simply.

Ivy + Counsel + Swiper

Same situation as Verticoたち. Untested though…

eldoc-box

https://github.com/casouri/eldoc-box

Normally eldoc (built in) displays variable and function type signatures in the echo area. However, since we're using a minibuffer-frame, the main Emacs window has no echo area.

Eldoc-box solves this by instead showing eldoc type hints as frame overlays (child frames).

notibox

https://git.mitchmarq42.xyz/mitch/notibox.el

(Disclosure: I wrote this package. It's not perfect nor even fully featured, but does mostly work in the meantime.)

Puts the current-message in a little childframe notification box. Inspired by similar plugins for nvim.

App-launcher

https://github.com/SebastienWae/app-launcher

Provides a menu from which to launch desktop apps, like rofi or dmenu.

Ivy+Counsel users also have counsel-linux-app built in - see https://www.reddit.com/r/unixporn/comments/s7p7pr/so_which_run_launcher_do_you_use_rofi_or_dmenu/ for inspiration.