Fundo de área de trabalho quebrado no Ubuntu 18.04 sob o gnome depois de acordar da suspensão na nvidia-390

19

Eu tenho a placa de vídeo Nvidia 1080ti, que tem apenas alguns dias. Além disso, tenho uma instalação limpa do Ubuntu 18.04 e os drivers nvidia-390 mais recentes instalados, usando o apt:

~$ sudo dpkg -l  | grep nvidia
ii  libnvidia-cfg1-390:amd64                   390.59-0ubuntu0~gpu18.04.1              amd64        NVIDIA binary OpenGL/GLX configuration library
ii  libnvidia-common-390                       390.59-0ubuntu0~gpu18.04.1              all          Shared files used by the NVIDIA libraries
ii  libnvidia-compute-390:amd64                390.59-0ubuntu0~gpu18.04.1              amd64        NVIDIA libcompute package
ii  libnvidia-compute-390:i386                 390.59-0ubuntu0~gpu18.04.1              i386         NVIDIA libcompute package
ii  libnvidia-decode-390:amd64                 390.59-0ubuntu0~gpu18.04.1              amd64        NVIDIA Video Decoding runtime libraries
ii  libnvidia-decode-390:i386                  390.59-0ubuntu0~gpu18.04.1              i386         NVIDIA Video Decoding runtime libraries
ii  libnvidia-encode-390:amd64                 390.59-0ubuntu0~gpu18.04.1              amd64        NVENC Video Encoding runtime library
ii  libnvidia-encode-390:i386                  390.59-0ubuntu0~gpu18.04.1              i386         NVENC Video Encoding runtime library
ii  libnvidia-fbc1-390:amd64                   390.59-0ubuntu0~gpu18.04.1              amd64        NVIDIA OpenGL-based Framebuffer Capture runtime library
ii  libnvidia-fbc1-390:i386                    390.59-0ubuntu0~gpu18.04.1              i386         NVIDIA OpenGL-based Framebuffer Capture runtime library
ii  libnvidia-gl-390:amd64                     390.59-0ubuntu0~gpu18.04.1              amd64        NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii  libnvidia-gl-390:i386                      390.59-0ubuntu0~gpu18.04.1              i386         NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii  libnvidia-ifr1-390:amd64                   390.59-0ubuntu0~gpu18.04.1              amd64        NVIDIA OpenGL-based Inband Frame Readback runtime library
ii  libnvidia-ifr1-390:i386                    390.59-0ubuntu0~gpu18.04.1              i386         NVIDIA OpenGL-based Inband Frame Readback runtime library
ii  nvidia-390                                 390.59-0ubuntu0~gpu18.04.1              amd64        Transitional package for nvidia-driver-390
ii  nvidia-compute-utils-390                   390.59-0ubuntu0~gpu18.04.1              amd64        NVIDIA compute utilities
ii  nvidia-dkms-390                            390.59-0ubuntu0~gpu18.04.1              amd64        NVIDIA DKMS package
ii  nvidia-driver-390                          390.59-0ubuntu0~gpu18.04.1              amd64        NVIDIA driver metapackage
ii  nvidia-kernel-common-390                   390.59-0ubuntu0~gpu18.04.1              amd64        Shared files used with the kernel module
ii  nvidia-kernel-source-390                   390.59-0ubuntu0~gpu18.04.1              amd64        NVIDIA kernel source package
ii  nvidia-prime                               0.8.8                                   all          Tools to enable NVIDIA's Prime
ii  nvidia-settings                            396.24-0ubuntu0~gpu18.04.1              amd64        Tool for configuring the NVIDIA graphics driver
ii  nvidia-utils-390                           390.59-0ubuntu0~gpu18.04.1              amd64        NVIDIA driver support binaries
ii  xserver-xorg-video-nvidia-390              390.59-0ubuntu0~gpu18.04.1              amd64        NVIDIA binary Xorg driver

Meu problema é que toda vez que estou ativando meu computador do modo de suspensão, meu plano de fundo passa para esse padrão de ruído (tenho cores sólidas definidas):

insira a descrição da imagem aqui

Acho que vale a pena mencionar que NÃO tenho nenhuma falha gráfica na tela de login (às vezes era um problema no Ubuntu 16.04). A tela de login funciona perfeitamente aqui.

Alguma idéia de como resolver esse problema e de onde ele vem?

thedk
fonte

Respostas:

16

Eu também estou tendo um problema semelhante. Eu tenho uma caixa Dell / Alienware com uma GeForce GTX 860M, executando o Ubuntu 18.04.

Quando o computador sai da suspensão, também tenho o problema com um plano de fundo da área de trabalho corrompido, às vezes branco, ou com a cor "neve". Eu posso corrigir o problema com:

dbus-send --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval "string:global.reexec_self()"

Minha conta está configurada para não ter uma tela de bloqueio no currículo e acho que isso pode ser relevante. Bloquear na suspensão não parece importar.

Edição: Eu mudei meu driver nvidia de 390 para 396, e que não foi corrigido. Mas, mais interessante, se eu usar o Unity Desktop, o problema NÃO ocorre. Isso aponta um dedo para o software de desktop Gnome, talvez ...

Eu adoraria consertar isso de verdade!

Anville
fonte
Como posso reverter isso? Porque causou algumas coisas inesperadas.
Esen Mehmet
12

Outra maneira de solucionar esse problema é: Alt + F2 , digite re pressione Enter.
Isso reiniciará o Gnome.

Leonardo Leal
fonte
8

Eu tenho o mesmo problema também executando o Ubuntu 18.04.1. Eu tenho a nvidia GT220, versão do driver 340.106. O bug foi relatado aqui: bugzilla.gnome.org há muito tempo. Dizia respeito ao Gnome 3.14 e o Ubuntu 18 agora está executando o Gnone 3.28. Deve ser consertado. Com o driver Nouveau, você não obtém esse problema.

Aqui está o que a Nvidia diz sobre isso:

Nossa arquitetura atual de software não preserva o conteúdo dos FBOs entre comutadores de modo ou eventos de energia. Como resultado, nossa implementação depende da renderização dos aplicativos para seus FBOs a cada quadro. Essa é uma limitação fundamental do nosso design que será corrigida no futuro.

O Gnome usa FBOs para não precisar renderizar o plano de fundo em todos os quadros. Mas o conteúdo dos FBOs não é salvo quando o computador entra no modo de suspensão.

nikau6
fonte
5

Eu também tenho esse problema. a solução alternativa para mim parece ser usar uma imagem como plano de fundo em vez de usar uma cor.

terry
fonte
1

Eu também tive o mesmo problema no Ubuntu 18.04.3 usando o NVIDIA 390.129. O fundo mostrou uma imagem barulhenta depois de acordar o computador da suspensão. Não encontrei uma solução adequada, mas hackeei uma maneira de definir o plano de fundo adequado para executar um serviço quando o computador acorda da suspensão.

Vamos primeiro criar o arquivo change_background.shem /usr/bin:

#!/bin/bash
source /usr/bin/discover_session_bus_address.sh
export GIO_EXTRA_MODULES=/usr/lib/x86_64-linux-gnu/gio/modules/
export DISPLAY=:0.0
gsettings set org.gnome.desktop.background picture-uri 'file:///usr/share/backgrounds/your_pick.jpeg'

Defina o caminho para a imagem que você deseja.

Também precisamos criar /usr/bin/discover_session_bus_address.she colar o seguinte código, cortesia de Adam Ryczkowski . change_background.shorigina o arquivo para definir a DBUS_SESSION_BUS_ADDRESSvariável de ambiente.

#!/bin/bash

# Remember to run this script using the command "source ./filename.sh"

# Search these processes for the session variable 
# (they are run as the current user and have the DBUS session variable set)
compatiblePrograms=( nautilus kdeinit kded4 pulseaudio trackerd )

# Attempt to get a program pid
for index in ${compatiblePrograms[@]}; do
    PID=$(pidof -s ${index})
    if [[ "${PID}" != "" ]]; then
        break
    fi
done
if [[ "${PID}" == "" ]]; then
    echo "Could not detect active login session"
    return 1
fi

QUERY_ENVIRON="$(tr '\0' '\n' < /proc/${PID}/environ | grep "DBUS_SESSION_BUS_ADDRESS" | cut -d "=" -f 2-)"
if [[ "${QUERY_ENVIRON}" != "" ]]; then
    export DBUS_SESSION_BUS_ADDRESS="${QUERY_ENVIRON}"
    echo "Connected to session:"
    echo "DBUS_SESSION_BUS_ADDRESS=${DBUS_SESSION_BUS_ADDRESS}"
else
    echo "Could not find dbus session ID in user environment."
    return 1
fi

return 0

Por fim, vamos criar um arquivo de serviço localizado em /etc/systemd/systemnomeado, por exemplo,change_background.service

[Unit]
Description=Change background when waking up from suspend, by Edmundo. 
Before=sleep.target
StopWhenUnneeded=yes

[Service]
Type=oneshot
User=your_username
RemainAfterExit=yes
ExecStop=-/usr/bin/change_background.sh

[Install]
WantedBy=sleep.target

Certifique-se de fornecer as permissões corretas para todos os arquivos.

Inicie o serviço com:

sudo systemctl enable change_background.service

Você pode verificar o status com:

systemctl status change_background.service

Espero que isso tenha resolvido o seu problema, agora o plano de fundo deve ser definido como a imagem de sua escolha quando o computador sair da suspensão.

Edmundo Sanz-Gadea
fonte