6

(иначе как переключать пользователей без ввода пароля, часть II) (см. часть I)

У меня есть Ubuntu 9.10 с учетной записью для моей жены и одна для меня. "Пробуждение от заставки" должно приводить к "выбору пользователя" без необходимости ввода пароля. Я знаю, как это сделать в Windows, но я не очень хорош в Linux (пока).

Часть этого была дана в ответе на мой предыдущий вопрос, который помог мне пройти через экран входа в систему без паролей (после загрузки и после выбора "переключить пользователя"), но как только появляется заставка, и я снова ее просыпаю, система не отображается экран "выберите пользователя". Вместо этого он либо отключает экранную заставку и представляет рабочий стол самого последнего пользователя, либо (если экранная заставка настроена на блокировку экрана) запрашивает пароль пользователя (который можно легко превзойти, нажав кнопку "переключить пользователя" и выбирая того же пользователя снова).

Итак, экран входа в систему ("выберите пользователя") был обработан. Как заставить (любую) заставку вернуться на экран входа в систему после пробуждения, а не на рабочий стол текущего пользователя? Windows может сделать это, я уверен, что Linux тоже может - но как?

3 ответа3

2

Вы делаете привычку странных настроек, не так ли?

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

  • Часто задаваемые вопросы Gnome-Screensaver указывают, что заставка генерирует сигнал DBus при изменении состояния простоя сеанса:

    Есть ли способ выполнять действия, когда заставка активируется или деактивируется? Или когда сессия становится бездействующей?

    Один из способов - следить за сигналами D-Bus от gnome-screensaver. (...)

    FAQ содержит пример команды dbus-monitor :

    dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver',member='SessionIdleChanged'"
    

    Хотя я полагаю, что интерфейс и детали участника для Ubuntu 9.10 устарели; правильные значения выглядят как interface = org.freedesktop.ConsoleKit.Session and member = IdleHintChanged. (См. Документацию ConsoleKit.)

    Когда блокировка заставки включена, сигнал IdleHintChanged подается после успешного ввода пароля в диалог разблокировки.

  • Команду gdmflexiserver -xnest можно использовать из командной строки, чтобы вернуться на экран входа в систему. Он работает внутри вашего сеанса X сам по себе, но вы можете использовать dbus-launch для его запуска , скажем, из сеанса SSH:

    DISPLAY=:0 dbus-launch gdmflexiserver -xnest
    

    Это "активирует" экран входа в GDM без выхода из сеанса текущего пользователя, как это делает опция меню «Переключить пользователя ...» (по крайней мере, насколько я могу судить).

Хитрость заключается в том, чтобы найти способ склеить эти два. Мне кажется, что вы хотели бы сделать в основном:

  1. Отключить блокировку заставки;
  2. Зарегистрируйте прослушиватель в DBus, который прослушивает сигнал IdleHintChanged во всех сеансах;
  3. Попросите слушателя выполнить команду gdmflexiserver при обнаружении сигнала.

Шаг 1 необходим, чтобы вы не получили запрос пароля. Если шаг 2 работает правильно и шаг 3 начинается, вы получите окно входа в систему каждый раз, когда ваша система выходит из заставки. Но шаг 2 - это то, что я не уверен, как это сделать.

1

Я понимаю, что этот вопрос уже давно, но некоторые пользователи все еще ищут его.

Можно предпочесть экран входа в Ubuntu для блокировки экрана при пробуждении (например, чтобы не показывать даже обои в зашифрованном доме), и это возможно в Ubuntu 12.10 и 13.04 (не уверен в более ранних версиях).

Для этого откройте Dconf Editor (предварительно установленный в Ubuntu 12.10+) и перейдите по адресу:

org > gnome > рабочий стол > заставка

Введите команду dbus-launch gdmflexiserver -xnest для переменной Встроенная клавиатура-команда. Затем проверьте, включена ли встроенная клавиатура для той же схемы.

0

Я собираюсь дать здесь свой собственный ответ, который заключается в том, что, по-видимому, нет простого решения для того, о чем я прошу.

Решение потенциально существует, но оно не является полным и требует глубокого понимания Linux - как видно из первого ответа. Так что это не стандартный ответ, который я чувствовал бы правильным, если бы я принял ответ "как".

Вопрос:

Как заставить (любую) заставку вернуться на экран входа в систему после пробуждения, а не на рабочий стол текущего пользователя?

Ответ: вы не можете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .