Initial commit

This commit is contained in:
Wojciech Kozlowski 2018-12-25 19:23:03 +05:30
commit ed816fa7ad
5 changed files with 81 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/target
**/*.rs.bk

30
Cargo.lock generated Normal file
View File

@ -0,0 +1,30 @@
[[package]]
name = "libc"
version = "0.2.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "pkg-config"
version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "rwmstatus"
version = "0.1.0"
dependencies = [
"x11 2.18.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "x11"
version = "2.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
]
[metadata]
"checksum libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "2d2857ec59fadc0773853c664d2d18e7198e83883e7060b63c924cb077bd5c74"
"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c"
"checksum x11 2.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39697e3123f715483d311b5826e254b6f3cfebdd83cf7ef3358f579c3d68e235"

10
Cargo.toml Normal file
View File

@ -0,0 +1,10 @@
[package]
name = "rwmstatus"
version = "0.1.0"
authors = ["Wojciech Kozlowski <wk@wojciechkozlowski.eu>"]
links = "X11"
build = "build.rs"
[dependencies]
x11 = "2"

4
build.rs Normal file
View File

@ -0,0 +1,4 @@
fn main() {
println!("cargo:rustc-link-lib=X11");
println!("cargo:rustc-link-search=native=/usr/X11R6/lib");
}

35
src/main.rs Normal file
View File

@ -0,0 +1,35 @@
extern crate x11;
use x11::xlib::Display;
use x11::xlib::{XDefaultRootWindow, XOpenDisplay, XStoreName, XSync};
use std::ptr;
use std::process;
use std::thread;
use std::time;
use std::ffi::CString;
fn main() {
let display: *mut Display;
unsafe {
display = XOpenDisplay(ptr::null());
}
if display == ptr::null_mut() {
eprintln!("rwmstatus: cannot open display.");
process::exit(1);
}
loop {
let status = CString::new("Hello!").expect("CString::new failed when setting status.");
unsafe {
XStoreName(display, XDefaultRootWindow(display), status.as_ptr());
XSync(display, false as i32);
}
thread::sleep(time::Duration::from_secs(1));
}
}