+class screen;
+class XWindow;
+
+class epist : public BaseDisplay {
+private:
+ std::string _rc_file;
+ XAtom *_xatom;
+ char **_argv;
+
+ typedef std::vector<screen *> ScreenList;
+ ScreenList _screens;
+
+ typedef std::map<Window, XWindow*> WindowLookup;
+ typedef WindowLookup::value_type WindowLookupPair;
+ WindowLookup _windows;
+
+ ActionList _actions;
+
+ virtual void process_event(XEvent *e);
+ virtual bool handleSignal(int sig);
+
+ void activateGrabs();
+ void addAction(Action::ActionType act, unsigned int modifiers,
+ std::string key, int number = 0);
+ void addAction(Action::ActionType act, unsigned int modifiers,
+ std::string key, std::string str);
+
+public:
+ epist(char **argv, char *display_name, char *rc_file);
+ virtual ~epist();
+
+ inline XAtom *xatom() { return _xatom; }
+
+ void addWindow(XWindow *window);
+ void removeWindow(XWindow *window);
+ XWindow *findWindow(Window window) const;