add wlx-common lib, move GeneralConfig into it

This commit is contained in:
Aleksander
2025-11-25 00:21:51 +01:00
parent a6da79bf3d
commit 8485639e00
35 changed files with 601 additions and 566 deletions

View File

@@ -1,10 +1,11 @@
use glam::{Affine3A, Quat, Vec3};
use std::sync::{Arc, LazyLock};
use wlx_common::windowing::{OverlayWindowState, Positioning};
use crate::gui::panel::GuiPanel;
use crate::state::AppState;
use crate::windowing::window::{OverlayWindowConfig, OverlayWindowState, Positioning};
use crate::windowing::Z_ORDER_ANCHOR;
use crate::windowing::window::OverlayWindowConfig;
pub static ANCHOR_NAME: LazyLock<Arc<str>> = LazyLock::new(|| Arc::from("anchor"));

View File

@@ -1,12 +1,9 @@
use std::sync::Arc;
use glam::{Affine3A, Quat, Vec3, vec3};
use wlx_common::windowing::OverlayWindowState;
use crate::{
gui::panel::GuiPanel,
state::AppState,
windowing::window::{OverlayWindowConfig, OverlayWindowState},
};
use crate::{gui::panel::GuiPanel, state::AppState, windowing::window::OverlayWindowConfig};
const SETTINGS_NAME: &str = "settings";

View File

@@ -5,11 +5,9 @@ use wgui::{
parser::Fetchable, renderer_vk::text::custom_glyph::CustomGlyphData,
widget::sprite::WidgetSprite,
};
use wlx_common::{common::LeftRight, windowing::Positioning};
use crate::{
backend::task::OverlayTask, overlays::edit::EditModeWrapPanel, state::LeftRight,
windowing::window::Positioning,
};
use crate::{backend::task::OverlayTask, overlays::edit::EditModeWrapPanel, windowing::window};
static POS_NAMES: [&str; 6] = ["static", "anchored", "floating", "hmd", "hand_l", "hand_r"];
@@ -98,7 +96,7 @@ impl PositioningHandler {
Box::new(move |app, owc| {
let state = owc.active_state.as_mut().unwrap(); //want panic
state.positioning = pos;
state.save_transform(app);
window::save_transform(state, app);
})
}

View File

@@ -17,12 +17,13 @@ use wgui::{
util::WLength,
},
};
use wlx_common::windowing::{OverlayWindowState, Positioning};
use crate::{
gui::panel::GuiPanel,
state::AppState,
subsystem::hid::{ALT, CTRL, META, SHIFT, SUPER, XkbKeymap},
windowing::window::{OverlayWindowConfig, OverlayWindowState, Positioning},
windowing::window::OverlayWindowConfig,
};
use super::{

View File

@@ -5,7 +5,8 @@ use std::{
use futures::{Future, FutureExt};
use glam::{Affine2, Affine3A, Vec3};
use wlx_capture::pipewire::{pipewire_select_screen, PipewireCapture, PipewireSelectScreenResult};
use wlx_capture::pipewire::{PipewireCapture, PipewireSelectScreenResult, pipewire_select_screen};
use wlx_common::windowing::OverlayWindowState;
use crate::{
backend::{
@@ -15,12 +16,12 @@ use crate::{
state::{AppSession, AppState},
subsystem::hid::WheelDelta,
windowing::{
backend::{
ui_transform, FrameMeta, OverlayBackend, OverlayEventData, RenderResources,
ShouldRender,
},
window::{OverlayWindowConfig, OverlayWindowState},
OverlaySelector,
backend::{
FrameMeta, OverlayBackend, OverlayEventData, RenderResources, ShouldRender,
ui_transform,
},
window::OverlayWindowConfig,
},
};

View File

@@ -7,25 +7,26 @@ use vulkano::{
command_buffer::CommandBufferUsage,
device::Queue,
format::Format,
image::{sampler::Filter, view::ImageView, Image},
image::{Image, sampler::Filter, view::ImageView},
pipeline::graphics::color_blend::AttachmentBlend,
};
use wgui::gfx::{
WGfx,
cmd::WGfxClearMode,
pass::WGfxPass,
pipeline::{WGfxPipeline, WPipelineCreateInfo},
WGfx,
};
use wlx_capture::{
frame::{self as wlx_frame, DrmFormat, FrameFormat, MouseMeta, Transform, WlxFrame},
WlxCapture,
frame::{self as wlx_frame, DrmFormat, FrameFormat, MouseMeta, Transform, WlxFrame},
};
use wlx_common::config::GeneralConfig;
use crate::{
config::GeneralConfig,
graphics::{
dmabuf::{fourcc_to_vk, WGfxDmabuf},
upload_quad_vertices, Vert2Uv,
Vert2Uv,
dmabuf::{WGfxDmabuf, fourcc_to_vk},
upload_quad_vertices,
},
state::AppState,
windowing::backend::{FrameMeta, RenderResources},

View File

@@ -1,15 +1,13 @@
use std::{f32::consts::PI, sync::Arc};
use glam::{vec3, Affine3A, Quat, Vec3};
use glam::{Affine3A, Quat, Vec3, vec3};
use wlx_capture::frame::Transform;
use wlx_common::windowing::{OverlayWindowState, Positioning};
use crate::{
state::{AppSession, AppState, ScreenMeta},
subsystem::{hid::XkbKeymap, input::KeyboardFocus},
windowing::{
backend::OverlayBackend,
window::{OverlayWindowConfig, OverlayWindowState, Positioning},
},
windowing::{backend::OverlayBackend, window::OverlayWindowConfig},
};
pub mod backend;

View File

@@ -6,12 +6,9 @@ use wlx_capture::{
pipewire::{PipewireCapture, PipewireSelectScreenResult},
wayland::WlxOutput,
};
use wlx_common::config::{PwTokenMap, def_pw_tokens};
use crate::{
config::{PwTokenMap, def_pw_tokens},
config_io,
state::AppState,
};
use crate::{config_io, state::AppState};
use super::{
backend::ScreenBackend,

View File

@@ -5,9 +5,9 @@ use wlx_capture::{
wlr_dmabuf::WlrDmabufCapture,
wlr_screencopy::WlrScreencopyCapture,
};
use wlx_common::{astr_containers::AStrMapExt, config::PwTokenMap};
use crate::{
config::{AStrMapExt, PwTokenMap},
overlays::screen::create_screen_from_backend,
state::{AppState, ScreenMeta},
};

View File

@@ -35,9 +35,9 @@ impl ScreenBackend {
pub fn create_screens_x11pw(app: &mut AppState) -> anyhow::Result<ScreenCreateData> {
use glam::vec2;
use wlx_capture::{pipewire::PipewireCapture, xshm::xshm_get_monitors};
use wlx_common::{astr_containers::AStrMapExt, config::PwTokenMap};
use crate::{
config::{AStrMapExt, PwTokenMap},
overlays::screen::{
create_screen_from_backend,
pw::{load_pw_token_config, save_pw_token_config, select_pw_screen},

View File

@@ -6,8 +6,6 @@ use std::{
};
use glam::{Affine3A, Quat, Vec3, vec3};
use idmap_derive::IntegerId;
use serde::{Deserialize, Serialize};
use wgui::{
i18n::Translation,
parser::parse_color_hex,
@@ -22,15 +20,17 @@ use wgui::{
util::WLength,
},
};
use wlx_common::{
common::LeftRight,
overlays::{ToastDisplayMethod, ToastTopic},
windowing::{OverlayWindowState, Positioning},
};
use crate::{
backend::task::TaskType,
gui::panel::GuiPanel,
state::{AppState, LeftRight},
windowing::{
OverlaySelector, Z_ORDER_TOAST,
window::{OverlayWindowConfig, OverlayWindowState, Positioning},
},
state::AppState,
windowing::{OverlaySelector, Z_ORDER_TOAST, window::OverlayWindowConfig},
};
const FONT_SIZE: isize = 16;
@@ -38,21 +38,6 @@ const PADDING: (f32, f32) = (25., 7.);
const PIXELS_TO_METERS: f32 = 1. / 2000.;
static TOAST_NAME: LazyLock<Arc<str>> = LazyLock::new(|| "toast".into());
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
pub enum DisplayMethod {
Hide,
Center,
Watch,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, IntegerId, Serialize, Deserialize)]
pub enum ToastTopic {
System,
DesktopNotification,
XSNotification,
IpdChange,
}
pub struct Toast {
pub title: String,
pub body: String,
@@ -134,16 +119,16 @@ fn new_toast(toast: Toast, app: &mut AppState) -> Option<OverlayWindowConfig> {
.toast_topics
.get(toast.topic)
.copied()
.unwrap_or(DisplayMethod::Hide);
.unwrap_or(ToastDisplayMethod::Hide);
let (spawn_point, spawn_rotation, positioning) = match current_method {
DisplayMethod::Hide => return None,
DisplayMethod::Center => (
ToastDisplayMethod::Hide => return None,
ToastDisplayMethod::Center => (
vec3(0., -0.2, -0.5),
Quat::IDENTITY,
Positioning::FollowHead { lerp: 0.1 },
),
DisplayMethod::Watch => {
ToastDisplayMethod::Watch => {
let mut watch_pos = app.session.config.watch_pos + vec3(-0.005, -0.05, 0.02);
let mut watch_rot = app.session.config.watch_rot;
let relative_to = match app.session.config.watch_hand {

View File

@@ -6,6 +6,7 @@ use wgui::{
event::{CallbackDataCommon, EventAlterables},
parser::Fetchable,
};
use wlx_common::windowing::{OverlayWindowState, Positioning};
use crate::{
gui::{
@@ -14,9 +15,9 @@ use crate::{
},
state::AppState,
windowing::{
backend::OverlayEventData,
window::{OverlayWindowConfig, OverlayWindowData, OverlayWindowState, Positioning},
Z_ORDER_WATCH,
backend::OverlayEventData,
window::{OverlayWindowConfig, OverlayWindowData},
},
};

View File

@@ -1,42 +1,42 @@
use glam::{vec3, Affine2, Affine3A, Quat, Vec3};
use glam::{Affine2, Affine3A, Quat, Vec3, vec3};
use smallvec::smallvec;
use std::{cell::RefCell, collections::HashMap, rc::Rc, sync::Arc};
use vulkano::{
buffer::{BufferUsage, Subbuffer},
command_buffer::CommandBufferUsage,
format::Format,
image::{view::ImageView, Image, ImageTiling, SubresourceLayout},
image::{Image, ImageTiling, SubresourceLayout, view::ImageView},
};
use wayvr_ipc::packet_server::{self, PacketServer, WvrStateChanged};
use wgui::gfx::{
WGfx,
pass::WGfxPass,
pipeline::{WGfxPipeline, WPipelineCreateInfo},
WGfx,
};
use wlx_capture::frame::{DmabufFrame, FourCC, FrameFormat, FramePlane};
use wlx_common::windowing::OverlayWindowState;
use crate::{
backend::{
input::{self, HoverResult},
task::TaskType,
wayvr::{
self, display,
self, WayVR, WayVRAction, WayVRDisplayClickAction, display,
server_ipc::{gen_args_vec, gen_env_vec},
WayVR, WayVRAction, WayVRDisplayClickAction,
},
},
config_wayvr,
graphics::{dmabuf::WGfxDmabuf, Vert2Uv},
graphics::{Vert2Uv, dmabuf::WGfxDmabuf},
state::{self, AppState},
subsystem::{hid::WheelDelta, input::KeyboardFocus},
windowing::{
OverlayID, OverlaySelector, Z_ORDER_DASHBOARD,
backend::{
ui_transform, FrameMeta, OverlayBackend, OverlayEventData, RenderResources,
ShouldRender,
FrameMeta, OverlayBackend, OverlayEventData, RenderResources, ShouldRender,
ui_transform,
},
manager::OverlayWindowManager,
window::{OverlayWindowConfig, OverlayWindowData, OverlayWindowState},
OverlayID, OverlaySelector, Z_ORDER_DASHBOARD,
window::{OverlayWindowConfig, OverlayWindowData},
},
};