4 releases (2 breaking)

Uses new Rust 2024

0.3.0 Apr 26, 2025
0.2.0 Apr 23, 2025
0.1.1 Apr 18, 2025
0.1.0 Apr 18, 2025

#291 in Game dev

Download history 272/week @ 2025-04-15 229/week @ 2025-04-22 22/week @ 2025-04-29

523 downloads per month

MIT/Apache

685KB
1.5K SLoC

Bevy UI Text Input

Text input crate for Bevy UI using cosmic text.

Text Input Example

Basic usage

Spawn a TextInputNode component to create a text input:

commands
        .spawn((
            TextInputNode::default(),
            Node {
                width: Val::Px(500.),
                height: Val::Px(250.),
                ..default()
            },
        ))

The size has to be set using Node, there isn't any support for responsive sizing yet. The active text input is set using the ActiveTextInput resource. Inputs can also be set to activate on clicks.

There are a couple of examples, text_input is the most complete:

cargo run --example text_input

Features

  • Undo and redo
  • Text selection with keyboard and mouse
  • Overwrite and insert edit modes
  • Horizontally scrolling single line input
  • Validated integer, decimal and hexadecimal input modes
  • Vertical and horizontal scrolling
  • Cut, copy, and paste with clipboard support
  • Display prompt when empty
  • Keyboard navigation supports page up & down, home & End, next & previous word, buffer start & end and scroll up & down
  • Mouse wheel scrolling
  • Max characters limit

Problems + Bugs

  • Overwrite cursor becomes an insert cursor at the end of lines.
  • Scrolling can be glitchy if the line height isn't an exact divisor of the input box.
  • The plugin can't access any existing FontAtlasSets from bevy_text and has to create its own atlases for any fonts it uses.

Not supported (at least yet)

  • IME
  • Responsive sizing
  • Rich text
  • Syntax highlighting
  • World UI
  • Text2d
  • Onscreen keyboard

Dependencies

~20–34MB
~612K SLoC