Создайте новый файл /user/share/xsessions/default.desktop(имя зависит от вас, но он должен иметь .desktopсуффикс):
[Desktop Entry]
Name=Default
Comment=This runs user session and logs you into Ubuntu
Exec=default
Icon=
Теперь, когда вы выберете этот сеанс lightdmи войдете в систему, ваш ~/.xsessionфайл, если он существует, будет выполнен.
Обратите внимание, что исполняемый файл пользователя есть ~/.xsession, а не тот ~/.xinitrc, который был упомянут в вопросе. ( ~/.xinitrcиспользуется, когда сеанс X запускается с использованием startxсценария из командной строки.)
Некоторые объяснения: NameЗапись - это то, что lightdmбудет отображаться для этого сеанса. ExecЗапись является важным, и это должно быть имя программы , которая начинается фактическое сессии. Когда вы входите в систему, lightdmвызываете /etc/X11/Xsessionскрипт, передавая ему значение Execв качестве аргумента, и Xsession, в конце концов, запустите эту программу (например, это может быть startxfce4для запуска xfce4сеанса). Если Execзапись является специальной строкой default, то Xsessionбудет выполняться ~/.xsessionфайл пользователя . ( Xsessionтакже выполняется, ~/.xsessionесли он вызывается без aruments.)
Извините, я новичок здесь и поэтому не могу комментировать ответы других людей, но я бы хотел прокомментировать принятый ответ, чтобы прояснить ситуацию. Согласно моему объяснению выше, то, что произойдет с методом этого ответа, Xsessionбудет вызываться lightdmс аргументом (полный путь) Xsession. Так что Xessionбудет работать, а затем позвонить сам, на этот раз без аргументов. Второй Xsession, вызываемый без аргументов, будет выполнять пользователя ~/.xsession. Таким образом, желаемое действие будет, в конце концов, предпринято, но немного неловко.