Go to file
Hal Gentz 042f5fe4b3 Shares the XConnection between all event loops instead of just all event (#572)
loops on the same thread.

This is needed for adding shared context support to glutin, as contexts
must be made with the same native display (and therefore the same
connection.)

Signed-off-by: Hal Gentz <zegentzy@protonmail.com>
2018-06-17 20:44:38 -04:00
.circleci Implement virtual key translation for emscripten (#289) 2017-09-16 15:46:53 +02:00
.github Added a GitHub PULL_REQUEST_TEMPLATE (#542) 2018-06-02 11:04:08 -04:00
examples Mirror monitor list methods on Window (#567) 2018-06-16 10:14:12 -04:00
src Shares the XConnection between all event loops instead of just all event (#572) 2018-06-17 20:44:38 -04:00
tests x11: Windows are Sync again (#474) 2018-04-21 11:53:57 -04:00
.gitattributes Initial commit 2014-07-27 11:41:26 +02:00
.gitignore macOS: Fix re-enabling decorations after the window is built without them (#520) 2018-05-16 08:51:56 -04:00
.gitmodules Add basic support for Android 2014-09-11 18:28:07 +02:00
.travis.yml Test against rustc 1.24.1 on Travis (#547) 2018-06-02 22:59:59 -04:00
appveyor.yml appveyor.yml: Test additional Rust channels (#539) 2018-05-30 07:57:40 -04:00
Cargo.toml DPI for everyone (#548) 2018-06-14 19:42:18 -04:00
CHANGELOG.md Shares the XConnection between all event loops instead of just all event (#572) 2018-06-17 20:44:38 -04:00
LICENSE Initial commit 2014-07-27 11:41:26 +02:00
README.md Change Travis badge to SVG (#573) 2018-06-17 15:08:01 -04:00

winit - Cross-platform window creation and management in Rust

Docs.rs

Build Status Build status

[dependencies]
winit = "0.15"

Documentation

Usage

Winit is a window creation and management library. It can create windows and lets you handle events (for example: the window being resized, a key being pressed, a mouse movement, etc.) produced by window.

Winit is designed to be a low-level brick in a hierarchy of libraries. Consequently, in order to show something on the window you need to use the platform-specific getters provided by winit, or another library.

extern crate winit;

fn main() {
    let mut events_loop = winit::EventsLoop::new();
    let window = winit::Window::new(&events_loop).unwrap();

    events_loop.run_forever(|event| {
        match event {
            winit::Event::WindowEvent {
              event: winit::WindowEvent::CloseRequested,
              ..
            } => winit::ControlFlow::Break,
            _ => winit::ControlFlow::Continue,
        }
    });
}

Platform-specific usage

Emscripten and WebAssembly

Building a binary will yield a .js file. In order to use it in an HTML file, you need to:

  • Put a <canvas id="my_id"></canvas> element somewhere. A canvas corresponds to a winit "window".
  • Write a Javascript code that creates a global variable named Module. Set Module.canvas to the element of the <canvas> element (in the example you would retrieve it via document.getElementById("my_id")). More information here.
  • Make sure that you insert the .js file generated by Rust after the Module variable is created.