Need help with x11rb?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

psychon
185 Stars 11 Forks Other 1.6K Commits 42 Opened issues

Description

X11 bindings for the rust programming language, similar to xcb being the X11 C bindings

Services available

!
?

Need anything else?

Contributors list

# 33,307
Linux
xorg
Awesome...
Lua
1091 commits
# 113,043
Telegra...
pcb
schemat...
messeng...
158 commits
# 66,440
Rust
C++
Linux
tokio
64 commits
# 51,303
TeX
Markdow...
openid-...
oauth2
11 commits
# 111,933
wayland
zig
wm
Flask
2 commits
# 487,904
Erlang
C++
spotify
vlc
1 commit

X11 rust bindings

GitHub Actions Status AppVeyor Build Status Crate API Minimum rustc version License

Feel free to open issues for any problems or questions you might have. A comparison with some other Rust X11 libraries is available in an extra document.

Building

This crate uses a code generator that is implemented in Rust. A copy of the generated code is included, so you do not need to run the generator unless you have modified the definitions or the generator itself.

The code generator uses the X11 XML description from

xcb-proto
. A copy of xcb-proto that comes with the source code is used.

The interaction with libxcb via

XCBConnection
requires at least libxcb 1.12.

Does this support async/await

No. If you have so many X11 connections that this would matter, you are doing something wrong. Also, it encourages people to write high-latency code instead of sending multiple requests and only afterwards wait for the replies.

Crate features

Most X11 extensions are feature-gated. For example, to use the shared memory extansion, the

shm
feature has to be enabled.

The

all-extensions
feature just enables all X11 extensions.

Additionally, the

allow-unsafe-code
feature enables
XCBConnection
. This uses
libxcb
internally and allows sharing the underlying
xcb_connection_t
pointer with other code.

The

cursor
feature enables X11 cursor support via the
cursor
module. This module helps with loading cursors from the current cursor theme.

Current state

The full X11 protocol is supported by this library. All extensions that are available in

xcb-proto
can be used and even FD passing with the server is supported.

The changelog is available in a separate file.

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

The subdirectory xcb-proto-1.14-1-g2b3559c contains a vendored copy of the package of the same name. It is covered by the MIT license. See xcb-proto-1.14-1-g2b3559c/COPYING for details.

Contribution

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.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.