
私は、管理者が別のアカウントを作成し、そのアカウントをキオスク モードで自動的に実行できるようにする 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 []
今、私は正しいウェブサイトにクロムブラウザを起動するための行を追加しました
/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 でグラフィカルにログインすると確かに読み込まれます。ただし、常にそうであるとは限らないことに注意してください。詳細については、Gilles の優れた回答を参照してください。ここ。
さて、いくつかの小さな点について。 は必要ありませんtouch
。 は、echo "foo" >> bar
ファイルbar
が存在しない場合は作成し、存在する場合はファイルに追加します。 また、 を実行可能にする必要もありません.bash_profile
。ファイルはソース化されるものであり、実行されるものではありません。 これが問題を引き起こすかどうかはわかりませんが、問題を引き起こす可能性はあります。
最後に、ファイルのグループはユーザーのグループではなく、ルートになります。これも問題かどうかはわかりませんが、スクリプトに以下を追加することもできます。
chown $user:$user .profile
ご了承ください.profile
bashでは無視されますというファイルが~/.bash_profile
存在する場合。これはグラフィカル ログインには影響しませんが、コマンド ラインからログインするときに予期しない動作を引き起こす可能性があります。