问题描述
如果我理解正确的话,LightDM 已经默认替换了 GDM。我想知道是否有可能让它运行我放在我的 .xinitrc 文件中的东西……我需要的是 “Unity” 和“Unity 2D”下面的一个选项,上面写着“运行用户定义的会话”。
那可能吗?应该是最简单的事情,但到目前为止我没有得到任何线索。我在这个文件中导出、定义和运行了很多东西,所以对我来说控制它是非常重要的。
我不想要的是 /usr/some/where 中的自定义会话,我只希望它运行来自每个用户的 xinitrc(或类似的)的东西。
最佳方法
使用以下命令创建一个新文件 /usr/share/xsessions/custom.desktop
:
[Desktop Entry]
Name=Xsession
Exec=/etc/X11/Xsession
您现在应该在登录期间有一个新的会话选项,Xsession 将加载用户的 ~/.xinitrc
。
次佳方法
创建一个新文件 /usr/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
。 (从命令行使用 startx
脚本启动 X 会话时使用 ~/.xinitrc
。)
一些解释: Name
条目是 lightdm
将为此会话显示的内容。 Exec
条目很重要,它应该是启动实际会话的程序的名称。当您登录时,lightdm
调用 /etc/X11/Xsession
脚本,将 Exec
的值作为参数传递给它,Xsession
最终将执行该程序(例如,它可能是 startxfce4
用于启动 xfce4
会话)。如果 Exec
条目是特殊字符串 default
,则 Xsession
将执行用户的 ~/.xsession
文件。 (如果 Xsession
在没有参数的情况下被调用,它也会执行 ~/.xsession
。)
抱歉,我是新来的,因此无法评论其他人的答案,但我想评论已接受的答案,以使事情更清楚。根据我上面的解释,该答案的方法会发生什么是 Xsession
将由 lightdm
调用,参数是(的完整路径) Xsession
。所以 Xession
将运行,然后调用自己,这次没有参数。第二个 Xsession
不带参数调用,将执行用户的 ~/.xsession
。因此,最终会采取所需的行动,但方式有点尴尬。