beetbox/beets

$EDITOR is not respected, likely due to uv virtualenv

Open

#6,641 opened on May 15, 2026

View on GitHub
 (1 comment) (1 reaction) (0 assignees)Python (1,837 forks)batch import
good first issue

Repository metrics

Stars
 (12,133 stars)
PR merge metrics
 (Avg merge 26d 4h) (51 merged PRs in 30d)

Description

(I'm deviating from the template, because this feels like a bug, but afaik it's not really beets' fault, and the solution is more like a feature request).

Problem

My Installation does not respect $EDITOR: (I modified beets to print out the environment variables)

$ echo $EDITOR
micro

$ beet edit test
$EDITOR: None
$VISUAL: None
No changes; aborting

$ EDITOR=nano beet edit test
$EDITOR: nano
$VISUAL: None
No changes; aborting.

Because of this, it defaults to xdg-open, which doesn't wait (#4026). I can fix it by passing EDITOR= explicitly, but i don't want to do that every time.

I believe this is due to pipx's uv backend, which seems to isolate virtualenvs from the shell's environment. I don't see an obvious/user-friendly way to get my $EDITOR into beet's virtualenv.

Setup

  • OS: Arch Linux (WSL)
  • Python version: 3.14
  • beets version: 2.11.0
  • Turning off plugins made problem go away (yes/no): well... i guess so, yes 😅

My configuration (output of beet config) is: hopefully irrelevant?

Proposed solution

Defaulting to $EDITOR et al is nice, but I would love the ability to override that behavior - permanently, not in every invocation. Absent a convenient pipx command, that means adding it to the config.

Either in the edit plugin:

edit:
  editor: nano

Or, seeing how the editor is chosen in beet's utility functions, perhaps a global setting?

editor: nano

Contributor guide