
Я работаю над deb-пакетом, который позволяет администратору создавать другую учетную запись и автоматически запускать ее в режиме киоска. Я создал пользователя, указал сочетание клавиш и поместил его в скрытый файл, а также создал скрипт .bash_profile в учетной записи администратора, который я скопировал в домашнюю папку нового пользователя.
Вот скрипт, который я запускаю для создания файлов и указания сочетания клавиш:
#!/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 []
Теперь я только добавил строку для запуска браузера Chrome на нужном сайте
/usr/bin/chromium-browser www.google.be --kiosk --no-default-browser-check --disable-translate
Я также изменил владельца скрипта .bash_profile на пользователя учетной записи и сделал его исполняемым, прежде чем скопировать его в домашнюю папку нового пользователя.
Теперь, когда я вхожу под новым пользователем, этот скрипт ничего не делает. Может кто-нибудь увидеть, где я не прав, или помочь мне найти решение?
решение1
Основная проблема здесь в том, что он .bash_profile
не читается, когда вы делаете графический вход. Это специфичный для bash файл, он читается, когда вы запускаете оболочку входа, и я очень сомневаюсь, что он когда-либо будет прочитан при графическом входе.
У вас будет больше шансов использовать ~/.profile
вместо этого способ, который i) читается большинством оболочек входа в систему, не только bash, так что вы не ограничиваете своего пользователя определенной оболочкой, и ii) с гораздо большей вероятностью будет прочитан графическим входом в систему.
Я только что проверил это и .profile
действительно читается в Ubuntu 13.04, когда вы входите в систему графически. Однако вы не можете предполагать, что так будет всегда. Для получения более подробной информации см. превосходный ответ Жиляздесь.
Теперь пара мелких моментов. Нет необходимости в touch
, echo "foo" >> bar
создаст файл bar
, если его нет, и добавит к нему, если он есть. Также нет необходимости в том, .bash_profile
чтобы быть исполняемым, файл исходный, а не запущенный. Я не знаю, вызовет ли это проблемы, но это может быть.
Наконец, группа файла будет root, а не user. Опять же, не уверен, является ли это проблемой, но вы можете добавить это в свой скрипт:
chown $user:$user .profile
Обратите внимание, что.profile
игнорируется bashесли файл с именем ~/.bash_profile
существует. Это не должно повлиять на графический вход в систему, но может вызвать неожиданное поведение при входе из командной строки.