Uhm.. It's a long story, but let me try to tell it shortly.<br><br>Im a
college student, and I work as an internship at my college. My boss
wants to develop a system for our library, very similar to a multiseat
system, where we would have embedded lcd monitors and keyboards on the
tables, for students to read .pdf books on them.<br>
<br>For those of you not familiar with the "multiseat" concept, it's
the distributed use of a single cpu amongst 2 or more sets of
keyboards, mouses and monitors. Since most of our daily uses for
computers do not require more than 10% of the cpu's full capacity, it's
a really nice way of providing computers for everyone with a really low
cost.<br>
<br>The thing is, multiseat systems usually require 1 graphics card for
each monitor (or one graphics card for every 2 monitors, if it's a dual
head one), and since my boss' idea is to use outdated computers (with
limited hardware configuration), buying new graphic cards is sort of
senseless, not to mention that those old PCs' motherboards support PCI
cards only, and they're expensive and hard to find.<br>
<br>The solution my boss came up with was to use a single graphics card
(preferentially, the mobo's onboard card) and the parallel port, both
connected to a external circuit, that would have 6 exit vga sockets,
where the 6 monitors would be attached to. A software would be
constantly switching sessions between all logged in users, while the
parallel port would be sending data, informing the circuit which
monitor should receive the imagem from that session at that time, and
the circuit would have it sent to that monitor. <br>
<br>The initial idea was to use virtual terminals (those you switch by
pressing Ctrl+Alt+F[7-11]), having each student to login with his id
number and password as their user data on the operating system. The
first problem was the limited hardware power, which wouldnt allow me to
start even a 2nd X session, let alone 6 sessions per computer. The next
one was the always present delay between X sessions. That made us look
for other solutions.<br>
<br>A friend suggested to use virtual desktops provided by most window
managers, since switching between them can be almost unnoticed. His
idea was to, somehow, separate each desktop to a single user, having
him log into that single virtual desktop, being unable to switch it.
Since I've found nothing about being able to log into the same X
session with different users, each using a different virtual desktop,
another solution popped out: to log with a single user in a single X
session, but to block the virtual desktops. The pdf reader software
would now be accessed through a browser on a intranet, where the
students would log into the intranet, not into the operating system
anymore. Each monitor+keyboard+mouse would interact with a single
virtual desktop only, and all the users would be unable to switch their
virtual desktops and mess with other people's VD. There would still be
an application constantly (and fastly) switching, but this time it'd be
switching virtual desktops, which is way faster than switching virtual
terminals, and sending data to that external circuit.<br>
<br>It's a mix of multiseat systems with something completely new (or
at least I think so), and I'm not even sure if it's possible, but hell,
my boss is asking me to, so here I am. I said I'd be brief, but
apparently I spoke too much, I apologize for that. <br>
<br>And that's why, bizarre as it might seem, I need to know about
those things I've asked... I'm alone on this project, and my boss keeps
asking me for progress, so, any help would be REALLY appreciated. Sorry
for any english mistakes, Im not a native english speaker, but I hope
you've got what I meant at least :)<br>
<br>@Florian Echtler:<br>Thank you very much for your answers. Im still
researching about the WMCtrl, so I cant say much about it yet. About
the multiple X Sessions, I've tried it already, but as you can see in
my huge story, I've had no success.<br>
<br>@Quinn Harris:<br>As I said, Im not a native english speaker, so Im
still trying to get the full meaning of what you've said on your first
paragraph, checking if I missed something on your answer, so I wont ask
again something you've already said ;)<br>
As I said (again? :P), multiseat would be a great solution for my problem, wasnt the low costs idea.<br>And,
last, thats why I need that fast switching. Im absolutely NOT sure
thats the right solution, but I've got no more ideas, and my boss is so
excited about this project, I wish I could make it come true somehow :P<br><br>P.S.: Sorry for sending this twice to you, Quinn. Didnt notice at first that I was replying to you only, and not to the whole list. My apologies :$<br>
<br><div class="gmail_quote">On Mon, Jun 1, 2009 at 9:19 PM, Quinn Harris <span dir="ltr"><<a href="mailto:quinn@qutek.net">quinn@qutek.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Luca,<br>
<br>
X windows systems have a display for each desktop environment (KDE, Gnome).<br>
All X windows applications look for a display server usually specified by the<br>
DISPLAY environment variable then connect to that server via local mechanism<br>
or a network socket. Go to a terminal and type "echo $DISPLAY" you will<br>
probably get ":0.0" that number specifies what local display to use. If your<br>
system is setup for multiple simultaneous X logins (newer distros) each login<br>
will have a different xserver and display, the environment variable is how<br>
processes launched in each environment know what xserver to connect to. Only<br>
one xserver process can use a video card at one time, though they can hand off<br>
control from one server to another and the text console typically using the<br>
Ctrl+Alt+Fx keys. Until the recent xrandr 1.2 implementation, if an xserver<br>
was setup to use two monitors it would create two displays one for each<br>
monitor unless the Xinerama option was on. In this case a different desktop<br>
environment could be run on each display with a common keyboard and mouse<br>
which I think is what you are asking.<br>
<br>
If you have two separate video cards, it is possible (though there can be<br>
issues) to run a different xserver instance for each card with an independent<br>
mouse and keyboard. So one computer with two sets of video, keyboard and<br>
mouse could act like two different computers. This can also be done with one<br>
dual headed video card using Xephyr, but lacks some features (3D) and will be<br>
a little slower. Check out<br>
<a href="http://www.x.org/wiki/Development/Documentation/Multiseat" target="_blank">http://www.x.org/wiki/Development/Documentation/Multiseat</a><br>
<br>
Why do you need to switch between virtual desktops rapidly from a script? Are<br>
you sure this is the right solution to your problem?<br>
<font color="#888888"><br>
<br>
Quinn<br>
</font></blockquote></div><br>