Cross platform window and framebuffer crate for Rust
Rust
1,216
437 commits
updated Oct 3, 2026
minifb is a cross platform library written in Rust that makes it easy to set up a window and to (optionally) display a 32-bit pixel buffer. It also makes it easy to get input from keyboard and mouse. Note that minifb is primarily designed for prototyping and may not include all the features found in full window handling libraries. An example is the best way to show how it works:
# Cargo.toml
[dependencies]
minifb = "0.29"
use minifb::{Key, Window, WindowOptions};
const WIDTH: usize = 640;
const HEIGHT: usize = 360;
fn main() {
let mut buffer: Vec<u32> = vec![0; WIDTH * HEIGHT];
let mut window = Window::new(
"Test - ESC to exit",
WIDTH,
HEIGHT,
WindowOptions::default(),
)
.unwrap_or_else(|e| {
panic!("{}", e);
});
// Limit to max ~60 fps update rate
window.set_target_fps(60);
while window.is_open() && !window.is_key_down(Key::Escape) {
for i in buffer.iter_mut() {
*i = 0; // write something more funny here!
}
// We unwrap here as we want this code to exit if it fails. Real applications may want to handle this in a different way
window
.update_with_buffer(&buffer, WIDTH, HEIGHT)
.unwrap();
}
}
Current supported platforms include macOS, Linux and Windows (64-bit and 32-bit). X11 (Linux/FreeBSD/etc) support has been tested on Ubuntu (x64). Linux Wayland support is also available. Bug reports for other OSes/CPUs are welcome!
Notice: After 0.13, Redox hasn't been updated and some work is required to get it working again. PRs are welcome.
On Linux, you may need to install these dependencies first:
sudo apt install libxkbcommon-dev libwayland-cursor0 libwayland-dev
cargo build
cargo run --example noise
This will run the noise example
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
(top 24 of 35)
2,293 followers · starred Feb 2021
3,930 followers · starred Jul 2019
365 followers · starred May 2024
55 followers · starred Jun 2020
Cross platform window and framebuffer crate for Rust
Rust
1,216
437 commits
updated Oct 3, 2026
minifb is a cross platform library written in Rust that makes it easy to set up a window and to (optionally) display a 32-bit pixel buffer. It also makes it easy to get input from keyboard and mouse. Note that minifb is primarily designed for prototyping and may not include all the features found in full window handling libraries. An example is the best way to show how it works:
# Cargo.toml
[dependencies]
minifb = "0.29"
use minifb::{Key, Window, WindowOptions};
const WIDTH: usize = 640;
const HEIGHT: usize = 360;
fn main() {
let mut buffer: Vec<u32> = vec![0; WIDTH * HEIGHT];
let mut window = Window::new(
"Test - ESC to exit",
WIDTH,
HEIGHT,
WindowOptions::default(),
)
.unwrap_or_else(|e| {
panic!("{}", e);
});
// Limit to max ~60 fps update rate
window.set_target_fps(60);
while window.is_open() && !window.is_key_down(Key::Escape) {
for i in buffer.iter_mut() {
*i = 0; // write something more funny here!
}
// We unwrap here as we want this code to exit if it fails. Real applications may want to handle this in a different way
window
.update_with_buffer(&buffer, WIDTH, HEIGHT)
.unwrap();
}
}
Current supported platforms include macOS, Linux and Windows (64-bit and 32-bit). X11 (Linux/FreeBSD/etc) support has been tested on Ubuntu (x64). Linux Wayland support is also available. Bug reports for other OSes/CPUs are welcome!
Notice: After 0.13, Redox hasn't been updated and some work is required to get it working again. PRs are welcome.
On Linux, you may need to install these dependencies first:
sudo apt install libxkbcommon-dev libwayland-cursor0 libwayland-dev
cargo build
cargo run --example noise
This will run the noise example
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
(top 24 of 35)
2,293 followers · starred Feb 2021
3,930 followers · starred Jul 2019
365 followers · starred May 2024
55 followers · starred Jun 2020