2 * ion/mod_statusbar/main.c
4 * Copyright (c) Tuomo Valkonen 1999-2009.
6 * See the included file LICENSE for details.
9 #include <libtu/minmax.h>
10 #include <libextl/readconfig.h>
11 #include <ioncore/saveload.h>
12 #include <ioncore/bindmaps.h>
13 #include <ioncore/global.h>
14 #include <ioncore/ioncore.h>
16 #include "statusbar.h"
20 /*{{{ Module information */
23 #include "../version.h"
25 char mod_statusbar_ion_api_version[]=ION_API_VERSION;
34 WBindmap *mod_statusbar_statusbar_bindmap=NULL;
43 static bool is_systray(WClientWin *cwin)
45 static Atom atom__kde_net_wm_system_tray_window_for=None;
46 Atom actual_type=None;
49 unsigned long bytes_after;
54 if(extl_table_gets_s(cwin->proptab, "statusbar", &dummy)){
59 if(atom__kde_net_wm_system_tray_window_for==None){
60 atom__kde_net_wm_system_tray_window_for=XInternAtom(ioncore_g.dpy,
61 "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR",
64 if(XGetWindowProperty(ioncore_g.dpy, cwin->win,
65 atom__kde_net_wm_system_tray_window_for, 0,
66 sizeof(Atom), False, AnyPropertyType,
67 &actual_type, &actual_format, &nitems,
68 &bytes_after, &prop)==Success){
69 if(actual_type!=None){
79 static bool clientwin_do_manage_hook(WClientWin *cwin, const WManageParams *param)
86 sb=mod_statusbar_find_suitable(cwin, param);
90 return region_manage_clientwin((WRegion*)sb, cwin, param,
91 MANAGE_PRIORITY_NONE);
98 /*{{{ Init & deinit */
101 void mod_statusbar_deinit()
103 hook_remove(clientwin_do_manage_alt,
104 (WHookDummy*)clientwin_do_manage_hook);
106 if(mod_statusbar_statusbar_bindmap!=NULL){
107 ioncore_free_bindmap("WStatusBar", mod_statusbar_statusbar_bindmap);
108 mod_statusbar_statusbar_bindmap=NULL;
111 ioncore_unregister_regclass(&CLASSDESCR(WStatusBar));
113 mod_statusbar_unregister_exports();
117 bool mod_statusbar_init()
119 mod_statusbar_statusbar_bindmap=ioncore_alloc_bindmap("WStatusBar", NULL);
121 if(mod_statusbar_statusbar_bindmap==NULL)
124 if(!ioncore_register_regclass(&CLASSDESCR(WStatusBar),
125 (WRegionLoadCreateFn*) statusbar_load)){
126 mod_statusbar_deinit();
130 if(!mod_statusbar_register_exports()){
131 mod_statusbar_deinit();
135 hook_add(clientwin_do_manage_alt,
136 (WHookDummy*)clientwin_do_manage_hook);
138 /*ioncore_read_config("cfg_statusbar", NULL, TRUE);*/