feat(wayland): virtual output

This commit is contained in:
Nova
2025-07-11 16:37:52 -07:00
parent 3225819121
commit 00fdaf5b9f
2 changed files with 26 additions and 4 deletions

View File

@@ -5,12 +5,33 @@ use waynest::{
pub use waynest::server::protocol::core::wayland::wl_output::*;
#[derive(Debug, Dispatcher, Default)]
pub struct Output;
#[derive(Debug, Dispatcher)]
pub struct Output(pub ObjectId);
impl Output {
pub async fn advertise_outputs(&self, client: &mut Client) -> Result<()> {
self.geometry(
client,
self.0,
2048,
2048,
0,
0,
Subpixel::None,
"Stardust Virtual Display".to_string(),
"Stardust Virtual Display".to_string(),
Transform::Normal,
)
.await?;
self.mode(client, self.0, Mode::Current, 2048, 2048, 0)
.await?;
self.done(client, self.0).await
}
}
impl WlOutput for Output {
/// https://wayland.app/protocols/wayland#wl_output:request:release
async fn release(&self, _client: &mut Client, _sender_id: ObjectId) -> Result<()> {
todo!()
Ok(())
}
}

View File

@@ -128,7 +128,8 @@ impl WlRegistry for Registry {
}
RegistryGlobals::OUTPUT => {
tracing::info!("Binding output");
client.insert(new_id.object_id, Output);
let output = client.insert(new_id.object_id, Output(new_id.object_id));
output.advertise_outputs(client).await?;
}
RegistryGlobals::DMABUF => {
tracing::info!("Binding dmabuf");