Multiseat config interface
Настройка рабочих мест через systemd/loginctl не то чтоб сложная, но довольно утомительная в части идентификации нужных устройств, и передачи их на нужное рабочее место. Действие это сопряжено с перекрестным рассматриванием вывода lspci и loginctl seat-status, и многочисленным копированием через буфер длинных строчек текста-абракадабры. К тому же всегда есть шанс ошибиться (неверно передать не то устройство не туда), в результате чего единственное рабочее место может потерять клавиатуру и/или мышь.
Поэтому было бы неплохо, чтоб, например, в Альтераторе был соответствующий модуль. Внешний вид приблизительно такой:
Как это должно работать:
- Программа должна автоматически парсить вывод loginctl seat-status seat0, обнаруживать в нем все видеокарты по строке вида drm:card0, и в соответствии с количеством карт (минус одна) формировать количество окошек в правой части и кнопок "Add>>".
- В левом большом поле должен быть полный список устройств. Причем, желательно в более читаемом формате, чем в выхлопе loginctl. Предположительно, более читаемые имена устройств можно вытянуть из lspci и lsusb
- При нажатии "Add>>" соответствующее устройство пропадает из полного списка и появляется в списке устройств для выбранного рабочего места. При этом в поле "Seat name" можно ввести имя рабочего места, по умолчанию "seat1", "seat2" и т.д.
- Должна быть кнопка "Сохранить конфигурацию", которая сохраняет состояние в какой-то файл. Чтоб потом можно было загрузить его и применить получившиеся настройки
- Должна быть кнопка "Применить". С очевидным действием. Но! Было бы неплохо предусмотреть механизм автоматического "отката" через интервал времени (как это было сделано в настройках монитора в прошлых версиях Windows). Чтоб если пользователь что-то сделал неправлиьно, и лишился клавиатуры/мыши, через 20 секунд все рабочие места удалились через loginctl flush-devices, и все вернулось на исходную позицию.
- Красная кнопка - удаления всех настроек.