From 3f5a363136198e9a43d37431687c486fa80371cf Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Wed, 24 Dec 2025 00:58:40 +0900 Subject: [PATCH] fmt --- wayvr-ipc/src/client.rs | 5 +- wayvr-ipc/src/util/handle.rs | 259 +++++++-------- wayvrctl/src/helper.rs | 387 ++++++++++++---------- wayvrctl/src/main.rs | 201 ++++++----- wgui/src/components/button.rs | 9 +- wgui/src/components/checkbox.rs | 4 +- wgui/src/components/slider.rs | 2 +- wgui/src/drawing.rs | 2 +- wgui/src/parser/component_button.rs | 6 +- wgui/src/parser/mod.rs | 2 +- wgui/src/parser/style.rs | 4 +- wgui/src/parser/widget_image.rs | 3 +- wgui/src/parser/widget_rectangle.rs | 3 +- wgui/src/parser/widget_sprite.rs | 2 +- wgui/src/renderer_vk/context.rs | 6 +- wgui/src/renderer_vk/image.rs | 2 +- wgui/src/renderer_vk/rect.rs | 2 +- wgui/src/renderer_vk/text/custom_glyph.rs | 2 +- wgui/src/widget/image.rs | 2 +- wgui/src/widget/mod.rs | 6 +- wgui/src/widget/rectangle.rs | 2 +- wgui/src/widget/sprite.rs | 2 +- wlx-overlay-s/src/gui/panel/mod.rs | 1 - 23 files changed, 484 insertions(+), 430 deletions(-) diff --git a/wayvr-ipc/src/client.rs b/wayvr-ipc/src/client.rs index db4c287..bba9a98 100644 --- a/wayvr-ipc/src/client.rs +++ b/wayvr-ipc/src/client.rs @@ -1,8 +1,7 @@ use bytes::BufMut; use interprocess::local_socket::{ - self, - tokio::{prelude::*, Stream}, - GenericNamespaced, + self, GenericNamespaced, + tokio::{Stream, prelude::*}, }; use serde::Serialize; use smallvec::SmallVec; diff --git a/wayvr-ipc/src/util/handle.rs b/wayvr-ipc/src/util/handle.rs index a408d41..63aaa7b 100644 --- a/wayvr-ipc/src/util/handle.rs +++ b/wayvr-ipc/src/util/handle.rs @@ -1,167 +1,164 @@ #[macro_export] macro_rules! gen_id { - ( + ( $container_name:ident, $instance_name:ident, $cell_name:ident, $handle_name:ident) => { - //ThingCell - pub struct $cell_name { - pub obj: $instance_name, - pub generation: u64, - } + //ThingCell + pub struct $cell_name { + pub obj: $instance_name, + pub generation: u64, + } - //ThingVec - pub struct $container_name { - // Vec> - pub vec: Vec>, + //ThingVec + pub struct $container_name { + // Vec> + pub vec: Vec>, - cur_generation: u64, - } + cur_generation: u64, + } - //ThingHandle - #[derive(Default, Clone, Copy, PartialEq, Hash, Eq)] - pub struct $handle_name { - idx: u32, - generation: u64, - } + //ThingHandle + #[derive(Default, Clone, Copy, PartialEq, Hash, Eq)] + pub struct $handle_name { + idx: u32, + generation: u64, + } - #[allow(dead_code)] - impl $handle_name { - pub fn reset(&mut self) { - self.generation = 0; - } + #[allow(dead_code)] + impl $handle_name { + pub fn reset(&mut self) { + self.generation = 0; + } - pub fn is_set(&self) -> bool { - self.generation > 0 - } + pub fn is_set(&self) -> bool { + self.generation > 0 + } - pub fn id(&self) -> u32 { - self.idx - } + pub fn id(&self) -> u32 { + self.idx + } - pub fn new(idx: u32, generation: u64) -> Self { - Self { idx, generation } - } - } + pub fn new(idx: u32, generation: u64) -> Self { + Self { idx, generation } + } + } - //ThingVec - #[allow(dead_code)] - impl $container_name { - pub fn new() -> Self { - Self { - vec: Vec::new(), - cur_generation: 0, - } - } + //ThingVec + #[allow(dead_code)] + impl $container_name { + pub fn new() -> Self { + Self { + vec: Vec::new(), + cur_generation: 0, + } + } - pub fn iter(&self, callback: &dyn Fn($handle_name, &$instance_name)) { - for (idx, opt_cell) in self.vec.iter().enumerate() { - if let Some(cell) = opt_cell { - let handle = $container_name::get_handle(&cell, idx); - callback(handle, &cell.obj); - } - } - } + pub fn iter(&self, callback: &dyn Fn($handle_name, &$instance_name)) { + for (idx, opt_cell) in self.vec.iter().enumerate() { + if let Some(cell) = opt_cell { + let handle = $container_name::get_handle(&cell, idx); + callback(handle, &cell.obj); + } + } + } - pub fn iter_mut( - &mut self, - callback: &mut dyn FnMut($handle_name, &mut $instance_name), - ) { - for (idx, opt_cell) in self.vec.iter_mut().enumerate() { - if let Some(cell) = opt_cell { - let handle = $container_name::get_handle(&cell, idx); - callback(handle, &mut cell.obj); - } - } - } + pub fn iter_mut(&mut self, callback: &mut dyn FnMut($handle_name, &mut $instance_name)) { + for (idx, opt_cell) in self.vec.iter_mut().enumerate() { + if let Some(cell) = opt_cell { + let handle = $container_name::get_handle(&cell, idx); + callback(handle, &mut cell.obj); + } + } + } - pub fn get_handle(cell: &$cell_name, idx: usize) -> $handle_name { - $handle_name { - idx: idx as u32, - generation: cell.generation, - } - } + pub fn get_handle(cell: &$cell_name, idx: usize) -> $handle_name { + $handle_name { + idx: idx as u32, + generation: cell.generation, + } + } - fn find_unused_idx(&mut self) -> Option { - for (num, obj) in self.vec.iter().enumerate() { - if obj.is_none() { - return Some(num as u32); - } - } - None - } + fn find_unused_idx(&mut self) -> Option { + for (num, obj) in self.vec.iter().enumerate() { + if obj.is_none() { + return Some(num as u32); + } + } + None + } - pub fn add(&mut self, obj: $instance_name) -> $handle_name { - self.cur_generation += 1; - let generation = self.cur_generation; + pub fn add(&mut self, obj: $instance_name) -> $handle_name { + self.cur_generation += 1; + let generation = self.cur_generation; - let unused_idx = self.find_unused_idx(); + let unused_idx = self.find_unused_idx(); - let idx = if let Some(idx) = unused_idx { - idx - } else { - self.vec.len() as u32 - }; + let idx = if let Some(idx) = unused_idx { + idx + } else { + self.vec.len() as u32 + }; - let handle = $handle_name { idx, generation }; + let handle = $handle_name { idx, generation }; - let cell = $cell_name { obj, generation }; + let cell = $cell_name { obj, generation }; - if let Some(idx) = unused_idx { - self.vec[idx as usize] = Some(cell); - } else { - self.vec.push(Some(cell)) - } + if let Some(idx) = unused_idx { + self.vec[idx as usize] = Some(cell); + } else { + self.vec.push(Some(cell)) + } - handle - } + handle + } - pub fn remove(&mut self, handle: &$handle_name) { - // Out of bounds, ignore - if handle.idx as usize >= self.vec.len() { - return; - } + pub fn remove(&mut self, handle: &$handle_name) { + // Out of bounds, ignore + if handle.idx as usize >= self.vec.len() { + return; + } - // Remove only if the generation matches - if let Some(cell) = &self.vec[handle.idx as usize] { - if cell.generation == handle.generation { - self.vec[handle.idx as usize] = None; - } - } - } + // Remove only if the generation matches + if let Some(cell) = &self.vec[handle.idx as usize] { + if cell.generation == handle.generation { + self.vec[handle.idx as usize] = None; + } + } + } - pub fn get(&self, handle: &$handle_name) -> Option<&$instance_name> { - // Out of bounds, ignore - if handle.idx as usize >= self.vec.len() { - return None; - } + pub fn get(&self, handle: &$handle_name) -> Option<&$instance_name> { + // Out of bounds, ignore + if handle.idx as usize >= self.vec.len() { + return None; + } - if let Some(cell) = &self.vec[handle.idx as usize] { - if cell.generation == handle.generation { - return Some(&cell.obj); - } - } + if let Some(cell) = &self.vec[handle.idx as usize] { + if cell.generation == handle.generation { + return Some(&cell.obj); + } + } - None - } + None + } - pub fn get_mut(&mut self, handle: &$handle_name) -> Option<&mut $instance_name> { - // Out of bounds, ignore - if handle.idx as usize >= self.vec.len() { - return None; - } + pub fn get_mut(&mut self, handle: &$handle_name) -> Option<&mut $instance_name> { + // Out of bounds, ignore + if handle.idx as usize >= self.vec.len() { + return None; + } - if let Some(cell) = &mut self.vec[handle.idx as usize] { - if cell.generation == handle.generation { - return Some(&mut cell.obj); - } - } + if let Some(cell) = &mut self.vec[handle.idx as usize] { + if cell.generation == handle.generation { + return Some(&mut cell.obj); + } + } - None - } - } - }; + None + } + } + }; } /* Example usage: diff --git a/wayvrctl/src/helper.rs b/wayvrctl/src/helper.rs index 9fb7420..19c9197 100644 --- a/wayvrctl/src/helper.rs +++ b/wayvrctl/src/helper.rs @@ -1,246 +1,267 @@ -use std::{collections::HashMap}; +use std::collections::HashMap; use anyhow::Context; use serde::Serialize; -use wayvr_ipc::{client::{WayVRClient, WayVRClientMutex}, ipc, packet_client, packet_server}; +use wayvr_ipc::{ + client::{WayVRClient, WayVRClientMutex}, + ipc, packet_client, packet_server, +}; pub struct WayVRClientState { - pub wayvr_client: WayVRClientMutex, - pub serial_generator: ipc::SerialGenerator, - pub pretty_print: bool, + pub wayvr_client: WayVRClientMutex, + pub serial_generator: ipc::SerialGenerator, + pub pretty_print: bool, } fn handle_empty_result(result: anyhow::Result<()>) { - if let Err(e) = result { - log::error!("{e:?}"); - } + if let Err(e) = result { + log::error!("{e:?}"); + } } fn handle_result(pretty_print: bool, result: anyhow::Result) { - match result { - Ok(t) => { - - let maybe_json = if pretty_print { - serde_json::to_string_pretty(&t) - } else { - serde_json::to_string(&t) - }; + match result { + Ok(t) => { + let maybe_json = if pretty_print { + serde_json::to_string_pretty(&t) + } else { + serde_json::to_string(&t) + }; - match maybe_json { - Ok(json_string) => println!("{}", json_string), - Err(e) => log::error!("Failed to serialize JSON: {e:?}") - } - } - Err(e) => log::error!("{e:?}") - } + match maybe_json { + Ok(json_string) => println!("{}", json_string), + Err(e) => log::error!("Failed to serialize JSON: {e:?}"), + } + } + Err(e) => log::error!("{e:?}"), + } } pub async fn wvr_display_create( - state: &mut WayVRClientState, - width: u16, - height: u16, - name: String, - scale: Option, - attach_to: packet_client::AttachTo, + state: &mut WayVRClientState, + width: u16, + height: u16, + name: String, + scale: Option, + attach_to: packet_client::AttachTo, ) { - handle_result(state.pretty_print, - WayVRClient::fn_wvr_display_create( - state.wayvr_client.clone(), - state.serial_generator.increment_get(), - packet_client::WvrDisplayCreateParams { - width, - height, - name, - scale, - attach_to, - }, - ) - .await.context("failed to create display") - ); + handle_result( + state.pretty_print, + WayVRClient::fn_wvr_display_create( + state.wayvr_client.clone(), + state.serial_generator.increment_get(), + packet_client::WvrDisplayCreateParams { + width, + height, + name, + scale, + attach_to, + }, + ) + .await + .context("failed to create display"), + ); } -pub async fn wvr_display_list( - state: &mut WayVRClientState, -) { - handle_result(state.pretty_print, - WayVRClient::fn_wvr_display_list( - state.wayvr_client.clone(), - state.serial_generator.increment_get(), - ) - .await.context("failed to fetch displays") -); +pub async fn wvr_display_list(state: &mut WayVRClientState) { + handle_result( + state.pretty_print, + WayVRClient::fn_wvr_display_list( + state.wayvr_client.clone(), + state.serial_generator.increment_get(), + ) + .await + .context("failed to fetch displays"), + ); } pub async fn wvr_display_get( - state: &mut WayVRClientState, - handle: packet_server::WvrDisplayHandle, + state: &mut WayVRClientState, + handle: packet_server::WvrDisplayHandle, ) { - handle_result(state.pretty_print, - WayVRClient::fn_wvr_display_get( - state.wayvr_client.clone(), - state.serial_generator.increment_get(), - handle, - ) - .await.context("failed to fetch display") -); + handle_result( + state.pretty_print, + WayVRClient::fn_wvr_display_get( + state.wayvr_client.clone(), + state.serial_generator.increment_get(), + handle, + ) + .await + .context("failed to fetch display"), + ); } pub async fn wvr_display_window_list( - state: &mut WayVRClientState, - handle: packet_server::WvrDisplayHandle, + state: &mut WayVRClientState, + handle: packet_server::WvrDisplayHandle, ) { - handle_result(state.pretty_print, - WayVRClient::fn_wvr_display_window_list( - state.wayvr_client.clone(), - state.serial_generator.increment_get(), - handle, - ) - .await.context("failed to list window displays") - ); + handle_result( + state.pretty_print, + WayVRClient::fn_wvr_display_window_list( + state.wayvr_client.clone(), + state.serial_generator.increment_get(), + handle, + ) + .await + .context("failed to list window displays"), + ); } pub async fn wvr_display_remove( - state: &mut WayVRClientState, - handle: packet_server::WvrDisplayHandle, + state: &mut WayVRClientState, + handle: packet_server::WvrDisplayHandle, ) { - handle_result(state.pretty_print, - WayVRClient::fn_wvr_display_remove( - state.wayvr_client.clone(), - state.serial_generator.increment_get(), - handle, - ) - .await.context("failed to remove display") - ); + handle_result( + state.pretty_print, + WayVRClient::fn_wvr_display_remove( + state.wayvr_client.clone(), + state.serial_generator.increment_get(), + handle, + ) + .await + .context("failed to remove display"), + ); } pub async fn wvr_display_set_visible( - state: &mut WayVRClientState, - handle: packet_server::WvrDisplayHandle, - visible: bool, + state: &mut WayVRClientState, + handle: packet_server::WvrDisplayHandle, + visible: bool, ) { - handle_empty_result( - WayVRClient::fn_wvr_display_set_visible(state.wayvr_client.clone(), handle, visible).await.context("failed to set display visibility"), - ) + handle_empty_result( + WayVRClient::fn_wvr_display_set_visible(state.wayvr_client.clone(), handle, visible) + .await + .context("failed to set display visibility"), + ) } pub async fn wvr_window_set_visible( - state: &mut WayVRClientState, - handle: packet_server::WvrWindowHandle, - visible: bool, + state: &mut WayVRClientState, + handle: packet_server::WvrWindowHandle, + visible: bool, ) { - handle_empty_result( - WayVRClient::fn_wvr_window_set_visible(state.wayvr_client.clone(), handle, visible).await.context("failed to set window visibility"), - ) + handle_empty_result( + WayVRClient::fn_wvr_window_set_visible(state.wayvr_client.clone(), handle, visible) + .await + .context("failed to set window visibility"), + ) } pub async fn wvr_process_get( - state: &mut WayVRClientState, - handle: packet_server::WvrProcessHandle, + state: &mut WayVRClientState, + handle: packet_server::WvrProcessHandle, ) { - handle_result(state.pretty_print, - WayVRClient::fn_wvr_process_get( - state.wayvr_client.clone(), - state.serial_generator.increment_get(), - handle, - ) - .await.context("failed to get process"), - ); + handle_result( + state.pretty_print, + WayVRClient::fn_wvr_process_get( + state.wayvr_client.clone(), + state.serial_generator.increment_get(), + handle, + ) + .await + .context("failed to get process"), + ); } -pub async fn wvr_process_list( - state: &mut WayVRClientState, -) { - handle_result(state.pretty_print, - WayVRClient::fn_wvr_process_list( - state.wayvr_client.clone(), - state.serial_generator.increment_get(), - ) - .await.context("failed to list processes"), - ) +pub async fn wvr_process_list(state: &mut WayVRClientState) { + handle_result( + state.pretty_print, + WayVRClient::fn_wvr_process_list( + state.wayvr_client.clone(), + state.serial_generator.increment_get(), + ) + .await + .context("failed to list processes"), + ) } pub async fn wvr_process_terminate( - state: &mut WayVRClientState, - handle: packet_server::WvrProcessHandle, + state: &mut WayVRClientState, + handle: packet_server::WvrProcessHandle, ) { - handle_empty_result( - WayVRClient::fn_wvr_process_terminate(state.wayvr_client.clone(), handle).await.context("failed to terminate process"), - ) + handle_empty_result( + WayVRClient::fn_wvr_process_terminate(state.wayvr_client.clone(), handle) + .await + .context("failed to terminate process"), + ) } pub async fn wvr_process_launch( - state: &mut WayVRClientState, - exec: String, - name: String, - env: Vec, - target_display: packet_server::WvrDisplayHandle, - args: String, - userdata: HashMap, + state: &mut WayVRClientState, + exec: String, + name: String, + env: Vec, + target_display: packet_server::WvrDisplayHandle, + args: String, + userdata: HashMap, ) { - handle_result(state.pretty_print, - WayVRClient::fn_wvr_process_launch( - state.wayvr_client.clone(), - state.serial_generator.increment_get(), - packet_client::WvrProcessLaunchParams { - env, - exec, - name, - target_display, - args, - userdata, - }, - ) - .await.context("failed to launch process"), - ) + handle_result( + state.pretty_print, + WayVRClient::fn_wvr_process_launch( + state.wayvr_client.clone(), + state.serial_generator.increment_get(), + packet_client::WvrProcessLaunchParams { + env, + exec, + name, + target_display, + args, + userdata, + }, + ) + .await + .context("failed to launch process"), + ) } pub async fn wlx_haptics( - state: &mut WayVRClientState, - intensity: f32, - duration: f32, - frequency: f32, + state: &mut WayVRClientState, + intensity: f32, + duration: f32, + frequency: f32, ) { - handle_empty_result( - WayVRClient::fn_wlx_haptics( - state.wayvr_client.clone(), - packet_client::WlxHapticsParams { - intensity, - duration, - frequency, - }, - ) - .await.context("failed to trigger haptics"), - ) + handle_empty_result( + WayVRClient::fn_wlx_haptics( + state.wayvr_client.clone(), + packet_client::WlxHapticsParams { + intensity, + duration, + frequency, + }, + ) + .await + .context("failed to trigger haptics"), + ) } pub async fn wlx_panel_modify( - state: &mut WayVRClientState, - overlay: String, - element: String, - command: packet_client::WlxModifyPanelCommand, + state: &mut WayVRClientState, + overlay: String, + element: String, + command: packet_client::WlxModifyPanelCommand, ) { - handle_empty_result( - WayVRClient::fn_wlx_modify_panel( - state.wayvr_client.clone(), - packet_client::WlxModifyPanelParams { - overlay, - element, - command, - }, - ) - .await.context("failed to modify panel"), - ) + handle_empty_result( + WayVRClient::fn_wlx_modify_panel( + state.wayvr_client.clone(), + packet_client::WlxModifyPanelParams { + overlay, + element, + command, + }, + ) + .await + .context("failed to modify panel"), + ) } -pub async fn wlx_input_state( - state: &mut WayVRClientState, -) { - handle_result(state.pretty_print, - WayVRClient::fn_wlx_input_state( - state.wayvr_client.clone(), - state.serial_generator.increment_get(), - ) - .await.context("failed to get input state"), - ) +pub async fn wlx_input_state(state: &mut WayVRClientState) { + handle_result( + state.pretty_print, + WayVRClient::fn_wlx_input_state( + state.wayvr_client.clone(), + state.serial_generator.increment_get(), + ) + .await + .context("failed to get input state"), + ) } - diff --git a/wayvrctl/src/main.rs b/wayvrctl/src/main.rs index cab0e56..ed47b82 100644 --- a/wayvrctl/src/main.rs +++ b/wayvrctl/src/main.rs @@ -1,36 +1,47 @@ -use std::{collections::HashMap, process::{self, ExitCode}, time::Duration}; +use std::{ + collections::HashMap, + process::{self, ExitCode}, + time::Duration, +}; use anyhow::Context; use clap::Parser; use env_logger::Env; -use wayvr_ipc::{client::WayVRClient, ipc, packet_client, }; +use wayvr_ipc::{client::WayVRClient, ipc, packet_client}; -use crate::helper::{wlx_haptics, wlx_input_state, wlx_panel_modify, wvr_display_create, wvr_display_get, wvr_display_list, wvr_display_remove, wvr_display_set_visible, wvr_display_window_list, wvr_process_get, wvr_process_launch, wvr_process_list, wvr_process_terminate, wvr_window_set_visible, WayVRClientState}; +use crate::helper::{ + WayVRClientState, wlx_haptics, wlx_input_state, wlx_panel_modify, wvr_display_create, + wvr_display_get, wvr_display_list, wvr_display_remove, wvr_display_set_visible, + wvr_display_window_list, wvr_process_get, wvr_process_launch, wvr_process_list, + wvr_process_terminate, wvr_window_set_visible, +}; mod helper; - #[tokio::main(flavor = "current_thread")] async fn main() -> ExitCode { env_logger::init_from_env(Env::default().default_filter_or("info")); let args = Args::parse(); let mut state = WayVRClientState { - wayvr_client : WayVRClient::new(&format!("wayvrctl-{}", process::id())).await.inspect_err(|e| { - log::error!("Failed to initialize WayVR connection: {e:?}"); - process::exit(1); - }).unwrap(), + wayvr_client: WayVRClient::new(&format!("wayvrctl-{}", process::id())) + .await + .inspect_err(|e| { + log::error!("Failed to initialize WayVR connection: {e:?}"); + process::exit(1); + }) + .unwrap(), serial_generator: ipc::SerialGenerator::new(), pretty_print: args.pretty, }; - let maybe_err = if let Subcommands::Batch {fail_fast} = args.command { + let maybe_err = if let Subcommands::Batch { fail_fast } = args.command { run_batch(&mut state, fail_fast).await } else { run_once(&mut state, args).await - }; + }; - if let Err(e) = maybe_err{ + if let Err(e) = maybe_err { log::error!("{e:?}"); return ExitCode::FAILURE; } else { @@ -50,30 +61,30 @@ async fn run_batch(state: &mut WayVRClientState, fail_fast: bool) -> anyhow::Res continue; } - if let Err(e) = parse_run_line(state, &line).await.with_context(|| format!("error on line {}", line_no + 1)) { + if let Err(e) = parse_run_line(state, &line) + .await + .with_context(|| format!("error on line {}", line_no + 1)) + { if fail_fast { - return Err(e) + return Err(e); } else { log::error!("{e:?}"); } } - } Ok(()) } async fn parse_run_line(state: &mut WayVRClientState, line: &str) -> anyhow::Result<()> { - let mut argv = shell_words::split(&line) - .with_context(|| format!("parse error")) - ?; + let mut argv = shell_words::split(&line).with_context(|| format!("parse error"))?; - // clap expects argv[0] to be the binary name - argv.insert(0, env!("CARGO_PKG_NAME").to_string()); + // clap expects argv[0] to be the binary name + argv.insert(0, env!("CARGO_PKG_NAME").to_string()); - let args = Args::try_parse_from(argv).with_context(|| format!("invalid arguments"))?; - run_once(state, args).await?; + let args = Args::try_parse_from(argv).with_context(|| format!("invalid arguments"))?; + run_once(state, args).await?; - Ok(()) + Ok(()) } async fn run_once(state: &mut WayVRClientState, args: Args) -> anyhow::Result<()> { @@ -84,8 +95,21 @@ async fn run_once(state: &mut WayVRClientState, args: Args) -> anyhow::Result<() Subcommands::InputState => { wlx_input_state(state).await; } - Subcommands::DisplayCreate { width, height, name, scale } => { - wvr_display_create(state, width, height, name, scale, packet_client::AttachTo::None).await; + Subcommands::DisplayCreate { + width, + height, + name, + scale, + } => { + wvr_display_create( + state, + width, + height, + name, + scale, + packet_client::AttachTo::None, + ) + .await; } Subcommands::DisplayList => { wvr_display_list(state).await; @@ -102,11 +126,17 @@ async fn run_once(state: &mut WayVRClientState, args: Args) -> anyhow::Result<() let handle = serde_json::from_str(&handle).context("Invalid handle")?; wvr_display_remove(state, handle).await; } - Subcommands::DisplaySetVisible { handle, visible_0_or_1 } => { + Subcommands::DisplaySetVisible { + handle, + visible_0_or_1, + } => { let handle = serde_json::from_str(&handle).context("Invalid handle")?; wvr_display_set_visible(state, handle, visible_0_or_1 != 0).await; } - Subcommands::WindowSetVisible { handle, visible_0_or_1 } => { + Subcommands::WindowSetVisible { + handle, + visible_0_or_1, + } => { let handle = serde_json::from_str(&handle).context("Invalid handle")?; wvr_window_set_visible(state, handle, visible_0_or_1 != 0).await; } @@ -121,29 +151,52 @@ async fn run_once(state: &mut WayVRClientState, args: Args) -> anyhow::Result<() let handle = serde_json::from_str(&handle).context("Invalid handle")?; wvr_process_terminate(state, handle).await; } - Subcommands::ProcessLaunch { exec, name, env, target_display, args } => { + Subcommands::ProcessLaunch { + exec, + name, + env, + target_display, + args, + } => { let handle = serde_json::from_str(&target_display).context("Invalid target_display")?; wvr_process_launch(state, exec, name, env, handle, args, HashMap::new()).await; } - Subcommands::Haptics { intensity, duration, frequency } => { + Subcommands::Haptics { + intensity, + duration, + frequency, + } => { wlx_haptics(state, intensity, duration, frequency).await; } - Subcommands::PanelModify { overlay, element, command } => { + Subcommands::PanelModify { + overlay, + element, + command, + } => { let command = match command { - SubcommandPanelModify::SetText { text } => packet_client::WlxModifyPanelCommand::SetText(text), - SubcommandPanelModify::SetColor { hex_color } => packet_client::WlxModifyPanelCommand::SetColor(hex_color), - SubcommandPanelModify::SetImage { absolute_path } => packet_client::WlxModifyPanelCommand::SetImage(absolute_path), - SubcommandPanelModify::SetVisible { visible_0_or_1 } => packet_client::WlxModifyPanelCommand::SetVisible(visible_0_or_1 != 0), - SubcommandPanelModify::SetStickyState { sticky_state_0_or_1 } => packet_client::WlxModifyPanelCommand::SetStickyState(sticky_state_0_or_1 != 0), + SubcommandPanelModify::SetText { text } => { + packet_client::WlxModifyPanelCommand::SetText(text) + } + SubcommandPanelModify::SetColor { hex_color } => { + packet_client::WlxModifyPanelCommand::SetColor(hex_color) + } + SubcommandPanelModify::SetImage { absolute_path } => { + packet_client::WlxModifyPanelCommand::SetImage(absolute_path) + } + SubcommandPanelModify::SetVisible { visible_0_or_1 } => { + packet_client::WlxModifyPanelCommand::SetVisible(visible_0_or_1 != 0) + } + SubcommandPanelModify::SetStickyState { + sticky_state_0_or_1, + } => packet_client::WlxModifyPanelCommand::SetStickyState(sticky_state_0_or_1 != 0), }; - + wlx_panel_modify(state, overlay, element, command).await; } } Ok(()) } - /// A command-line interface for WayVR IPC #[derive(clap::Parser, Debug)] #[command(version, about, long_about = None)] @@ -161,96 +214,92 @@ struct Args { enum Subcommands { /// Read commands from stdout, one per line. Batch { - /// Stop on the first error - #[arg(short, long)] - fail_fast: bool, + /// Stop on the first error + #[arg(short, long)] + fail_fast: bool, }, /// Get the positions of HMD & controllers InputState, /// Create a new WayVR display - DisplayCreate{ - width: u16, - height: u16, - name: String, + DisplayCreate { + width: u16, + height: u16, + name: String, #[arg(short, long)] - scale: Option, - - //attach_to: packet_client::AttachTo, + scale: Option, + //attach_to: packet_client::AttachTo, }, /// List WayVR displays DisplayList, /// Retrieve information about a single WayVR display DisplayGet { /// A display handle JSON returned by DisplayList or DisplayCreate - handle: String, + handle: String, }, /// List windows attached to a WayVR display DisplayWindowList { /// A display handle JSON returned by DisplayList or DisplayCreate - handle: String, + handle: String, }, /// Delete a WayVR display DisplayRemove { /// A display handle JSON returned by DisplayList or DisplayCreate - handle: String, + handle: String, }, /// Change the visibility of a WayVR display DisplaySetVisible { /// A display handle JSON returned by DisplayList or DisplayCreate - handle: String, - visible_0_or_1: u8, + handle: String, + visible_0_or_1: u8, }, // DisplaySetLayout skipped - /// Change the visibility of a window on a WayVR display WindowSetVisible { /// A JSON window handle returned by DisplayWindowList - handle: String, - visible_0_or_1: u8, + handle: String, + visible_0_or_1: u8, }, /// Retrieve information about a WayVR-managed process ProcessGet { - /// A JSON process handle returned by ProcessList or ProcessLaunch - handle: String, - + /// A JSON process handle returned by ProcessList or ProcessLaunch + handle: String, }, /// List all processes managed by WayVR ProcessList, /// Terminate a WayVR-managed process ProcessTerminate { /// A JSON process handle returned by ProcessList or ProcessLaunch - handle: String, + handle: String, }, /// Launch a new process inside WayVR ProcessLaunch { - exec: String, - name: String, - env: Vec, + exec: String, + name: String, + env: Vec, /// A display handle JSON returned by DisplayList or DisplayCreate - target_display: String, - args: String, + target_display: String, + args: String, }, /// Trigger haptics on the user's controller Haptics { #[arg(short, long, default_value = "0.25")] - intensity: f32, - #[arg(short, long , default_value = "0.1")] - duration: f32, + intensity: f32, #[arg(short, long, default_value = "0.1")] - frequency: f32, + duration: f32, + #[arg(short, long, default_value = "0.1")] + frequency: f32, }, /// Apply a modification to a panel element PanelModify { /// The name of the overlay (XML file name without extension) - overlay: String, + overlay: String, /// The id of the element to modify, as set in the XML - element: String, + element: String, /// Command to execute #[command(subcommand)] - command: SubcommandPanelModify, - } - + command: SubcommandPanelModify, + }, } #[derive(clap::Parser, Debug)] @@ -271,11 +320,7 @@ enum SubcommandPanelModify { absolute_path: String, }, /// Set the visibility of a
, ,