Как заменить рабочий стол приложением?

31

Иногда может потребоваться, чтобы пользователь имел доступ только к определенному приложению. В этом случае запуск среды рабочего стола может быть нежелательным, будь то по соображениям безопасности или для обеспечения лучшего доступа к данному приложению.

В этих случаях может потребоваться заменить рабочий стол приложением, которое запускается сразу после входа в систему.

Другие пользователи должны иметь нормальный доступ к своим рабочим столам.

Takkat
источник

Ответы:

36

Замена рабочего стола приложением

Определить пользовательский сеанс

Сначала нам нужно определить пользовательский сеанс, который обрабатывает особый случай, когда не нужно загружать рабочий стол. Мы определим этот сеанс, создав файл custom.desktop в / usr / share / xsessions / с содержимым, похожим на это:

[Desktop Entry]
Name=Custom
Comment=Custom Session to run ~./.xsession
Exec=/home/<username>/.xsession
X-Ubuntu-Gettext-Domain=<gnome-session-3.0>

Это скажет GDM запустить скрипт, .xsessionрасположенный в HOME пользователя <username>.

X-Ubuntu-Gettext-DomainДля правильного языкового перевода необязательно, если мы загрузим рабочий стол Unity / GNOME позже (замените gdmна 10.04).

Сделать сценарий для запуска

Этот скрипт ~ / .xsession может выглядеть так просто:

#! /bin/bash

xterm
logout

Загрузить пользовательский сеанс при входе в систему

Если мы теперь определим, чтобы загружать наш сеанс «Custom» во время входа данного пользователя на экране gdm, то будет запущен только X-терминал, и мы вернемся к gdm при выходе. При следующем входе в систему в качестве пользователя этот параметр будет запомнен по умолчанию.

Запустить приложение, которое нуждается в управлении Windows

Конечно, мы пока не можем запустить приложение, которому нужен менеджер окон, такой как GNOME. Для этого замените скрипт .xsession на что-то вроде:

#! /bin/bash

gnome-wm &
firefox
logout

Мы видим, что менеджер окон GNOME загружен, но элементы рабочего стола отсутствуют. Это позволяет запускать приложение (например, Firefox здесь).

Но позаботьтесь о том, что вы делаете: если мы сворачиваем приложение на несуществующий лоток, мы получим красивые обои для просмотра. Из-за этого очень важно включить logoutв конец сценария выход из сеанса после завершения работы приложения. На самом деле не существует другой программы, выполняющей это за вас, пока вы не добавите ее в свой сценарий. Вы намеренно заменили свой рабочий стол только Firefox (плохая идея).

Конечно, мы также можем запустить gnome-desktopили gnome-session(соответственно параметры) из скрипта, но это то, что мы уже делаем по умолчанию.

Takkat
источник
Только одна проблема с полным экраном в пользовательских сессиях. Смотрите вопрос askubuntu.com/questions/184610/…
Джузер Али
Ваше решение создает сеанс, который видят все пользователи, но запускает скрипт определенного пользователя. - Не идеально.
Роберт Симер