Skip to main content

dmenu

Macro dmenu 

Source
macro_rules! dmenu {
    (__@internal_start@__ $(args $($arg:expr)+)?) => { ... };
    (__@internal_end@__ $stdin:expr, $stdout:expr) => { ... };
    (iter $e:expr $(;args $($arg:expr),+)?) => { ... };
    (stringify $($e:expr),* $(;args $($arg:expr),+)?) => { ... };
    (args $($arg:expr),+) => { ... };
    (prompt $text:expr $(;args $($arg:expr),+)?) => { ... };
    ($($e:expr),* $(;args $($arg:expr),+)?) => { ... };
}
Expand description

§How to use

§Standard

Requires every argument to implement .as_bytes(). Might also not need to pass any arguments at all


// Example
let output = dmenu!("1", "2", "3");

§Stringify

Same as standard but passes every argument to stringify!(). Again, might also not need to pass any arguments at all


// Example
let output = dmenu!(stringify 1, 2, 3);

§Iter

Accepts an iterator. Every value yielded by the iterator needs to implement .as_bytes()


// Example
let mut a = vec!["1", "2", "3"];
a.push("4");

let output = dmenu!(iter a);

§Prompt

Only shows a prompt with the specified prompt text


// Example
let username = dmenu!(prompt "What's your name?");

§Optional arguments

You can specify optional arguments to pass to dmenu by separating them with ; args


// Example
let output = dmenu!(stringify 1, 2, 3; args "-p", "Choose a number", "-l", "3");

§Arguments only

Empty call, only allows to specify arguments to pass on to dmenu


// Example
let output = dmenu!(args
    "-p", "What's your name?",
    "--nb", "#FFFFFF",
    "--nf", "#000000"
);