No taskbar and can't right click desktop

No idea how this happened. plasmashell was crashing after consuming 6gb memory and I'd tried removing ~/.cache. Shortly after all plasmashell would do is start my desktop background with a wallpaper, but wouldn't give me any taskbar and I couldn't bring up a menu by right clicking the desktop.

Restarting it or rebooting the whole machine didn't help.


jozxyqk's answer is correct, but it is fairly drastic. It will blow away all of your toolbar customizations, app favorites , etc.

Depending on the cause of this issue in your case, you may be able to fix it by editing your plasma-org.kde.plasma.desktop-appletsrc file and then performing

kquitapp plasmashell && kstart plasmashell

One cause I've run into is the buggy multimonitor functionality sometimes "losing" the taskbar from my laptop screen after I've connected to an external monitor and later disconnected (this was in plasma 5.5 or 5.6, I think). In this scenario, I've found the problem to be the lastScreen setting in the taskbar configuration. To fix this, find the section of text in plasma-org.kde.plasma.desktop-appletsrc that looks like:

[Containments][1]
activityId=
formfactor=2
immutability=1
lastScreen=1
location=4
plugin=org.kde.panel
wallpaperplugin=org.kde.image

(Some of these lines may vary in your configuration. In mine, this section was only a dozen lines down in the file, but I have no idea how much that may vary.)

Setting lastscreen=0 fixed the problem for me. I assume that 0 represents my laptop screen, and 1 is the external monitor.

If in doubt, you can always perform the procedure in jozxyqk's answer, and compare the newly generated plasma-org.kde.plasma.desktop-appletsrc with your saved plasma-org.kde.plasma.desktop-appletsrc.bak before restoring an edited version of your saved copy.


Update: Please see EricS's answer first as you may be able to avoid losing your KDE config.


I ended up removing random config files with the name plasma in them. The one that worked was:

cd ~/.config
mv plasma-org.kde.plasma.desktop-appletsrc \
   plasma-org.kde.plasma.desktop-appletsrc.bak

Then restart plasmashell:

kbuildsycoca5 && kquitapp plasmashell && kstart plasmashell

NB: make a backup first

cp ~/.config/plasma-org.kde.plasma.desktop-appletsrc ~/.config/plasma-org.kde.plasma.desktop-appletsrc.bak

OVERALL BUG DESCRIPTION

Assume one performs the following actions: attaches a new second monitor -> attaches the old second monitor. After this procedure the 'screen id' of the old second monitor gets corrupted. You see no taskbar (a panel), the wallpaper has been reset, etc.


Below steps refer to the file ~/.config/plasma-org.kde.plasma.desktop-appletsrc (thereafter SETTINGS_FILE)


HOW TO FIX

I. FIND OUT SCREEN IDS OF YOUR MONITORS

  • Change desktop wallpapers at the both screens, e.g. foo.png for monitor 1 and bar.png monitor 2.

Below is described to how find the screen ID for monitor 1

  • Open SETTINGS_FILE
  • Find foo.png and bar.png in the SETTINGS_FILE

You will see the following block (for foo.png)

[Containments][2][Wallpaper][org.kde.image][General] 
FillMode=6 
Image=~/Pictures/foo.png 

It means foo.png is part of [Containments][2].

  • Thereafter find the following block which refers to [Containments][2]

.

[Containments][2]
activityId=9c23ff19-bffa-4182-bdb6-d9b36dd27cdb
formfactor=0
immutability=1
lastScreen=0
location=0
plugin=org.kde.plasma.folder
wallpaperplugin=org.kde.image

voila, we see the string 'lastScreen=0'. It means the screen ID of monitor 1 is 0 (because monitor 1 refers to foo.png, foo.png refers to [Containments][2], and [Containments][2] refers to lastScreen=0).

The same way you find the screen ID of the monitor 2, say, 1.

So, assume, the screen IDs of monitor 1 and monitor 2 are 0 and 1 respectively.

II. FIND AND REPLACE SCREEN IDS

  • Run grep on SETTINGS_FILE

.

$ grep lastScreen=  plasma-org.kde.plasma.desktop-appletsrc
lastScreen=0
lastScreen=1
lastScreen=0
lastScreen=0
lastScreen=1
lastScreen=2
lastScreen=1
lastScreen=0
lastScreen=2
lastScreen=1
lastScreen=0
lastScreen=0
lastScreen=1
lastScreen=2

As you can see there are lines with 'lastScreen=2'. These are the corrupted lines.

  • In SETTINGS_FILE make a replacement lastScreen=2 -> lastScreen=1.

  • Reboot KDE

.

kquitapp5 plasmashell && kstart5 plasmashell

Now, your desktops should be repaired!