У меня более-менее стандартная установка Ubuntu Precise 12.04, и я вполне доволен выполнением повседневных задач в среде рабочего стола Unity.
Однако, когда дело доходит до игры, я чувствую себя намного более комфортно с LXDE (фон: в текущем состоянии Unity архивирует гораздо более низкие частоты кадров, чем, например, Unity 2D или LXDE - это известная ошибка и над которой работают). ]
Для этого я создал профиль пользователя геймера и теперь хочу ограничить его использованием только рабочей среды LXDE.
Чтобы уточнить это далее: когда меня просят войти в систему после загрузки, я хочу, чтобы только LXDE отображался как опция для профиля пользователя геймера на экране входа в систему, в то время как в моем стандартном профиле пользователя должна быть возможность выбрать, какой рабочий стол среда для использования.
Заранее благодарим за любые идеи, которые могут быть полезны!
в Debian Squeeze и Wheezy вы также можете добавить .xsessionrc с одной строкой
export STARTUP = XXX
(где XXX - это ваш принудительный сценарий сеанса, см. Exec-Line выше) в домашнем каталоге пользователя принудительно установить определенный тип сеанса независимо от того, что выбрал пользователь.
Также должен работать на Ubuntu.
(Загляните в /etc/X11/Xsession.d/40x11-common_xsessionrc и 50x11-common_determine-startup, чтобы увидеть, почему это работает)
Хорошо, из моего понимания LightDM (менеджера входа в систему), кажется, не поддерживается ограничение рабочих столов для конкретного пользователя . Это сделка «все или ничего». По умолчанию, когда пользователь выбирает среду рабочего стола, это становится его средой рабочего стола по умолчанию. Когда они войдут в следующий раз, если они не выберут другой, они войдут в систему по умолчанию.
Однако вы можете сделать так, чтобы пользователь не мог изменить это. Этот пользователь по-прежнему сможет выбирать другую среду рабочего стола, но если он это сделает, он не изменит их по умолчанию. Я считаю, что это самый безопасный способ сделать это, если вы не беспокоитесь, что человек это изменит. Все, что вам нужно сделать, это отредактировать их .dmrc
файл (расположенный в их домашнем каталоге, т.е. / home / user). Здесь хранится их сессия по умолчанию. Измените переменную Session
в этом файле на любую, какую вы хотите, то есть ubuntu
- это Unity DE по умолчанию, ubuntu-2d
- Unity 2D, а LXDE
- LXDE. Чтобы это не изменилось, если они войдут в систему с другим DE, мы можем просто сделать его неизменным (неизменяемым):
sudo chattr +i /home/user/.dmrc
Теперь никто не сможет изменить этот файл (root и другие). программы включены), если вы не уберете неизменный флаг:
sudo chattr -i /home/user/.dmrc
Если вы абсолютно НЕ хотите, чтобы этот пользователь когда-либо входил в систему с другим DE, я действительно нашел хакерский способ (то есть, сделать это самостоятельно риск) для достижения этой цели. Мне было немного скучно, и это казалось забавной попыткой. Все различные DE, которые LightDM может видеть, хранятся в /usr/share/xsessions
как файлы .desktop
. К вашему сведению, вы можете удалить любой из них, который вы не хотите показывать на экране входа в систему (но это удалит его для ВСЕХ пользователей). Если вы откроете любой из них, они довольно просты. Это основные файлы запуска на рабочем столе, как и все ярлыки на рабочем столе. Каждый из них содержит строку Exec
, которая выполняется, когда вы выбираете свой DE на экране входа в систему (то есть какой DE запускается). Мы собираемся воспользоваться этим и проверить, какой пользователь входит в систему. Если пользователь является нашим ограниченным пользователем, мы заставим его использовать определенную DE.
Во-первых, для каждого файла .desktop
в /usr/share/xsessions/
вам нужно будет создать скрипт в /usr/local/bin
. Для моего примера я покажу, как это сделать для ubuntu.desktop
, который является Unity DE, и с использованием LXDE в качестве DE, который мы заставляем использовать нашего ограниченного пользователя (disableduser). Глядя на LXDE.desktop, мы видим, что команда Exec
- это /usr/bin/startlxde
, а команда TryExec
отсутствует. Когда вы открываете ubuntu.desktop
, мы видим, что команда Exec
- это gnome-session --session=ubuntu
, а команда TryExec
- unity
. Команда TryExec
как раз и звучит. После выполнения команды Exec
он попытается выполнить команду TryExec
, но в случае неудачи он не будет аварийно завершен.
Теперь, взяв те команды, которые мы получили из файлов .desktop
, мы можем создавать наши скрипты. Мы поместим их в /usr/share/bin
. Нам нужно будет сделать два, один для Exec
и один для TryExec
. Мы сделаем что-то вроде этого:
ubuntude.sh
#!/bin/bash
if [ `/usr/bin/whoami` = "restricteduser" ] ; then
/usr/bin/startlxde
else
gnome-session --session=ubuntu
fi
ubuntudetry.sh
#!/bin/bash
if [ `/usr/bin/whoami` != "restricteduser" ] ; then
unity
fi
Мы просто проверяем, является ли вход в систему нашим ограниченным пользователь, и запуск соответствующего DE. Теперь нам нужно убедиться, что они исполняемые:
sudo chmod +x /usr/local/bin/ubuntude.sh
sudo chmod +x /usr/local/bin/ubuntudetry.sh
Теперь нам нужно изменить наш ubuntu.desktop
так, чтобы он вызывал наши скрипты вместо реальных DE. Закомментируйте строки Exec
и TryExec
в файле и замените их следующим:
Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh
Просто повторите процедуру для любых других DE, которые у вас могут быть. Если для DE нет TryExec
, то для него также нет необходимости создавать сценарий detry.sh, так как LXDE не использует TryExec
. Очевидно, это немного странно, и вы должны убедиться, что вы сделали резервные копии любых файлов перед их редактированием, но это сработает, если вам абсолютно необходимо убедиться, что пользователь входит в систему с правильным DE.
Ответ от reverendj1 не работал на меня. Причина могла состоять в том, что значение, которое Вы указываете в Должностном лице =, не выполняется непосредственно, но передается/etc/X11/Xsession как аргумент. (источник: https://askubuntu.com/a/857420/873016)
Другое решение проблемы:
1. Скопируйте все/usr/share/xsessions/.desktop файлы
2. Удалите все/usr/share/xsessions/.desktop файлы
3. Создайте только/usr/share/xsessions/default.desktop с
[Desktop Entry]
Name=Default
Comment=This session is the default session. It will look up the user specific desktop session in ~/.xsession.
Exec=default
"значение по умолчанию" является ключевым словом для Xsession и будет искать определенную сессию в каталоге пользователя.
4. Теперь создайте/home/{имя пользователя}/.xsession файл для каждого имени пользователя. Для "подобного киоску" приложения это должно быть похожим на это:
#!/bin/bash
cd /home/{yourUsername}/ && ./startApplication.py
logout
Если, например, другой пользователь должен быть позволен запустить полноценную среду рабочего стола, она могла бы быть похожей на это:
#!/bin/bash
exec icewm-session
sudo chmod +x ~/.xsession
Протестированный на человечности 16.04 с lightdm