从许多文档中,我读到正在startx
Raspbian OS 中启动 LXDE。我有点困惑。
总是startx
运行 LXDE GUI 吗?
我还看到了使用startlxde
命令的示例。该命令有何不同?为什么startx
运行startlxde
相同的 GUI(LXDE)?或者也许它运行它是因为它是默认的 GUI?
如果我有多个 GUI,如何选择默认 GUI?
您能解释一下有关 Linux 系统中 GUI 的更多细节吗?
答案1
startx
运行xinit
它会启动 X 服务器和客户端会话。客户端会话(~/.xinitrc
如果存在),否则/etc/X11/xinit/xinitrc
(位置可能因发行版而异)。该脚本的作用因发行版而异。在 Debian(包括 Raspbian 等衍生版本)上,/etc/X11/xinit/xinitrc
runs/etc/X11/Xsession
依次运行/etc/X11/Xsession.d
. Debian 脚本在其他文件( ~/.xsession
、~/.xsessionrc
、 )中查找用户会话~/.Xsession
,如果没有适用的用户设置,则运行x-session-manager
(如果没有安装 [会话管理器],则回退到x-window-manager
,如果没有安装窗口管理器,则回退到x-terminal-emulator
不太可能的情况)安装)。
如果您想控制执行的内容,您可以创建一个用户文件,或者~/.xsession
或~/.xinitrc
.如果您~/.xsession
登录到显示管理器(即,如果您在 GUI 窗口中输入密码)。该文件~/.xinitrc
特定于xinit
和startx
。使用~/.xsession
会进行,/etc/X11/Xsession
因此它会设置输入法、资源、密码代理等内容。如果使用.xinitrc
,则必须手动完成所有这些操作。我再次在这里描述 Debian,其他 Unix 变体可能会有不同的设置。使用 来~/.xinitrc
指定运行时执行的内容,startx
或者xinit
是通用的。
无论您使用~/.xinitrc
或~/.xsession
,此文件(通常是 shell 脚本,但如果您确实想使用其他东西,则不必如此)必须准备需要准备的任何内容(例如键盘设置、资源、未启动的小程序)由窗口管理器等),然后最后运行管理会话的程序。当脚本结束时,会话终止。通常,您可以exec
在脚本末尾使用,将脚本替换为会话管理器或窗口管理器。
您的系统大概有/usr/bin/startlxde
系统范围的默认会话管理器。在 Debian 及其衍生版本上,您可以使用以下命令检查可用的会话管理器
update-alternatives --list x-session-manager
或者获取更详细的描述,表明当前使用的是哪一个
update-alternatives --display x-session-manager
如果 LXDE 不是系统范围的默认值,并且您希望将其设为帐户的默认值,则可以使用以下~/.xsession
文件:
#!/bin/sh
exec startlxde
在某些 Unix 变体上,这只适用于图形登录,而不适用于startx
,因此您还需要创建一个相同的~/.xinitrc
. (或者不相同:在 中~/.xsession
,您可能想做其他事情,因为这是在图形会话中执行的第一个文件;例如,您可以将其放在. ~/.profile
顶部附近,以设置一些环境变量。)
如果您想一次性尝试其他环境,您可以指定一个不同的程序在startx
其自身的命令行上运行。该startx
程序有一个怪癖:您需要使用该程序的完整路径。
startx /usr/bin/startkde
该startx
命令还允许您指定要传递到服务器的参数。例如,如果您想同时运行多个 GUI 会话,则每次可以传递不同的显示编号。--
在 的命令行上传递服务器参数startx
。
startx /usr/bin/startkde -- :1
答案2
否:startx
可配置。根据手册页:
要确定要运行的客户端,首先要在用户的主目录中
startx
查找一个名为的文件。.xinitrc
如果未找到,它将使用库目录xinitrc
中的文件xinit
。
startx
不是启动 X 的唯一方法(正如您从 中看到的startlxde
)。手册startx
页再次提供帮助:
startx 脚本是一个前端xinit(1)它为运行 X Window 系统的单个会话提供了更好的用户界面。它通常在没有参数的情况下运行。
另一方面,如果您想选择 GUI(LXDE、KDE 等),那么xdm
和类似的东西,例如kdm
,gdm
或LightDM
用于选择不同的桌面类型。在 Debian 上我通常使用kdm
,因为它允许不同的桌面类型。打包程序gdm
不允许大多数桌面类型,使其不适合我的需求。
xdm
使用一个不同的要启动的脚本集,例如您的~/.xsession
脚本和系统脚本。相似者可能会忽略这一点,并使用他们自己的脚本。但这是一个起点。