summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorben <ben.nagy@arachnida.blog>2024-08-30 15:54:57 -0700
committerben <ben.nagy@arachnida.blog>2024-08-30 15:54:57 -0700
commit3b65d725ff54fd389b9930dc3cda5af6a6c028ed (patch)
treee4dda7d3debd0b448cf952eababbd95ca77bed77 /src/main.c
parent82c33d0fc4dac5d9f0b1aa1191f7f5f455822060 (diff)
Initialize X server
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 0000000..0230dfd
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,43 @@
+#include "scapx.h"
+
+
+Scr_info *init_XCB_server()
+{
+ Scr_info *info = malloc(sizeof(Scr_info));
+ if (!info) {
+ fprintf(stderr, "memory allocation failed.\n");
+ return NULL;
+ }
+
+ info->con = xcb_connect(NULL, NULL);
+ if (xcb_connection_has_error(info->con) > 0) {
+ fprintf(stderr, "Error opening display.\n");
+ free(info);
+ return NULL;
+ }
+
+ const xcb_setup_t *setup = xcb_get_setup(info->con);
+ info->scr = xcb_setup_roots_iterator(setup).data;
+
+ return info;
+}
+
+int main()
+{
+ Scr_info *info = init_XCB_server();
+
+ if (!info || !info->scr) {
+ fprintf(stderr, "Error opening display.\n");
+ if (info) {
+ xcb_disconnect(info->con);
+ free(info);
+ }
+ exit(EXIT_FAILURE);
+ }
+
+ // TODO: event loop
+
+ xcb_disconnect(info->con);
+ free(info);
+ return 0;
+}