Skip to content

Commit 8460571

Browse files
committed
Improve UX
Provide better feed-back to users. This can be disabled (e.g. for scripts) via the `--quiet` flag.
1 parent a41b405 commit 8460571

File tree

4 files changed

+89
-25
lines changed

4 files changed

+89
-25
lines changed

src/cli.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,9 @@ pub fn app() -> App<'static, 'static> {
8080
.subcommand(perf)
8181
.subcommand(dgpu)
8282
.subcommand(latch)
83+
.arg(Arg::with_name("quiet")
84+
.help("Keep output quiet")
85+
.short("q")
86+
.long("quiet")
87+
.global(true))
8388
}

src/main.rs

Lines changed: 69 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,9 @@ fn cmd_status(_: &clap::ArgMatches) -> Result<()> {
3131
let perf_mode = sys::perf::Device::open()?.get_mode()?;
3232
let dgpu_power = sys::dgpu::Device::open()?.get_power()?;
3333

34-
println!("System Status:");
35-
println!(" Device-Mode: {}", opmode);
36-
println!(" Performance-Mode: {}", perf_mode);
37-
println!(" dGPU-Power: {}", dgpu_power);
34+
println!(" Device-Mode: {}", opmode);
35+
println!(" Performance-Mode: {} ({})", perf_mode, perf_mode.short_str());
36+
println!(" dGPU-Power: {}", dgpu_power);
3837

3938
Ok(())
4039
}
@@ -52,11 +51,24 @@ fn cmd_dgpu_set(m: &clap::ArgMatches) -> Result<()> {
5251
use clap::value_t_or_exit;
5352
let state = value_t_or_exit!(m, "state", sys::dgpu::PowerState);
5453

55-
sys::dgpu::Device::open()?.set_power(state)
54+
sys::dgpu::Device::open()?.set_power(state)?;
55+
56+
if !m.is_present("quiet") {
57+
println!("dGPU power set to '{}'", state);
58+
}
59+
60+
Ok(())
5661
}
5762

58-
fn cmd_dgpu_get(_: &clap::ArgMatches) -> Result<()> {
59-
println!("{}", sys::dgpu::Device::open()?.get_power()?);
63+
fn cmd_dgpu_get(m: &clap::ArgMatches) -> Result<()> {
64+
let state = sys::dgpu::Device::open()?.get_power()?;
65+
66+
if !m.is_present("quiet") {
67+
println!("dGPU power is '{}'", state);
68+
} else {
69+
println!("{}", state);
70+
}
71+
6072
Ok(())
6173
}
6274

@@ -71,13 +83,26 @@ fn cmd_perf(m: &clap::ArgMatches) -> Result<()> {
7183

7284
fn cmd_perf_set(m: &clap::ArgMatches) -> Result<()> {
7385
use clap::value_t_or_exit;
74-
let state = value_t_or_exit!(m, "mode", sys::perf::Mode);
86+
let mode = value_t_or_exit!(m, "mode", sys::perf::Mode);
87+
88+
sys::perf::Device::open()?.set_mode(mode)?;
7589

76-
sys::perf::Device::open()?.set_mode(state)
90+
if !m.is_present("quiet") {
91+
println!("Performance-mode set to '{}'", mode);
92+
}
93+
94+
Ok(())
7795
}
7896

79-
fn cmd_perf_get(_: &clap::ArgMatches) -> Result<()> {
80-
println!("{}", sys::perf::Device::open()?.get_mode()?);
97+
fn cmd_perf_get(m: &clap::ArgMatches) -> Result<()> {
98+
let mode = sys::perf::Device::open()?.get_mode()?;
99+
100+
if !m.is_present("quiet") {
101+
println!("Performance-mode is '{}' ({})", mode, mode.short_str());
102+
} else {
103+
println!("{}", mode.short_str());
104+
}
105+
81106
Ok(())
82107
}
83108

@@ -92,19 +117,44 @@ fn cmd_latch(m: &clap::ArgMatches) -> Result<()> {
92117
}
93118
}
94119

95-
fn cmd_latch_lock(_: &clap::ArgMatches) -> Result<()> {
96-
sys::latch::Device::open()?.latch_lock()
120+
fn cmd_latch_lock(m: &clap::ArgMatches) -> Result<()> {
121+
sys::latch::Device::open()?.latch_lock()?;
122+
123+
if !m.is_present("quiet") {
124+
println!("Clipboard latch locked");
125+
}
126+
127+
Ok(())
97128
}
98129

99-
fn cmd_latch_unlock(_: &clap::ArgMatches) -> Result<()> {
100-
sys::latch::Device::open()?.latch_unlock()
130+
fn cmd_latch_unlock(m: &clap::ArgMatches) -> Result<()> {
131+
sys::latch::Device::open()?.latch_unlock()?;
132+
133+
if !m.is_present("quiet") {
134+
println!("Clipboard latch unlocked");
135+
}
136+
137+
Ok(())
101138
}
102139

103-
fn cmd_latch_request(_: &clap::ArgMatches) -> Result<()> {
104-
sys::latch::Device::open()?.latch_request()
140+
fn cmd_latch_request(m: &clap::ArgMatches) -> Result<()> {
141+
sys::latch::Device::open()?.latch_request()?;
142+
143+
if !m.is_present("quiet") {
144+
println!("Clipboard latch request executed");
145+
}
146+
147+
Ok(())
105148
}
106149

107-
fn cmd_latch_get_opmode(_: &clap::ArgMatches) -> Result<()> {
108-
println!("{}", sys::latch::Device::open()?.get_opmode()?);
150+
fn cmd_latch_get_opmode(m: &clap::ArgMatches) -> Result<()> {
151+
let opmode = sys::latch::Device::open()?.get_opmode()?;
152+
153+
if !m.is_present("quiet") {
154+
println!("Device is in '{}' mode", opmode);
155+
} else {
156+
println!("{}", opmode);
157+
}
158+
109159
Ok(())
110160
}

src/sys/latch.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ pub enum OpMode {
2222
impl OpMode {
2323
pub fn as_str(&self) -> &'static str {
2424
match self {
25-
OpMode::Tablet => "tablet",
26-
OpMode::Laptop => "laptop",
27-
OpMode::Studio => "studio",
25+
OpMode::Tablet => "Tablet",
26+
OpMode::Laptop => "Laptop",
27+
OpMode::Studio => "Studio",
2828
}
2929
}
3030
}

src/sys/perf.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,28 @@ impl Mode {
2626
}
2727
}
2828

29-
pub fn as_str(&self) -> &'static str {
29+
pub fn short_str(&self) -> &'static str {
3030
match self {
3131
Mode::Normal => "1",
3232
Mode::Battery => "2",
3333
Mode::Perf1 => "3",
3434
Mode::Perf2 => "4",
3535
}
3636
}
37+
38+
pub fn long_str(&self) -> &'static str {
39+
match self {
40+
Mode::Normal => "Normal",
41+
Mode::Battery => "Battery-Saver",
42+
Mode::Perf1 => "Better Perormance",
43+
Mode::Perf2 => "Best Performance",
44+
}
45+
}
3746
}
3847

3948
impl std::fmt::Display for Mode {
4049
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
41-
write!(fmt, "{}", self.as_str())
50+
write!(fmt, "{}", self.long_str())
4251
}
4352
}
4453

@@ -95,7 +104,7 @@ impl Device {
95104
}
96105

97106
pub fn set_mode(&self, mode: Mode) -> Result<()> {
98-
let mode = mode.as_str().as_bytes();
107+
let mode = mode.short_str().as_bytes();
99108

100109
let mut file = OpenOptions::new()
101110
.write(true)

0 commit comments

Comments
 (0)