我找到了三个配置文件。
.xinitrc
.xsession
.xsessionrc
我知道第一个用于使用startx
,第二个和第三个用于使用显示管理器。但是后两者有什么区别呢?
从许多文档中,我读到startx
正在 Raspbian OS 中启动 LXDE。我有点困惑。
会一直startx
运行LXDE GUI吗?
我也看过使用startlxde
命令的例子。该命令有何不同,为什么startx
并startlxde
运行相同的 GUI(LXDE)?或者它运行它是因为它是默认的 GUI?
如果我有多个 GUI,如何选择默认 GUI?
您能否解释有关 Linux 系统中 GUI 的更多详细信息?
我知道这不是人们使用 X 的正常方式。大多数安装说明都会告诉您将类似内容放入startx
shell 的配置文件中。不过我想让 systemd 来管理事情。
理想情况下,我会systemctl --user enable x.service
在我的用户登录时运行类似的东西,并获取我的资源,.xinitrc
从而启动我的 WM。
我执行此操作的所有尝试都给了我错误:
/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server
Run Code Online (Sandbox Code Playgroud)
一定有办法做到这一点。任何帮助将不胜感激。
我想启动一个 Xorg 服务器(它应该只具有xterm
来自新创建的“原始”的最小终端模拟器tty
)。我认为这就像发出 axinit
或可能 a一样简单startx
,但两者都让我失望。因此问题是:
如何在不同的 VT/TTY 上手动运行/初始化/启动 Xorg 服务器?
这里的
这是背景和我已经尝试过的:
看看man openvt
我能够在新创建的tty
(或者vt
,无法准确说出不同的vt <> tty)上运行 shell,如下所示:
$> sudo openvt -s /bin/bash
Run Code Online (Sandbox Code Playgroud)
导致-s
直接切换到新 tty 上的新 tty/vt 我想手动启动一个Xorg
服务器,该服务器man xinit
应该以最小的xterm
应用程序启动。在切换到 tty I (通过创建openvt
)的新 shell 上,我因此发出以下命令:
$> su -c 'xinit xterm -display :4 -- :4' - mahr &>/tmp/output
Run Code Online (Sandbox Code Playgroud)
我收到这个输出
$> cat /tmp/output
X.Org X Server 1.19.6 …
Run Code Online (Sandbox Code Playgroud) 我正在使用 Fedora 21,尝试以下操作: 在 tty1 上运行 KDE,就像往常一样。但是为了加速我的游戏/避免他们改变像伽马这样的东西,我想在不同的 tty 上运行它们,启动一个新的 X 服务器。前段时间,我可以这样做(例如:winemine):
xinit winemine -- :1
Run Code Online (Sandbox Code Playgroud)
这应该从我的 KDE 工作区运行。但这不起作用,它只是让我的 KDE 崩溃,只在 tty1 上显示“启动消息”。所以我搜索了一下这个,并想出了这个:
xinit winemine -- :1 vt2
Run Code Online (Sandbox Code Playgroud)
哪个有效,但前提是它是从 tty2 运行的。这会起作用,但是手动切换到 tty2,运行命令……而不是使用 KDE 从 tty1 运行应用程序会很烦人。有没有办法使这成为可能?
THX提前,马吕斯
我有一个带有以下几行的 .xinitrc:
#!/usr/bin/env bash
xrdb -merge ~/.Xresources &
xset r rate 200 30 &
xterm & #fixme: xterm is not reading loaded .Xresources
exec /etc/alternatives/x-window-manager
Run Code Online (Sandbox Code Playgroud)
为什么 xterm 不使用加载的设置xrdb
?
PS:.xinitrc 中的这个 xterm 不使用从 xresources 加载的设置,但是一旦 wm 运行它就可以正常工作。
我不记得如何修复它(我不玩 linux 已经多年了)。
xinit /usr/bin/firefox
似乎做了预期的事情:在没有窗口管理器的情况下运行 Firefox。
xinit firefox
好像做的差不多,只是跟在xterm
后面跑了个小。
有人可以解释我这里发生了什么吗?
在Arch Linux 中,我想在没有窗口管理器的情况下运行 VirtualBox。
作为根,我可以轻松做到:
xinit /usr/bin/VirtualBox -- :0 vt1
Run Code Online (Sandbox Code Playgroud)
作为非 root 用户,我得到一个空白屏幕。如果我打开另一个终端,杀死 VirtualBox 并阅读
~/.local/share/xorg/Xorg.0.log ,
Run Code Online (Sandbox Code Playgroud)
然后它不会显示任何错误并且与"/var/log/Xorg.0.log"
我作为根获得的基本相同。
更新
正如 Arkadiusz Drabczyk 所指出的,问题在于 VB 中的一个错误。它适用于版本 5.2.4-119785。
我的最终目标是使用 VB 类型的裸机,以全屏模式启动操作系统,仅此而已,即:
xinit '/usr/bin/VirtualBox' --startvm "VM name" --fullscreen -- :0 vt1
Run Code Online (Sandbox Code Playgroud) 自从我更新了 debian 以来,evince
启动速度一直很慢 - 大约需要半分钟。打开后,一切正常,就是打开速度慢。过去从来没有花那么长时间——过去只需要几秒钟。我怎样才能让它再次快速运转?
$ uname -a
Linux mypc 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
我注意到它evince
在以下行挂了大约半分钟:
$ strace evince
...
eventfd2(0, EFD_CLOEXEC|EFD_NONBLOCK) = 11
write(11, "\1\0\0\0\0\0\0\0", 8) = 8
write(10, "\1\0\0\0\0\0\0\0", 8) = 8
futex(0x562f5b8ffac0, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x562f5b909b30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x562f5b8bd158, FUTEX_WAKE_PRIVATE, 1) = 1
poll([{fd=11, events=POLLIN}], 1, 25000) = 1 ([{fd=11, revents=POLLIN}])
read(11, "\1\0\0\0\0\0\0\0", 16) = 8
poll([{fd=11, events=POLLIN}], 1, 25000) = 0 (Timeout) # <- hanging here …
Run Code Online (Sandbox Code Playgroud) 不使用显示管理器并通过 xinitrc 执行启动逻辑。问题是一些与 dbus 相关的环境变量未设置。
xinitrc 摘录:
dbus-update-activation-environment --systemd --all # note this errors
/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &
eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh)
export GNOME_KEYRING_CONTROL GNOME_KEYRING_PID GPG_AGENT_INFO SSH_AUTH_SOCK DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID
Run Code Online (Sandbox Code Playgroud)
第一个返回错误
dbus-update-activation-environment:警告:发送到 systemd 时出错:org.freedesktop.DBus.Error.InvalidArgs:无效的环境分配
如何确保 dbus 变量(例如DBUS_SESSION_BUS_ADDRESS
)已设置?
请注意,我也可以注释掉这些行/usr/bin/startx
:
unset DBUS_SESSION_BUS_ADDRESS
unset SESSION_MANAGER
Run Code Online (Sandbox Code Playgroud)
但不确定这就是要走的路。
运行 Debian 测试。