Выберите язык при запуске гостевой сессии

Я попал в сложную ситуацию.

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

Компьютер старый и в настоящее время работает под управлением Lubuntu 15.10, Lightdm login.

Однако, поскольку переключение системных языков возможно только при выходе из системы и обратно в учетную запись, в сочетании с тем фактом, что учетная запись гостя стирается после выхода из системы ... Немного подвох 22.

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

Есть ли способ изменить язык системы без полного выхода из системы?

Как вариант, можно ли запустить скрипт во время логин? Я думаю о нескольких альтернативах guest-account / skel и создаю символическую ссылку при входе в систему.

3
задан 21 April 2016 в 00:51

1 ответ

Возможно изменить переменные среды ЛЕНГ и ЯЗЫК в рамках сессии, но это уже не будет влиять на рабочие процессы. Так не, нет никакого практического способа сделать это без того, чтобы выходить из системы.

Рассмотрение, что lightdm-gtk-greeter уже имеет селектор языка для выбора языка при входе в обычный аккаунт самое изящное решение состояло бы в том, чтобы, вероятно, так или иначе использовать ту функцию. Не может сказать как, хотя...

ниже решения в качестве примера использует сценарий обертки, чтобы позволить пользователю выбрать язык дисплея через zenity диалоговое окно. Пример включает английский и шведский язык; языки, которые Вы используете, должны, конечно, быть установлены. Это решение должно работать и с зазывалой единицы и с lightdm-gtk-greeter на более поздних версиях Ubuntu. Я протестировал на 15,10 и 16.04.

Создают /etc/guest-session/choose-language-wrapper.sh, дают его, это удовлетворяет:

#!/bin/sh -e

# show zenity dialog only when launched from greeter
ONLYGUEST=true
for U in $(users); do
    if [ "${U%%-*}" != 'guest' ]; then
        ONLYGUEST=false
        break
    fi
done

if $ONLYGUEST && [ -x /usr/bin/zenity ]; then
    guestlang=$( zenity --list --title 'Select language' \
      --text 'Select language for the guest session' --radiolist \
      --column 'Pick' --column '' TRUE 'English' FALSE 'Swedish' )
    if [ "$guestlang" = 'English' ]; then
        echo 'export LANGUAGE=en_US' >> "$HOME/.profile"
        echo 'export LANG=en_US.UTF-8' >> "$HOME/.profile"
    elif [ "$guestlang" = 'Swedish' ]; then
        echo 'export LANGUAGE=sv' >> "$HOME/.profile"
        echo 'export LANG=sv_SE.UTF-8' >> "$HOME/.profile"
    fi
fi

exec /usr/lib/lightdm/lightdm-guest-session "$@"

и делают это исполняемым файлом:

sudo chmod +x /etc/guest-session/choose-language-wrapper.sh

Затем заставляют lightdm использовать сценарий обертки путем создания этого файла:

$ cat /etc/lightdm/lightdm.conf.d/50-choose-guest-language.conf
[Seat:*]
guest-wrapper=/etc/guest-session/choose-language-wrapper.sh

После следующей перезагрузки zenity диалоговое окно должно обнаружиться при запуске гостевой сессии от зазывалы.

2
ответ дан 21 April 2016 в 10:51
  • 1
    Только вещью, которую стоит отметить, но, не была часть вопроса: в случае, если кто-то чувствует потребность создать снимки: btrfs является опцией также. – Rinzwind 1 September 2017 в 21:24

Другие вопросы по тегам:

Похожие вопросы: