/* * DWN - Desktop Window Manager * retoor * Panel system (top and bottom panels with widgets) */ #ifndef DWN_PANEL_H #define DWN_PANEL_H #include "dwn.h" #include typedef enum { PANEL_TOP, PANEL_BOTTOM } PanelPosition; struct Panel { Window window; PanelPosition position; int x, y; int width, height; bool visible; Pixmap buffer; }; Panel *panel_create(PanelPosition position); void panel_destroy(Panel *panel); void panels_init(void); void panels_cleanup(void); 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); 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); void panel_show(Panel *panel); void panel_hide(Panel *panel); void panel_toggle(Panel *panel); void panel_raise_all(void); void panel_update_clock(void); void panel_update_system_stats(void); void panel_init_systray(void); void panel_add_systray_icon(Window icon); void panel_remove_systray_icon(Window icon); #endif