From feba52c28f28a7dcfb3e3e483244ae2145e18457 Mon Sep 17 00:00:00 2001 From: Aleksander Date: Sat, 3 Jan 2026 15:00:31 +0100 Subject: [PATCH] dash and wgui sounds --- Cargo.lock | 1 + dash-frontend/assets/sound/app_start.mp3 | Bin 0 -> 53491 bytes dash-frontend/assets/sound/startup.mp3 | Bin 0 -> 70579 bytes dash-frontend/src/frontend.rs | 48 ++++++++++---- dash-frontend/src/util/pactl_wrapper.rs | 9 ++- uidev/assets/sound/wgui_button_press.mp3 | 1 + uidev/assets/sound/wgui_button_release.mp3 | 1 + uidev/assets/sound/wgui_mouse_enter.mp3 | 1 + uidev/src/main.rs | 18 ++++-- uidev/src/testbed/mod.rs | 15 ++++- uidev/src/testbed/testbed_any.rs | 17 ++--- uidev/src/testbed/testbed_dashboard.rs | 18 +++--- uidev/src/testbed/testbed_generic.rs | 16 +++-- wgui/src/components/button.rs | 4 ++ wgui/src/event.rs | 5 ++ wgui/src/layout.rs | 61 ++++++++++-------- wgui/src/lib.rs | 1 + wgui/src/sound.rs | 6 ++ wlx-common/Cargo.toml | 1 + wlx-common/src/audio.rs | 48 ++++++++++++++ wlx-overlay-s/src/app_misc.rs | 8 +++ .../src/assets/sound/wgui_button_press.mp3 | Bin 0 -> 9523 bytes .../src/assets/sound/wgui_button_release.mp3 | Bin 0 -> 9523 bytes .../src/assets/sound/wgui_mouse_enter.mp3 | Bin 0 -> 9523 bytes wlx-overlay-s/src/gui/panel/mod.rs | 22 ++++--- wlx-overlay-s/src/main.rs | 1 + wlx-overlay-s/src/overlays/anchor.rs | 4 +- wlx-overlay-s/src/overlays/custom.rs | 2 +- wlx-overlay-s/src/overlays/dashboard.rs | 20 ++++-- wlx-overlay-s/src/overlays/edit/mod.rs | 2 +- .../src/overlays/keyboard/builder.rs | 12 +++- wlx-overlay-s/src/overlays/toast.rs | 5 +- wlx-overlay-s/src/overlays/watch.rs | 2 +- wlx-overlay-s/src/state.rs | 5 +- 34 files changed, 258 insertions(+), 96 deletions(-) create mode 100644 dash-frontend/assets/sound/app_start.mp3 create mode 100644 dash-frontend/assets/sound/startup.mp3 create mode 120000 uidev/assets/sound/wgui_button_press.mp3 create mode 120000 uidev/assets/sound/wgui_button_release.mp3 create mode 120000 uidev/assets/sound/wgui_mouse_enter.mp3 create mode 100644 wgui/src/sound.rs create mode 100644 wlx-overlay-s/src/app_misc.rs create mode 100644 wlx-overlay-s/src/assets/sound/wgui_button_press.mp3 create mode 100644 wlx-overlay-s/src/assets/sound/wgui_button_release.mp3 create mode 100644 wlx-overlay-s/src/assets/sound/wgui_mouse_enter.mp3 diff --git a/Cargo.lock b/Cargo.lock index aa3d800..01f674b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6801,6 +6801,7 @@ dependencies = [ "serde", "smol", "wayvr-ipc", + "wgui", "xdg 3.0.0", ] diff --git a/dash-frontend/assets/sound/app_start.mp3 b/dash-frontend/assets/sound/app_start.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..155f110e4ebf31caeff595275c969aa0905d629c GIT binary patch literal 53491 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%0D|=(n>`q8>=6!POj@AI*hD?$z-l}kUa)IT~PJ70S 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 literal 0 HcmV?d00001 diff --git a/dash-frontend/src/frontend.rs b/dash-frontend/src/frontend.rs index 6e4e555..f99ac0d 100644 --- a/dash-frontend/src/frontend.rs +++ b/dash-frontend/src/frontend.rs @@ -8,19 +8,20 @@ use wgui::{ font_config::WguiFontConfig, globals::WguiGlobals, i18n::Translation, - layout::{Layout, LayoutParams, WidgetID}, + layout::{Layout, LayoutParams, LayoutUpdateParams, LayoutUpdateResult, WidgetID}, parser::{Fetchable, ParseDocumentParams, ParserState}, + sound::WguiSoundType, task::Tasks, widget::{label::WidgetLabel, rectangle::WidgetRectangle}, windowing::{WguiWindow, WguiWindowParams, WguiWindowParamsExtra, WguiWindowPlacement}, }; -use wlx_common::{dash_interface::BoxDashInterface, timestep::Timestep}; +use wlx_common::{audio, dash_interface::BoxDashInterface, timestep::Timestep}; use crate::{ assets, settings, tab::{ - apps::TabApps, games::TabGames, home::TabHome, monado::TabMonado, processes::TabProcesses, settings::TabSettings, - Tab, TabType, + Tab, TabType, apps::TabApps, games::TabGames, home::TabHome, monado::TabMonado, processes::TabProcesses, + settings::TabSettings, }, util::{ desktop_finder::DesktopFinder, @@ -68,6 +69,13 @@ pub struct Frontend { pub(crate) desktop_finder: DesktopFinder, } +pub struct FrontendUpdateParams<'a, T> { + pub data: &'a mut T, + pub width: f32, + pub height: f32, + pub timestep_alpha: f32, +} + pub struct InitParams { pub settings: Box, pub interface: BoxDashInterface, @@ -164,15 +172,27 @@ impl Frontend { Ok(frontend) } - pub fn update(&mut self, data: &mut T, width: f32, height: f32, timestep_alpha: f32) -> anyhow::Result<()> { + pub fn play_startup_sound( + &mut self, + audio_system: &mut audio::AudioSystem, + audio_sample_player: &mut audio::SamplePlayer, + ) -> anyhow::Result<()> { + // play startup sound + let mut assets = self.globals.assets_builtin(); + audio_sample_player.register_mp3_sample_from_assets("dash_startup", assets.as_mut(), "sound/startup.mp3")?; + audio_sample_player.play_sample(audio_system, "dash_startup"); + Ok(()) + } + + pub fn update(&mut self, params: FrontendUpdateParams) -> anyhow::Result { let mut tasks = self.tasks.drain(); while let Some(task) = tasks.pop_front() { - self.process_task(data, task)?; + self.process_task(params.data, task)?; } if let Some(mut tab) = self.current_tab.take() { - tab.update(self, data)?; + tab.update(self, params.data)?; self.current_tab = Some(tab); } @@ -180,13 +200,14 @@ impl Frontend { // process async runtime tasks while self.executor.try_tick() {} - self.tick(width, height, timestep_alpha)?; + let res = self.tick(params)?; + self.ticks += 1; - Ok(()) + Ok(res) } - fn tick(&mut self, width: f32, height: f32, timestep_alpha: f32) -> anyhow::Result<()> { + fn tick(&mut self, params: FrontendUpdateParams) -> anyhow::Result { // fixme: timer events instead of this thing if self.ticks.is_multiple_of(1000) { self.update_time()?; @@ -197,11 +218,12 @@ impl Frontend { while self.timestep.on_tick() { self.toast_manager.tick(&self.globals, &mut self.layout)?; } - - self.layout.update(Vec2::new(width, height), timestep_alpha)?; } - Ok(()) + self.layout.update(&mut LayoutUpdateParams { + size: Vec2::new(params.width, params.height), + timestep_alpha: params.timestep_alpha, + }) } fn update_time(&mut self) -> anyhow::Result<()> { diff --git a/dash-frontend/src/util/pactl_wrapper.rs b/dash-frontend/src/util/pactl_wrapper.rs index 6fe9f2c..e1d5495 100644 --- a/dash-frontend/src/util/pactl_wrapper.rs +++ b/dash-frontend/src/util/pactl_wrapper.rs @@ -68,7 +68,7 @@ pub struct CardProperties { pub device_name: String, // alsa_card.pci-0000_0c_00.4 #[serde(rename = "device.nick")] - pub device_nick: String, // HD-Audio Generic + pub device_nick: Option, // HD-Audio Generic } #[derive(Clone, Serialize, Deserialize, Debug)] @@ -296,7 +296,12 @@ pub fn list_cards() -> anyhow::Result> { let mut cards: Vec = serde_json::from_str(json_str)?; // exclude card which has "Loopback" in name - cards.retain(|card| card.properties.device_nick != "Loopback"); + cards.retain(|card| { + if let Some(nick) = &card.properties.device_nick { + return nick != "Loopback"; + }; + true + }); Ok(cards) } diff --git a/uidev/assets/sound/wgui_button_press.mp3 b/uidev/assets/sound/wgui_button_press.mp3 new file mode 120000 index 0000000..2425ade --- /dev/null +++ b/uidev/assets/sound/wgui_button_press.mp3 @@ -0,0 +1 @@ +../../../wlx-overlay-s/src/assets/sound/wgui_button_press.mp3 \ No newline at end of file diff --git a/uidev/assets/sound/wgui_button_release.mp3 b/uidev/assets/sound/wgui_button_release.mp3 new file mode 120000 index 0000000..7511fdc --- /dev/null +++ b/uidev/assets/sound/wgui_button_release.mp3 @@ -0,0 +1 @@ +../../../wlx-overlay-s/src/assets/sound/wgui_button_release.mp3 \ No newline at end of file diff --git a/uidev/assets/sound/wgui_mouse_enter.mp3 b/uidev/assets/sound/wgui_mouse_enter.mp3 new file mode 120000 index 0000000..6971fa1 --- /dev/null +++ b/uidev/assets/sound/wgui_mouse_enter.mp3 @@ -0,0 +1 @@ +../../../wlx-overlay-s/src/assets/sound/wgui_mouse_enter.mp3 \ No newline at end of file diff --git a/uidev/src/main.rs b/uidev/src/main.rs index ba3b1a5..489031b 100644 --- a/uidev/src/main.rs +++ b/uidev/src/main.rs @@ -18,6 +18,7 @@ use vulkano::{ sync::GpuFuture, }; use wgui::{ + assets::AssetProvider, event::{MouseButtonIndex, MouseDownEvent, MouseMotionEvent, MouseUpEvent, MouseWheelEvent}, gfx::{WGfx, cmd::WGfxClearMode}, renderer_vk::{self}, @@ -27,7 +28,7 @@ use winit::{ event_loop::ControlFlow, keyboard::{KeyCode, PhysicalKey}, }; -use wlx_common::timestep::Timestep; +use wlx_common::{audio, timestep::Timestep}; use crate::{ rate_limiter::RateLimiter, @@ -59,12 +60,15 @@ fn init_logging() { .init(); } -fn load_testbed() -> anyhow::Result> { +fn load_testbed(audio_sample_player: &mut audio::SamplePlayer) -> anyhow::Result> { + let mut assets = Box::new(assets::Asset {}); + audio_sample_player.register_wgui_samples(assets.as_mut())?; + let name = std::env::var("TESTBED").unwrap_or_default(); Ok(match name.as_str() { "dashboard" => Box::new(TestbedDashboard::new()?), - "" => Box::new(TestbedGeneric::new()?), - _ => Box::new(TestbedAny::new(&name)?), + "" => Box::new(TestbedGeneric::new(assets)?), + _ => Box::new(TestbedAny::new(assets, &name)?), }) } @@ -98,7 +102,9 @@ fn main() -> Result<(), Box> { let mut scale = window.scale_factor() as f32; - let mut testbed = load_testbed()?; + let mut audio_system = audio::AudioSystem::new(); + let mut audio_sample_player = audio::SamplePlayer::new(); + let mut testbed = load_testbed(&mut audio_sample_player)?; let mut mouse = Vec2::ZERO; @@ -291,6 +297,8 @@ fn main() -> Result<(), Box> { width: (swapchain_size[0] as f32 / scale) as _, height: (swapchain_size[1] as f32 / scale) as _, timestep_alpha: timestep.alpha, + audio_system: &mut audio_system, + audio_sample_player: &mut audio_sample_player, }) .unwrap(); diff --git a/uidev/src/testbed/mod.rs b/uidev/src/testbed/mod.rs index 2bde392..e0cd548 100644 --- a/uidev/src/testbed/mod.rs +++ b/uidev/src/testbed/mod.rs @@ -1,13 +1,24 @@ -use wgui::layout::Layout; +use wgui::layout::{Layout, LayoutUpdateResult}; +use wlx_common::audio; pub mod testbed_any; pub mod testbed_dashboard; pub mod testbed_generic; -pub struct TestbedUpdateParams { +pub struct TestbedUpdateParams<'a> { pub width: f32, pub height: f32, pub timestep_alpha: f32, + pub audio_system: &'a mut audio::AudioSystem, + pub audio_sample_player: &'a mut audio::SamplePlayer, +} + +impl<'a> TestbedUpdateParams<'a> { + pub fn process_layout_result(&mut self, res: LayoutUpdateResult) { + self + .audio_sample_player + .play_wgui_samples(self.audio_system, res.sounds_to_play); + } } pub trait Testbed { diff --git a/uidev/src/testbed/testbed_any.rs b/uidev/src/testbed/testbed_any.rs index 5380762..ab182ea 100644 --- a/uidev/src/testbed/testbed_any.rs +++ b/uidev/src/testbed/testbed_any.rs @@ -9,7 +9,7 @@ use wgui::{ assets::AssetPath, font_config::WguiFontConfig, globals::WguiGlobals, - layout::{Layout, LayoutParams}, + layout::{Layout, LayoutParams, LayoutUpdateParams}, parser::{ParseDocumentParams, ParserState}, }; @@ -21,7 +21,7 @@ pub struct TestbedAny { } impl TestbedAny { - pub fn new(name: &str) -> anyhow::Result { + pub fn new(assets: Box, name: &str) -> anyhow::Result { let path = if name.ends_with(".xml") { AssetPath::FileOrBuiltIn(name) } else { @@ -29,7 +29,7 @@ impl TestbedAny { }; let globals = WguiGlobals::new( - Box::new(assets::Asset {}), + assets, wgui::globals::Defaults::default(), &WguiFontConfig::default(), PathBuf::new(), // cwd @@ -48,11 +48,12 @@ impl TestbedAny { } impl Testbed for TestbedAny { - fn update(&mut self, params: TestbedUpdateParams) -> anyhow::Result<()> { - self.layout.update( - Vec2::new(params.width, params.height), - params.timestep_alpha, - )?; + fn update(&mut self, mut params: TestbedUpdateParams) -> anyhow::Result<()> { + let res = self.layout.update(&mut LayoutUpdateParams { + size: Vec2::new(params.width, params.height), + timestep_alpha: params.timestep_alpha, + })?; + params.process_layout_result(res); Ok(()) } diff --git a/uidev/src/testbed/testbed_dashboard.rs b/uidev/src/testbed/testbed_dashboard.rs index 76e29f6..2a67350 100644 --- a/uidev/src/testbed/testbed_dashboard.rs +++ b/uidev/src/testbed/testbed_dashboard.rs @@ -1,6 +1,6 @@ use crate::testbed::{Testbed, TestbedUpdateParams}; use dash_frontend::{ - frontend, + frontend::{self, FrontendUpdateParams}, settings::{self, SettingsIO}, }; use wgui::layout::Layout; @@ -70,13 +70,15 @@ impl TestbedDashboard { } impl Testbed for TestbedDashboard { - fn update(&mut self, params: TestbedUpdateParams) -> anyhow::Result<()> { - self.frontend.update( - &mut (), /* nothing */ - params.width, - params.height, - params.timestep_alpha, - ) + fn update(&mut self, mut params: TestbedUpdateParams) -> anyhow::Result<()> { + let res = self.frontend.update(FrontendUpdateParams { + data: &mut (), /* nothing */ + width: params.width, + height: params.height, + timestep_alpha: params.timestep_alpha, + })?; + params.process_layout_result(res); + Ok(()) } fn layout(&mut self) -> &mut Layout { diff --git a/uidev/src/testbed/testbed_generic.rs b/uidev/src/testbed/testbed_generic.rs index b0f7116..bfa5ee2 100644 --- a/uidev/src/testbed/testbed_generic.rs +++ b/uidev/src/testbed/testbed_generic.rs @@ -17,7 +17,7 @@ use wgui::{ font_config::WguiFontConfig, globals::WguiGlobals, i18n::Translation, - layout::{Layout, LayoutParams, Widget}, + layout::{Layout, LayoutParams, LayoutUpdateParams, Widget}, parser::{Fetchable, ParseDocumentExtra, ParseDocumentParams, ParserState}, taffy, task::Tasks, @@ -73,11 +73,11 @@ fn handle_button_click(button: Rc, label: Widget, text: &'stati } impl TestbedGeneric { - pub fn new() -> anyhow::Result { + pub fn new(assets: Box) -> anyhow::Result { const XML_PATH: AssetPath = AssetPath::BuiltIn("gui/various_widgets.xml"); let globals = WguiGlobals::new( - Box::new(assets::Asset {}), + assets, wgui::globals::Defaults::default(), &WguiFontConfig::default(), PathBuf::new(), // cwd @@ -223,10 +223,12 @@ impl Testbed for TestbedGeneric { let data = self.data.clone(); let mut data = data.borrow_mut(); - self.layout.update( - Vec2::new(params.width, params.height), - params.timestep_alpha, - )?; + let res = self.layout.update(&mut LayoutUpdateParams { + size: Vec2::new(params.width, params.height), + timestep_alpha: params.timestep_alpha, + })?; + + params.process_layout_result(res); for task in self.tasks.drain() { self.process_task(&task, &mut params, &mut data)?; diff --git a/wgui/src/components/button.rs b/wgui/src/components/button.rs index 43df154..772a3b4 100644 --- a/wgui/src/components/button.rs +++ b/wgui/src/components/button.rs @@ -10,6 +10,7 @@ use crate::{ text::{FontWeight, TextStyle, custom_glyph::CustomGlyphData}, util::centered_matrix, }, + sound::WguiSoundType, widget::{ self, ConstructEssentials, EventResult, WidgetData, label::{WidgetLabel, WidgetLabelParams}, @@ -270,6 +271,7 @@ fn register_event_mouse_enter( listeners.register( EventListenerKind::MouseEnter, Box::new(move |common, event_data, (), ()| { + common.alterables.play_sound(WguiSoundType::ButtonMouseEnter); common.alterables.trigger_haptics(); common.alterables.mark_redraw(); common @@ -332,6 +334,7 @@ fn register_event_mouse_press(state: Rc>, listeners: &mut EventLi ); common.alterables.trigger_haptics(); + common.alterables.play_sound(WguiSoundType::ButtonPress); common.alterables.mark_redraw(); if state.hovered { @@ -362,6 +365,7 @@ fn register_event_mouse_release( } common.alterables.trigger_haptics(); + common.alterables.play_sound(WguiSoundType::ButtonRelease); common.alterables.mark_redraw(); if state.down { diff --git a/wgui/src/event.rs b/wgui/src/event.rs index 83d8725..431b35b 100644 --- a/wgui/src/event.rs +++ b/wgui/src/event.rs @@ -11,6 +11,7 @@ use crate::{ animation::{self, Animation}, i18n::I18n, layout::{LayoutState, LayoutTask, WidgetID}, + sound::WguiSoundType, stack::{ScissorStack, Transform, TransformStack}, widget::{EventResult, WidgetData, WidgetObj}, }; @@ -140,6 +141,10 @@ impl EventAlterables { pub fn animate(&mut self, animation: Animation) { self.animations.push(animation); } + + pub fn play_sound(&mut self, sound_type: WguiSoundType) { + self.tasks.push(LayoutTask::PlaySound(sound_type)); + } } pub struct CallbackDataCommon<'a> { diff --git a/wgui/src/layout.rs b/wgui/src/layout.rs index 6e01962..5d2643c 100644 --- a/wgui/src/layout.rs +++ b/wgui/src/layout.rs @@ -1,6 +1,6 @@ use std::{ cell::{RefCell, RefMut}, - collections::{HashMap, HashSet, VecDeque}, + collections::{HashMap, HashSet}, io::Write, rc::{Rc, Weak}, }; @@ -11,6 +11,8 @@ use crate::{ drawing::{self, ANSI_BOLD_CODE, ANSI_RESET_CODE, Boundary, push_scissor_stack, push_transform_stack}, event::{self, CallbackDataCommon, EventAlterables}, globals::WguiGlobals, + sound::WguiSoundType, + task::Tasks, widget::{self, EventParams, EventResult, WidgetObj, WidgetState, WidgetStateFlags, div::WidgetDiv}, }; @@ -119,25 +121,24 @@ pub struct ModifyLayoutStateData<'a> { pub layout: &'a mut Layout, } +pub struct LayoutUpdateParams { + pub size: Vec2, // logical resolution + pub timestep_alpha: f32, +} + +pub struct LayoutUpdateResult { + pub sounds_to_play: Vec, +} + pub type ModifyLayoutStateFunc = Box anyhow::Result<()>>; pub enum LayoutTask { RemoveWidget(WidgetID), ModifyLayoutState(ModifyLayoutStateFunc), + PlaySound(WguiSoundType), } -#[derive(Clone)] -pub struct LayoutTasks(pub Rc>>); - -impl LayoutTasks { - fn new() -> Self { - Self(Rc::new(RefCell::new(VecDeque::new()))) - } - - pub fn push(&self, task: LayoutTask) { - self.0.borrow_mut().push_back(task); - } -} +pub type LayoutTasks = Tasks; pub struct Layout { pub state: LayoutState, @@ -146,6 +147,7 @@ pub struct Layout { components_to_refresh_once: HashSet, registered_components_to_refresh: HashMap, + sounds_to_play_once: Vec, pub widgets_to_tick: Vec, @@ -266,15 +268,12 @@ impl Layout { } pub fn get_parent(&self, widget_id: WidgetID) -> Option<(WidgetID, taffy::NodeId)> { - let Some(node_id) = self.state.nodes.get(widget_id) else { - return None; - }; + let node_id = self.state.nodes.get(widget_id)?; self.state.tree.parent(*node_id).map(|parent_id| { - let parent_widget_id = self.state.tree.get_node_context(parent_id).unwrap(); - (*parent_widget_id, parent_id) - } - ) + let parent_widget_id = self.state.tree.get_node_context(parent_id).unwrap(); + (*parent_widget_id, parent_id) + }) } fn collect_children_ids_recursive(&self, widget_id: WidgetID, out: &mut Vec<(WidgetID, taffy::NodeId)>) { @@ -575,6 +574,7 @@ impl Layout { registered_components_to_refresh: HashMap::new(), widgets_to_tick: Vec::new(), tasks: LayoutTasks::new(), + sounds_to_play_once: Vec::new(), }) } @@ -659,12 +659,17 @@ impl Layout { Ok(()) } - pub fn update(&mut self, size: Vec2, timestep_alpha: f32) -> anyhow::Result<()> { + pub fn update(&mut self, params: &mut LayoutUpdateParams) -> anyhow::Result { let mut alterables = EventAlterables::default(); - self.animations.process(&self.state, &mut alterables, timestep_alpha); + self + .animations + .process(&self.state, &mut alterables, params.timestep_alpha); self.process_alterables(alterables)?; - self.try_recompute_layout(size)?; - Ok(()) + self.try_recompute_layout(params.size)?; + + Ok(LayoutUpdateResult { + sounds_to_play: std::mem::take(&mut self.sounds_to_play_once), + }) } pub fn tick(&mut self) -> anyhow::Result<()> { @@ -677,8 +682,7 @@ impl Layout { } pub fn process_tasks(&mut self) -> anyhow::Result<()> { - let tasks = self.tasks.clone(); - let mut tasks = tasks.0.borrow_mut(); + let mut tasks = self.tasks.drain(); while let Some(task) = tasks.pop_front() { match task { LayoutTask::RemoveWidget(widget_id) => { @@ -687,6 +691,11 @@ impl Layout { LayoutTask::ModifyLayoutState(callback) => { (*callback)(ModifyLayoutStateData { layout: self })?; } + LayoutTask::PlaySound(sound) => { + if !self.sounds_to_play_once.contains(&sound) { + self.sounds_to_play_once.push(sound); + } + } } } diff --git a/wgui/src/lib.rs b/wgui/src/lib.rs index 218b95c..24c12fb 100644 --- a/wgui/src/lib.rs +++ b/wgui/src/lib.rs @@ -34,6 +34,7 @@ pub mod i18n; pub mod layout; pub mod parser; pub mod renderer_vk; +pub mod sound; pub mod stack; pub mod task; pub mod widget; diff --git a/wgui/src/sound.rs b/wgui/src/sound.rs new file mode 100644 index 0000000..389265d --- /dev/null +++ b/wgui/src/sound.rs @@ -0,0 +1,6 @@ +#[derive(Clone, Eq, PartialEq)] +pub enum WguiSoundType { + ButtonMouseEnter, + ButtonPress, + ButtonRelease, +} diff --git a/wlx-common/Cargo.toml b/wlx-common/Cargo.toml index 61c78db..75bedef 100644 --- a/wlx-common/Cargo.toml +++ b/wlx-common/Cargo.toml @@ -16,6 +16,7 @@ serde = { workspace = true, features = ["rc"] } xdg.workspace = true chrono = "0.4.42" smol = "2.0.2" +wgui = { path = "../wgui/" } rodio = { version = "0.21.1", default-features = false, features = [ "playback", "mp3", diff --git a/wlx-common/src/audio.rs b/wlx-common/src/audio.rs index 50394c8..257e705 100644 --- a/wlx-common/src/audio.rs +++ b/wlx-common/src/audio.rs @@ -1,6 +1,10 @@ use std::{collections::HashMap, io::Cursor}; use rodio::Source; +use wgui::{ + assets::{self, AssetProvider}, + sound::WguiSoundType, +}; pub struct AudioSystem { audio_stream: Option, @@ -15,6 +19,14 @@ pub struct SamplePlayer { samples: HashMap, } +fn get_sample_name_from_wgui_sound_type(sound: WguiSoundType) -> &'static str { + match sound { + WguiSoundType::ButtonMouseEnter => "wgui_mouse_enter", + WguiSoundType::ButtonPress => "wgui_button_press", + WguiSoundType::ButtonRelease => "wgui_button_release", + } +} + impl SamplePlayer { pub fn new() -> Self { Self { @@ -23,9 +35,39 @@ impl SamplePlayer { } pub fn register_sample(&mut self, sample_name: &str, sample: AudioSample) { + log::debug!("registering audio sample \"{sample_name}\""); self.samples.insert(String::from(sample_name), sample); } + pub fn register_mp3_sample_from_assets( + &mut self, + sample_name: &str, + assets: &mut dyn AssetProvider, + path: &str, + ) -> anyhow::Result<()> { + // load only once + if self.samples.contains_key(sample_name) { + return Ok(()); + } + + let data = assets.load_from_path(path)?; + self.register_sample(sample_name, AudioSample::from_mp3(&data)?); + + Ok(()) + } + + pub fn register_wgui_samples(&mut self, assets: &mut dyn AssetProvider) -> anyhow::Result<()> { + let mut load = |sound: WguiSoundType| -> anyhow::Result<()> { + let sample_name = get_sample_name_from_wgui_sound_type(sound); + self.register_mp3_sample_from_assets(sample_name, assets, &format!("sound/{}.mp3", sample_name)) + }; + + load(WguiSoundType::ButtonPress)?; + load(WguiSoundType::ButtonRelease)?; + load(WguiSoundType::ButtonMouseEnter)?; + Ok(()) + } + pub fn play_sample(&mut self, system: &mut AudioSystem, sample_name: &str) { let Some(sample) = self.samples.get(sample_name) else { log::error!("failed to play sample by name {}", sample_name); @@ -34,6 +76,12 @@ impl SamplePlayer { system.play_sample(sample); } + + pub fn play_wgui_samples(&mut self, system: &mut AudioSystem, samples: Vec) { + for sample in samples { + self.play_sample(system, get_sample_name_from_wgui_sound_type(sample)); + } + } } impl Default for SamplePlayer { diff --git a/wlx-overlay-s/src/app_misc.rs b/wlx-overlay-s/src/app_misc.rs new file mode 100644 index 0000000..8d854e2 --- /dev/null +++ b/wlx-overlay-s/src/app_misc.rs @@ -0,0 +1,8 @@ +use wgui::layout::LayoutUpdateResult; + +use crate::state::AppState; + +pub fn process_layout_result(app: &mut AppState, res: LayoutUpdateResult) { + app.audio_sample_player + .play_wgui_samples(&mut app.audio_system, res.sounds_to_play); +} diff --git a/wlx-overlay-s/src/assets/sound/wgui_button_press.mp3 b/wlx-overlay-s/src/assets/sound/wgui_button_press.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..ad20dad34ac6bedc501acfedab9fce25b8be1065 GIT binary patch literal 9523 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 literal 0 HcmV?d00001 diff --git a/wlx-overlay-s/src/assets/sound/wgui_button_release.mp3 b/wlx-overlay-s/src/assets/sound/wgui_button_release.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b3f1b7f7805bb1a939e5197beff4252cfe516a2d GIT binary patch literal 9523 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 literal 0 HcmV?d00001 diff --git a/wlx-overlay-s/src/assets/sound/wgui_mouse_enter.mp3 b/wlx-overlay-s/src/assets/sound/wgui_mouse_enter.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5ad3a82dfb8ca81e1240b6052e5e3a76c93377dd GIT binary patch literal 9523 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 literal 0 HcmV?d00001 diff --git a/wlx-overlay-s/src/gui/panel/mod.rs b/wlx-overlay-s/src/gui/panel/mod.rs index cbc3a49..10c5b84 100644 --- a/wlx-overlay-s/src/gui/panel/mod.rs +++ b/wlx-overlay-s/src/gui/panel/mod.rs @@ -13,7 +13,7 @@ use wgui::{ MouseMotionEvent, MouseUpEvent, MouseWheelEvent, }, gfx::cmd::WGfxClearMode, - layout::{Layout, LayoutParams, WidgetID}, + layout::{Layout, LayoutParams, LayoutUpdateParams, WidgetID}, parser::{CustomAttribsInfoOwned, Fetchable, ParserState}, renderer_vk::context::Context as WguiContext, widget::{EventResult, label::WidgetLabel}, @@ -22,6 +22,7 @@ use wlx_common::overlays::{BackendAttrib, BackendAttribValue}; use wlx_common::timestep::Timestep; use crate::{ + app_misc, backend::input::{Haptics, HoverResult, PointerHit, PointerMode}, state::AppState, subsystem::hid::WheelDelta, @@ -211,8 +212,15 @@ impl GuiPanel { }) } - pub fn update_layout(&mut self) -> anyhow::Result<()> { - self.layout.update(self.max_size, 0.0) + pub fn update_layout(&mut self, app: &mut AppState) -> anyhow::Result<()> { + app_misc::process_layout_result( + app, + self.layout.update(&mut LayoutUpdateParams { + size: self.max_size / self.gui_scale, + timestep_alpha: self.timestep.alpha, + })?, + ); + Ok(()) } pub fn push_event(&mut self, app: &mut AppState, event: &WguiEvent) -> EventResult { @@ -236,9 +244,9 @@ impl GuiPanel { } impl OverlayBackend for GuiPanel { - fn init(&mut self, _app: &mut AppState) -> anyhow::Result<()> { + fn init(&mut self, app: &mut AppState) -> anyhow::Result<()> { if self.layout.content_size.x * self.layout.content_size.y != 0.0 { - self.update_layout()?; + self.update_layout(app)?; self.interaction_transform = Some(ui_transform([ self.layout.content_size.x as _, self.layout.content_size.y as _, @@ -297,9 +305,7 @@ impl OverlayBackend for GuiPanel { fn render(&mut self, app: &mut AppState, rdr: &mut RenderResources) -> anyhow::Result<()> { self.context .update_viewport(&mut app.wgui_shared, rdr.extent, self.gui_scale)?; - self.layout - .update(self.max_size / self.gui_scale, self.timestep.alpha)?; - + self.update_layout(app)?; let globals = self.layout.state.globals.clone(); // sorry let mut globals = globals.get(); diff --git a/wlx-overlay-s/src/main.rs b/wlx-overlay-s/src/main.rs index c04fe0a..8b4e5e3 100644 --- a/wlx-overlay-s/src/main.rs +++ b/wlx-overlay-s/src/main.rs @@ -17,6 +17,7 @@ clippy::cargo_common_metadata, clippy::option_if_let_else )] +mod app_misc; mod backend; mod config; mod config_io; diff --git a/wlx-overlay-s/src/overlays/anchor.rs b/wlx-overlay-s/src/overlays/anchor.rs index a6e1307..529c168 100644 --- a/wlx-overlay-s/src/overlays/anchor.rs +++ b/wlx-overlay-s/src/overlays/anchor.rs @@ -16,7 +16,7 @@ pub static ANCHOR_NAME: LazyLock> = LazyLock::new(|| Arc::from("anchor" pub fn create_anchor(app: &mut AppState) -> anyhow::Result { let mut panel = GuiPanel::new_from_template(app, "gui/anchor.xml", (), Default::default())?; - panel.update_layout()?; + panel.update_layout(app)?; Ok(OverlayWindowConfig { name: ANCHOR_NAME.clone(), @@ -41,7 +41,7 @@ pub static GRAB_HELP_NAME: LazyLock> = LazyLock::new(|| Arc::from("grab pub fn create_grab_help(app: &mut AppState) -> anyhow::Result { let mut panel = GuiPanel::new_from_template(app, "gui/grab-help.xml", (), Default::default())?; - panel.update_layout()?; + panel.update_layout(app)?; let id_watch = panel.parser_state.data.get_widget_id("grabbing_watch")?; let id_static = panel.parser_state.data.get_widget_id("grabbing_static")?; diff --git a/wlx-overlay-s/src/overlays/custom.rs b/wlx-overlay-s/src/overlays/custom.rs index 933311b..862761c 100644 --- a/wlx-overlay-s/src/overlays/custom.rs +++ b/wlx-overlay-s/src/overlays/custom.rs @@ -42,7 +42,7 @@ pub fn create_custom(app: &mut AppState, name: Arc) -> Option anyhow::Result<()> { - self.inner.update( - app, - DASH_RES_VEC2.x / GUI_SCALE, - DASH_RES_VEC2.y / GUI_SCALE, + let res = self.inner.update(FrontendUpdateParams { + data: app, + width: DASH_RES_VEC2.x / GUI_SCALE, + height: DASH_RES_VEC2.y / GUI_SCALE, timestep_alpha, - ) + })?; + app_misc::process_layout_result(app, res); + Ok(()) } fn push_event(&mut self, event: &WguiEvent) -> EventResult { diff --git a/wlx-overlay-s/src/overlays/edit/mod.rs b/wlx-overlay-s/src/overlays/edit/mod.rs index f53d567..7aa8ebe 100644 --- a/wlx-overlay-s/src/overlays/edit/mod.rs +++ b/wlx-overlay-s/src/overlays/edit/mod.rs @@ -167,7 +167,7 @@ impl OverlayBackend for EditModeBackendWrapper { let gui_scale = (new_size.x / 750.0).min(new_size.y / 300.0); self.panel.gui_scale = (gui_scale * 4.0).round() / 4.0; - self.panel.update_layout()?; + self.panel.update_layout(app)?; } self.can_render_inner = true; diff --git a/wlx-overlay-s/src/overlays/keyboard/builder.rs b/wlx-overlay-s/src/overlays/keyboard/builder.rs index ffe1253..17ad37e 100644 --- a/wlx-overlay-s/src/overlays/keyboard/builder.rs +++ b/wlx-overlay-s/src/overlays/keyboard/builder.rs @@ -1,13 +1,13 @@ use std::{collections::HashMap, rc::Rc}; -use crate::{gui::panel::GuiPanel, state::AppState, subsystem::hid::XkbKeymap}; +use crate::{app_misc, gui::panel::GuiPanel, state::AppState, subsystem::hid::XkbKeymap}; use glam::{FloatExt, Mat4, Vec2, vec2, vec3}; use wgui::{ animation::{Animation, AnimationEasing}, assets::AssetPath, drawing::{self, Color}, event::{self, CallbackMetadata, EventListenerKind}, - layout::LayoutParams, + layout::{LayoutParams, LayoutUpdateParams}, parser::Fetchable, renderer_vk::util, taffy::{self, prelude::length}, @@ -264,7 +264,13 @@ pub(super) fn create_keyboard_panel( } } - panel.layout.update(vec2(2048., 2048.), 0.0)?; + app_misc::process_layout_result( + app, + panel.layout.update(&mut LayoutUpdateParams { + size: vec2(2048., 2048.), + timestep_alpha: 0.0, + })?, + ); panel.parser_state = gui_state_key; Ok(panel) diff --git a/wlx-overlay-s/src/overlays/toast.rs b/wlx-overlay-s/src/overlays/toast.rs index 6e4bb1a..7db4fb4 100644 --- a/wlx-overlay-s/src/overlays/toast.rs +++ b/wlx-overlay-s/src/overlays/toast.rs @@ -179,7 +179,10 @@ fn new_toast(toast: Toast, app: &mut AppState) -> Option { .inspect_err(|e| log::error!("Could not create toast: {e:?}")) .ok()?; - panel.update_layout().context("layout update failed").ok()?; + panel + .update_layout(app) + .context("layout update failed") + .ok()?; Some(OverlayWindowConfig { name: TOAST_NAME.clone(), diff --git a/wlx-overlay-s/src/overlays/watch.rs b/wlx-overlay-s/src/overlays/watch.rs index a1723f5..29985fb 100644 --- a/wlx-overlay-s/src/overlays/watch.rs +++ b/wlx-overlay-s/src/overlays/watch.rs @@ -551,7 +551,7 @@ pub fn create_watch(app: &mut AppState) -> anyhow::Result { align_to_hmd: false, }; - panel.update_layout()?; + panel.update_layout(app)?; Ok(OverlayWindowConfig { name: WATCH_NAME.into(), diff --git a/wlx-overlay-s/src/state.rs b/wlx-overlay-s/src/state.rs index 16efb0f..a8f62f8 100644 --- a/wlx-overlay-s/src/state.rs +++ b/wlx-overlay-s/src/state.rs @@ -109,6 +109,9 @@ impl AppState { audio::AudioSample::from_mp3(include_bytes!("res/toast.mp3"))?, ); + let mut assets = Box::new(gui::asset::GuiAsset {}); + audio_sample_player.register_wgui_samples(assets.as_mut())?; + let mut defaults = wgui::globals::Defaults::default(); { @@ -147,7 +150,7 @@ impl AppState { anchor: Affine3A::IDENTITY, anchor_grabbed: false, wgui_globals: WguiGlobals::new( - Box::new(gui::asset::GuiAsset {}), + assets, defaults, &WguiFontConfig::default(), get_config_file_path(&theme),