#include "slcore.h" /* before starting this, should set app user to have : sudo usermod -aG video,input $USER also this only work on linux x86_64 computer */ drmModeConnector *ListMonitors() { int fd = open("/dev/dri/card0", O_RDWR | O_NONBLOCK); if (fd < 0) { return(NULL); } drmModeConnector *monitors = 0x00; drmModeRes *res = drmModeGetResources(fd); for (int i = 0; i < res->count_connectors; i++) { drmModeConnector *conn = 0x00; conn = drmModeGetConnector(fd, res->connectors[i]); if (conn->connection == DRM_MODE_CONNECTED) { printf("Monitor Found: ID %d | Type: %d\n", \ conn->connector_id, conn->connector_type); //addconn to connected monitor arrpush(monitors, *conn); } drmModeFreeConnector(conn); } drmModeFreeResources(res); close(fd); return (monitors); } /* todo: * -KEYMAP_IMPLEMENTATION * -drmcache check gbm framebuffercaching; */ int entry_window_display_manager(int ac, char**av,char**envp) { (void)ac; (void)av; (void)envp; //printf("%i", drmAvailable()); drmModeConnector *monitors = NULL; monitors = ListMonitors(); if (!monitors || !arrlen(monitors)) { //Log Error no available monitors return (-1); } for (int i = 0; i < arrlen(monitors); i++) { printf("%dx%d@%d\n", monitors[i].modes[0].vdisplay, monitors[i].modes[0].hdisplay, monitors[i].modes[0].vrefresh); } arrfree(monitors); return (0); }