我知道这不是人们使用 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
那里必须是做到这一点的一种方法。任何帮助将不胜感激。
答案1
使用以下命令直接引导至 X11启动x,可以自由选择活跃用户,请参阅https://vincent.bernat.ch/en/blog/2021-startx-systemd
与Archlinux指南相比,不再需要自动登录TTYx,这是直接图形目标启动。
对于嵌入式/信息亭/机顶盒系统,我将服务更改为自动重新启动,延迟很小
[Unit]
Description=X11 session for bernat
After=graphical.target systemd-user-sessions.service
[Service]
User=bernat
WorkingDirectory=~
PAMName=login
Environment=XDG_SESSION_TYPE=x11
TTYPath=/dev/tty8
StandardInput=tty
UnsetEnvironment=TERM
UtmpIdentifier=tty8
UtmpMode=user
StandardOutput=journal
ExecStartPre=/usr/bin/chvt 8
ExecStart=/usr/bin/startx -- vt8 -keeptty -verbose 3 -logfile /dev/null
#Restart=no
Restart=always
RestartSec=3
[Install]
WantedBy=graphical.target
请记住激活图形目标
sudo systemctl set-default graphical.target
我发现这是创建嵌入式 Linux 时最好的解决方案,例如使用 Debian 的信息亭或机顶盒系统。快速启动,直接进入图形应用程序。
答案2
答案3
作为一个在启动时启动 X 的 systemd 用户(没有登录管理器),我遵循以下步骤:https://wiki.archlinux.org/index.php/Systemd/User#Automatic_login_into_Xorg_without_display_manager
答案4
https://wiki.archlinux.org/index.php/Xinit#Autostart_X_at_login
一点点搜索就会有很长的路要走。
if [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then exec startx fi
将其放入 shell 启动中,在控制台中它将自动启动。
我想如果 startx 有问题,你会回到 tty,它应该可以工作。