use { crate::{ Animations, ClientMatch, ColorManagement, ConfigConnector, ConfigDrmDevice, ConfigKeymap, DrmDeviceMatch, Exec, Float, FocusHistory, InputMatch, Libei, Output, OutputMatch, RepeatRate, SimpleCommand, SimpleIm, Status, Tearing, Theme, UiDrag, Vrr, WindowMatch, Xwayland, }, ahash::AHashMap, jay_config::{ Direction, Workspace, input::{ FallbackOutputMode, SwitchEvent, acceleration::AccelProfile, clickmethod::ClickMethod, }, keyboard::{ModifiedKeySym, mods::Modifiers, syms::KeySym}, logging::LogLevel, video::GfxApi, window::TileState, workspace::WorkspaceDisplayOrder, }, std::{rc::Rc, time::Duration}, }; #[derive(Debug, Clone)] #[expect(clippy::enum_variant_names)] pub enum Action { ConfigureConnector { con: ConfigConnector, }, ConfigureDirectScanout { enabled: bool, }, ConfigureDrmDevice { dev: ConfigDrmDevice, }, ConfigureIdle { idle: Option, grace_period: Option, }, ConfigureInput { input: Box, }, ConfigureOutput { out: Output, }, Exec { exec: Exec, }, MoveToWorkspace { name: String, }, SendToScratchpad { name: String, }, ToggleScratchpad { name: String, }, CycleScratchpad { name: String, }, Multi { actions: Vec, }, SetEnv { env: Vec<(String, String)>, }, SetGfxApi { api: GfxApi, }, SetKeymap { map: ConfigKeymap, }, SetLogLevel { level: LogLevel, }, SetRenderDevice { dev: Box, }, SetStatus { status: Option, }, SetTheme { theme: Box, }, ShowWorkspace { name: String, output: Option, }, SimpleCommand { cmd: SimpleCommand, }, SwitchToVt { num: u32, }, UnsetEnv { env: Vec, }, MoveToOutput { workspace: Option, output: Option, direction: Option, }, SetRepeatRate { rate: RepeatRate, }, DefineAction { name: String, action: Box, }, UndefineAction { name: String, }, NamedAction { name: String, }, CreateMark(u32), JumpToMark(u32), CopyMark(u32, u32), SetMode { name: String, latch: bool, }, CreateVirtualOutput { name: String, }, RemoveVirtualOutput { name: String, }, Resize { dx1: i32, dy1: i32, dx2: i32, dy2: i32, }, } #[derive(Debug, Clone)] pub struct ClientRule { pub name: Option, pub match_: ClientMatch, pub action: Option, pub latch: Option, } #[derive(Debug, Clone)] pub struct WindowRule { pub name: Option, pub match_: WindowMatch, pub action: Option, pub latch: Option, pub auto_focus: Option, pub initial_tile_state: Option, } #[derive(Debug, Clone)] pub struct Input { pub tag: Option, pub match_: InputMatch, pub accel_profile: Option, pub accel_speed: Option, pub tap_enabled: Option, pub tap_drag_enabled: Option, pub tap_drag_lock_enabled: Option, pub left_handed: Option, pub natural_scrolling: Option, pub click_method: Option, pub middle_button_emulation: Option, pub px_per_wheel_scroll: Option, pub transform_matrix: Option<[[f64; 2]; 2]>, pub keymap: Option, pub switch_actions: AHashMap, pub output: Option>, pub calibration_matrix: Option<[[f32; 3]; 2]>, } #[derive(Debug, Clone)] pub struct Shortcut { pub mask: Modifiers, pub keysym: ModifiedKeySym, pub action: Action, pub latch: Option, } #[derive(Debug, Clone)] pub struct NamedAction { pub name: Rc, pub action: Action, } #[derive(Clone, Debug)] pub struct InputMode { pub parent: Option, pub shortcuts: Vec, } #[derive(Debug, Clone)] pub struct Config { pub keymap: Option, pub repeat_rate: Option, pub shortcuts: Vec, pub on_graphics_initialized: Option, pub on_idle: Option, pub status: Option, pub connectors: Vec, pub outputs: Vec, pub workspace_capture: bool, pub env: Vec<(String, String)>, pub on_startup: Option, pub keymaps: Vec, pub auto_reload: Option, pub log_level: Option, pub clean_logs_older_than: Option, pub theme: Theme, pub gfx_api: Option, pub direct_scanout_enabled: Option, pub drm_devices: Vec, pub render_device: Option, pub inputs: Vec, pub idle: Option, pub grace_period: Option, pub key_press_enables_dpms: Option, pub mouse_move_enables_dpms: Option, pub explicit_sync_enabled: Option, pub focus_follows_mouse: bool, pub window_management_key: Option, pub vrr: Option, pub tearing: Option, pub libei: Libei, pub ui_drag: UiDrag, pub animations: Animations, pub xwayland: Option, pub color_management: Option, pub float: Option, pub named_actions: Vec, pub max_action_depth: u64, pub client_rules: Vec, pub window_rules: Vec, pub pointer_revert_key: Option, pub use_hardware_cursor: Option, pub show_bar: Option, pub show_titles: Option, pub focus_history: Option, pub middle_click_paste: Option, pub input_modes: AHashMap, pub workspace_display_order: Option, pub simple_im: Option, pub fallback_output_mode: Option, pub mouse_follows_focus: Option, pub scratchpads: Vec, pub autotile: Option, } #[derive(Debug, Clone)] pub struct Scratchpad { pub name: String, pub exec: Option, }