Subject: Commandline screen switching
To: None <netbsd-users@netbsd.org>
From: Michael Kukat <michael@unixiron.org>
List: netbsd-users
Date: 11/13/2002 09:00:20
Hello all,

someone using a notebook? I think the problem is quite normal, that in
suspending the machine or switching off the display, the X doesn't come up fine
after resuming. The only thing to get this done right: switch to text console
after suspending, and after waking up, switch back to screen 5 to get a fine
working X.
Aren't computers made to make things easier? We want to do this automatically.
wsconscfg/wsconsctl don't have these features included. Why not? Will this be
added in future releases?

Until then, here is a very simple code fragment (okay, it is a fully working
program :):

#include <stdio.h>
#include <sys/types.h>
#include <dev/wscons/wsdisplay_usl_io.h>
#include <sys/ioctl.h>
#include <fcntl.h>

int main(int argc, char **argv) {
	int fd, screen;

	if(argc != 2) {
		fprintf(stderr, "Usage: %s <screen [1-8]>\n", argv[0]);
		return(1);
	}

	screen = atoi(argv[1]);
	if(screen < 1 || screen > 8) {
		fprintf(stderr, "Screen number %d invalid\n", screen);
		return(1);
	}

	fd = open("/dev/ttyEcfg", O_RDWR, 0);
	if(fd != -1) {
		printf("Switching");
		if(ioctl(fd, VT_ACTIVATE, screen) != 0)
			perror("ioctl");
		close(fd);
	} else perror("open");
}

Save this as wsswitch.c, compile it with
gcc -s -O2 -o wsswitch wsswitch.c

and edit your scripts in /etc/apm to do
wsswitch 1
in standby/suspend and do
wsswitch 5
in resume

This doesn't avoid the real problem but is a fine workaround for the problem.

Other purposes: s script like
while true; do wsswitch 1; sleep 5; wsswitch 2; sleep 5; wsswitch 3; sleep 5; done

to monitor the activities on multiple ttys, where things like this cute i4b
monitor are running.


No warranties, usual disclaimer stuff, i hope, someone has a use for this,
otherwise just ignore this mail :) This is just a little hack which doesn't get
any version number nor is it supported in any way.

...Michael

-- 
http://www.bsdfans.org/     Home Powered by: (Net|Open|Free)BSD IRIX NonStop-UX
Solaris AIX HP-UX Tru64 MUNIX Ultrix VMS SINIX Dolphin_Unix OpenStep MacOS A/UX