я работаю над deb пакетом, который позволяет администратору создавать другую учетную запись и выполнять ту учетную запись автоматически в режиме киоска. Я создал пользователя, указал shortkey и поместил это в скрытый файл и создал .bash_profile сценарий на администраторской учетной записи, которую я копирую в домашнюю папку нового пользователя.
Это - скрипт, который я запускаю, чтобы создать файлы и указать shortkey:
#!/bin/bash
basis="Primary + Alt + "
shortkey=`zenity --entry --text "Your shortkey will be a combination of <Primary> + <Alt> + a letter\n\n Specify your letter!"`
while [[ $shortkey = *[^A-Z]* ]];
do
zenity --warning --text "Input incorrect\n\nTry again"
shortkey=`zenity --entry --text "Your shortkey will be a combination of <Primary> + <Alt> + a letter\n\n Specify your letter!"`
done
basis="$basis$shortkey"
zenity --info --text "$basis" --title="Your shortkey"
touch kiosk/kiosk-0.1/.mykey
echo "gsettings set org.gnome.desktop.wm.keybindings close [$basis]" > kiosk/kiosk-0.1/.mykey
user=$(cat kiosk/kiosk-0.1/.username)
keys=$(cat kiosk/kiosk-0.1/keys)
content=$(cat kiosk/kiosk-0.1/.mykey)
touch kiosk/kiosk-0.1/.bash_profile
echo "#!/bin/bash" >> .bash_profile
echo "" >> .bash_profile
echo $keys >> .bash_profile
echo $content >> .bash_profile
chmod +x .bash_profile
chown $user .bash_profile
mv '.bash_profile' /home/$user
То содержание, которое копируется в .bash_profile, содержит код для отключения всех ключей от интерфейса как:
gsettings set org.gnome.desktop.wm.keybindings begin-move []
Теперь я только добавил строку для запуска браузера хрома к правильному веб-сайту
/usr/bin/chromium-browser www.google.be --kiosk --no-default-browser-check --disable-translate
Я также изменил владельца .bash_profile сценария пользователю учетной записи и сделал его исполняемым файлом, прежде чем я скопировал его в домашнюю папку новых пользователей.
Теперь, когда я вхожу в систему на новом пользователе, этот сценарий ничего не делает. Кто-либо может видеть, где я помогаю неправильно меня находящий решение?
Основной вопрос здесь - то, что .bash_profile
не читается, когда Вы делаете графический вход в систему. Это - определенный для удара файл, это читается, когда Вы запускаете оболочку входа в систему, и я очень сомневаюсь, что это будет когда-либо читаться на графическом входе в систему.
у Вас был бы лучший шанс с помощью ~/.profile
вместо этого, который является i) читайте большинством оболочек входа в систему, не только колотите, таким образом, Вы не ограничиваете своего пользователя определенной оболочкой и ii) намного более вероятно быть считанным графическим входом в систему.
я просто проверил, что это и .profile
действительно читается на Ubuntu 13.04, когда Вы входите в систему графически. Однако Вы не можете предположить, что это будет всегда иметь место. Для получения дополнительной информации см. превосходный ответ Gilles здесь .
Теперь, несколько деталей. Нет никакой потребности в touch
, echo "foo" >> bar
создаст файл bar
, если он не будет существовать и добавлять к нему, если он делает. Кроме того, нет никакой потребности в .bash_profile
, чтобы быть исполняемым файлом, файл получен, не выполнен. Я не знаю, вызвало ли это проблемы, но это могло бы.
Наконец, группа файла будет корнем, не пользователь. Снова, не уверенный, если это - проблема, но можно также добавить это к сценарию:
chown $user:$user .profile
Примечание, которое .profile
проигнорировано ударом , если файл, названный ~/.bash_profile
, существует. Это не должно влиять на графические логины, но может вызвать неожиданное поведение при входе в систему из командной строки.