У меня более или менее стандартная установка Ubuntu Precise 12.04, и я вполне доволен выполнением повседневных задач в среде рабочего стола Unity.
Тем не менее, когда дело доходит до игры, я чувствую себя намного более комфортно с LXDE (фон: в текущем состоянии Unity архивирует гораздо более низкие частоты кадров, чем, например, Unity 2D или LXDE - это известная ошибка, над которой мы работаем).
Для этого я создал профиль пользователя геймера и теперь хочу ограничить его использованием только рабочей среды LXDE.
Чтобы уточнить это далее: когда меня просят войти в систему после загрузки, я хочу, чтобы только LXDE отображался как опция для профиля пользователя геймера на экране входа в систему, в то время как в моем стандартном профиле пользователя все еще должна быть возможность выбрать, какую среду рабочего стола использовать.
Заранее благодарим за понимание, которое может помочь!
источник
Ответы:
Хорошо, из моего понимания LightDM (менеджера входа в систему), кажется, не поддерживается ограничение рабочих столов для конкретного пользователя. Это сделка «все или ничего». По умолчанию, когда пользователь выбирает среду рабочего стола, это становится его средой рабочего стола по умолчанию. Когда они войдут в следующий раз, если они не выберут другой, они войдут в систему по умолчанию.
Однако вы можете сделать так, чтобы пользователь не мог изменить это. Этот пользователь по-прежнему сможет выбрать другую среду рабочего стола, но если он это сделает, он не изменит их по умолчанию. Я считаю, что это самый безопасный способ сделать это, если вы не беспокоитесь, что человек это изменит. Все, что вам нужно сделать, это отредактировать их
.dmrc
файл (расположенный в их домашнем каталоге, т.е. / home / user). Здесь хранится их сессия по умолчанию. ИзменитеSession
переменную в этом файле на любую, какую вы хотите, т.е.ubuntu
это Unity DE по умолчанию,ubuntu-2d
Unity 2D иLXDE
LXDE. Чтобы это не изменилось, если они войдут в систему с другим DE, мы можем просто сделать его неизменным (неизменяемым):Теперь никто не сможет изменить этот файл (включая root и другие программы), если вы не уберете флаг immutable:
Если вы абсолютно НЕ хотите, чтобы этот пользователь когда-либо входил в систему с другим DE, я нашел действительно хакерский способ (т.е. сделал это на свой страх и риск) для достижения этой цели. Мне было немного скучно, и это казалось забавной попыткой. Все различные DE, которые LightDM может видеть, хранятся в
/usr/share/xsessions
виде.desktop
файлов. К вашему сведению, вы можете удалить любой из них, который вы не хотите показывать на экране входа в систему (но это удалит его для ВСЕХ пользователей). Если вы откроете любой из них, они довольно просты. Это основные файлы запуска рабочего стола, как и все ярлыки на рабочем столе. Каждый содержитExec
строка, которая исполняется, когда вы выбираете свою DE на экране входа в систему (т.е. какая DE запускается). Мы собираемся воспользоваться этим и проверить, какой пользователь входит в систему. Если пользователь является нашим ограниченным пользователем, мы заставим его использовать определенную DE.Во-первых, для каждого
.desktop
файла/usr/share/xsessions/
вам необходимо создать скрипт в/usr/local/bin
. Для моего примера я покажу, как это сделатьubuntu.desktop
, то есть для Unity DE, и используя LXDE в качестве DE, который мы вынуждаем использовать нашего ограниченного пользователя (limiteduser). Глядя на 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
ubuntudetry.sh
Мы просто проверяем, является ли входящий в систему пользователь с ограниченными правами, и запускаем соответствующий DE. Теперь нам нужно убедиться, что они исполняемые:
Теперь нам нужно изменить наш
ubuntu.desktop
так, чтобы он вызывал наши сценарии, а не фактические DE. ЗакомментируйтеExec
иTryExec
строки в файле, и заменить их следующим образом :Просто повторите процедуру для любых других DE, которые вы можете иметь. Если
TryExec
для DE нет, то и для него не нужно создавать сценарий detry.sh, так как LXDE не использует aTryExec
. Очевидно, что это немного странно, и вы должны убедиться, что вы сделали резервные копии любых файлов перед их редактированием, но это сработает, если вам абсолютно необходимо убедиться, что пользователь входит в систему с правильным DE.источник
в Debian Squeeze и Wheezy вы также можете добавить .xsessionrc одной строкой
экспорт STARTUP = XXX
(где XXX - ваш принудительный сценарий сеанса, см. Exec-Line выше) в домашнем каталоге пользователя для принудительного определения определенного типа сеанса независимо от того, что выбрал пользователь.
Также должен работать на Ubuntu.
(Загляните в /etc/X11/Xsession.d/40x11-common_xsessionrc и 50x11-common_determine-startup, чтобы понять, почему это работает)
источник
Ответ от reverendj1 не работал для меня. Причиной может быть то, что значение, указанное вами в Exec =, не выполняется напрямую, а передается в / 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 с
«default» - это ключевое слово для Xsession, которое будет искать конкретный сеанс в каталоге пользователя.
4. Теперь создайте для каждого имени пользователя файл /home/ndomusername‹/.xsession. Для приложения, похожего на киоск, это должно выглядеть так:
Например, если другому пользователю разрешено запустить полноценный менеджер рабочего стола, это может выглядеть так:
Протестировано на Ubuntu 16.04 с lightdm
источник