use crate::ids::{PaneId, SessionId, WindowId};
use crate::layout::Layout;
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub enum Notification {
Output { pane: PaneId, bytes: Vec<u8> },
ExtendedOutput {
pane: PaneId,
ms_behind: u64,
bytes: Vec<u8>,
},
LayoutChange {
window: WindowId,
layout: Layout,
visible_layout: Option<Layout>,
flags: Option<WindowFlags>,
},
WindowAdd(WindowId),
WindowClose(WindowId),
WindowRenamed(WindowId, String),
WindowPaneChanged { window: WindowId, pane: PaneId },
UnlinkedWindowAdd(WindowId),
UnlinkedWindowClose(WindowId),
UnlinkedWindowRenamed(WindowId, String),
SessionChanged(SessionId, String),
SessionRenamed(SessionId, String),
SessionWindowChanged {
session: SessionId,
window: WindowId,
},
ClientSessionChanged {
client: String,
session: SessionId,
name: String,
},
SessionsChanged,
PaneModeChanged(PaneId),
Pause(PaneId),
Continue(PaneId),
SubscriptionChanged { name: String, value: String },
Exit(Option<String>),
Unknown(String),
}
#[derive(Debug, Clone, Default, PartialEq, Eq)]
#[non_exhaustive]
pub struct WindowFlags {
pub current: bool,
pub last: bool,
pub activity: bool,
pub bell: bool,
pub silence: bool,
pub marked: bool,
pub zoomed: bool,
pub unknown: String,
}