How do I share a single computer among different users?

I know that every operating system worth using supports multiple independent users; this makes it easy for several people to share a single computer, with their own documents and everything. However, there is one small problem: the sharing can't occur simultaneously.

Remote Desktop or other similar software allows people to connect to a computer from somewhere else and log-in as any user, without disturbing other users. However I wonder, isn't is possible for multiple people with different user accounts to use a computer at the same time, locally, via multiple monitors and input devices? I tried plugging in a second keyboard, mouse and monitor, however, Windows will mirror or extend the display to the second monitor and the second set of input devices become pretty much like... well... I can't think of anything useless enough to compare them to.

How would I share a single computer with different people? Assume I have a keyboard, mouse and monitor for everyone, connected to multiple video cards (either multiple outputs on a single video card or one monitor/card).


Solution 1:

The answer depends on whether you use Windows or Linux:

  1. If it is a Windows computer, nComputing products will do exactly what you want. They supply the keyboard/mouse/video devices, which cost on the order of $75-200 per added user depending on whether you want to add users via PCI (cheapest), USB, or Ethernet. (Windows licensing note: These products will function with or without additional Windows licensing, but you should be aware that Microsoft may not consider an installation legal unless you purchase a Windows Server license for the host and an RDS CAL for each user. Contact nComputing for details.)

  2. If it is a Linux computer, Userful will do exactly what you want. They supply software only, and you connect the keyboards/mice/displays using Linux-compatible commodity hardware.

I am not personally familiar with Userful, but I am personally familiar with nComputing. I was involved in a test deployment as follows:

  • Before: 14 Pentium 4 workstations, each with an IDE drive and between 512MB-1GB of DDR, running Windows XP

  • After: 3 Core 2 Duo workstations, each with a SATA drive and 3GB of DDR2, each workstation shared between 4-6 users via nComputing X-series hardware, still running Windows XP

The difference in performance was phenomenal, and all of the end-users were very happy with the shared workstations. This type of solution certainly wouldn't work well for high-performance computing applications like CAD, GIS, or video editing, but shared computing makes all kinds of sense for office application users, call centers, cybercafes, etc.

Solution 2:

AFAIK this is only possible with Linux (and *nixes) and X11. You can configure multiple Displays which can each use a video device and their own inout devices.

Here's an example of such a setup: Six-headed multiseat system Here are a few additional links for Archlinux and Ubuntu. Or just google around or X11 multiseat. There's even a Wikipedia article about it!

I don't think that such a thing is possible with Windows. On OS X you may have luck and be able to set up multiple X11 heads, but not with the original Apple GUI. But i'm not sure about that.

It works on linux for sure!

[edit] The Wikipedia article reads like multiseat support is not really there yet. IMHO that's just wrong. It works - if you plan it carefully. But there's also a part about solutions for Windows. I haven't checked out any of them, though.

Solution 3:

There are countless solutions along these lines that might do what you want. I wouldn't like to recommend one over another because I think the ROI on something like this is poor, but if you want to start digging away at this that gives you a place to start.