Last week I uploaded the first iteration of EasySeats, an open source program written to eliminate the need of using the command line to enable and configure multi-seat setting on Linux based computers. If you are experienced with Linux but have never attempted to enable multi-seat on your computer before, just know that it may not work out of the box. If you are new to multi-seat, great!
Below, I will go over some technical information that users may need but first, where is the code? The code has been uploaded to my Github repository here: github.com/ezst036/EasySeats-Java
During my initial testing, I have used this software on a two-slot motherboard with two older generation Radeon cards (using the r600 driver) without putting in any codes on the command line. I am looking for feedback, and I do have ideas for more features I am going to build in as I go forward, but know, that in most instances if you run into an issue you probably will not need to put a bug report in with me. For example, the SDDM display manager does not currently support multi-seat, it is a work in progress. I do strongly suggest that you become active in putting in bug reports.
How to use EasySeats:
Most importantly, EasySeats is Java based. I recommend getting Java directly from Oracle before attempting to run it. When I ran EasySeats for its final test before release, I put it into its own Jar file and ran it from the desktop. I would like to make a c++ version of EasySeats, but for now that is for the future.
EasySeats is currently built to take advantage of systemd's loginctl functionality, meaning that if you do not have a Linux distribution which has systemd, EasySeats is not functional.
Moreover, and this is critically important, EasySeats currently relies upon a text file to properly function. You read that right! When it was first built, loginctl did not properly handle the ellipsis functionality of systemd in the context of getting device addresses. This means that I could not initially get device addresses out of loginctl programmatically. I say initially, because I already submitted a bug report, that bug report is supposed to be fixed and a part of systemd 236. I have not tested it yet. In a future release, I will make systemd functionality default and txt file functionality secondary. Once you have created the txt file, issue the command loginctl seat-status seat0 and copy the contents into the text file.
As to where said text file should be placed, it should be in the root directory of your user. For me, the file is in /home/user/seatstatus.txt. Original, right! Yes, well, I did most of this work on a test computer so that I could re-install at any time without worry of losing anything important. That, and my main computer does not have two pci express slots. So there's that.
After launching EasySeats, assigning seats is as easy as click, click, assign. Then reboot. That's it! Easy! In most instances, seat assignment behind the scenes is not done in real-time by the operating system, not from what I have seen.
When you first launch EasySeats, notice that it is multi-tabbed. However, the program will not do much until you get your system devices. This will populate all of the addresses into the program and make it work. The functionality of the second tab is enabled when you click the get devices button. I have tested the get devices button with systemd, but until I test it with systemd 236 that functionality is not enabled. For now, all of these devices get pulled from the text file.
On the second tab, you will notice that all the devices are listed on the left hand side. The add and remove button allow you to add additional devices to additional seats, such as USB devices, represented by the jlist on the right hand side. With systemd, seat creation does not work unless you begin with a video card.
A video card is all that is necessary for the creation of a second seat. That's it. It is my recommendation that for testing purposes, you should add your second video card to seat 1 and then reboot. If it works, you will be greeted with two login screens. Any USB devices can be added in real-time without the need for a reboot. Within EasySeats, video cards will be represented by the address drm/card0, drm/card1, etc.
I would like to stress, that I have only tested this out with a two user setup. If you have a motherboard with three slots, I would encourage you to do some testing with a spare main drive first. I expect that nothing at all will happen, but its your data.
Finally, once you have added all of your devices to the secondary window, the "Assign" button is what ships out the command to enable your seat. When you do this, keep in mind that each device is handled individually. So if you assign 5 devices to your second seat, expect to put in your root password 5 times. This is annoying, yes, but it is actually a great thing because in each instance you know for certain that your device was accepted. To put it another way, the operating system is acknowledging that "this is going to work" in each instance.
So, I think that about covers it. I will have future information for all of you multi-seaters out there and I hope that I can be of assistance in some instances. I will, from time to time, create bug reports where necessary(such as I did with systemd) in the hope that it will further streamline life for those of us who would like for more than one person to be able to use the computer at the same time. I hope to hear from all of you!
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.