sway_command/commands/
mod.rs1use derive_more::Display;
2
3mod config;
4pub use config::*;
5
6mod runtime;
7pub use runtime::*;
8
9mod standalone;
10pub use standalone::*;
11
12mod font;
13pub use font::*;
14
15#[derive(Display, Clone)]
16pub enum Workspace {
18 #[display(fmt = "_0")]
20 Name(WorkspaceName),
21 #[display(fmt = "number _0")]
24 Number(WorkspaceName),
25 #[display(fmt = "prev")]
28 Prev,
29 #[display(fmt = "next")]
32 Next,
33 #[display(fmt = "current")]
36 Current,
37 #[display(fmt = "prev_on_output")]
40 PrevOnOutput,
41 #[display(fmt = "next_on_output")]
44 NextOnOutput,
45 #[display(fmt = "back_and_forth")]
47 BackAndForth,
48}
49
50#[derive(Display, Clone)]
51pub enum WorkspaceName {
53 Simple(String),
55 #[display(fmt = "{_0}:{_1}")]
57 WithNumber(u32, String),
58}
59
60#[derive(Display, Clone)]
61pub enum Output {
63 #[display(fmt = "up")]
65 Up,
66 #[display(fmt = "right")]
68 Right,
69 #[display(fmt = "down")]
71 Down,
72 #[display(fmt = "left")]
74 Left,
75 #[display(fmt = "current")]
77 Current,
78 Name(String),
80}
81
82#[derive(Display, Clone)]
83#[allow(missing_docs)]
85pub enum GapsDirection {
86 #[display(fmt = "inner")]
87 Inner,
88 #[display(fmt = "outer")]
89 Outer,
90 #[display(fmt = "horizontal")]
91 Horizontal,
92 #[display(fmt = "vertical")]
93 Vertical,
94 #[display(fmt = "top")]
95 Top,
96 #[display(fmt = "right")]
97 Right,
98 #[display(fmt = "bottom")]
99 Bottom,
100 #[display(fmt = "left")]
101 Left,
102}
103
104#[derive(Display, Clone)]
105#[allow(missing_docs)]
106pub enum YesNo {
107 #[display(fmt = "yes")]
108 Yes,
109 #[display(fmt = "no")]
110 No,
111}
112
113#[derive(Display, Clone)]
114#[allow(missing_docs)]
115pub enum EnDisable {
116 #[display(fmt = "enable")]
117 Enable,
118 #[display(fmt = "disable")]
119 Disable,
120}
121
122#[derive(Display, Clone)]
123#[allow(missing_docs)]
124pub enum EnDisTog {
125 #[display(fmt = "enable")]
126 Enable,
127 #[display(fmt = "disable")]
128 Disable,
129 #[display(fmt = "toggle")]
130 Toggle,
131}
132
133fn when(condition: bool, then: &str) -> &str {
134 if condition {
135 then
136 } else {
137 ""
138 }
139}
140fn then_or_empty<T>(value: &Option<T>, then: fn(&T) -> String) -> String {
141 value.as_ref().map(then).unwrap_or_default()
142}
143
144fn to_string_or_empty(value: &Option<impl ToString>) -> String {
145 value.as_ref().map(ToString::to_string).unwrap_or_default()
146}
147
148fn separated(values: impl IntoIterator<Item = impl ToString>, seperator: impl ToString) -> String {
149 values
150 .into_iter()
151 .map(|v| v.to_string())
152 .collect::<Vec<String>>()
153 .join(&seperator.to_string())
154}