1
9
submitted 6 days ago by dakra@programming.dev to c/emacs@lemmy.ml

cross-posted from: https://programming.dev/post/48790323

I'd like to announce ghostel, a terminal emulator for Emacs that uses libghostty-vt - the same VT parsing engine behind the Ghostty terminal - as a native Zig module.

It's inspired by vterm and follows the same general approach (native module does terminal emulation, Elisp handles the Emacs integration), but uses a more modern engine that supports newer terminal protocols. Ghostel is a superset of vterm's feature set - everything vterm can do, ghostel can too, plus a lot more on top.

Feature comparison with vterm

Feature ghostel vterm
True color (24-bit) Yes Yes
OSC 4/10/11 color queries Yes No
Bold / italic / faint Yes Yes
Underline styles (5 types) Yes No
Underline color Yes No
Strikethrough Yes Yes
Cursor styles 4 types 3 types
OSC 8 hyperlinks Yes No
Plain-text URL/file detection Yes No
Kitty keyboard protocol Yes No
Mouse passthrough (SGR) Yes No
Bracketed paste Yes Yes
Alternate screen Yes Yes
Shell integration auto-inject Yes No
Prompt navigation (OSC 133) Yes Yes
Elisp eval from shell Yes Yes
TRAMP remote terminals Yes Yes
OSC 52 clipboard Yes Yes
Copy mode Yes Yes
Drag-and-drop Yes No
Auto module download Yes No
Scrollback default ~5,000 1,000
PTY throughput (plain ASCII) 65 MB/s 29 MB/s
Default redraw rate ~30 fps ~10 fps

Key differences

Terminal engine. libghostty-vt comes from Ghostty, a modern GPU-accelerated terminal, and supports Kitty keyboard/mouse protocols, rich underline styles, and OSC 8 hyperlinks. libvterm targets VT220/xterm emulation and is more conservative in protocol support.

Mouse handling. Ghostel encodes mouse events (press, release, drag) and passes them through to the terminal via SGR mouse protocol. TUI apps like htop or lazygit receive full mouse input. vterm intercepts mouse clicks for Emacs point movement and does not forward them to the terminal.

Rendering. Both use text properties (not overlays) and batch consecutive cells with identical styles. Ghostel's engine provides three-level dirty tracking (none / partial / full) with per-row granularity. vterm uses damage-rectangle callbacks and redraws entire invalidated rows. Ghostel defaults to ~30 fps redraw; vterm defaults to ~10 fps.

Shell integration. Ghostel auto-injects shell integration scripts for bash, zsh, and fish - no shell RC changes needed. vterm requires manually sourcing scripts in your shell configuration. Both support Elisp eval from the shell and TRAMP-aware remote directory tracking.

Performance. In PTY throughput benchmarks (5 MB streamed through cat, both backends configured with ~1,000 lines of scrollback), ghostel is roughly 2x faster than vterm on plain ASCII data (65 vs 29 MB/s). On URL-heavy output ghostel still comes out ahead (42 vs 24 MB/s); with link detection disabled ghostel reaches 65 MB/s regardless of input.

Color auto-detection. Thanks to OSC 4/10/11 support, TUI programs like duf, btop, and delta can query Emacs for its foreground/background colors and automatically adapt to your light or dark theme - no COLORFGBG hacks needed.

Installation. Ghostel can automatically download a pre-built native module or compile from source with Zig. vterm uses CMake with a single C dependency (libvterm) and can auto-compile on first load from Elisp.

Installation

ghostel is available on MELPA:

(use-package ghostel :ensure t)

Or with Emacs 30+ built-in vc-use-package:

(use-package ghostel :vc (:url "https://github.com/dakra/ghostel" :rev :newest))

The native module is downloaded automatically on first use. If you prefer to build from source, you'll need Zig 0.15.2+.

Requires Emacs 27.1+ with dynamic module support on macOS or Linux.

Feedback, bug reports, and contributions very welcome.

2
2
An offline-friendly Elfeed web UI (punchagan.muse-amuse.in)
submitted 1 week ago by PuercoPop@piefed.social to c/emacs@lemmy.ml
3
5
submitted 2 weeks ago by claim_arguably@lemdro.id to c/emacs@lemmy.ml

Lsp errors that shows when cursor on line that has the error?

I would like to have a keybind for this

4
10
submitted 1 month ago by mistermodal@lemmy.ml to c/emacs@lemmy.ml

We are awaiting the decision by the GNU Project on these matters, which will define the policy for all the GNU packages, and in the meantime we don't accept LLM-generated code, as a precaution.

https://www.fsf.org/blogs/licensing/2026-anthropic-settlement

5
5
npm-run (github.com)
submitted 2 months ago* (last edited 2 months ago) by juboba@reddthat.com to c/emacs@lemmy.ml

simple package for running npm scripts (specially in mono-repos)

6
33
submitted 2 months ago by crmsnbleyd@sopuli.xyz to c/emacs@lemmy.ml
7
13
submitted 2 months ago by crmsnbleyd@sopuli.xyz to c/emacs@lemmy.ml
8
8
submitted 2 months ago by mizule@lemmy.blahaj.zone to c/emacs@lemmy.ml
9
7
submitted 2 months ago by crmsnbleyd@sopuli.xyz to c/emacs@lemmy.ml
10
4
submitted 3 months ago by juboba@reddthat.com to c/emacs@lemmy.ml

Totally effortless, but liked the result. Logo was created by Chatgpt and theme by Claude.

11
0
submitted 4 months ago by tetris11@feddit.uk to c/emacs@lemmy.ml

I've been reading through their docs[0] and FAQs[1] but cannot for the life of me understand how they can use SPC as a chord prefix, and also just type normal sentences on a keyboard.

I don't want to try it, but I do want to know.

0: https://www.spacemacs.org/doc/QUICK_START.html
1: https://www.spacemacs.org/doc/FAQ.html#how-do-i

12
21
Didn't you hear me? (thelemmy.club)
submitted 4 months ago by Digit@lemmy.wtf to c/emacs@lemmy.ml

No explanation given. Just a whimsical little image for our beloved emacs, I made a while ago, in response to something, I forget what. Is just fun.

13
-4
submitted 4 months ago* (last edited 4 months ago) by tetris11@feddit.uk to c/emacs@lemmy.ml

One are ELPA tarballs....

...and the other 'elps 'er tar balls!

(Nailed it. Flawless setup!)

14
7
Emacs Lisp Elements (protesilaos.com)
submitted 4 months ago by NanoooK@sh.itjust.works to c/emacs@lemmy.ml
15
19
submitted 4 months ago by geoff@midwest.social to c/emacs@lemmy.ml

cross-posted from: https://hexbear.net/post/6891969

If you write for a living, for studies, or even as a hobby, you should consider Emacs. It could be just what you need in an environment of enshittifying word processors and AI garbage.

16
9
submitted 5 months ago by jjba23@lemmy.ml to c/emacs@lemmy.ml

als kruis­bericht geplaatst vanaf: https://lemmy.ml/post/38966704

A minimal, declarative setup for productive Rust hacking on Emacs + Guix

I noticed there was a blatant lack of resources and documentation on this particular setup. So I rolled up my sleeves and wrote this article, which hopefully you find useful.

https://jointhefreeworld.org/blog/articles/rust/simple-guix-emacs-rust-development-environment/index.html

See image here of my Emacs with rust-analyzer and clippy working: https://ibb.co/whxq8dX1

17
7
submitted 5 months ago by antoniovr@lemmy.ml to c/emacs@lemmy.ml

I think one of my package is interacting wrongly with TRAMP and it is too often freezing. It is difficult to debug as it freezes totally and quite annoying as I cannot interrupt with C-g. Are there options to run tramp in a way it does not collapse the whole emacs? I could then try to guess which package interact with it by deactivating/activating them...

It seems to work properly if I open emacs with emacs -Q

18
10
submitted 6 months ago* (last edited 6 months ago) by GoodKote@lemmy.ml to c/emacs@lemmy.ml

Hello, guys!

I'm in process of moving my notes from Joplin, which is also a great tool, to Emacs 30.1. I use denote for managing notes.

I found a strange behavior when using org-publish: almost every note I created and exported using org-publish can't be read by webserver. It happens when file name consists cyrillic letters. I've tried nginx, apache, python http.server, web-static-server. When I run a server and try to open html file in latin - it's OK, but when there some cyrillic letters in file name - web serser tells me it can't find file with this name like "%u...". However when I open html files locally with Firefox everything works just fine.

So after a couple of days of reasearch I found that one reason for such behavior could be the wrong file name encoding. As far as I'm not an expert may be somebody can explain how to make emacs convert with org-publish notes in encoding that is readable for any web server?

My emacs config consists:

org-publish-project-alist '(
                            (
                             "notes"
                             :base-directory "~/org/denotes/"
                             :recursive nil
                             :publishing-directory "~/public_notes"
                             :section-numbers nil
                             :with-toc nil
                             :with-author nil
                             :with-creator nil
                             :with-date nil
                             :html-preamble "<nav><a href='index.html'>Notes</a></nav>"
                             :html-postamble nil
                             :auto-sitemap t
                             :sitemap-filename "index.org"
                             :sitemap-title "Notes"
                             :sitemap-sort-files anti-chronologically
                             )

Host is Debian 13. UTF-8 is the only encoding enabled in locales. Servers I've tried so far also run on Debian 13 with UTF-8.

19
2
submitted 6 months ago by snikta@programming.dev to c/emacs@lemmy.ml
20
11
submitted 6 months ago by JustJack23@slrpnk.net to c/emacs@lemmy.ml

Hello all,

I recently started working out again, and started thinking can I track my workouts using emacs org mode.

What I basically envision is tracking what exercises I did in a given day, repetitions and weights. Any suggestions? Thanks in advance!

21
11
submitted 6 months ago by PuercoPop@piefed.social to c/emacs@lemmy.ml
22
4
submitted 6 months ago by NanoooK@sh.itjust.works to c/emacs@lemmy.ml
23
14
submitted 6 months ago by aurtzy@discuss.tchncs.de to c/emacs@lemmy.ml

Hello! I'm happy to announce the release of Disproject version 2.2.0. This update comes with various improvements, including:

  • a new customizable menu that lets the user select from a list of display-buffer overrides as transient state, which can be applied to suffix commands;
  • a new customizable menu for finding common project files like the dir-locals file or README file, dubbed "special files";
  • and a newly-written Info user manual to provide documentation on using and configuring Disproject (please feel free to inform me or open an issue about any mistakes or sections that feel confusing!).

The full change notes for this release can be found here.

Other links:

Disproject is a GNU Emacs package that implements Transient menus for managing and interacting with project files. It aims to provide a featureful, yet extensible interface from which users can intuitively dispatch commands on projects.

Some of its notable features include:

  • a main menu with access to many of the built-in project library's commands and other project-aware commands;
  • auto-detection of current project as the default project to act on from the menu;
  • options for switching to other projects from the menu in order to execute commands elsewhere;
  • a menu for finding common "special" project files, like the dir-locals file;
  • a menu for custom project-local suffix commands;
  • and display-buffer override options, to control where commands should display buffers to.

This package was inspired by the project-switch-project command, from the built-in project library. Users may also draw similarities to the Projectile library's projectile-commander.

24
4
ELPA mirrors? (programming.dev)
submitted 6 months ago by snikta@programming.dev to c/emacs@lemmy.ml

Lately I've been experimenting with my emacs setup, which has led to a lot of extra ELPA (gnu and nongnu) requests. Unfortunately, ELPA is very slow nowadays, which makes experimenting inconvenient. Also, I don't want to contribute to the already high load on the official GNU servers.

Are there any "official" mirrors for ELPA? How can I activate them? If not, how can I activate and validate non official mirrors?

25
3
submitted 6 months ago by EMacAdie@lemmy.ml to c/emacs@lemmy.ml
view more: next ›

Emacs

2839 readers
2 users here now

Our infinitely powerful editor.

founded 6 years ago
MODERATORS