On Monday 03 March 2003 10:37 pm, Danny Tholen wrote:
> Loki's Kohan runs only in 1024x768, but I hate using my desktop in that
> resolution (low refresh, small fonts). Switching during session would be
> nice. And certainly easier compared to starting a new xserver.

Hmm... some of you will probably rate this offtopic, but if you don't drop 
seeds you'll never get trees...

Sun have this really cool feature for their SunRay and similar workstations 
which allows you to log in to any random terminal with a card; when you pull 
out your card your session is either suspended or shovelled into /dev/null; 
when you plug in elsewhere it comes back up again.

To do this, the apps must be able to cope with different kinds of screens 
(resolution and colour depth at least) and changing those on the fly. But as 
you've exemplified here, not all apps will co-operate.

One possible solution is to use XNest, and run the offending app in a `screen 
size' that it likes, but XNest (even a `rootless XNest!') isn't quite what I 
have in mind.

Xv also provides a useful facility, a not-quite-bitbucket X server, but this 
is also not what I'm seeking.

Think `screen' for X.

What I want is an interface layer which sits between the apps and the real X 
server (or perhaps between the WM and the real server would be better), and 
in normal circumstances does nothing, uses little or no resources (e.g., 
calls are vectored straight through to the real server untouched).

If you pulled the card from your screen, logged out, or whatever (maybe the 
ssh tunnel fails), the interface layer would take charge and either SIGSTOP 
the processes attached through it, route the outbound traffic to /dev/null 
and fake the inbound traffic, route the traffic to an Xv-like or some 
combination of the above.

When you plugged in again, logged in again, rebuilt your VPN or whatever, you 
would be able to attach (even at a different screen rez or depth) your 
existing session and do a refresh. Apps which didn't indicate an ability to 
handle an environment different to the one they started in would be emulated 
(e.g. scaled to fit on a smaller or larger screen, run through an XNest-like 
emulator for differing screen depths.

I'm not sure that this would work at all well for OpenGL apps, but OTOH they 
should in theory be able cope with scaling issues (a change in the surface 
they're rendering to) much more seamlessly than an app which knows so much 
more about X directly.

The ability to invoke virtual magic on a per-app basis would be very nice 
(e.g. scale Tower Topler window contents 2x2 or 3x3 on this 2000x1600 screen 
so I can actually see what's happening, crush down the huge linuxconf intro 
panel so I can see it all on an 800x600 screen).

RandR-type resizing/redepthing would be handled in pretty much the same way as 
a detach/reattach-at-different-rez.

You could `broadcast' an X app or screen with this technology to a bunch of 
disparate machines for teaching or meeting-style apps, and have most of the 
depth/size and similar tradeoffs handled the same way that they would be for 
any other app appearing on each server's desktop.

Fitting 2D apps into a proper 3D desktop would be relatively trivial with this 
technology, you'd just `reattach' the app to an OpenGL surface.

Now... is there anything around which does all/most of this already? Any of 
the 3D WM's, for example, that virtualise a lot of stuff without much of a 
performance hit?

Cheers; Leon

Reply via email to