startx gibt einen schwarzen Bildschirm mit Nvidia-Treibern aus

startx gibt einen schwarzen Bildschirm mit Nvidia-Treibern aus

Einige Infos:

distro: lubuntu 20.04
default dm - sddm
gpu - integrated intel, and Nvidia GTX 1650 mobile
nvidia drivers - nvidia-470

Wenn ich den bereitgestellten Standard-Display-Manager verwende, sddmfunktioniert das System einwandfrei, d. h. i3 openboxjeder WM funktioniert.

Aber sobald ich es verwende, startx /usr/bin/i3bekomme ich einen schwarzen Bildschirm . Ich habe .xinitrcimmer noch das gleiche Ergebnis erzielt. Ich verwende auch ein anderes wmLike openbox, also openbox-sessionimmer noch das gleiche Ergebnis.

Ich habe sddmden Dienst beendet und es startxnoch einmal versucht, immer noch dasselbe Ergebnis, ich bekomme einen schwarzen Bildschirm ohne Cursor. Ich wechsle zu einem anderen ttyund verwende ihn htopund stelle fest, dass beide xorglaufen i3.

Ich habe das Xorg-Protokoll überprüft und es meldet keinen Fehler. prime-select querygibt nvidiaals Ergebnis an. Wenn ich benutze prime-select intelund dann neu starte, startxfunktioniert es. Ich denke also, dass ich bei der Verwendung etwas konfigurieren muss nvidia.

Wie kann ich es schaffen startx, dass kein schwarzer Bildschirm erscheint?

Danke.Wenn ich weitere Informationen hinzufügen sollte, sagen Sie mir bitte Bescheid, ich werde sie hinzufügen.

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

Antwort1

Da ich verwende nvidia-prime, muss ich einige Zeilen hinzufügen, damit .xinitrces funktioniert. Der Display-Manager sddmmacht das auch, aber ich weiß nicht, wo sein Skript ist.

Fügen Sie diese Zeilen am Anfang von.xinitrc

xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

Quelle -NVIDIA-Optimus ArchWiki

Noch besser ist es, einige if hinzuzufügen,

DRIVER="$(prime-select query)"
if [ "$DRIVER" = 'nvidia' ]; then
    xrandr --setprovideroutputsource modesetting NVIDIA-0
    xrandr --auto
fi

verwandte Informationen