feat: add maximize window functionality and MRU-based focus management
feat: add focus follow delay configuration feat: add demo mode timing configurations and wait conditions docs: update configuration documentation for new options
This commit is contained in:
@@ -35,11 +35,14 @@ void client_update_title(Client *client);
|
||||
void client_update_class(Client *client);
|
||||
void client_set_fullscreen(Client *client, bool fullscreen);
|
||||
void client_toggle_fullscreen(Client *client);
|
||||
void client_set_maximize(Client *client, bool maximized);
|
||||
void client_toggle_maximize(Client *client);
|
||||
void client_set_floating(Client *client, bool floating);
|
||||
void client_toggle_floating(Client *client);
|
||||
|
||||
bool client_is_floating(Client *client);
|
||||
bool client_is_fullscreen(Client *client);
|
||||
bool client_is_maximized(Client *client);
|
||||
bool client_is_minimized(Client *client);
|
||||
bool client_is_dialog(Window window);
|
||||
bool client_is_dock(Window window);
|
||||
|
||||
@@ -31,6 +31,7 @@ struct Config {
|
||||
char launcher[128];
|
||||
char file_manager[128];
|
||||
FocusMode focus_mode;
|
||||
int focus_follow_delay_ms;
|
||||
bool show_decorations;
|
||||
|
||||
int border_width;
|
||||
@@ -58,6 +59,10 @@ struct Config {
|
||||
bool autostart_enabled;
|
||||
bool autostart_xdg;
|
||||
char autostart_path[512];
|
||||
|
||||
int demo_step_delay_ms;
|
||||
int demo_ai_timeout_ms;
|
||||
int demo_window_timeout_ms;
|
||||
};
|
||||
|
||||
Config *config_create(void);
|
||||
|
||||
@@ -23,6 +23,14 @@ typedef enum {
|
||||
DEMO_COMPLETE
|
||||
} DemoPhase;
|
||||
|
||||
typedef enum {
|
||||
DEMO_WAIT_NONE,
|
||||
DEMO_WAIT_TIME,
|
||||
DEMO_WAIT_WINDOW_SPAWN,
|
||||
DEMO_WAIT_AI_RESPONSE,
|
||||
DEMO_WAIT_EXA_RESPONSE
|
||||
} DemoWaitCondition;
|
||||
|
||||
void demo_init(void);
|
||||
void demo_cleanup(void);
|
||||
void demo_start(void);
|
||||
|
||||
+9
-1
@@ -58,7 +58,8 @@ typedef enum {
|
||||
CLIENT_FULLSCREEN = (1 << 1),
|
||||
CLIENT_URGENT = (1 << 2),
|
||||
CLIENT_MINIMIZED = (1 << 3),
|
||||
CLIENT_STICKY = (1 << 4)
|
||||
CLIENT_STICKY = (1 << 4),
|
||||
CLIENT_MAXIMIZED = (1 << 5)
|
||||
} ClientFlags;
|
||||
|
||||
typedef struct Client Client;
|
||||
@@ -81,6 +82,8 @@ struct Client {
|
||||
char class[64];
|
||||
Client *next;
|
||||
Client *prev;
|
||||
Client *mru_next;
|
||||
Client *mru_prev;
|
||||
};
|
||||
|
||||
struct Monitor {
|
||||
@@ -93,6 +96,8 @@ struct Monitor {
|
||||
struct Workspace {
|
||||
Client *clients;
|
||||
Client *focused;
|
||||
Client *mru_head;
|
||||
Client *mru_tail;
|
||||
LayoutType layout;
|
||||
float master_ratio;
|
||||
int master_count;
|
||||
@@ -142,6 +147,9 @@ typedef struct {
|
||||
int drag_orig_x, drag_orig_y;
|
||||
int drag_orig_w, drag_orig_h;
|
||||
bool resizing;
|
||||
|
||||
Client *pending_focus_client;
|
||||
long pending_focus_time;
|
||||
} DWNState;
|
||||
|
||||
extern DWNState *dwn;
|
||||
|
||||
@@ -50,4 +50,8 @@ void workspace_focus_next(void);
|
||||
void workspace_focus_prev(void);
|
||||
void workspace_focus_master(void);
|
||||
|
||||
void workspace_mru_push(int workspace, Client *client);
|
||||
void workspace_mru_remove(int workspace, Client *client);
|
||||
Client *workspace_mru_get_previous(int workspace, Client *current);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user