Skip to content
/ Yaxi Public

A work-in-progress x library implementation written in pure rust

License

Notifications You must be signed in to change notification settings

proxin187/Yaxi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation



GitHub License dependencies crates.io

yaxi is a x11 library written from scratch

Key Features

  • Clean Interface - yaxi provides a clean interface, making it perfect for both beginners and experienced developers
  • Safety - yaxi has safe interface for x11 unlike many other x11 libraries
  • Not A Wrapper - yaxi is a pure rust implementation and is NOT a wrapper
  • No Dependencies - yaxi doesnt depend on any crates

Goals

  • Authorization
  • Requests and Replies
  • events (most)
  • Keycodes and Keysyms
  • Extensions (Xinerama, Xft, ...)
  • Comprehensive Documentation
  • Window Manager in yaxi (work in progress)

Example

This example opens a window and waits for a keyboard press before it quits:

use yaxi::window::{PropFormat, PropMode, WindowArguments, ValuesBuilder, WindowKind};
use yaxi::proto::{Event, WindowClass, EventMask};
use yaxi::display;


fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut display = display::open_unix(0)?;

    let mut root = display.default_root_window()?;

    let mut window = root.create_window(WindowArguments {
        depth: root.depth(),
        x: 5,
        y: 5,
        width: 80,
        height: 50,
        border_width: 15,
        class: WindowClass::InputOutput,
        visual: root.visual(),
        values: ValuesBuilder::new(vec![]),
    })?;

    window.select_input(&[EventMask::KeyPress, EventMask::KeyRelease])?;

    window.map(WindowKind::Window)?;

    let event = display.next_event()?;

    match event {
        Event::KeyEvent { kind, coordinates, window, root, subwindow, state, keycode, send_event } => {
            let window_copy = display.window_from_id(window)?;

            println!("window from id: {}, keycode: {}", window_copy.id(), keycode);
        },
        _ => {},
    }

    window.destroy(WindowKind::Window)?;

    Ok(())
}

License

Yaxi is licensed under the MIT License.

About

A work-in-progress x library implementation written in pure rust

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages