use std::collections::HashMap;
#[derive(Debug)]
pub struct CommandOutcome {
pub success: bool,
pub error: Option<String>,
}
#[derive(Debug)]
pub struct Command {
pub outcomes: Vec<CommandOutcome>,
}
#[derive(Debug)]
pub struct Workspace {
pub num: i32,
pub name: String,
pub visible: bool,
pub focused: bool,
pub urgent: bool,
pub rect: (i32, i32, i32, i32),
pub output: String,
}
#[derive(Debug)]
pub struct Workspaces {
pub workspaces: Vec<Workspace>,
}
#[derive(Debug)]
pub struct Subscribe {
pub success: bool,
}
#[derive(Debug)]
pub struct Output {
pub name: String,
pub active: bool,
pub primary: bool,
pub current_workspace: Option<String>,
pub rect: (i32, i32, i32, i32),
}
#[derive(Debug)]
pub struct Outputs {
pub outputs: Vec<Output>,
}
#[derive(Eq, PartialEq, Debug, Hash, Clone)]
pub enum WindowProperty {
Title,
Instance,
Class,
WindowRole,
TransientFor,
}
#[derive(Eq, PartialEq, Debug, Clone)]
pub enum NodeType {
Root,
Output,
Con,
FloatingCon,
Workspace,
DockArea,
Unknown,
}
#[derive(Eq, PartialEq, Debug, Clone)]
pub enum NodeBorder {
Normal,
None,
Pixel,
Unknown,
}
#[derive(Eq, PartialEq, Debug, Clone)]
pub enum NodeLayout {
SplitH,
SplitV,
Stacked,
Tabbed,
DockArea,
Output,
Unknown,
}
#[derive(Debug, Clone)]
pub struct Node {
pub focus: Vec<i64>,
pub nodes: Vec<Node>,
pub floating_nodes: Vec<Node>,
pub id: i64,
pub name: Option<String>,
pub nodetype: NodeType,
pub border: NodeBorder,
pub current_border_width: i32,
pub layout: NodeLayout,
pub percent: Option<f64>,
pub rect: (i32, i32, i32, i32),
pub window_rect: (i32, i32, i32, i32),
pub deco_rect: (i32, i32, i32, i32),
pub geometry: (i32, i32, i32, i32),
pub window: Option<i32>,
pub window_properties: Option<HashMap<WindowProperty, String>>,
pub urgent: bool,
pub focused: bool,
}
#[derive(Debug)]
pub struct Marks {
pub marks: Vec<String>,
}
#[derive(Debug)]
pub struct BarIds {
pub ids: Vec<String>,
}
#[derive(Hash, Eq, PartialEq, Debug)]
pub enum ColorableBarPart {
Background,
Statusline,
Separator,
#[cfg(feature = "i3-4-12")]
#[cfg_attr(feature = "dox", doc(cfg(feature = "i3-4-12")))]
FocusedBackground,
#[cfg(feature = "i3-4-12")]
#[cfg_attr(feature = "dox", doc(cfg(feature = "i3-4-12")))]
FocusedStatusline,
#[cfg(feature = "i3-4-12")]
#[cfg_attr(feature = "dox", doc(cfg(feature = "i3-4-12")))]
FocusedSeparator,
FocusedWorkspaceText,
FocusedWorkspaceBg,
FocusedWorkspaceBorder,
ActiveWorkspaceText,
ActiveWorkspaceBg,
ActiveWorkspaceBorder,
InactiveWorkspaceText,
InactiveWorkspaceBg,
InactiveWorkspaceBorder,
UrgentWorkspaceText,
UrgentWorkspaceBg,
UrgentWorkspaceBorder,
BindingModeText,
BindingModeBg,
BindingModeBorder,
Unknown,
}
#[derive(Debug)]
pub struct BarConfig {
pub id: String,
pub mode: String,
pub position: String,
pub status_command: String,
pub font: String,
pub workspace_buttons: bool,
pub binding_mode_indicator: bool,
pub verbose: bool,
pub colors: HashMap<ColorableBarPart, String>,
}
#[derive(Debug)]
pub struct Version {
pub major: i32,
pub minor: i32,
pub patch: i32,
pub human_readable: String,
pub loaded_config_file_name: String,
}
#[cfg(feature = "i3-4-13")]
#[cfg_attr(feature = "dox", doc(cfg(feature = "i3-4-13")))]
#[derive(Debug)]
pub struct BindingModes {
pub modes: Vec<String>,
}
#[cfg(feature = "i3-4-14")]
#[cfg_attr(feature = "dox", doc(cfg(feature = "i3-4-14")))]
#[derive(Debug)]
pub struct Config {
pub config: String,
}