Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
xiner.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include <stdio.h>
00008 #include <stdlib.h>
00009 #include <X11/X.h>
00010 #include <X11/Xlib.h>
00011 #include <X11/extensions/Xinerama.h>
00012
00013 int main( int argc , char * argv[] )
00014 {
00015 Display * dpy ;
00016 char * dname=NULL ;
00017 int iarg , quiet=0 ;
00018 XineramaScreenInfo * xsi ; int nxsi ;
00019
00020
00021
00022 if( argc > 1 && strcmp(argv[1],"-help") == 0 ){
00023 printf("Usage: xiner [-display host:num] [-q]\n"
00024 "Gets the Xinerama screen information from the X server,\n"
00025 "Writes a human-readable summary to stderr, and a simpler\n"
00026 "summary to stdout (for use with xrdb).\n"
00027 "If -q option is present, the stderr output is skipped.\n"
00028 "If Xinerama is not active, the exit status is 1, else 0.\n"
00029 ) ;
00030 exit(0);
00031 }
00032
00033
00034
00035 iarg = 1 ;
00036 while( iarg < argc && argv[iarg][0] == '-' ){
00037
00038 if( strcmp(argv[iarg],"-display") == 0 ){
00039 dname = argv[++iarg] ; ++iarg ; continue ;
00040 }
00041
00042 if( strcmp(argv[iarg],"-q") == 0 ){
00043 quiet++ ; iarg++ ; continue ;
00044 }
00045
00046 fprintf(stderr,"**xiner: Unknown option: %s\n",argv[iarg]) ;
00047 exit(1) ;
00048 }
00049
00050
00051
00052 dpy = XOpenDisplay( dname ) ;
00053 if( dpy == NULL ){
00054 fprintf(stderr,"**xiner: Can't open display\n") ; exit(1) ;
00055 }
00056
00057
00058
00059 if( !quiet ){
00060 char * xdef = XGetDefault(dpy,"AFNI","xinerama") ;
00061 if( xdef != NULL ){
00062 fprintf(stderr,"AFNI.xinerama is now set=%s\n",xdef) ;
00063 }
00064 }
00065
00066
00067
00068 xsi = XineramaQueryScreens( dpy , &nxsi ) ;
00069
00070 if( xsi == NULL || nxsi == 0 ){
00071 fprintf(stderr,"Xinerama not active on server\n") ;
00072 exit(1) ;
00073 } else {
00074 int ii ; char *xp , *xstr ;
00075
00076 xstr = (char *) malloc( sizeof(char) * (nxsi+1)*64 ) ;
00077 sprintf(xstr,"AFNI.xinerama: %d",nxsi) ;
00078
00079 if(!quiet) fprintf(stderr,"Xinerama information from server:\n") ;
00080 for( ii=0 ; ii < nxsi ; ii++ ){
00081 if( !quiet )
00082 fprintf(stderr,
00083 " Screen %2d: x origin=%4d y origin=%4d width=%4d height=%4d\n",
00084 xsi[ii].screen_number ,
00085 xsi[ii].x_org , xsi[ii].y_org ,
00086 xsi[ii].width , xsi[ii].height ) ;
00087
00088 sprintf( xstr + strlen(xstr) , " %d %d %d %d %d" ,
00089 xsi[ii].screen_number ,
00090 xsi[ii].x_org , xsi[ii].y_org ,
00091 xsi[ii].width , xsi[ii].height ) ;
00092 }
00093
00094 printf("%s\n",xstr) ;
00095 }
00096
00097
00098
00099 exit(0) ;
00100 }