Fixes
This commit is contained in:
+13
-11
@@ -1,5 +1,5 @@
|
|||||||
use std::{env::args,process::Command,str::from_utf8,error::Error};
|
use std::{env::args,process::Command,str::from_utf8,error::Error};
|
||||||
use colored::{Color,Colorize};
|
use colored::{Color,Colorize,control::{ShouldColorize, SHOULD_COLORIZE}};
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone)]
|
#[derive(Debug, Copy, Clone)]
|
||||||
enum BatteryState {
|
enum BatteryState {
|
||||||
@@ -14,13 +14,15 @@ fn get_state(s: Option<&str>) -> BatteryState {
|
|||||||
Some("Battery 0: Discharging") => BatteryState::Discharging,
|
Some("Battery 0: Discharging") => BatteryState::Discharging,
|
||||||
Some("Battery 0: Charging") => BatteryState::Charging,
|
Some("Battery 0: Charging") => BatteryState::Charging,
|
||||||
Some("Battery 0: Charged") => BatteryState::Charged,
|
Some("Battery 0: Charged") => BatteryState::Charged,
|
||||||
|
Some("Battery 0: Not charging") => BatteryState::Charged,
|
||||||
_ => BatteryState::Error,
|
_ => BatteryState::Error,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_charge(s: Option<&str>) -> Result<f32, Box<dyn Error>> {
|
fn get_charge(s: Option<&str>) -> Result<f32, Box<dyn Error>> {
|
||||||
|
//println!(":{}:", s.unwrap().replace('%', ""));
|
||||||
let f = match s {
|
let f = match s {
|
||||||
Some(s) => s.replace('%', "").parse()?,
|
Some(s) => s.replace("\n", "").replace("%", "").parse()?,
|
||||||
None => 1. / 0.,
|
None => 1. / 0.,
|
||||||
};
|
};
|
||||||
Ok(f)
|
Ok(f)
|
||||||
@@ -75,7 +77,7 @@ fn battery_beginning() -> Result<String, Box<dyn Error>> {
|
|||||||
let mut parts = stdout.split(", ");
|
let mut parts = stdout.split(", ");
|
||||||
let charge_state = get_state(parts.next());
|
let charge_state = get_state(parts.next());
|
||||||
let charge_remaining = get_charge(parts.next())?;
|
let charge_remaining = get_charge(parts.next())?;
|
||||||
let charge_time = parts.next().ok_or("aaa")?.lines().next().ok_or("aaaaa")?;
|
let charge_time = parts.next().unwrap_or("Not charging\n").lines().next().ok_or("aaaaa")?;
|
||||||
let charge_symbol = get_battery_state_symbol(charge_state, charge_remaining);
|
let charge_symbol = get_battery_state_symbol(charge_state, charge_remaining);
|
||||||
let (bg, fg) = get_battery_colors(charge_state, charge_remaining);
|
let (bg, fg) = get_battery_colors(charge_state, charge_remaining);
|
||||||
Ok(format!("{}{}{}", format!(" {charge_remaining:>3}% {charge_symbol} ").on_color(bg).color(fg), "\u{0e0bc}".on_black().color(bg), format!(" {charge_time} ").on_black().white()))
|
Ok(format!("{}{}{}", format!(" {charge_remaining:>3}% {charge_symbol} ").on_color(bg).color(fg), "\u{0e0bc}".on_black().color(bg), format!(" {charge_time} ").on_black().white()))
|
||||||
@@ -90,7 +92,6 @@ fn volume_wrapper() -> Result<(String, Color), Box<dyn Error>> {
|
|||||||
let mut words = stdout.split(" ");
|
let mut words = stdout.split(" ");
|
||||||
words.next();
|
words.next();
|
||||||
let vol_ = words.next().ok_or("AAA")?;
|
let vol_ = words.next().ok_or("AAA")?;
|
||||||
println!(":{vol_}:");
|
|
||||||
let vol: f32 = vol_.parse()?;
|
let vol: f32 = vol_.parse()?;
|
||||||
let (symbol, bg) = match (words.next(), vol) {
|
let (symbol, bg) = match (words.next(), vol) {
|
||||||
(Some("[MUTED]"), _) => ("\u{f0581}", Color::White),
|
(Some("[MUTED]"), _) => ("\u{f0581}", Color::White),
|
||||||
@@ -124,22 +125,23 @@ fn music() -> Result<String, Box<dyn Error>> {
|
|||||||
let (symbol, bg) = match status {
|
let (symbol, bg) = match status {
|
||||||
"playing" => ('\u{f04b}', Color::Cyan),
|
"playing" => ('\u{f04b}', Color::Cyan),
|
||||||
"paused" => ('\u{f04c}', Color::Yellow),
|
"paused" => ('\u{f04c}', Color::Yellow),
|
||||||
"stopped" => return Ok(format!("{}{}", " \u{f04d} ".on_red().black(), "\u{0e0bc}".red())),
|
"stopped" => return Ok(format!("{}{}{}{}", " \u{f04d} ".on_red().black(), "\u{0e0bc}".on_black().red(), " Nothing playing ".on_black().white(), "\u{e0bc}".black())),
|
||||||
_ => Err(format!("Unknown state: {status}"))?,
|
_ => Err(format!("Unknown state: {status}"))?,
|
||||||
};
|
};
|
||||||
Ok(format!("{}{}{}{}", format!(" {symbol} ").on_color(bg).black(), "\u{0e0bc}".on_white().color(bg), format!(" {artist} \u{E0BB} {title} ").on_white().black(), "\u{e0bc}".white()))
|
Ok(format!("{}{}{}{}", format!(" {symbol} ").on_color(bg).black(), "\u{0e0bc}".on_white().color(bg), format!(" {artist} \u{E0BB} {title} ").on_white().black(), "\u{e0bc}".white()))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() -> Result<(), Box<dyn Error>> {
|
fn main() -> Result<(), Box<dyn Error>> {
|
||||||
|
ShouldColorize::set_override(&SHOULD_COLORIZE, true);
|
||||||
let mut args = args();
|
let mut args = args();
|
||||||
args.next();
|
args.next();
|
||||||
let arg = args.next().ok_or("Argument required: <battery|bat-vol|volume|music>")?;
|
let arg = args.next().ok_or("Argument required: <battery|bat-vol|volume|music>")?;
|
||||||
match arg.as_str() {
|
println!("{}", match arg.as_str() {
|
||||||
"battery" => println!("{}", battery()?),
|
"battery" => battery(),
|
||||||
"bat-vol" => println!("{}", bat_vol()?),
|
"bat-vol" => bat_vol(),
|
||||||
"volume" => println!("{}", volume()?),
|
"volume" => volume(),
|
||||||
"music" => println!("{}", music()?),
|
"music" => music(),
|
||||||
_ => Err(format!("invalid argument: {arg}"))?,
|
_ => Err(format!("invalid argument: {arg}"))?,
|
||||||
}
|
}?);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user