hyprshell_windows_lib/
keybinds.rs1use config_lib::Windows;
2use core_lib::binds::{ExecBind, generate_transfer_socat};
3use core_lib::transfer::{CloseSwitch, ExternalTransferType, OpenSwitch};
4
5#[must_use]
6pub fn generate_open_keybinds(windows: &Windows) -> Vec<ExecBind> {
7 let mut binds = Vec::new();
8 if let Some(overview) = &windows.overview {
9 binds.push(ExecBind {
10 mods: vec![overview.modifier.to_str()],
11 key: overview.key.clone(),
12 exec: generate_transfer_socat(&ExternalTransferType::OpenOverview),
13 release: false,
14 desc: format!(
15 "Open Overview with {} + {}",
16 overview.modifier, overview.key
17 ),
18 });
19 }
20 if let Some(switch) = &windows.switch {
21 binds.push(ExecBind {
22 mods: vec![switch.modifier.to_str()],
23 key: switch.key.clone(),
24 exec: generate_transfer_socat(&ExternalTransferType::OpenSwitch(OpenSwitch {
25 reverse: false,
26 })),
27 release: false,
28 desc: format!("Open Switch with {} + {}", switch.modifier, switch.key),
29 });
30 binds.push(ExecBind {
31 mods: vec![switch.modifier.to_str()],
32 key: Box::from("grave"),
33 exec: generate_transfer_socat(&ExternalTransferType::OpenSwitch(OpenSwitch {
34 reverse: true,
35 })),
36 release: false,
37 desc: format!("Open Switch (reverse) with {} + `", switch.modifier),
38 });
39 binds.push(ExecBind {
40 mods: vec![switch.modifier.to_str(), "shift"],
41 key: switch.key.clone(),
42 exec: generate_transfer_socat(&ExternalTransferType::OpenSwitch(OpenSwitch {
43 reverse: true,
44 })),
45 release: false,
46 desc: format!(
47 "Open Switch (reverse) with {} + shift + {}",
48 switch.modifier, switch.key
49 ),
50 });
51 binds.push(ExecBind {
52 mods: vec![switch.modifier.to_str()],
53 key: switch.modifier.to_keysym_l().into(),
54 exec: generate_transfer_socat(&ExternalTransferType::CloseSwitch(CloseSwitch {
55 switch: true,
56 })),
57 release: true,
58 desc: format!(
59 "Close Switch (reverse) with {} + {}_l",
60 switch.modifier, switch.modifier,
61 ),
62 });
63 binds.push(ExecBind {
64 mods: vec![switch.modifier.to_str()],
65 key: switch.modifier.to_keysym_r().into(),
66 exec: generate_transfer_socat(&ExternalTransferType::CloseSwitch(CloseSwitch {
67 switch: true,
68 })),
69 release: true,
70 desc: format!(
71 "Close Switch (reverse) with {} + {}_r",
72 switch.modifier, switch.modifier,
73 ),
74 });
75 binds.push(ExecBind {
76 mods: vec!["SHIFT"],
77 key: Box::from("Shift_L"),
78 exec: generate_transfer_socat(&ExternalTransferType::CloseSwitch(CloseSwitch {
79 switch: true,
80 })),
81 release: true,
82 desc: "Close Switch (reverse) with shift + shift_l".to_string(),
83 });
84 binds.push(ExecBind {
85 mods: vec!["SHIFT"],
86 key: Box::from("Shift_R"),
87 exec: generate_transfer_socat(&ExternalTransferType::CloseSwitch(CloseSwitch {
88 switch: true,
89 })),
90 release: true,
91 desc: "Close Switch (reverse) with shift + shift_r".to_string(),
92 });
93 }
94
95 binds
96}