[comp.sys.sun] Screen depth -- really, WHICH SCREEN

jacob@itd.nrl.navy.mil (01/04/89)

>............what I really need is a way to find out which device I
>happen to be using.  (I have suntools running on both screens and can move
>back and forth just my moving the mouse over -- "adjacentscreens" allows
>this.)  So if I had a routine that returns "/dev/fb" or "/dev/cgfour0", I
>could easily find the depth.

How about this routine...I use it mainly as a stand-alone program to call
from shell scripts, but I think it does what you want -- i.e., returns the
device name of the frame buffer under the window it's run from (or else ""
if it looks like you're not inside a window system).

#include <suntool/sunview.h>
#include <fcntl.h>
char *ScreenName() {
	int f;
	char winname[WIN_NAMESIZE];
	struct screen rootscreen;
	static char ans[SCR_NAMESIZE];

	if (we_getparentwindow(winname)!=0) return("");

	if ( (f=open (getenv("WINDOW_PARENT"), O_RDONLY, 0)) == -1) return("");
	win_screenget(f, &rootscreen);

	if ( (f = open(rootscreen.scr_rootname, O_RDONLY, 0)) == -1) return("");

	strcpy (ans, rootscreen.scr_fbname);
	return (ans);
}

Good luck,
Robert Jacob
NET:	jacob@itd.nrl.navy.mil
SNAIL:	Code 5530, Naval Research Lab, Washington, D.C. 20375