# Dash to Dock: moving the GNOME dash onto the desktop

> Dash to Dock turns the GNOME Shell overview dash into a persistent dock for launching apps and switching windows. It is a mature GPL-2.0 extension with a source build path and a few real constraints.

**micheleg/dash-to-dock** — A dock for the Gnome Shell. This extension   moves the dash out of the overview transforming it in a dock for an easier   launching of applications and a faster switching between windows and desktops.

- Repository: https://github.com/micheleg/dash-to-dock
- Website: https://micheleg.github.io/dash-to-dock/
- Stars: 4,391 · Forks: 573
- Language: JavaScript
- License: GPL-2.0
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/micheleg-dash-to-dock

## What Dash to Dock changes about the GNOME Shell dash

GNOME Shell keeps its application dash inside the overview. You press the Activities key, the overview opens, and the dash appears along the bottom or side of that overlay. Launching an app or switching windows therefore costs a trip through the overview every time.

Dash to Dock moves that dash out of the overview and leaves it on the desktop as a dock. The README describes the result plainly: it transforms the dash into a dock "for an easier launching of applications and a faster switching between windows and desktops without having to leave the desktop view." The audience is anyone running GNOME Shell who wants persistent launchers and window switching without the overview step. It is not a general-purpose dock for other desktops, and it is not a window manager.

The extension is written in JavaScript, carries the UUID dash-to-dock@micxgx.gmail.com, and is distributed under GPL-2.0 or later. The repository was still receiving pushes as of 2026-09-22, and releases tagged extensions.gnome.org-v109, v108 and v107 landed on 2026-09-21, so the project is not dormant.

## How the dock is built: modules, settings and struts

The repository layout shows a modular extension rather than one large script. extension.js is the entry point listed in BASE_MODULES, and the Makefile copies it together with metadata.json, COPYING and README.md. Everything else is listed under EXTRA_MODULES: docking.js, dash.js, appIcons.js, appIconIndicators.js, appIconsDecorator.js, windowPreview.js, intellihide.js, dockStruts.js, locations.js, locationsWorker.js, launcherAPI.js, fileManager1API.js, notificationsMonitor.js, desktopIconsIntegration.js, theming.js, prefs.js, utils.js, dbusmenuUtils.js, appSpread.js and imports.js.

The names map to responsibilities. docking.js handles the dock itself, dash.js deals with the dash being relocated, and appIcons.js plus appIconsDecorator.js and appIconIndicators.js handle the launcher icons and their state indicators. intellihide.js is the auto-hide behaviour, and dockStruts.js is what reserves screen space so maximised windows do not sit under the dock. locations.js and locationsWorker.js deal with mounted locations, while fileManager1API.js and launcherAPI.js are the interfaces to the file manager and the launcher. prefs.js plus Settings.ui and schemas/ make up the preferences dialog, which is why the settings surface is separate from the runtime code.

Theming is compiled, not shipped as plain CSS. _stylesheet.scss is the source, and theming.js applies the result. That build step is the reason the install path needs a SASS implementation at all. The Makefile also collects po/*.po translation sources, so translations are compiled during install as well.

## Installing Dash to Dock from extensions.gnome.org or from source

The README points at extensions.gnome.org first: the extension page is linked as the primary install route, and the homepage at micheleg.github.io/dash-to-dock carries additional instructions. For most users that is the whole process, and it avoids the build dependencies entirely.

Installing from source is for people who want git or who want to test the development branch. The README gives the clone and make sequence directly:

```bash
git clone https://github.com/micheleg/dash-to-dock.git
make -C dash-to-dock install
```

That installs into your home directory under the GNOME Shell extensions path, which the Makefile defines as $(HOME)/.local/share/gnome-shell/extensions. If DESTDIR is set instead, the Makefile switches to a system install under /usr/share/gnome-shell/extensions. After installing, the README states that a Shell reload is required: Alt + F2 then r then Enter under Xorg, while under Wayland you may have to log out and back in. The extension then has to be enabled with gnome-extensions-app or with dconf.

Before building, the stylesheet needs SASS. Dash to Dock supports dart-sass (sass), sassc and ruby-sass, and the README recommends dart-sass or sassc over ruby-sass because ruby-sass is deprecated. The build defaults to sassc, and you change it with the SASS environment variable:

```bash
export SASS=dart
# or...
export SASS=ruby
```

If msgfmt is missing you will see an error like the following, and the README says to install the gettext package from your distribution's repository:

```bash
make: msgfmt: No such file or directory
```

Once enabled, the first real use is simply pressing the super key to confirm the overview still works, then launching an app from the dock without opening the overview at all. Open the preferences dialog from the extensions app to change dock position, size and hiding behaviour.

## Where Dash to Dock gets in the way

The clearest limitation is scope. This is a GNOME Shell extension, and the README says so in its first line. On KDE, XFCE, Cinnamon or a plain window manager there is nothing for it to extend. Searches for a KDE version have no answer in this repository.

The build path is less forgiving than the extensions.gnome.org route. You need at least one SASS implementation, and the default is sassc, so a system without sassc but with dart-sass will fail until you set the SASS variable. You also need msgfmt from gettext, and the failure mode is a make error rather than a clear dependency message. Neither the README nor the Makefile documents a rollback or uninstall target, so removing a source install means deleting the extension directory yourself.

There is a shell-version constraint implied by metadata.json, which the README does not spell out. A GNOME Shell release the extension has not been updated for is a realistic failure case, and the source build does not solve it. Finally, a dock that reserves screen space through dockStruts.js changes window geometry; on small displays that is a real cost, not a cosmetic one.

## Dash to Dock versus Dash to Panel

The most common comparison is with Dash to Panel, and the difference is structural rather than cosmetic. Dash to Panel merges the dash with the top bar into a single panel, so the launcher and the system status area become one strip. Dash to Dock keeps the top bar and the dash as separate elements, and moves the dash onto the desktop as a dock.

That distinction decides the choice. If you want one bar at the top of the screen holding both launchers and indicators, Dash to Panel is the closer fit. If you want the launcher separate from the top bar, positioned at the bottom or on a side edge, and you want it to hide intelligently, Dash to Dock is the one whose design matches that. The intellihide.js and dockStruts.js modules in this repository exist specifically for the hiding and space-reservation behaviour a dock needs, which a merged panel does not require in the same form.

Both are GNOME Shell extensions, so neither helps outside GNOME.

## Maintenance, licensing and the cost of keeping up

The repository was pushed on 2026-09-22 and three releases tagged extensions.gnome.org-v107 through v109 were published on 2026-09-21. The release naming ties versions to the extensions.gnome.org distribution channel, which suggests the published extension is kept in step with the repository rather than the repository being a stale mirror.

Upgrade cost depends on how you installed it. Through extensions.gnome.org, updates arrive through the same channel and you do not manage the build. From source, you re-run the clone and make install sequence, which means the SASS and gettext dependencies have to stay present, and a Shell reload or a Wayland logout is required each time. There is no documented in-place upgrade command beyond repeating make install.

On licensing, the README states the extension is distributed under the GNU General Public License, version 2 or later, with details in the COPYING file. That is a copyleft licence. If you fork the extension or redistribute a modified build, the GPL terms apply to what you distribute. This is a description of the licence, not legal advice; read COPYING and the GPL itself if redistribution is planned.

## Conclusion

Adopt Dash to Dock if you run GNOME Shell, want the dash on the desktop rather than behind the Activities view, and are willing to install either through extensions.gnome.org or from source with a working SASS implementation and gettext. Do not adopt it on a non-GNOME desktop: the README frames it as a GNOME Shell extension, and the search data asking about KDE has no answer here. Before installing from source, check that sassc, dart-sass or ruby-sass is present and that msgfmt exists, because the Makefile fails without them. Verify your GNOME Shell version against metadata.json before enabling it.

## FAQ

### What does Dash to Dock do?

It moves the GNOME Shell dash out of the overview and turns it into a dock on the desktop, so applications can be launched and windows switched without leaving the desktop view.

### How do I install Dash to Dock?

The README links to the extension page on extensions.gnome.org as the main route. For a source install, clone the repository and run make -C dash-to-dock install, then reload the Shell and enable the extension with gnome-extensions-app or dconf.

### How do I install Dash to Dock in Fedora?

The README does not give distribution-specific steps. The two documented routes are the extensions.gnome.org page and a source install with git clone followed by make -C dash-to-dock install, which works the same way on Fedora as elsewhere as long as a SASS implementation and msgfmt are present.

### How do I always show the dock on GNOME?

The repository includes intellihide.js for auto-hide behaviour and prefs.js with Settings.ui for the preferences dialog, so hiding is configurable after the extension is enabled. The README does not document the individual preference keys.

### How do I use Dash to Dock?

Once the extension is installed and enabled with gnome-extensions-app or dconf, the dash appears as a dock on the desktop; you launch applications from it and switch windows without opening the overview. Settings are changed through the preferences dialog.

### What is Dash to Dock?

It is a GNOME Shell extension, written in JavaScript and licensed GPL-2.0 or later, that moves the dash out of the overview and turns it into a dock on the desktop.

## Sources

- [License: GPL-2.0](https://github.com/micheleg/dash-to-dock/blob/master/LICENSE)
- [micheleg/dash-to-dock on GitHub](https://github.com/micheleg/dash-to-dock)
- [Project website](https://micheleg.github.io/dash-to-dock/)
- [README](https://github.com/micheleg/dash-to-dock/blob/master/README.md)
- [Releases](https://github.com/micheleg/dash-to-dock/releases)

---

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