完善最小核心架构设计和数据结构简化
主要变更: - 数据结构简化 - 合并窗口元数据到 wm_window_t(删除 wm_window_meta.h) - 合并工作区名称到 wm_workspace_t(删除 wm_workspace_desc.h) - 简化布局标识符,只保留 name 字段 - 删除 window_map,采用直接索引+线性查找 - 架构设计完善 - 确定 window→workspace→output 固定归属关系 - 制定 ID 分配策略(半静态实体直接索引,动态实体线性查找) - 确定显示器热插拔策略(检测到变化时重启 WM) - 添加工作区配置示例和多种配置方式 - 新增模块 - wm_policy_config.h:策略配置开关 - wm_service.h:核心外服务注册和事件订阅 - WM_EVENT_ROUTING.org:事件路由详细文档 - WORKSPACE_CONFIG_EXAMPLES.org:工作区配置示例 - MINIMAL_CORE_WITH_EXTENSIONS.org:设计对比文档 - config_system.org:配置系统设计 - 文档完善 - 大幅扩展 README.org,补充 ID 分配、热插拔、配置集成等说明 - 更新 WM_COMMAND_RULES.org,补充命令规则细节 - 更新 WM_POLICY_APPLY_COMMAND_SKELETON.org,完善实现骨架
This commit is contained in:
@@ -2,10 +2,20 @@
|
||||
|
||||
#include "wm_types.h"
|
||||
|
||||
typedef struct wm_manage_window_init_t {
|
||||
wm_window_geometry_mode_t geometry_mode;
|
||||
bool floating;
|
||||
bool sticky;
|
||||
bool urgent;
|
||||
bool set_focus;
|
||||
} wm_manage_window_init_t;
|
||||
|
||||
typedef enum wm_command_type_t {
|
||||
WM_COMMAND_NONE,
|
||||
WM_COMMAND_MANAGE_WINDOW,
|
||||
WM_COMMAND_UNMANAGE_WINDOW,
|
||||
WM_COMMAND_UPSERT_OUTPUT,
|
||||
WM_COMMAND_REMOVE_OUTPUT,
|
||||
WM_COMMAND_FOCUS_WINDOW,
|
||||
WM_COMMAND_FOCUS_DIRECTION,
|
||||
WM_COMMAND_RAISE_WINDOW,
|
||||
@@ -14,6 +24,7 @@ typedef enum wm_command_type_t {
|
||||
WM_COMMAND_SEND_WINDOW_TO_WORKSPACE,
|
||||
WM_COMMAND_SEND_WINDOW_TO_OUTPUT,
|
||||
WM_COMMAND_TOGGLE_FLOATING,
|
||||
WM_COMMAND_TOGGLE_STICKY,
|
||||
WM_COMMAND_TOGGLE_MAXIMIZE,
|
||||
WM_COMMAND_TOGGLE_FULLSCREEN,
|
||||
WM_COMMAND_TOGGLE_MINIMIZE,
|
||||
@@ -30,12 +41,26 @@ typedef struct wm_command_t {
|
||||
struct {
|
||||
wm_window_id_t window_id;
|
||||
wm_workspace_id_t workspace_id;
|
||||
wm_manage_window_init_t initial_state;
|
||||
bool has_initial_float_rect;
|
||||
wm_rect_t initial_float_rect;
|
||||
} manage_window;
|
||||
|
||||
struct {
|
||||
wm_window_id_t window_id;
|
||||
} unmanage_window;
|
||||
|
||||
struct {
|
||||
wm_output_id_t output_id;
|
||||
wm_rect_t geometry;
|
||||
wm_rect_t workarea;
|
||||
wm_workspace_id_t initial_workspace_id;
|
||||
} upsert_output;
|
||||
|
||||
struct {
|
||||
wm_output_id_t output_id;
|
||||
} remove_output;
|
||||
|
||||
struct {
|
||||
wm_window_id_t window_id;
|
||||
} focus_window;
|
||||
@@ -73,6 +98,10 @@ typedef struct wm_command_t {
|
||||
wm_window_id_t window_id;
|
||||
} toggle_floating;
|
||||
|
||||
struct {
|
||||
wm_window_id_t window_id;
|
||||
} toggle_sticky;
|
||||
|
||||
struct {
|
||||
wm_window_id_t window_id;
|
||||
} toggle_maximize;
|
||||
|
||||
Reference in New Issue
Block a user