summaryrefslogtreecommitdiffstats
path: root/src/modules/jobs.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/jobs.rs')
-rw-r--r--src/modules/jobs.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/modules/jobs.rs b/src/modules/jobs.rs
new file mode 100644
index 000000000..8a667049e
--- /dev/null
+++ b/src/modules/jobs.rs
@@ -0,0 +1,34 @@
+use ansi_term::Color;
+
+use super::{Context, Module};
+
+/// Creates a segment to show if there are any active jobs running
+pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
+ let mut module = context.new_module("jobs");
+
+ let threshold = module.config_value_i64("threshold").unwrap_or(1);
+
+ const JOB_CHAR: &str = "✦";
+ let module_style = module
+ .config_value_style("style")
+ .unwrap_or_else(|| Color::Blue.bold());
+ module.set_style(module_style);
+
+ let arguments = &context.arguments;
+ let num_of_jobs = arguments
+ .value_of("jobs")
+ .unwrap_or("0")
+ .trim()
+ .parse::<i64>()
+ .ok()?;
+ if num_of_jobs == 0 {
+ return None;
+ }
+ module.new_segment("symbol", JOB_CHAR);
+ if num_of_jobs > threshold {
+ module.new_segment("number", &num_of_jobs.to_string());
+ }
+ module.get_prefix().set_value("");
+
+ Some(module)
+}