Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

MELPA Actions Status Codacy Badge


Emacs tool for running flutter mobile apps on desktop using hover.

If you want to run flutter on a emulator from Emacs, you should check flutter.el.


You can install from MELPA with package.el:

M-x package-install hover


hover.el helps you run the hover binary interactively as an inferior process. It's designed to work together with dart-mode. For example you can bind hover-run-or-hot-reload to C-M-z in dart-mode. While editing your Dart code, just hit C-M-z to either run your app, or if it's already running, to hot-reload it.


Variable Description Default value
hover-command-path Path to the hover executable command tries to use hover if exists in $PATH
hover-flutter-sdk-path Path to flutter sdk path to find flutter executable command tries to find flutter executable in $PATH
hover-hot-reload-on-save On buffer save, triggers hover hot-reload (if hover is running) nil
hover-screenshot-path If non-nil, save hover screenshot on specified folder. project root
hover-screenshot-prefix Prefix for file name on hover-take-screenshot. hover-
hover-observatory-uri Hover custom observatory-uri.
hover-clear-buffer-on-hot-restart Calls hover-clear-buffer after a hover-hot-restart nil


The following example uses all available configurations above, you can customize as you wish.

;; Assuming usage with dart-mode
(use-package dart-mode
  (dart-sdk-path (concat (getenv "HOME") "/flutter/bin/cache/dark-sdk/")
   dart-format-on-save t))

(use-package hover
  :after dart-mode
  :bind (:map hover-minor-mode-map
              ("C-M-z" . #'hover-run-or-hot-reload)
              ("C-M-x" . #'hover-run-or-hot-restart)
              ("C-M-p" . #'hover-take-screenshot'))
  (setq hover-flutter-sdk-path (concat (getenv "HOME") "/flutter") ; remove if `flutter` is already in $PATH
        hover-command-path (concat (getenv "GOPATH") "/bin/hover") ; remove if `hover` is already in $PATH
        hover-hot-reload-on-save t
        hover-screenshot-path (concat (getenv "HOME") "/Pictures")
        hover-screenshot-prefix "my-prefix-"
        hover-observatory-uri "http://my-custom-host:50300"
        hover-clear-buffer-on-hot-restart t)
  (hover-minor-mode 1))

Thanks to flutter.el which inspired this project.