Impl way to set the time format
This commit is contained in:
parent
f2a0c3dcd9
commit
a1956b852a
4 changed files with 27 additions and 31 deletions
|
@ -20,7 +20,8 @@ tiling Wayland compositor](https://swaywm.org).
|
||||||
cargo install swaybar_info
|
cargo install swaybar_info
|
||||||
# The `swaybar_info` binary should be placed in $HOME/.cargo/bin/
|
# The `swaybar_info` binary should be placed in $HOME/.cargo/bin/
|
||||||
|
|
||||||
Put the following in your `~/.config/sway/config`:
|
Put the following in your `~/.config/sway/config` (assuming the binary is at
|
||||||
|
`$HOME/.config/sway/swaybar_info`):
|
||||||
|
|
||||||
bar {
|
bar {
|
||||||
position top
|
position top
|
||||||
|
@ -41,6 +42,10 @@ Put the following in your `~/.config/sway/config`:
|
||||||
# This example gets battery info into the bar.
|
# This example gets battery info into the bar.
|
||||||
# Multiple args should be separated with "[SPLIT]".
|
# Multiple args should be separated with "[SPLIT]".
|
||||||
# Note that the <args...> portion is optional.
|
# Note that the <args...> portion is optional.
|
||||||
|
|
||||||
|
|
||||||
|
# The following uses 24 hour time
|
||||||
|
#status_command $HOME/.config/sway/swaybar_info --time-format="%Y-%m-%d %R:%S"
|
||||||
}
|
}
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
|
@ -27,6 +27,9 @@ pub fn get_args() -> ArgsResult {
|
||||||
} else if arg.starts_with("--regex-cmd=") {
|
} else if arg.starts_with("--regex-cmd=") {
|
||||||
let (_, back) = arg.split_at(12);
|
let (_, back) = arg.split_at(12);
|
||||||
regex_cmds.push(back.to_owned());
|
regex_cmds.push(back.to_owned());
|
||||||
|
} else if arg.starts_with("--time-format=") {
|
||||||
|
let (_, back) = arg.split_at(14);
|
||||||
|
map.insert("time-format".into(), back.to_owned());
|
||||||
} else if arg == "--help" || arg == "-h" {
|
} else if arg == "--help" || arg == "-h" {
|
||||||
map.insert("help".into(), "".into());
|
map.insert("help".into(), "".into());
|
||||||
} else {
|
} else {
|
||||||
|
@ -64,4 +67,9 @@ pub fn print_usage() {
|
||||||
b" --regex-cmd=<cmd>[SPLIT]<args...>[SPLIT]<regex>\tUse an output of a command as a metric\n",
|
b" --regex-cmd=<cmd>[SPLIT]<args...>[SPLIT]<regex>\tUse an output of a command as a metric\n",
|
||||||
)
|
)
|
||||||
.ok();
|
.ok();
|
||||||
|
stderr_handle
|
||||||
|
.write_all(
|
||||||
|
b" --date-format=<date format string>\t\t\tSet the format string for the date\n",
|
||||||
|
)
|
||||||
|
.ok();
|
||||||
}
|
}
|
||||||
|
|
13
src/main.rs
13
src/main.rs
|
@ -8,6 +8,8 @@ use std::io::{self, Write};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use swaybar_object::*;
|
use swaybar_object::*;
|
||||||
|
|
||||||
|
const DEFAULT_FMT_STRING: &str = "%F %r";
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let args_result = args::get_args();
|
let args_result = args::get_args();
|
||||||
if args_result.map.contains_key("help") {
|
if args_result.map.contains_key("help") {
|
||||||
|
@ -77,6 +79,11 @@ fn main() {
|
||||||
let batt_info_enabled: bool = args_result.map.contains_key("acpi-builtin");
|
let batt_info_enabled: bool = args_result.map.contains_key("acpi-builtin");
|
||||||
let mut batt_info_error: bool = false;
|
let mut batt_info_error: bool = false;
|
||||||
|
|
||||||
|
let mut time_fmt_str = DEFAULT_FMT_STRING;
|
||||||
|
if let Some(s) = args_result.map.get("time-format") {
|
||||||
|
time_fmt_str = s;
|
||||||
|
}
|
||||||
|
|
||||||
println!(
|
println!(
|
||||||
"{}",
|
"{}",
|
||||||
serde_json::to_string(&swaybar_object::SwaybarHeader::new())
|
serde_json::to_string(&swaybar_object::SwaybarHeader::new())
|
||||||
|
@ -258,9 +265,11 @@ fn main() {
|
||||||
|
|
||||||
// time
|
// time
|
||||||
if is_empty {
|
if is_empty {
|
||||||
array.push_object(SwaybarObject::default());
|
let mut time_obj = SwaybarObject::new("current_time".to_owned());
|
||||||
|
time_obj.update_as_date(time_fmt_str);
|
||||||
|
array.push_object(time_obj);
|
||||||
} else if let Some(time_obj) = array.get_by_name_mut("current_time") {
|
} else if let Some(time_obj) = array.get_by_name_mut("current_time") {
|
||||||
time_obj.update_as_date();
|
time_obj.update_as_date(time_fmt_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
println!("{}", array);
|
println!("{}", array);
|
||||||
|
|
|
@ -149,9 +149,9 @@ impl SwaybarObject {
|
||||||
self.color = Some("#88ff88ff".to_owned());
|
self.color = Some("#88ff88ff".to_owned());
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_as_date(&mut self) {
|
pub fn update_as_date(&mut self, format_str: &str) {
|
||||||
let current_time: DateTime<Local> = Local::now();
|
let current_time: DateTime<Local> = Local::now();
|
||||||
let current_time = current_time.format("%F %r");
|
let current_time = current_time.format(format_str);
|
||||||
self.full_text = current_time.to_string();
|
self.full_text = current_time.to_string();
|
||||||
self.color = None;
|
self.color = None;
|
||||||
}
|
}
|
||||||
|
@ -175,32 +175,6 @@ impl SwaybarObject {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for SwaybarObject {
|
|
||||||
fn default() -> Self {
|
|
||||||
let current_time: DateTime<Local> = Local::now();
|
|
||||||
let current_time = current_time.format("%F %r");
|
|
||||||
Self {
|
|
||||||
full_text: current_time.to_string(),
|
|
||||||
short_text: None,
|
|
||||||
color: None,
|
|
||||||
background: None,
|
|
||||||
border: Some("#ffffffff".into()),
|
|
||||||
border_top: None,
|
|
||||||
border_bottom: None,
|
|
||||||
border_left: None,
|
|
||||||
border_right: None,
|
|
||||||
min_width: None,
|
|
||||||
align: None,
|
|
||||||
name: Some("current_time".to_owned()),
|
|
||||||
instance: None,
|
|
||||||
urgent: None,
|
|
||||||
separator: None,
|
|
||||||
separator_block_width: None,
|
|
||||||
markup: None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl SwaybarArray {
|
impl SwaybarArray {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
|
Loading…
Reference in a new issue