Skip to content

kickingvegas/anju

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

194 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

https://melpa.org/packages/anju-badge.svg https://stable.melpa.org/packages/anju-badge.svg

Anju (안주)

Anju is a project to align mouse interactions in Emacs with contemporary (circa 2026) expectations. Effort towards this alignment is made in the following areas:

  • Context-sensitive menus
  • De-emphasis of middle mouse button usage (binding <mouse-2>)
  • Support direct manipulation when possible
  • Re-organization of the main menu bar

The features offered by Anju are opinionated, but avoids unconventional behavior. Anju aspires to bring a calmer mouse experience to Emacs.

Please note that all UI terminology in this document is Emacs-centric and differs from conventional GUI terminology. Refer to Frames (GNU Emacs Manual) for more detail on this.

Features

Anju offers many enhancements to the mouse interactions provided by Emacs. These enhancements are organized to the following areas below:

  • Mode Line
  • Context Menu
  • Main Menu
  • Emacs Window Management

Some screenshots to demo Anju’s offerings are shown below.

docs/images/anju-mode-line-buffer-list.png

On the mode line, left-click (mouse-1) on the buffer name to raise a pop-up menu containing a list of open buffers. The contents of this list is controlled by the customizable variable anju-buffer-list-filter-functions.

A right-click (mouse-3) on any blank space on the mode line will pop-up a window management menu.

docs/images/anju-mode-line-window-management.png

From here, one can:

  • Delete the window (×)
  • Split the window horizontally (→)
  • Split the window vertically (↓)
  • If multiple windows are shown, swap the current window.

Shown below is an screenshot of a context menu when text is selected.

docs/images/anju-context-menu-region.png

More detail on Anju’s features can be found in the Anju User Guide.

Requirements

Anju requires Emacs 29.1+, Casual 2.13+, Markdown Mode 2.7+.

Certain menus require more installed software:

  • Anju Dired Support: GNU Coreutils (ls)
  • Markdown import to Org: pandoc

Anju provides optional support for Magit 4.4+.

Install

To install Anju, add the command anju-init to your Emacs initialization file.

(anju-init)

This command will initialize context-menu-mode and reconfigure the following mouse menus and bindings:

  • Legacy mouse bindings
  • Mode line bindings
  • Main menu
  • Context menus for different modes

The anju-init command can be customized to preference. Read more on this in the Anju User Guide.

Future Work

Work on Anju is on-going. Plans for future enhancements include:

  • Support for more built-in modes
  • Further changes to the main menu

Although much consideration on both the user and developer experience has been made, they are both subject to change in future releases if a better approach presents itself.

Sponsorship

It costs money to make, enhance, and maintain Anju as ideologically free software. If you enjoy using Anju, please buy me a coffee to help support its development and maintenance.


docs/images/default-yellow.png

Acknowledgments

Thanks goes out to the contributors to mouse.el, whose work this package builds upon.

© 2026 Charles Y. Choi

About

An Elisp package for customizing Emacs mouse interactions.

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages