dmenu_facade 0.3.0

A rust wrapper for interacting through dmenu. Depends on dmenu being installed
Documentation
# dmenu_facade

This is a small library that allows dmenu to be used from a rust-project. It currently only works on linux and depends on dmenu being in the users \$PATH.

**DISCLAIMER: dmenu_facade uses the shell to interact with dmenu, look through the source if this makes you uncomfortable**

I mainly created this library for myself, since i wanted to start writing rust binaries instead of some of my scripts. For some of these scripts i wanted to have the ease of using dmenu as user interactions.

# How to use

dmenu_facade is pretty easy to use. It's used as a builder pattern with an execute method to finalize the instruction. It includes most of the args from `man dmenu`. It takes a list of items that must implement the `Display` trait and returns the picked item by reference or as owned depending on which function is called.

If more that one item's `Display` output is equal, the last item in the `Vec` will be returned.

## Example

```rs
use dmenu_facade::*;
use std::error::Error;
use std::fmt::Display;

pub fn main() -> Result<(), Box<dyn Error>> {
    let items = vec![
        TestStruct {
            id: 0,
            text: "Hello".to_string(),
        },
        TestStruct {
            id: 1,
            text: "World".to_string(),
        },
        TestStruct {
            id: 2,
            text: "!".to_string(),
        },
    ];

    println!(
        "id: {}",
        DMenu::default().execute_consume(items).unwrap().id
    );

    Ok(())
}

// Just a test struct to see that it can work with more complex structs, as long as they implement Display
struct TestStruct {
    id: i32,
    text: String,
}

impl Display for TestStruct {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        self.text.fmt(f)
    }
}

```