Некоторая информация:
distro: lubuntu 20.04
default dm - sddm
gpu - integrated intel, and Nvidia GTX 1650 mobile
nvidia drivers - nvidia-470
Когда я использую стандартный менеджер отображения, sddm
система работает отлично, т.е. i3
openbox
работает каждый wm.
Но как только я использую, startx /usr/bin/i3
я получаю черный экран, я также создал .xinitrc
все тот же результат. Я также использую другой wm
аналог openbox
, т.е. openbox-session
все тот же результат.
Я остановил sddm
службу и попробовал startx
снова, но результат тот же, я получаю черный экран без курсора. Я переключаюсь на другую tty
и использую htop
, и я могу обнаружить, что обе xorg
и i3
работают.
Я проверил журнал xorg, и он не сообщает об ошибках.
prime-select query
дает nvidia
в качестве результата. Если я использую prime-select intel
и затем перезагружу, то startx
работает. Так что я думаю, что мне нужно что-то настроить при использовании nvidia
.
Как мне сделать startx
так, чтобы не было черного экрана?
Спасибо.Если мне нужно добавить еще какую-то информацию, пожалуйста, сообщите, я добавлю.
htop preview of sddm
├─ /usr/bin/sddm
│ ├─ /usr/lib/x86_64-linux-gnu/sddm/sddm-helper --socket /tmp/sddm-auth1a548eff-e892-4543-89ec-705e1c6138a1 --id 1 --start i3 --user totoro
│ │ └─ i3
│ │ └─ /usr/bin/ssh-agent i3
│ ├─ /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{36771d4e-9416-4be0-bfae-49c50dc60bc3} -background none -noreset -displayfd 17 -seat seat0 vt1
│ │ ├─ /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{36771d4e-9416-4be0-bfae-49c50dc60bc3} -background none -noreset -displayfd 17 -seat seat0 vt1
│ │ ├─ /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{36771d4e-9416-4be0-bfae-49c50dc60bc3} -background none -noreset -displayfd 17 -seat seat0 vt1
│ │ ├─ /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{36771d4e-9416-4be0-bfae-49c50dc60bc3} -background none -noreset -displayfd 17 -seat seat0 vt1
│ │ ├─ /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{36771d4e-9416-4be0-bfae-49c50dc60bc3} -background none -noreset -displayfd 17 -seat seat0 vt1
│ │ └─ /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{36771d4e-9416-4be0-bfae-49c50dc60bc3} -background none -noreset -displayfd 17 -seat seat0 vt1
│ └─ /usr/bin/sddm
htop preview of startx
├─ /bin/login -p --
│ └─ -zsh
│ └─ /bin/sh /usr/bin/startx
│ └─ xinit /home/totoro/.xinitrc -- /etc/X11/xinit/xserverrc :1 vt2 -keeptty -auth /tmp/serverauth.czCRUMFwtc
│ ├─ /usr/bin/openbox --startup /usr/lib/x86_64-linux-gnu/openbox-autostart OPENBOX
│ └─ /usr/lib/xorg/Xorg -nolisten tcp :1 vt2 -keeptty -auth /tmp/serverauth.czCRUMFwtc
│ ├─ /usr/lib/xorg/Xorg -nolisten tcp :1 vt2 -keeptty -auth /tmp/serverauth.czCRUMFwtc
│ ├─ /usr/lib/xorg/Xorg -nolisten tcp :1 vt2 -keeptty -auth /tmp/serverauth.czCRUMFwtc
│ ├─ /usr/lib/xorg/Xorg -nolisten tcp :1 vt2 -keeptty -auth /tmp/serverauth.czCRUMFwtc
│ ├─ /usr/lib/xorg/Xorg -nolisten tcp :1 vt2 -keeptty -auth /tmp/serverauth.czCRUMFwtc
│ └─ /usr/lib/xorg/Xorg -nolisten tcp :1 vt2 -keeptty -auth /tmp/serverauth.czCRUMFwtc
решение1
Так как я использую nvidia-prime
, мне нужно добавить несколько строк в , .xinitrc
чтобы это заработало. Менеджер отображения sddm
тоже это делает, но я не знаю, где находится его скрипт.
Добавьте эти строки в начало.xinitrc
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
Источник -NVIDIA-Optimus ArchWiki
А еще лучше добавить немного «если»,
DRIVER="$(prime-select query)"
if [ "$DRIVER" = 'nvidia' ]; then
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
fi