add wayland target and rename gnome target

It should be possible to build both Wayland (sans D-Bus) and GNOME
versions simultaneously. Add a Wayland target, and, for consistency,
rename the GNOME target.
This commit is contained in:
Richard Acayan 2024-07-25 18:23:21 -04:00
parent 379ac88a5a
commit 57c9d39293
3 changed files with 74 additions and 0 deletions

View file

@ -24,3 +24,11 @@ zbus = { version = "4.4.0", default-features = false, features = ["tokio"] }
[build-dependencies]
bindgen = "0.69.4"
[[bin]]
name = "ufkbd-gnome"
path = "src/ufkbd_gnome.rs"
[[bin]]
name = "ufkbd-wl"
path = "src/ufkbd_wl.rs"

66
src/ufkbd_wl.rs Normal file
View file

@ -0,0 +1,66 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* Copyright (c) 2024, Richard Acayan. All rights reserved.
*/
mod core;
mod wayland;
use crate::core::Layout;
use crate::wayland::Dispatcher;
use polling::Event;
use polling::Events;
use polling::Poller;
use std::path::Path;
use std::time::Instant;
use wayland_client::globals;
pub struct VisibilityManager();
impl VisibilityManager {
pub fn set_visible(&self, _visible: bool)
{
unreachable!();
}
}
fn main()
{
let conn = wayland_client::Connection::connect_to_env().unwrap();
let (globals, mut queue) = globals::registry_queue_init::<Dispatcher>(&conn)
.expect("Registry required");
let layouts = Path::new("/usr/share/unfettered-keyboard/layouts");
let layout = Layout::load(layouts, "latn_qwerty_us.xml")
.expect("Layout should be loadable");
let mut dispatcher = Dispatcher::new(layout, queue.handle(), &globals).unwrap();
let wl_evt = Event::readable(0);
let mut events = Events::new();
let poller = Poller::new().unwrap();
loop {
conn.flush().unwrap();
let guard = queue.prepare_read().unwrap();
let fd = guard.connection_fd();
let timer = dispatcher.button().next_time().map(|t| t - Instant::now());
unsafe {
poller.add(&fd, wl_evt).unwrap();
}
events.clear();
poller.wait(&mut events, timer).unwrap();
poller.delete(fd).unwrap();
if !events.is_empty() {
guard.read().unwrap();
queue.dispatch_pending(&mut dispatcher).unwrap();
}
dispatcher.dispatch_timers();
}
}