Three independent cursor effects for Emacs, sharing one "forge" palette (white-hot core → amber → cooling ember):
| Effect | What it does | Triggers on |
|---|---|---|
| welding sparks | each typed character glows white-hot then cools and fades | every self-inserted character |
| comet streak | a short trail follows the cursor when it jumps | cursor movement (≥ 1 cell) |
| pulsar flash | the landing line pulses amber | big commands, scroll, window change |
All three are GUI-best (Wayland/PGTK and X). In emacs -nw they degrade to
flat cell backgrounds — no sub-cell glow.
- Emacs 29.1+ (the minimum for
comet-trail). - Internet access on first launch only to fetch
pulsarfrom GNU ELPA. Everything else is bundled; after the first run it works fully offline.
Clone it somewhere on disk — all the .el files must stay together:
git clone https://github.com/barrulus/forge-cursor ~/.emacs.d/forge-cursorforge-cursor/
├── forge-cursor.el ← the loader (this is what you load)
├── welding-cursor.el ← bundled dependency (do not separate)
├── comet-trail.el ← bundled dependency (GPL-3.0, by Andros Fenollosa)
├── LICENSE
└── README.md
Then add one of these to your init.el:
;; Option A — point straight at the file:
(load "~/.emacs.d/forge-cursor/forge-cursor.el")
;; Option B — add the folder to load-path and require:
(add-to-list 'load-path "~/.emacs.d/forge-cursor")
(require 'forge-cursor)That's it. forge-cursor.el bootstraps its own load-path, adds the GNU/MELPA
archives if they're missing, installs use-package if absent, and pulls
pulsar on first run. welding-cursor and comet-trail load from this folder.
Set these before loading, or setq and re-evaluate the relevant :config:
(setq forge-cursor-core "#fff7e6" ; white-hot core
forge-cursor-amber "#ff9b3d" ; amber mid-glow
forge-cursor-ember "#c81e0a") ; dark-red tailPer-effect knobs (all have sensible defaults):
- welding —
welding-cursor-step(cool-down frame interval, seconds),welding-cursor-ramp(colour vector),welding-cursor-foreground(glyph colour while glowing;nil= background-only glow). Toggle per buffer withC-c t w. - comet —
comet-trail-minimum-distance,comet-trail-tick-interval. - pulsar —
pulsar-delay,pulsar-iterations,pulsar-pulse-functions.
comet-trailis vendored (GPL-3.0; its license/author are in the file header) so there's no network dependency. To track upstream instead, deletecomet-trail.eland change itsuse-packageform inforge-cursor.elfrom:ensure nilto:vc (:url "https://git.andros.dev/andros/comet-trail.el")(needs Emacs 30+).- No sparks in the terminal? Expected — these need a GUI frame for sub-cell overlays. The terminal gets flat cell backgrounds only.
- Conflicts with an existing pulsar setup. This file calls
pulsar-global-modeand recolourspulsar-yellow. If you already configure pulsar elsewhere, drop thepulsaruse-packageblock fromforge-cursor.eland keep just your own.
forge-cursor.el and welding-cursor.el are original work. comet-trail.el
is vendored from andros/comet-trail.el
(by Andros Fenollosa); pulsar is by Protesilaos Stavrou (installed from GNU ELPA).
Because this bundle includes and combines with GPL-3.0 code (comet-trail.el),
the bundle is distributed under the GNU GPL v3.0-or-later — see LICENSE.