JWM Source Documentation
hint.h
Go to the documentation of this file.
00001 00010 #ifndef HINT_H 00011 #define HINT_H 00012 00013 struct ClientNode; 00014 00016 typedef enum { 00017 00018 /* Misc */ 00019 ATOM_COMPOUND_TEXT, 00020 ATOM_UTF8_STRING, 00021 ATOM_XSETROOT_ID, 00022 00023 /* Standard atoms */ 00024 ATOM_WM_STATE, 00025 ATOM_WM_PROTOCOLS, 00026 ATOM_WM_DELETE_WINDOW, 00027 ATOM_WM_TAKE_FOCUS, 00028 ATOM_WM_LOCALE_NAME, 00029 ATOM_WM_CHANGE_STATE, 00030 ATOM_WM_COLORMAP_WINDOWS, 00031 00032 /* WM Spec atoms */ 00033 ATOM_NET_SUPPORTED, 00034 ATOM_NET_NUMBER_OF_DESKTOPS, 00035 ATOM_NET_DESKTOP_NAMES, 00036 ATOM_NET_DESKTOP_GEOMETRY, 00037 ATOM_NET_DESKTOP_VIEWPORT, 00038 ATOM_NET_CURRENT_DESKTOP, 00039 ATOM_NET_ACTIVE_WINDOW, 00040 ATOM_NET_WORKAREA, 00041 ATOM_NET_SUPPORTING_WM_CHECK, 00042 ATOM_NET_SHOWING_DESKTOP, 00043 ATOM_NET_FRAME_EXTENTS, 00044 ATOM_NET_WM_DESKTOP, 00045 00046 ATOM_NET_WM_STATE, 00047 ATOM_NET_WM_STATE_STICKY, 00048 ATOM_NET_WM_STATE_MAXIMIZED_VERT, 00049 ATOM_NET_WM_STATE_MAXIMIZED_HORZ, 00050 ATOM_NET_WM_STATE_SHADED, 00051 ATOM_NET_WM_STATE_FULLSCREEN, 00052 ATOM_NET_WM_STATE_HIDDEN, 00053 ATOM_NET_WM_STATE_SKIP_TASKBAR, 00054 ATOM_NET_WM_STATE_BELOW, 00055 ATOM_NET_WM_STATE_ABOVE, 00056 00057 ATOM_NET_WM_ALLOWED_ACTIONS, 00058 ATOM_NET_WM_ACTION_MOVE, 00059 ATOM_NET_WM_ACTION_RESIZE, 00060 ATOM_NET_WM_ACTION_MINIMIZE, 00061 ATOM_NET_WM_ACTION_SHADE, 00062 ATOM_NET_WM_ACTION_STICK, 00063 ATOM_NET_WM_ACTION_MAXIMIZE_HORZ, 00064 ATOM_NET_WM_ACTION_MAXIMIZE_VERT, 00065 ATOM_NET_WM_ACTION_CHANGE_DESKTOP, 00066 ATOM_NET_WM_ACTION_CLOSE, 00067 ATOM_NET_WM_ACTION_BELOW, 00068 ATOM_NET_WM_ACTION_ABOVE, 00069 00070 ATOM_NET_CLOSE_WINDOW, 00071 ATOM_NET_MOVERESIZE_WINDOW, 00072 00073 ATOM_NET_WM_NAME, 00074 ATOM_NET_WM_ICON, 00075 ATOM_NET_WM_WINDOW_TYPE, 00076 ATOM_NET_WM_WINDOW_TYPE_DESKTOP, 00077 ATOM_NET_WM_WINDOW_TYPE_DOCK, 00078 ATOM_NET_WM_WINDOW_TYPE_SPLASH, 00079 ATOM_NET_WM_WINDOW_TYPE_DIALOG, 00080 ATOM_NET_WM_WINDOW_TYPE_NORMAL, 00081 00082 ATOM_NET_CLIENT_LIST, 00083 ATOM_NET_CLIENT_LIST_STACKING, 00084 00085 ATOM_NET_WM_STRUT_PARTIAL, 00086 ATOM_NET_WM_STRUT, 00087 00088 ATOM_NET_SYSTEM_TRAY_OPCODE, 00089 00090 ATOM_NET_WM_WINDOW_OPACITY, 00091 00092 /* MWM atoms */ 00093 ATOM_MOTIF_WM_HINTS, 00094 00095 /* JWM-specific atoms. */ 00096 ATOM_JWM_RESTART, 00097 ATOM_JWM_EXIT, 00098 ATOM_JWM_RELOAD, 00099 00100 ATOM_COUNT 00101 } AtomType; 00102 00103 #define FIRST_NET_ATOM ATOM_NET_SUPPORTED 00104 #define LAST_NET_ATOM ATOM_NET_SYSTEM_TRAY_OPCODE 00105 00106 #define FIRST_MWM_ATOM ATOM_MOTIF_WM_HINTS 00107 #define LAST_MWM_ATOM ATOM_MOTIF_WM_HINTS 00108 00110 typedef enum { 00111 LAYER_BOTTOM = 0, 00112 LAYER_BELOW = 2, 00113 LAYER_NORMAL = 4, 00114 LAYER_ABOVE = 6, 00115 DEFAULT_TRAY_LAYER = 8, 00116 LAYER_TOP = 12, 00117 LAYER_COUNT = 13 00118 } WinLayerType; 00119 00121 typedef struct ClientState { 00122 unsigned int status; 00123 unsigned int border; 00124 unsigned int layer; 00125 unsigned int desktop; 00126 unsigned int opacity; 00127 } ClientState; 00128 00130 typedef enum { 00131 PROT_NONE = 0, 00132 PROT_DELETE = 1, 00133 PROT_TAKE_FOCUS = 2 00134 } ClientProtocolType; 00135 00136 extern Atom atoms[ATOM_COUNT]; 00137 00138 void InitializeHints(); 00139 void StartupHints(); 00140 void ShutdownHints(); 00141 void DestroyHints(); 00142 00144 void ReadCurrentDesktop(); 00145 00149 void ReadClientProtocols(struct ClientNode *np); 00150 00154 void ReadWMName(struct ClientNode *np); 00155 00159 void ReadWMClass(struct ClientNode *np); 00160 00164 void ReadWMNormalHints(struct ClientNode *np); 00165 00170 ClientProtocolType ReadWMProtocols(Window w); 00171 00175 void ReadWMColormaps(struct ClientNode *np); 00176 00180 void ReadWinLayer(struct ClientNode *np); 00181 00186 ClientState ReadWindowState(Window win); 00187 00191 void WriteState(struct ClientNode *np); 00192 00199 int GetCardinalAtom(Window window, AtomType atom, unsigned long *value); 00200 00207 int GetWindowAtom(Window window, AtomType atom, Window *value); 00208 00214 void SetCardinalAtom(Window window, AtomType atom, unsigned long value); 00215 00221 void SetWindowAtom(Window window, AtomType atom, unsigned long value); 00222 00228 void SetPixmapAtom(Window window, AtomType atom, Pixmap value); 00229 00230 #endif /* HINT_H */ 00231