use crate::ported::bindings::wm::{get_connected_xrandr_outputs, XrandrOutput};
use crate::ported::commands::lemonbar::get_argparser;
pub struct LemonbarInstance {
pub screen_name: String,
pub width: i64,
}
pub fn build_bar_command(
bar_command: &str,
screen: &XrandrOutput,
height: &str,
extra: &[String],
) -> Vec<String> {
let mut cmd = vec![
bar_command.to_string(),
"-g".to_string(),
format!("{}x{}+{}+{}", screen.width, height, screen.x, screen.y),
];
cmd.extend_from_slice(extra);
cmd
}
pub fn main() {
let parser = get_argparser();
let _ = parser;
let _outputs = get_connected_xrandr_outputs(&());
}
#[cfg(test)]
mod tests {
use super::*;
fn fake_screen() -> XrandrOutput {
XrandrOutput {
name: "HDMI-1".to_string(),
primary: true,
width: 1920,
height: 1080,
x: 0,
y: 0,
}
}
#[test]
fn build_bar_command_assembles_geometry() {
let s = fake_screen();
let cmd = build_bar_command("lemonbar", &s, "24", &[]);
assert_eq!(cmd, vec![
"lemonbar".to_string(),
"-g".to_string(),
"1920x24+0+0".to_string(),
]);
}
#[test]
fn build_bar_command_appends_extra_args() {
let s = fake_screen();
let extra = vec!["-B".to_string(), "#000000".to_string()];
let cmd = build_bar_command("lemonbar", &s, "30", &extra);
assert_eq!(cmd, vec![
"lemonbar".to_string(),
"-g".to_string(),
"1920x30+0+0".to_string(),
"-B".to_string(),
"#000000".to_string(),
]);
}
}