# Dirvish: a polished Dired that keeps Dired underneath

> Dirvish is a front end for the built-in Dired mode in Emacs, installed from Melpa or Nongnu-Elpa and switched on with one command. It changes how a directory listing looks and behaves while leaving the Dired commands underneath intact.

**alexluigit/dirvish** — A polished Dired with batteries included.

- Repository: https://github.com/alexluigit/dirvish
- Stars: 1,143 · Forks: 64
- Language: Emacs Lisp
- License: GPL-3.0
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/alexluigit-dirvish

## What Dirvish changes about the Dired listing

Dirvish is not a separate file manager that replaces Dired with something unrelated. It is a layer that sits on top of the built-in Dired mode and changes how a directory is presented and how you move through it, while the Dired command set stays underneath. The README quotes a long-time user describing the result as surreal after years of Dired, and the point of that remark is the trick rather than the styling: the experience is different enough to feel like another tool, but the mechanics remain Dired. That matters for anyone whose habits are built on the standard bindings, because the muscle memory survives the switch. The audience is Emacs users, and the package is a drop-in for the built-in mode rather than a new workflow to learn from scratch.

## Installing Dirvish and switching Dired over

The package is published in two standard archives, Nongnu-Elpa and Melpa, and installation is the usual Emacs package command, on version 28.1 or later:

```elisp
M-x package-install RET dirvish RET
```

After the package is present, one more command makes Dirvish the global Dired replacement, so every directory you open uses it:

```elisp
M-x dirvish-override-dired-mode RET
```

Both commands are given in the README in that order, and the second is the one that changes existing behaviour rather than just adding a package, so it is worth doing the first on its own before the second. Because the package comes from a package archive rather than from a bundled file, the install step needs network access once, and the archive you choose determines how quickly you receive later versions.

## Three ways into the interface, and why they differ

Three entry points cover three different habits. The plain one opens Dirvish in the current buffer and prints a short welcome telling you to use your favourite Dired commands, with q to quit. The dwim variant behaves the same way when the selected window is the only window, and otherwise avoids taking over the entire frame, which is the difference between a quick look at a directory and a full-screen takeover of your layout. The dispatch command opens a help and cheatsheet menu built on transient.el, the same library that implements the keyboard-driven menus in Magit, and the README suggests binding that menu style to dirvish-mode-map if you prefer it. The three exist because a file manager is used at two different intensities, and Dirvish treats those as separate commands rather than one command with a flag.

## One core file and a set of optional modules

The repository is laid out as a core package plus satellite files. The main entry point is dirvish.el, and beside it sit dirvish-extras.el, dirvish-fd.el, dirvish-tramp.el and dirvish-widgets.el, which is a good indicator of the shape of the feature set: additional commands, integration with an external file finder, support for working through Tramp on remote hosts, and the column rendering used by the listing. A separate extensions/ directory holds the optional packages, which is how the project ships extras without forcing them on every user, and docs/ holds the org-mode documentation. The.github/ directory carries the workflow files, including the melpazoid check that validates the package metadata for the Melpa archives, and the licences live in LICENSE.md.

## Customisation through org documents and transient menus

The documentation is the product as much as the code, and it is written in org mode inside the repository. The set is organised by audience: a customising guide, an extensions guide, an FAQ, a guide written for absolute Emacs newcomers, a comparison with related projects and a changelog, with a separate discussions area on the platform. The comparison document is the one to read first if you are deciding between Dirvish and something else, because the project has already done that comparison rather than leaving you to guess how it positions itself. The transient.el menu is worth understanding before you start editing configuration, since binding Dirvish menus to dirvish-mode-map changes how the interface is driven, and the example configuration in the customising document shows the shape of that work.

## Where Dirvish stops short

The boundaries are ordinary but real. It runs inside Emacs, so there is no version for a terminal or a standalone window, and it requires Emacs 28.1 or newer, which rules out the older Emacs releases still in use on some machines. Enabling it globally changes Dired everywhere, which is a behavioural change rather than a preference, and users who share a configuration file with a colleague who has not asked for it inherit that change. The optional packages are separate by design, so a minimal installation gives you the core listing and none of the extras, and the top level entries of the repository show no test directory, so the quality of a change rests on the review process rather than on a suite you can run yourself.

## Dirvish next to a standalone file manager

The comparison the project itself credits is ranger, the terminal file manager, and the difference in approach is the whole argument for Dirvish. Ranger is a separate terminal file manager, which is what you want if you want a file manager that does not require Emacs to be running. Dirvish takes the opposite route: it inherits the Dired command set, so an Emacs user who already knows how to mark, copy and delete in Dired keeps that knowledge, and the file operations are the ones Emacs already provides. The trade is the same either way. Dirvish inherits Dired semantics, including the ones you did not choose, and it exists only inside a running Emacs, while ranger asks you to learn a second set of habits in exchange for a richer standalone tool.

## Licence, packaged releases and the main branch gap

Dirvish is released under the GPL-3.0, with the terms in LICENSE.md at the repository root, and that is the licence to plan for if you intend to ship it inside a product rather than use it in your own configuration. The published versions show a compact cadence: 2.3.0 on 2025-04-26, 2.2.7 on 2025-03-12 and 2.2.3 on 2025-03-08. The last push was on 2026-07-25, which is later than any of those tags, so the main branch carries work newer than the latest tagged release.

## Conclusion

Dirvish fits an Emacs user who already works in Dired and wants a listing that carries icons, richer columns and keyboard-driven menus without giving up the Dired commands already in muscle memory. It does not fit someone who wants a standalone file manager with its own key bindings and preview pane, since Dirvish only exists inside Emacs and only on version 28.1 or newer. Before switching it on globally, run M-x dirvish in a single buffer to see whether the new listing suits the way you work, and check which of the optional packages in the extensions/ directory you actually want, because the code on the main branch may be ahead of the latest tagged release.

## FAQ

### How do I install Dirvish in Emacs?

Dirvish is published on Nongnu-Elpa and Melpa, so M-x package-install RET dirvish RET is enough on Emacs 28.1 or later.

### How do I make Dirvish replace Dired everywhere in Emacs?

Run M-x dirvish-override-dired-mode RET after installing the package, and every Dired listing then uses Dirvish.

### What is the difference between dirvish and dirvish-dwim?

They behave the same when the selected window is the only window, but dirvish-dwim avoids occupying the entire frame when other windows are open.

### What does dirvish-dispatch do?

It opens a help and cheatsheet menu powered by transient.el, the same library used for the keyboard-driven menus in Magit, and the README suggests binding that style to dirvish-mode-map.

### Which files and directories does the Dirvish package ship?

The core is dirvish.el, accompanied by dirvish-extras.el, dirvish-fd.el, dirvish-tramp.el and dirvish-widgets.el, with optional packages in the extensions/ directory and the org mode documentation under docs/.

### Which licence does Dirvish use?

The GPL-3.0, with the terms in the LICENSE.md file at the repository root.

## Sources

- [alexluigit/dirvish on GitHub](https://github.com/alexluigit/dirvish)
- [Issues](https://github.com/alexluigit/dirvish/issues)
- [License: GPL-3.0](https://github.com/alexluigit/dirvish/blob/main/LICENSE)
- [README](https://github.com/alexluigit/dirvish/blob/main/README.md)
- [Releases](https://github.com/alexluigit/dirvish/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/alexluigit-dirvish
