/* * DWN - Desktop Window Manager * Panel system (top and bottom panels with widgets) */ #ifndef DWN_PANEL_H #define DWN_PANEL_H #include "dwn.h" #include /* Panel position */ typedef enum { PANEL_TOP, PANEL_BOTTOM } PanelPosition; /* Panel structure */ struct Panel { Window window; PanelPosition position; int x, y; int width, height; bool visible; Pixmap buffer; /* Double buffering */ }; /* Panel initialization */ Panel *panel_create(PanelPosition position); void panel_destroy(Panel *panel); void panels_init(void); void panels_cleanup(void); /* Panel rendering */ void panel_render(Panel *panel); void panel_render_all(void); void panel_render_workspaces(Panel *panel, int x, int *width); void panel_render_taskbar(Panel *panel, int x, int *width); void panel_render_clock(Panel *panel, int x, int *width); void panel_render_systray(Panel *panel, int x, int *width); void panel_render_layout_indicator(Panel *panel, int x, int *width); void panel_render_ai_status(Panel *panel, int x, int *width); /* Panel interaction */ void panel_handle_click(Panel *panel, int x, int y, int button); int panel_hit_test_workspace(Panel *panel, int x, int y); Client *panel_hit_test_taskbar(Panel *panel, int x, int y); /* Panel visibility */ void panel_show(Panel *panel); void panel_hide(Panel *panel); void panel_toggle(Panel *panel); /* Clock updates */ void panel_update_clock(void); /* System stats updates */ void panel_update_system_stats(void); /* System tray */ void panel_init_systray(void); void panel_add_systray_icon(Window icon); void panel_remove_systray_icon(Window icon); #endif /* DWN_PANEL_H */