gnome-initial-setup は新規ユーザーのログイン時にセットアップなどを行う。
ユーザーごとに言語設定を行うのに便利。
独自の設定を入れたいのだけれどどうしたらいいのかな?
環境
Debiana Testing (Debian 13 : 2024/07/06 時点)
調査
gnome 系は Unix philosophy に沿ってないのでメンドクサイ。
gbine-initial-setup のカスタマイズを調べてみたけど全然わからない。
ここらへんに
https://gitlab.gnome.org/GNOME/gnome-initial-setup/-/tree/master
Vendor 設定があるが、試してみたけど動いてないようだった。
ソース
設定方法がわからないので、ソースから再コンパイルかな? と思ったけどめんどくさそう。
今回は Debian をベースにしたシステムで使うつもりだけど、 以下のようなことが書いてあって読み解くのが大変。
Although this mode is unreachable in the upstream version of Initial Setup, both
Debian and Ubuntu have downstream patches to restore it.
別アプリケーションで対処
gnome-initial-setup に手を加えるのではなく、別プログラムを gnome-initial--setup が終わった後に起動する方法を採ることにした。
作戦
gnome-initial-setup は、新規ログオン時に一度だけ実行されます。
二度目からのログオン時には実行されません。
それは gnome-initial-setup が実行されたときにファイル
~/.config/gnonme-initial-setup-done
が生成されるからです。
このファイルが無いときには gnome-nitial-setup が実行中とみなし、このファイルが生成されたら別アプリを実行するようにします。
キックプログラム
これは gnome-initial-setup の後に首相官邸ページを表示するものです。
#!/bin/sh
FILE="${HOME}/.config/gnome-initial-setup-done"
while [ ! --e $FILE]
do
sleep 1
done
firefox https://www.kantei.go.jp
全てのユーザの自動起動のために、
/etc/xdg/autostart/after-gnome-initial-setup.desktop
を以下の内容で作ります。
[Desktop Entry]
Type=Application
Name=Welcome 2nd stage
Exec=/usr/local/bin/after-gnome-initial-setup.sh
X-GNOME-Autostart-enabled=true
テスト
debian のパッケージに README.source にテスト方法があります。
Testing this package
====================
Test Case 1
---------------
rm ~/.config/gnome-initial-setup-done
Log out then log back in
gnome-initial-setup should automatically start
Test Case 2
----------------
Create a new user
Log in as the new user
gnome-initial-setup should automatically start
Test Case 3
----------------
Run this command
/usr/libexec/gnome-initial-setup --existing-user
今回は Test Case 2 の方法を使ってテストしました。
1回のみ起動する
このプログラムだと、ログイン時に毎回表示されます。
gnome-initial-setup の実行後に1回だけ実行するには、
/.config/gnonme-initial-setup-done
と同じように
/.config/after-gnonme-initial-setup-done
ファイルを作成し、こちらのファイルがあれば処理を行わないようにするなどの処理が必要となります。
パスワード変更を行う
「TkEasyGUI で パスワード変更 GUI を作る」
https://qiita.com/nanbuwks/items/358b53a2495199b54068
を使い、 gnome-initial-setup が終わったらパスワードを変更するようにしました。
上記の「1回のみ起動する」の処理も加えています。
#!/bin/sh
DONEFILE="${HOME}/.config/after-gnome-initial-setup-done"
WATCHFILE="${HOME}/.config/-gnome-initial-setup-done"
if [ -e $DONEFILE ]; then
exit
fi
WATCHFILE="${HOME}/.config/gnome-initial-setup-done"
while [ ! -e $WATCHFILE ]
do
sleep 1
done
passwordchange.py
touch $DONEFILE