nuhxboard 0.5.3

A Linux port of NohBoard
use display_info::DisplayInfo;

#[derive(serde::Serialize, serde::Deserialize)]
pub struct Settings {
    pub capitalization: Capitalization,
    pub follow_for_caps_sensitive: bool,
    pub follow_for_caps_insensitive: bool,
    pub category: String,
    pub keyboard: usize,
    pub style: usize,
    pub mouse_from_center: bool,
    pub mouse_sensitivity: f32,
    pub min_press_time: u128,
    pub scroll_hold_time: u64,
    pub window_title: String,
    pub display_id: u32,
}

impl Default for Settings {
    fn default() -> Self {
        let displays = DisplayInfo::all().unwrap();

        let mut display_id = 0;

        for display in displays {
            if display.is_primary {
                display_id = display.id;
            }
        }

        Self {
            capitalization: Capitalization::Follow,
            follow_for_caps_sensitive: false,
            follow_for_caps_insensitive: false,
            category: String::new(),
            keyboard: 0,
            style: 0,
            mouse_from_center: false,
            mouse_sensitivity: 50.0,
            min_press_time: 0,
            scroll_hold_time: 100,
            window_title: "NuhxBoard".into(),
            display_id,
        }
    }
}

#[derive(serde::Serialize, serde::Deserialize, PartialEq, Eq, Debug, Clone, Copy)]
pub enum Capitalization {
    Lower,
    Upper,
    Follow,
}