I don't have too much to say about this except for the fact that it works as expected, and the sound device did not require a reboot. I have a spare PCI-E Sound Blaster Audigy card that I used for this test, I would assume that a USB sound device of some kind would function the same. When I first created the second seat and logged into KDE Plasma, I was greeted with this:
After assigning my motherboard's onboard sound device to the second seat and logging in a second time, I was greeted with the following image. I plugged in my audio cable, and indeed it worked for its assigned seat. Sound on either seat was independent as expected.
Several months ago, I looked at a common hardware component used by bitcoin miners and the thought occurred to me: this might be useful for creating additional seats. So I went to eBay and purchased one, tested it, and uploaded a short video:
The long story short is, it works fantastic. I have a motherboard with only two PCI-Express 16x graphics slots on it, so that's my theoretical limit for seats: 2. But because I also have a single 1x PCI-E slot I can take advantage of that and use the riser to plug in an additional third 16x card, giving me a third seat.
My thoughts are that if at all, this setup would primarily be useful for anybody who has a motherboard with only one single 16x slot on it. That would negate buying a whole new computer or even another motherboard if you are against such a thing. Just add in another 16x slot using a 1x slot. Just be warned, this setup cannot be used for high end gaming on the second slot. One single PCI-Express lane has more than enough bandwidth for day to day desktop or internet usage, but it would be bandwidth starved with a large real-time 3d workload. All gaming would have to be in connection with whatever video card is in the first slot.
For a second demonstration video, I used BZFlag to quickly highlight the possibility of using multiple seats for gaming. At the end of the video, I return the computer settings back to single user dual-head.
For the purposes of EasySeats, the only benchmark that matters is: "how easy is it to set up?" I also wanted to place emphasis on the fact that it is not required for multiple users to be stuck using the same desktop.
I recently created a simple but fairly long video and uploaded it to a channel on YouTube, to demonstrate in real time a single-user dual-head system which is then split into multiseat, and then brought back to single-user again. I also demonstrated the simultaneous use of KDE, LXDE, and XFCE. I hope this video helps to demonstrate the ease which multiseat can be put into production use.
The fourth installment of EasySeats has been uploaded to github. It will determine the version of systemd in use, and either search for the text file or if it finds a new enough version of systemd, it will get device addresses direct from loginctl.
So I finally got around to uploading the third version of EasySeats. This version has updates primarily around the drop down menu on the second tab, which makes it possible to quickly assign up to five seats.
If you attempt to issue the command loginctl seat-status seat0 with a version of systemd prior to 236, you cannot get full address information except from a maximized terminal window. It makes sense why this was missed, the systemd-devel mailing list release notice for v236 didn't exactly spell it out in the plainest language. Actually, it looks to me like it wasn't announced at all.
This bug fix, which I look at as a new feature for systemd, has large implications to someone such as myself who is developing a GUI to streamline multi-seat creation. It also has large implications for anybody who doesn't want to deal with the command line - for any reason. Using either Python or Java (and I presume other languages as well) the address information that is output by loginctl has ellipses inserted into the center of the addresses making it impossible to programmatically derive the data in a simple way.
Thankfully, Lennart Poettering quickly resolved the issue. Less than a month after I reported the ellipsis bug in loginctl, it was resolved and staged for milestone v236.
As for the GUI program I built for creating multi-seats at the click of a button, EasySeats is currently written in Java and the source code is available for download on GitHub for anybody who is looking for an easier way. It is currently at version .02, which directly derives data from loginctl and back to final seat creation. Version .01 works with the aid of a text file, for those who have an older version of systemd.
I added a new .jar file to the Github releases repository, which changes EasySeats to work directly with systemd instead of relying upon a text file to read the address information.
Not much else to say about it really.
Based on the distros I have installed and conducted some testing on, the easiest distros are Linux Mint and Manjaro. Presumably, any distro which uses LightDM should work out of the box but I will admit that I did not try every single Linux distro out there. I also had a lot of success using most distros if I picked the MATE version as the starting point, such as Fedora.
Additionally, while I did not try starting out with a Gnome 3 based distro and replace GDM3 with LightDM, I did try starting out with a KDE-based distro and switch to LightDM and it did work at creating multiple seats. This was on OpenSUSE using YaST.
The display manager is one of the most important pieces in this process, which means that LightDM and MATE's GDM2 are your best bet for a place to start. This will allow you to see the software in action and test out your hardware, so that you can confirm that you don't have any incompatibilities preventing you from establishing your own multi-seat computer.
(For reference, as of this writing the versions were Linux Mint 18.x Cinnamon and Mate, Manjaro XFCE 17.xx, OpenSuse 42.3, and Fedora 26/27. )
For this release, all you have to do is run the jar file and set up your seats! A separate repository has been set up at github.com/ezst036/EasySeats-releases in order to make it as easy as download-and-go.
Here is what the program currently looks like:
Eventually, this whole UI will probably be replaced with something better. But for now it's built around a straight forward paradigm. The use steps are:
EasySeats is open source software developed to bring ease to users who choose to go multi-seat. It supports video cards for seat creation as well as external USB docks.