feat: 添加核心状态变更通知系统
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
#include <stdint.h>
|
||||
#include <zdwm/action.h>
|
||||
#include <zdwm/layout.h>
|
||||
#include <zdwm/listeners.h>
|
||||
#include <zdwm/rules.h>
|
||||
#include <zdwm/types.h>
|
||||
|
||||
@@ -155,6 +156,57 @@ typedef struct zdwm_api_t {
|
||||
const char *normal,
|
||||
const char *focused
|
||||
);
|
||||
|
||||
/** @name Listener 注册
|
||||
* @{ */
|
||||
|
||||
void (*subscribe_current_output)(
|
||||
zdwm_config_builder_t *builder,
|
||||
zdwm_current_output_id_listener *fn,
|
||||
void *user_data
|
||||
);
|
||||
void (*subscribe_initial_workspace_list)(
|
||||
zdwm_config_builder_t *builder,
|
||||
zdwm_initial_workspace_list *fn,
|
||||
void *user_data
|
||||
);
|
||||
void (*subscribe_workspace_active)(
|
||||
zdwm_config_builder_t *builder,
|
||||
zdwm_workspace_active_updated *fn,
|
||||
void *user_data
|
||||
);
|
||||
void (*subscribe_layout)(
|
||||
zdwm_config_builder_t *builder,
|
||||
zdwm_layout_notify *fn,
|
||||
void *user_data
|
||||
);
|
||||
void (*subscribe_binding_mode)(
|
||||
zdwm_config_builder_t *builder,
|
||||
zdwm_binding_mode_notify *fn,
|
||||
void *user_data
|
||||
);
|
||||
void (*subscribe_initial_window_list)(
|
||||
zdwm_config_builder_t *builder,
|
||||
zdwm_initial_window_list *fn,
|
||||
void *user_data
|
||||
);
|
||||
void (*subscribe_window_added)(
|
||||
zdwm_config_builder_t *builder,
|
||||
zdwm_window_added *fn,
|
||||
void *user_data
|
||||
);
|
||||
void (*subscribe_window_updated)(
|
||||
zdwm_config_builder_t *builder,
|
||||
zdwm_window_updated *fn,
|
||||
void *user_data
|
||||
);
|
||||
void (*subscribe_window_removed)(
|
||||
zdwm_config_builder_t *builder,
|
||||
zdwm_window_removed *fn,
|
||||
void *user_data
|
||||
);
|
||||
|
||||
/** @} */
|
||||
} zdwm_api_t;
|
||||
|
||||
/**
|
||||
|
||||
63
include/zdwm/listeners.h
Normal file
63
include/zdwm/listeners.h
Normal file
@@ -0,0 +1,63 @@
|
||||
#ifndef ZDWM_LISTENERS_H
|
||||
#define ZDWM_LISTENERS_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <zdwm/types.h>
|
||||
|
||||
typedef void
|
||||
zdwm_current_output_id_listener(zdwm_output_id_t output_id, void *user_data);
|
||||
|
||||
typedef struct zdwm_workspace_t {
|
||||
zdwm_output_id_t output_id;
|
||||
zdwm_workspace_id_t id;
|
||||
const char *name; /* 不持有内存 */
|
||||
} zdwm_workspace_t;
|
||||
typedef void zdwm_initial_workspace_list(
|
||||
const zdwm_workspace_t *list,
|
||||
size_t count,
|
||||
void *user_data
|
||||
);
|
||||
typedef void zdwm_workspace_active_updated(
|
||||
zdwm_output_id_t output_id,
|
||||
zdwm_workspace_id_t workspace_id,
|
||||
void *user_data
|
||||
);
|
||||
|
||||
typedef struct zdwm_layout_notify_t {
|
||||
zdwm_workspace_id_t workspace;
|
||||
zdwm_layout_id_t id;
|
||||
const char *symbol; /* 不持有内存 */
|
||||
} zdwm_layout_notify_t;
|
||||
typedef void zdwm_layout_notify(zdwm_layout_notify_t layout, void *user_data);
|
||||
|
||||
typedef struct zdwm_binding_mode_notify_t {
|
||||
bool is_default_mode;
|
||||
bool is_current_mode;
|
||||
zdwm_binding_mode_id_t id;
|
||||
const char *name; /* 不持有内存 */
|
||||
} zdwm_binding_mode_notify_t;
|
||||
typedef void zdwm_binding_mode_notify(
|
||||
zdwm_binding_mode_notify_t binding_mode,
|
||||
void *user_data
|
||||
);
|
||||
|
||||
typedef struct zdwm_window_t {
|
||||
zdwm_workspace_id_t workspace;
|
||||
zdwm_window_id_t id;
|
||||
const char *title; /* 不持有内存 */
|
||||
bool focused;
|
||||
bool urgent;
|
||||
bool skip_taskbar;
|
||||
} zdwm_window_t;
|
||||
typedef void zdwm_initial_window_list(
|
||||
const zdwm_window_t *list,
|
||||
size_t count,
|
||||
void *user_data
|
||||
);
|
||||
typedef void zdwm_window_added(const zdwm_window_t *window, void *user_data);
|
||||
typedef void zdwm_window_updated(const zdwm_window_t *window, void *user_data);
|
||||
typedef void zdwm_window_removed(zdwm_window_id_t window_id, void *user_data);
|
||||
|
||||
typedef struct zdwm_listeners_t zdwm_listeners_t;
|
||||
|
||||
#endif /* ZDWM_LISTENERS_H */
|
||||
@@ -7,6 +7,7 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef uint32_t zdwm_output_id_t;
|
||||
typedef uint32_t zdwm_layout_id_t;
|
||||
typedef uint32_t zdwm_window_id_t;
|
||||
typedef uint32_t zdwm_workspace_id_t;
|
||||
|
||||
Reference in New Issue
Block a user