basic scaffolding

This commit is contained in:
Mona Mayrhofer 2026-02-28 12:18:00 +01:00
parent a12b10b4bc
commit e4d51f09a1
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS.
GPG key ID: 374AB152BDEBA1AE
3 changed files with 125 additions and 2 deletions

26
Cargo.lock generated
View file

@ -23,6 +23,7 @@ name = "cursor-mover-app"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"wayland-client", "wayland-client",
"wayland-protocols-wlr",
] ]
[[package]] [[package]]
@ -154,6 +155,31 @@ dependencies = [
"wayland-scanner", "wayland-scanner",
] ]
[[package]]
name = "wayland-protocols"
version = "0.32.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baeda9ffbcfc8cd6ddaade385eaf2393bd2115a69523c735f12242353c3df4f3"
dependencies = [
"bitflags",
"wayland-backend",
"wayland-client",
"wayland-scanner",
]
[[package]]
name = "wayland-protocols-wlr"
version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9597cdf02cf0c34cd5823786dce6b5ae8598f05c2daf5621b6e178d4f7345f3"
dependencies = [
"bitflags",
"wayland-backend",
"wayland-client",
"wayland-protocols",
"wayland-scanner",
]
[[package]] [[package]]
name = "wayland-scanner" name = "wayland-scanner"
version = "0.31.8" version = "0.31.8"

View file

@ -11,6 +11,7 @@ readme = "README.md"
[dependencies] [dependencies]
wayland-client = "0.31.12" wayland-client = "0.31.12"
wayland-protocols-wlr = { version = "0.3.10", features = ["client"] }
[lints] [lints]
workspace = true workspace = true

View file

@ -1,3 +1,99 @@
fn main() { use wayland_client::{Connection, Dispatch, Proxy, QueueHandle, protocol::wl_registry};
println!("Hello, world!"); use wayland_protocols_wlr::virtual_pointer::v1::client::{
zwlr_virtual_pointer_manager_v1::ZwlrVirtualPointerManagerV1,
zwlr_virtual_pointer_v1::ZwlrVirtualPointerV1,
};
#[derive(Default)]
struct AppData {
virtual_pointer: Option<ZwlrVirtualPointerV1>,
}
impl Dispatch<ZwlrVirtualPointerV1, ()> for AppData {
fn event(
state: &mut Self,
proxy: &ZwlrVirtualPointerV1,
event: <ZwlrVirtualPointerV1 as Proxy>::Event,
data: &(),
conn: &Connection,
qhandle: &QueueHandle<Self>,
) {
println!("VPointerData");
}
}
impl Dispatch<ZwlrVirtualPointerManagerV1, ()> for AppData {
fn event(
state: &mut Self,
proxy: &ZwlrVirtualPointerManagerV1,
event: <ZwlrVirtualPointerManagerV1 as Proxy>::Event,
data: &(),
conn: &Connection,
qhandle: &QueueHandle<Self>,
) {
println!("ZwlrEvent")
}
}
impl Dispatch<wl_registry::WlRegistry, ()> for AppData {
fn event(
app_data: &mut Self,
registry: &wl_registry::WlRegistry,
event: wl_registry::Event,
_: &(),
_: &Connection,
queue_handle: &QueueHandle<AppData>,
) {
// When receiving events from the wl_registry, we are only interested in the
// `global` event, which signals a new available global.
// When receiving this event, we just print its characteristics in this example.
if let wl_registry::Event::Global {
name,
interface,
version,
} = event
{
//println!("[{name}] {interface} (v{version})");
if interface.as_str() == "zwlr_virtual_pointer_manager_v1" {
app_data.virtual_pointer.get_or_insert_with(|| {
let manager = registry.bind::<ZwlrVirtualPointerManagerV1, _, _>(
name,
version,
queue_handle,
(),
);
let pointer = manager.create_virtual_pointer(None, queue_handle, ());
println!("Virtual pointer manager created");
pointer
});
}
}
}
}
fn main() {
let connection = Connection::connect_to_env().unwrap();
let display = connection.display();
let mut event_queue = connection.new_event_queue();
let queue_handle = event_queue.handle();
let _registry = display.get_registry(&queue_handle, ());
println!("Advertized globals:");
let mut appdata = AppData::default();
event_queue.roundtrip(&mut appdata).unwrap();
loop {
let dispatched = event_queue.dispatch_pending(&mut appdata).unwrap();
if dispatched == 0 {
event_queue.flush().unwrap();
}
if let Some(pointer) = &appdata.virtual_pointer {
println!("Moving pointer?")
}
}
} }