startx выдает черный экран с драйверами nvidia

startx выдает черный экран с драйверами nvidia

Некоторая информация:

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

Связанный контент