XubuntuやLubuntu、Ubuntu MATEで使われているlightdmの環境でGUIセッションがおかしくなったとき、以下の手順で初期化することで修正できる。この方法では、ホームディレクトリのファイルとフォルダを一旦削除することになるので、事前に必要なファイルやフォルダはバックアップしておきます。
実行手順
まず、実機を直接操作できるのであれば、Ctrl+Alt+F1を押してコンソール画面に降りてログインします。実機を操作できない場合はSSHでリモートログインして下さい。
次に、ps aux
とかで他のユーザーがログインしていないか確認し、他のユーザーが何かやっているなら終了してログアウトするようにお願いします。
準備が整ったら、以下のコマンドを実行します。USERNAMEは適宜ユーザー名に置き換えて下さい。ログイン中のユーザーのGUIセッションを初期化したい場合なら環境変数$USERを使ってもいいでしょう。
#Stop GUI and Xfce
sudo systemctl stop lightdm xrdp xrdp-sesman
sudo pkill xfconfd
#Delete all files and directories in your home directory
cd ~/
rm -rf *
rm -rf .*
#Delete all your files and directories in /tmp
find /tmp -user USERNAME | xargs rm -rf
#Delete your settings directory for lightdm
sudo rm -rf /var/lib/lightdm-data/USERNAME
#Restore default settings from /etc/skel
cp -R /etc/skel/.bash_logout /etc/skel/.bashrc /etc/skel/.config /etc/skel/.profile /etc/skel/.Xdefaults /etc/skel/.xscreensaver ~/
#Reboot
sudo reboot
これで当該ユーザーの全ての設定が初期化されます。
ホームディレクトリの内容を全て削除するのが難しい場合、X関連のファイルのみを削除するようにしてみます。
#Stop GUI and Xfce
sudo systemctl stop lightdm xrdp xrdp-sesman
sudo pkill xfconfd
#Delete X-related files and directories in your home directory
cd ~/
rm -rf .ICEauthority .Xauthority .Xdefaults .cache .config .dbus .local .vnc .xsessionrc
#Delete all your files and directories in /tmp
find /tmp -user USERNAME | xargs rm -rf
#Delete your settings directory for lightdm
sudo rm -rf /var/lib/lightdm-data/USERNAME
#Restore default settings from /etc/skel
cp -R /etc/skel/.config /etc/skel/.Xdefaults /etc/skel/.xscreensaver ~/
#Reboot
sudo reboot
なお、Xubuntuの場合、下記の内容の.xsessionrcをホームディレクトリに作成しておくと、誤ってXfceセッションになってしまうことを防げます(Xubuntuセッションになります)。プレーンなXfceセッションはXubuntuセッションとは少し見た目が異なります。
export DESKTOP_SESSION=xubuntu
export GDMSESSION=xubuntu
export XDG_SESSION_DESKTOP=xubuntu