Files
wayvr/wayvr-ipc/src/packet_client.rs
2026-01-09 23:38:47 +09:00

72 lines
1.7 KiB
Rust

// Contents of this file should be the same as on wayvr.
use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use super::{ipc::Serial, packet_server};
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Handshake {
pub protocol_version: u32, // always set to PROTOCOL_VERSION
pub magic: String, // always set to CONNECTION_MAGIC
pub client_name: String,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize)]
pub enum PositionMode {
Float,
Anchor,
Static,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WvrProcessLaunchParams {
pub name: String,
pub exec: String,
pub env: Vec<String>,
pub args: String,
pub icon: Option<String>,
pub resolution: [u32; 2],
pub pos_mode: PositionMode,
pub userdata: HashMap<String, String>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct WlxHapticsParams {
pub intensity: f32,
pub duration: f32,
pub frequency: f32,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum WlxModifyPanelCommand {
SetText(String),
SetColor(String),
SetImage(String),
SetVisible(bool),
SetStickyState(bool),
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct WlxModifyPanelParams {
pub overlay: String,
pub element: String,
pub command: WlxModifyPanelCommand,
}
#[derive(Debug, Serialize, Deserialize)]
pub enum PacketClient {
Handshake(Handshake),
WvrWindowList(Serial),
WvrWindowSetVisible(packet_server::WvrWindowHandle, bool),
WvrProcessGet(Serial, packet_server::WvrProcessHandle),
WvrProcessLaunch(Serial, WvrProcessLaunchParams),
WvrProcessList(Serial),
WvrProcessTerminate(packet_server::WvrProcessHandle),
WlxInputState(Serial),
WlxModifyPanel(WlxModifyPanelParams),
WlxDeviceHaptics(usize, WlxHapticsParams),
WlxShowHide,
}