显示 HN:VM-curator – libvirt 和 virt-manager 的 TUI 替代方案
Show HN: VM-curator – a TUI alternative to libvirt and virt-manager

原始链接: https://github.com/mroboff/vm-curator

## vm-curator:一个用于QEMU/KVM虚拟机的Rust TUI vm-curator是一个快速、用户友好的终端界面,用于管理QEMU/KVM虚拟机。它通过直观的TUI简化了虚拟机发现、创建、启动和管理。主要功能包括虚拟机库的自动扫描、分层组织以及一个包含50多个预配置操作系统配置文件的5步向导——包括跨发行版的自动UEFI检测。 值得注意的是,vm-curator支持使用NVIDIA GPU(在RTX-4090和驱动程序590.48.01上测试)的准虚拟化3D加速,但*不是*完全的GPU直通。快照管理、启动脚本编辑器和USB直通也包含在内。 该工具提供Vim风格的导航、搜索和通过`config.toml`文件进行自定义。它期望虚拟机以特定的目录结构(默认情况下为`~/vm-space`)组织,并使用`launch.sh`脚本进行配置。 vm-curator是一个个人项目,专注于精简、透明的体验,优先考虑稳定性和性能,为寻求高性能虚拟机而无需libvirt复杂性的用户提供服务。欢迎贡献,尤其是界面ASCII艺术!

## VM-curator:一个新的QEMU/KVM管理工具 一个名为**vm-curator**的新终端用户界面(TUI)旨在简化使用QEMU/KVM的虚拟机管理。它使用Rust创建,绕过了libvirt和virt-manager的复杂性,提供了更快速、更可定制的体验,而无需依赖XML配置或笨重的用户界面。 开发者创建vm-curator是因为对现有工具在NVIDIA 3D加速支持和过于复杂界面方面存在不满。一个关键优势是使用virtio-vga-gl实现的功能性3D准虚拟化,这在使用libvirt时很难实现。 目前针对Linux客户机进行了优化(Windows游戏需要GPU直通,未来计划支持),vm-curator正在寻找贡献者,特别是ASCII艺术方面的贡献,并欢迎捐赠。该项目在Claude的显著协助下开发完成,涉及大约10,000行配对编程。
相关文章

原文

A fast and friendly Rust TUI for managing QEMU/KVM virtual machines. Discover, create, organize, launch, and manage VMs with an intuitive interface.

Para-virtualized 3D acceleration works with NVIDIA GPUs in VMs created by vm-curator! Huzzah!

This was extensively tested by the developer on an RTX-4090 in Arch Linux using NVIDIA driver 590.48.01. The guest OS still has to support QEMU 3D-accelleration. (virtio-vga-gl with gl=on.) Note this is not the same as full GPU Passthrough (the kind requiring multiple GPUs and/or jumping through many, many hoops.) Support for full GPU passthrough is being worked on.

VM Discovery & Organization

  • Automatically scans your VM library for directories containing launch.sh scripts
  • Hierarchical organization by OS family (Windows, Linux, macOS, BSD, etc.)
  • Parses QEMU launch scripts to extract configuration (emulator, memory, CPU, VGA, audio, disks)
  • Smart categorization based on configurable hierarchy patterns

VM Creation Wizard

  • 5-step guided wizard for creating new VMs
  • 50+ pre-configured OS profiles with optimal QEMU settings
  • Automatic UEFI firmware detection across Linux distributions (Arch, Debian, Fedora, NixOS, etc.)
  • ISO file browser for selecting installation media
  • Configurable disk size, memory, CPU cores, and QEMU options
  • Support for custom OS entries with user metadata

Snapshot Management

  • Create, restore, and delete snapshots for qcow2 disk images
  • Visual snapshot list with timestamps and sizes
  • Background operations with progress feedback

Launch Script Editor

  • Edit launch.sh scripts directly in the TUI
  • Syntax-aware display with line numbers
  • Automatic QEMU configuration re-parsing after saves

USB Passthrough

  • USB device enumeration via libudev
  • Select devices for passthrough to VMs
  • Persistent passthrough configuration

Additional Features

  • Vim-style navigation (j/k, arrows, mouse)
  • Search and filter VMs
  • Multiple boot modes (normal, install, custom ISO)
  • OS metadata with historical blurbs and fun facts
  • ASCII art logos for classic operating systems
  • Configurable settings with persistence
 VM Curator (QEMU VM Library in ~/vm-space)
┌─────────────────────────────────────────────────────────────────────┐
│ ┌─────────────────────────┐  ┌────────────────────────────────────┐ │
│ │ VMs (35)                │  │       _    _ _           _        │ │
│ │ ──────────────────────  │  │      | |  | (_)         | |       │ │
│ │ 🪟 Microsoft            │  │      | |/\| |_ _ __   __| | ___   │ │
│ │   ▼ DOS                 │  │      \  /\  / | '_ \ / _` |/ _ \  │ │
│ │     > MS-DOS 6.22   [*] │  │       \/  \/|_|_| |_|\__,_|\___/  │ │
│ │     > Windows 3.11      │  │                                   │ │
│ │   ▼ Windows 9x          │  │   Windows 95 OSR2.5               │ │
│ │     > Windows 95        │  │   Microsoft | August 1995 | i386  │ │
│ │     > Windows 98        │  │                                   │ │
│ │ 🐧 Linux                │  │   The OS that changed everything  │ │
│ │   ▼ Debian-based        │  │   with the Start Menu, taskbar,   │ │
│ │     > Debian 12         │  │   and 32-bit computing for all.   │ │
│ │     > Ubuntu 24.04      │  │                                   │ │
│ └─────────────────────────┘  └────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────┤
│ [Enter] Launch  [m] Manage  [c] Create  [s] Settings  [?] Help     │
└─────────────────────────────────────────────────────────────────────┘

Prerequisites

  • Rust 1.70+
  • QEMU (qemu-system-* binaries)
  • libudev-dev (Debian/Ubuntu) or libudev (Arch/Fedora)
cd vm-curator
cargo build --release

The binary will be at target/release/vm-curator.

# List all VMs
vm-curator list

# Launch a VM
vm-curator launch windows-95
vm-curator launch windows-95 --install    # Boot in install mode
vm-curator launch windows-95 --cdrom /path/to/image.iso

# View VM configuration
vm-curator info windows-95

# Manage snapshots
vm-curator snapshot windows-95 list
vm-curator snapshot windows-95 create my-snapshot
vm-curator snapshot windows-95 restore my-snapshot
vm-curator snapshot windows-95 delete my-snapshot

# List available QEMU emulators
vm-curator emulators
Key Action
j/k or Down/Up Navigate VM list
Enter Launch selected VM
m Open management menu
c Open VM creation wizard
s Open settings
/ Search/filter VMs
? Show help
PgUp/PgDn Scroll info panel
Esc Back / Cancel
q Quit
Key Action
Enter Select menu option
e Edit launch script
u Configure USB passthrough
Key Action
Tab / Shift+Tab Next/previous field
Enter Select / Continue
n Next step
p Previous step
Esc Cancel wizard

Settings are stored in ~/.config/vm-curator/config.toml and can be edited via the Settings screen (s key).

# VM library location
vm_library_path = "~/vm-space"

# Default values for new VMs
default_memory_mb = 4096
default_cpu_cores = 2
default_disk_size_gb = 64
default_display = "gtk"      # gtk, sdl, spice
default_enable_kvm = true

# Behavior
confirm_before_launch = true

VMs are expected in your library directory (default ~/vm-space/) with this structure:

~/vm-space/
├── windows-95/
│   ├── launch.sh      # QEMU launch script (required)
│   └── disk.qcow2     # Disk image (qcow2 recommended for snapshots)
├── linux-debian/
│   ├── launch.sh
│   ├── disk.qcow2
│   └── install.iso    # Optional: installation media
└── macos-tiger/
    ├── launch.sh
    └── disk.qcow2

The launch.sh script should invoke QEMU. VM Curator parses this script to extract configuration and can generate new scripts via the creation wizard.

The creation wizard includes pre-configured profiles for 50+ operating systems:

Microsoft: DOS, Windows 3.x, 95, 98, ME, 2000, XP, Vista, 7, 8, 10, 11, Server editions

Apple: Classic Mac OS (System 6-9), Mac OS X (10.4-10.15), macOS (11+)

Linux: Arch, Debian, Ubuntu, Fedora, openSUSE, Mint, CentOS, RHEL, Gentoo, Slackware, Alpine, NixOS, Void, EndeavourOS, Manjaro, and more

BSD: FreeBSD, OpenBSD, NetBSD, DragonFly BSD

Unix: Solaris, OpenIndiana, illumos

Other: Haiku, ReactOS, FreeDOS, Plan 9, Minix, TempleOS

Each profile includes optimal QEMU settings for that OS (emulator, machine type, VGA, audio, network, etc.).

OS Information: Override or add OS metadata in ~/.config/vm-curator/metadata/:

# ~/.config/vm-curator/metadata/my-os.toml
[my-custom-os]
name = "My Custom OS"
publisher = "My Company"
release_date = "2024-01-01"
architecture = "x86_64"

[my-custom-os.blurb]
short = "A brief description"
long = "A longer description with history and details."

[my-custom-os.fun_facts]
facts = ["Fact 1", "Fact 2"]

ASCII Art: Add custom ASCII art in ~/.config/vm-curator/ascii/.

QEMU Profiles: Override profiles in ~/.config/vm-curator/qemu_profiles.toml.

  • Runtime: QEMU, qemu-img (for snapshots), libudev
  • Build: Rust 1.70+, libudev-dev

Cross-Distribution Compatibility

VM Curator automatically detects OVMF/UEFI firmware paths across Linux distributions:

  • Arch Linux: /usr/share/edk2/x64/OVMF_CODE.4m.fd
  • Debian/Ubuntu: /usr/share/OVMF/OVMF_CODE.fd
  • Fedora/RHEL: /usr/share/edk2/ovmf/OVMF_CODE.fd
  • NixOS: Multiple search paths supported
  • And more...

Contributions are welcome! If you find a bug or have an idea for an improvement, feel free to open an issue or submit a Pull Request.

Help Wanted: ASCII Art As a TUI application, vm-curator relies on visual flair to stand out. I am specifically looking for help with:

  • Logo/Banner Art: A cool ASCII banner for the startup screen.
  • Iconography: Small, recognizable ASCII/block character icons for the TUI menus (e.g., stylized hard drives, network cards, or GPU icons).

If you have a knack for terminal aesthetics, your PRs are highly appreciated!

☕ Support & Maintenance Status

vm-curator was built to solve a specific, painful problem: getting high-performance, 3D-accelerated Linux VMs (via QEMU) without the overhead and complexity of libvirt or virt-manager.

This is a personal passion project that I am sharing with the community. While I use this tool daily and will fix critical bugs as I encounter them, please note:

  • Development Pace: This project is maintained in my spare time. Feature requests will be considered but are not guaranteed.
  • The "As-Is" Philosophy: The goal is a lean, transparent TUI. I prioritize stability and performance over comprehensive enterprise feature parity.

If this tool saved you time or helped you get 3D Acceleration working without having to resort to passthrough:

If you'd like to say thanks, you can support the project below. Donations are a "thank you" for existing work, not a payment for future support.

  • GitHub Sponsors: Best for one-time contributions (Goes to the RTX-Pro 6000 fund!)
  • Ko-fi: Buy me a coffee (or a generic energy drink).

MIT

联系我们 contact @ memedata.com