x.cpp 759B

1234567891011121314151617181920212223
  1. #include "x.hpp"
  2. bool X11::hasCompositor() {
  3. std::stringstream prop_name;
  4. prop_name << "_NET_WM_CM_S" << XScreenNumberOfScreen( screen );
  5. Atom prop_atom = XInternAtom(display, prop_name.str().c_str(), False);
  6. return XGetSelectionOwner(display, prop_atom) != None;
  7. }
  8. X11::X11( std::string displayName ) {
  9. // Initialize display
  10. display = XOpenDisplay( displayName.c_str() );
  11. if ( !display ) {
  12. throw new std::runtime_error(std::string("Error: Failed to open X display: ") + displayName );
  13. }
  14. screen = ScreenOfDisplay( display, DefaultScreen( display ) );
  15. visual = DefaultVisual( display, XScreenNumberOfScreen( screen ) );
  16. root = DefaultRootWindow( display );
  17. }
  18. X11::~X11() {
  19. XCloseDisplay( display );
  20. }