polybar/include/x11/xlib.hpp

41 lines
689 B
C++

#pragma once
#include <X11/Xutil.h>
#include "common.hpp"
POLYBAR_NS
namespace xlib {
extern Display* g_display;
extern XVisualInfo g_visual_info;
extern Display* get_display();
extern Visual* get_visual(int screen = 0);
extern Colormap create_colormap(int screen = 0);
/**
* RAII wrapper for Xlib display locking
*/
class xlib_lock {
public:
explicit xlib_lock(Display* display) {
XLockDisplay(display);
m_display = display;
}
~xlib_lock() {
XUnlockDisplay(m_display);
}
protected:
Display* m_display;
};
inline auto make_display_lock() {
return make_unique<xlib_lock>(get_display());
}
}
POLYBAR_NS_END