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
[]=NOTION_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);*/