wayvrctl switch-set
This commit is contained in:
@@ -410,11 +410,16 @@ impl WayVRClient {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn fn_wlx_overlay_show_hide(client: WayVRClientMutex) -> anyhow::Result<()> {
|
pub async fn fn_wlx_show_hide(client: WayVRClientMutex) -> anyhow::Result<()> {
|
||||||
send_only!(client, &PacketClient::WlxShowHide);
|
send_only!(client, &PacketClient::WlxShowHide);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn fn_wlx_switch_set(client: WayVRClientMutex, set: Option<usize>) -> anyhow::Result<()> {
|
||||||
|
send_only!(client, &PacketClient::WlxSwitchSet(set));
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
pub async fn fn_wlx_modify_panel(
|
pub async fn fn_wlx_modify_panel(
|
||||||
client: WayVRClientMutex,
|
client: WayVRClientMutex,
|
||||||
params: packet_client::WlxModifyPanelParams,
|
params: packet_client::WlxModifyPanelParams,
|
||||||
|
|||||||
@@ -68,4 +68,5 @@ pub enum PacketClient {
|
|||||||
WlxModifyPanel(WlxModifyPanelParams),
|
WlxModifyPanel(WlxModifyPanelParams),
|
||||||
WlxDeviceHaptics(usize, WlxHapticsParams),
|
WlxDeviceHaptics(usize, WlxHapticsParams),
|
||||||
WlxShowHide,
|
WlxShowHide,
|
||||||
|
WlxSwitchSet(Option<usize>),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,10 @@ where
|
|||||||
WayVRSignal::ShowHide => {
|
WayVRSignal::ShowHide => {
|
||||||
app.tasks.enqueue(TaskType::Overlay(OverlayTask::ShowHide));
|
app.tasks.enqueue(TaskType::Overlay(OverlayTask::ShowHide));
|
||||||
}
|
}
|
||||||
|
WayVRSignal::SwitchSet(set) => {
|
||||||
|
app.tasks
|
||||||
|
.enqueue(TaskType::Overlay(OverlayTask::SwitchSet(set)));
|
||||||
|
}
|
||||||
WayVRSignal::DropOverlay(overlay_id) => {
|
WayVRSignal::DropOverlay(overlay_id) => {
|
||||||
app.tasks
|
app.tasks
|
||||||
.enqueue(TaskType::Overlay(OverlayTask::Drop(OverlaySelector::Id(
|
.enqueue(TaskType::Overlay(OverlayTask::Drop(OverlaySelector::Id(
|
||||||
|
|||||||
@@ -341,10 +341,14 @@ impl Connection {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_wlx_overlay_show_hide(params: &mut TickParams) {
|
fn handle_wlx_show_hide(params: &mut TickParams) {
|
||||||
params.signals.send(WayVRSignal::ShowHide);
|
params.signals.send(WayVRSignal::ShowHide);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn handle_wlx_switch_set(params: &mut TickParams, set: Option<usize>) {
|
||||||
|
params.signals.send(WayVRSignal::SwitchSet(set));
|
||||||
|
}
|
||||||
|
|
||||||
fn handle_wlx_panel(
|
fn handle_wlx_panel(
|
||||||
params: &mut TickParams,
|
params: &mut TickParams,
|
||||||
custom_params: packet_client::WlxModifyPanelParams,
|
custom_params: packet_client::WlxModifyPanelParams,
|
||||||
@@ -414,7 +418,10 @@ impl Connection {
|
|||||||
Self::handle_wlx_device_haptics(params, device, haptics_params);
|
Self::handle_wlx_device_haptics(params, device, haptics_params);
|
||||||
}
|
}
|
||||||
PacketClient::WlxShowHide => {
|
PacketClient::WlxShowHide => {
|
||||||
Self::handle_wlx_overlay_show_hide(params);
|
Self::handle_wlx_show_hide(params);
|
||||||
|
}
|
||||||
|
PacketClient::WlxSwitchSet(set) => {
|
||||||
|
Self::handle_wlx_switch_set(params, set);
|
||||||
}
|
}
|
||||||
PacketClient::WlxModifyPanel(custom_params) => {
|
PacketClient::WlxModifyPanel(custom_params) => {
|
||||||
Self::handle_wlx_panel(params, custom_params);
|
Self::handle_wlx_panel(params, custom_params);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ pub enum WayVRSignal {
|
|||||||
BroadcastStateChanged(wayvr_ipc::packet_server::WvrStateChanged),
|
BroadcastStateChanged(wayvr_ipc::packet_server::WvrStateChanged),
|
||||||
DeviceHaptics(usize, crate::backend::input::Haptics),
|
DeviceHaptics(usize, crate::backend::input::Haptics),
|
||||||
DropOverlay(crate::windowing::OverlayID),
|
DropOverlay(crate::windowing::OverlayID),
|
||||||
|
SwitchSet(Option<usize>),
|
||||||
ShowHide,
|
ShowHide,
|
||||||
CustomTask(crate::backend::task::ModifyPanelTask),
|
CustomTask(crate::backend::task::ModifyPanelTask),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -751,7 +751,7 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
new_set: Option<usize>,
|
new_set: Option<usize>,
|
||||||
keep_transforms: bool,
|
keep_transforms: bool,
|
||||||
) {
|
) {
|
||||||
if new_set == self.current_set {
|
if new_set == self.current_set || new_set.is_some_and(|x| x >= self.sets.len()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -766,11 +766,6 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let Some(new_set) = new_set {
|
if let Some(new_set) = new_set {
|
||||||
if new_set >= self.sets.len() {
|
|
||||||
log::error!("switch_to_set: new_set is out of range ({new_set:?})");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut num_overlays = 0;
|
let mut num_overlays = 0;
|
||||||
let ws = &mut self.sets[new_set];
|
let ws = &mut self.sets[new_set];
|
||||||
for (id, data) in self.overlays.iter_mut().filter(|(_, d)| !d.config.global) {
|
for (id, data) in self.overlays.iter_mut().filter(|(_, d)| !d.config.global) {
|
||||||
|
|||||||
@@ -156,14 +156,22 @@ pub async fn wlx_device_haptics(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn wlx_overlay_show_hide(state: &mut WayVRClientState) {
|
pub async fn wlx_show_hide(state: &mut WayVRClientState) {
|
||||||
handle_empty_result(
|
handle_empty_result(
|
||||||
WayVRClient::fn_wlx_overlay_show_hide(state.wayvr_client.clone())
|
WayVRClient::fn_wlx_show_hide(state.wayvr_client.clone())
|
||||||
.await
|
.await
|
||||||
.context("failed to trigger overlay show hide"),
|
.context("failed to trigger overlay show hide"),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn wlx_switch_set(state: &mut WayVRClientState, set: Option<usize>) {
|
||||||
|
handle_empty_result(
|
||||||
|
WayVRClient::fn_wlx_switch_set(state.wayvr_client.clone(), set)
|
||||||
|
.await
|
||||||
|
.context("failed to switch to set"),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
pub async fn wlx_panel_modify(
|
pub async fn wlx_panel_modify(
|
||||||
state: &mut WayVRClientState,
|
state: &mut WayVRClientState,
|
||||||
overlay: String,
|
overlay: String,
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ use wayvr_ipc::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use crate::helper::{
|
use crate::helper::{
|
||||||
WayVRClientState, wlx_device_haptics, wlx_input_state, wlx_overlay_show_hide, wlx_panel_modify,
|
WayVRClientState, wlx_device_haptics, wlx_input_state, wlx_panel_modify, wlx_show_hide,
|
||||||
wvr_process_get, wvr_process_launch, wvr_process_list, wvr_process_terminate, wvr_window_list,
|
wlx_switch_set, wvr_process_get, wvr_process_launch, wvr_process_list, wvr_process_terminate,
|
||||||
wvr_window_set_visible,
|
wvr_window_list, wvr_window_set_visible,
|
||||||
};
|
};
|
||||||
|
|
||||||
mod helper;
|
mod helper;
|
||||||
@@ -164,7 +164,7 @@ async fn run_once(state: &mut WayVRClientState, args: Args) -> anyhow::Result<()
|
|||||||
wlx_device_haptics(state, device, intensity, duration, frequency).await;
|
wlx_device_haptics(state, device, intensity, duration, frequency).await;
|
||||||
}
|
}
|
||||||
Subcommands::ShowHide {} => {
|
Subcommands::ShowHide {} => {
|
||||||
wlx_overlay_show_hide(state).await;
|
wlx_show_hide(state).await;
|
||||||
}
|
}
|
||||||
Subcommands::PanelModify {
|
Subcommands::PanelModify {
|
||||||
overlay,
|
overlay,
|
||||||
@@ -191,6 +191,10 @@ async fn run_once(state: &mut WayVRClientState, args: Args) -> anyhow::Result<()
|
|||||||
|
|
||||||
wlx_panel_modify(state, overlay, element, command).await;
|
wlx_panel_modify(state, overlay, element, command).await;
|
||||||
}
|
}
|
||||||
|
Subcommands::SwitchSet { set_or_0: set } => {
|
||||||
|
let set = if set <= 0 { None } else { Some((set - 1) as _) };
|
||||||
|
wlx_switch_set(state, set).await;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@@ -283,6 +287,10 @@ enum Subcommands {
|
|||||||
#[command(subcommand)]
|
#[command(subcommand)]
|
||||||
command: SubcommandPanelModify,
|
command: SubcommandPanelModify,
|
||||||
},
|
},
|
||||||
|
SwitchSet {
|
||||||
|
/// Set number to switch to, 0 to hide all sets
|
||||||
|
set_or_0: usize,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, clap::ValueEnum)]
|
#[derive(Debug, Clone, Copy, clap::ValueEnum)]
|
||||||
|
|||||||
Reference in New Issue
Block a user