#include #include #include #include int main (int argc, char *argv[]) { Display *dpy; XF86VidModeModeInfo **vm_modelines; int vm_count; int i; unsigned int width, height, dotclock; dpy=XOpenDisplay(""); XF86VidModeGetAllModeLines(dpy,XDefaultScreen(dpy),&vm_count,&vm_modelines); if(!(vm_count)) { fprintf(stderr,"error: no video modes found\n"); exit(1); } if(argc > 3) { width = atoi(argv[1]); height = atoi(argv[2]); dotclock = atoi(argv[3]); for(i=0; i < vm_count; i++) { if(vm_modelines[i]->hdisplay==width && vm_modelines[i]->vdisplay==height && vm_modelines[i]->dotclock==dotclock) { XF86VidModeSwitchToMode(dpy,XDefaultScreen(dpy),vm_modelines[i]); XFlush(dpy); return 0; } } } for(i=0; i < vm_count; i++) { unsigned int vfreq = (vm_modelines[i]->dotclock*1000)/(vm_modelines[i]->htotal*vm_modelines[i]->vtotal); printf("\"%dx%d %dHz\": %s %d %d %d\n",vm_modelines[i]->hdisplay,vm_modelines[i]->vdisplay, vfreq, argv[0], vm_modelines[i]->hdisplay, vm_modelines[i]->vdisplay, vm_modelines[i]->dotclock); } return 0; }