dropdown for capture_method + random tweaks

This commit is contained in:
galister
2026-01-08 16:57:37 +09:00
parent 5616090fa9
commit e9230f6f9f
19 changed files with 358 additions and 82 deletions

View File

@@ -14,7 +14,9 @@ idmap-derive.workspace = true
log.workspace = true
serde = { workspace = true, features = ["rc"] }
serde_json.workspace = true
strum.workspace = true
xdg.workspace = true
chrono = "0.4.42"
smol = "2.0.2"
wgui = { path = "../wgui/" }

View File

@@ -3,6 +3,7 @@ use std::{collections::HashMap, sync::Arc};
use chrono::Offset;
use idmap::IdMap;
use serde::{Deserialize, Serialize};
use strum::{AsRefStr, EnumProperty, EnumString, VariantArray};
use crate::{
astr_containers::{AStrMap, AStrSet},
@@ -13,6 +14,22 @@ use crate::{
pub type PwTokenMap = AStrMap<String>;
pub type SerializedWindowStates = HashMap<Arc<str>, OverlayWindowState>;
#[derive(Default, Clone, Copy, Serialize, Deserialize, AsRefStr, EnumString, EnumProperty, VariantArray)]
pub enum CaptureMethod {
#[default]
#[serde(alias = "pipewire", alias = "auto")]
#[strum(props(Text = "PipeWire GPU", Tooltip = "APP_SETTINGS.OPTION.PIPEWIRE_HELP"))]
PipeWire,
#[serde(alias = "pw-fallback")]
#[strum(props(Text = "PipeWire CPU", Tooltip = "APP_SETTINGS.OPTION.PW_FALLBACK_HELP"))]
PwFallback,
#[serde(alias = "screencopy")]
#[strum(props(Text = "ScreenCopy CPU", Tooltip = "APP_SETTINGS.OPTION.SCREENCOPY_HELP"))]
ScreenCopy,
}
#[derive(Clone, Serialize, Deserialize)]
pub struct SerializedWindowSet {
pub name: Arc<str>,
@@ -76,10 +93,6 @@ fn def_timezones() -> Vec<String> {
}
}
fn def_auto() -> Arc<str> {
"auto".into()
}
fn def_empty() -> Arc<str> {
"".into()
}
@@ -174,8 +187,8 @@ pub struct GeneralConfig {
#[serde(default)]
pub custom_panels: AStrSet,
#[serde(default = "def_auto")]
pub capture_method: Arc<str>,
#[serde(default)]
pub capture_method: CaptureMethod,
#[serde(default = "def_point7")]
pub xr_click_sensitivity: f32,