feat(settings): refine density, group detailed options and add edge maximize gestures

This commit is contained in:
aria committed 2026-10-28 04:49:27 +09:00
1 parent d7e122711a
commit 9908dde9f8
11 files changed
+588 -195

No files matched your search

+20 -1
View File
@@ -569,5 +569,24 @@
"Panel status icons": "面板状态图标",
"Install the matching Ferese compositor beside Settings.": "请将匹配版本的 Ferese 主程序与设置程序安装在同一目录。",
"Quick access": "快速访问",
"Saving…": "正在保存…"
"Saving…": "正在保存…",
"Workspaces and layout": "工作区与布局",
"Spacing and corners": "间距与圆角",
"Focus and window effects": "焦点与窗口效果",
"Keyboard layout": "键盘布局",
"Keyboard repeat": "按键重复",
"Clock and date": "时钟与日期",
"Lock background": "锁屏背景",
"Display power": "显示器电源",
"Colors and accents": "配色与强调色",
"Surface and transparency": "表面与透明度",
"Typography": "字体与排版",
"Interface": "界面",
"Visual accessibility": "视觉辅助",
"Notification behavior": "通知行为",
"Notification timing": "通知时长",
"Wallpaper image": "壁纸图像",
"Shortcut guide": "快捷键指南",
"Custom shortcuts": "自定义快捷键",
"Animations": "动画"
}
+26 -19
View File
@@ -127,12 +127,12 @@ fn main() -> Result<(), Box<dyn Error>> {
}
hovers.push((v[0], v[1]));
}
"--click" => {
"--click" | "--double-click" => {
let v = parse_numbers(&args.next().ok_or("missing click position")?)?;
if v.len() != 2 {
return Err("invalid click".into());
}
clicks.push((v[0], v[1]));
clicks.push((v[0], v[1], if arg == "--double-click" { 2 } else { 1 }));
}
"--drag" => {
let v = parse_numbers(&args.next().ok_or("missing drag positions")?)?;
@@ -273,7 +273,7 @@ fn main() -> Result<(), Box<dyn Error>> {
queue.roundtrip(&mut state)?;
std::thread::sleep(Duration::from_millis(120));
}
for (x, y) in clicks {
for (x, y, count) in clicks {
pointer.motion_absolute(
started.elapsed().as_millis() as u32,
x,
@@ -284,22 +284,29 @@ fn main() -> Result<(), Box<dyn Error>> {
pointer.frame();
queue.roundtrip(&mut state)?;
std::thread::sleep(Duration::from_millis(80));
pointer.button(
started.elapsed().as_millis() as u32,
0x110,
wl_pointer::ButtonState::Pressed,
);
pointer.frame();
queue.roundtrip(&mut state)?;
std::thread::sleep(Duration::from_millis(80));
pointer.button(
started.elapsed().as_millis() as u32,
0x110,
wl_pointer::ButtonState::Released,
);
pointer.frame();
queue.roundtrip(&mut state)?;
std::thread::sleep(Duration::from_millis(150));
for index in 0..count {
pointer.button(
started.elapsed().as_millis() as u32,
0x110,
wl_pointer::ButtonState::Pressed,
);
pointer.frame();
queue.roundtrip(&mut state)?;
std::thread::sleep(Duration::from_millis(80));
pointer.button(
started.elapsed().as_millis() as u32,
0x110,
wl_pointer::ButtonState::Released,
);
pointer.frame();
queue.roundtrip(&mut state)?;
// Consecutive clicks must fit Iced's 300 ms double-click window.
std::thread::sleep(Duration::from_millis(if index + 1 < count {
80
} else {
150
}));
}
}
if let Some(v) = drag {
pointer.motion_absolute(