19.10 - Loading / Saving custom panel layouts is utterly broken

I don't have a solution for this. I don't even have a workaround. It may be that there simply isn't one without a lot of development work. I don't know if it even works properly on 18.04 or 16.04: I haven't tested those yet.

Case #1: The simple example.

Customise your panel layout. Save it. Load a different layout. Load your custom layout.

Obviously, this should return you to how things were when you saved your layout. Instead, you'll probably get something that bears very little relationship to it. Even worse, every setting that you have for ALL of your panel applets will have been wiped out. For example, if you had set a location for the clock applet, that will now be gone. If you changed the clock to 12H format, it'll be back to 24H. ALL your customisation will be gone. That means that things like HW Sensors and System Monitor will be back to their defaults too. So if you were monitoring multiple cores on your CPU, those will all have vanished, and so on.

Case #2: The "WTF?!" example.

Customise your panel layout. Save it TWICE with two different names. Load the first save again.

This one resulted in something even more broken. Rather than just wipe out all your settings, it gives you DUPLICATES of the applets, with one set having what is at least partially the correct settings, and the other set using the defaults. For example, if you had System Monitor tracking CPU and RAM, you'll end up with 3 windows: two CPU and one RAM. If you had an app launcher on the panel, you might now have 2 of the same app.
(Note that I did this after the initial borkage, so this one may be presenting a combination of that with a new bug).

It's hard to even guess at what's going on here. It's especially confusing since the bugs with the panel crashing when you save a custom layout are fixed in 19.10, and it defies belief that loading panels wouldn't have been tested at least once. The behavior isn't consistent either, as seen above.


Case #2 is potentially the easiest to at least understand what happened: AFAICT, it simply MERGED the layout it was supposed to be loading, without removing the current layout first. For example, the .panel file for it contains this at line 42:

[objects/cpufreqapplet]
applet-iid='CPUFreqAppletFactory::CPUFreqApplet'
locked=false
object-type='applet'
panel-right-stick=false
position=260
toplevel-id='toplevel_0'

which I expect is the layout for that applet after Case #1 wiped out all the customisation... but it also contains this at line 314:

[objects/object-14]
applet-iid='CPUFreqAppletFactory::CPUFreqApplet'
object-type='applet'
panel-right-stick=false
position=399
toplevel-id='toplevel-0'

[objects/object-14/prefs]
cpu=3
show-text-mode=0

[objects/object-15]
applet-iid='CPUFreqAppletFactory::CPUFreqApplet'
object-type='applet'
panel-right-stick=false
position=354
toplevel-id='toplevel-0'

[objects/object-15/prefs]
cpu=2
show-text-mode=0

[objects/object-16]
applet-iid='CPUFreqAppletFactory::CPUFreqApplet'
object-type='applet'
panel-right-stick=false
position=309
toplevel-id='toplevel-0'

[objects/object-16/prefs]
cpu=1
show-text-mode=0

[objects/object-17]
applet-iid='CPUFreqAppletFactory::CPUFreqApplet'
object-type='applet'
panel-right-stick=false
position=264
toplevel-id='toplevel-0'

[objects/object-17/prefs]
show-text-mode=0

which can only be the correct layout that was saved originally, as you can see it's tracking all 4 cores.
(Actually, there are NINE of them in that file, but this is complicated enough already! The second batch of 4 also has the correct CPU identifiers etc with it).

The same layout, saved as a different user and from 16.04, has exactly the 4 instances you'd expect.

The same goes for the NetSpeed applet, with one copy at line 82 with all the settings lost:

[objects/netspeedapplet]
applet-iid='NetspeedAppletFactory::NetspeedApplet'
locked=false
object-type='applet'
panel-right-stick=false
position=741
toplevel-id='toplevel_0'

and a correct copy at line 271 with the settings intact:

[objects/object-10]
applet-iid='NetspeedAppletFactory::NetspeedApplet'
object-type='applet'
panel-right-stick=false
position=475
toplevel-id='toplevel-0'

[objects/object-10/prefs]
auto-change-device=true
change-icon=false
device='wlan0'
short-unit=true
show-bits=true
show-icon=false
show-quality-icon=false
show-sum=false

(The line numbers are irrelevant of course, but the ORDER of the duplicates may be informative, as might the object IDs). The third (and last) copy is at line 661, and again has the correct settings with it:

[objects/object_5]
applet-iid='NetspeedAppletFactory::NetspeedApplet'
[snip]

[objects/object_5/prefs]
auto-change-device=true
change-icon=false
[snip]


IDK how much of the 19.10 bugs are in the loading code and how much in the saving part - that was next on my agenda, but unfortunately I'm out of time to dig any further into this. If anyone wants to run with it for a while, custom layouts are hidden in /usr/share/mate-panel/ rather than in the user's home tree.

2 Likes

I used a little script I made for 18.04 to switch between custom layouts depending on how many monitors I'm using.
Loading is indeed broken now. I end up with two superposed panels (one blank) instead of one top panel per monitor.
It seems to load fine for half a second and then gets buggy.
Really hope they fix this.

1 Like

It would be interesting to know if this is a broader Mate problem or a specifically UM problem. I can't test that right now because I am using a customized Openbox based desktop.

Thanks for spotting the breakage and debugging. I could reproduce the 2 cases too.

:x: 19.10
:heavy_check_mark: 19.04
:heavy_check_mark: 18.04

I relayed them to the QA team, hopefully to be fixed before 19.10 is released. :crossed_fingers:

5 Likes

This is from 18.04s release. How close does this sound to what you're seeing?

The duplicates sounds very familiar. However, I gave up trying to get it to do the same thing twice.

"How close?" Some of it a lot, some of it not at all. Otherwise we'd get bored. :stuck_out_tongue:

One machine is bare metal, on a 720p TV. One is a VM on a 1920x1200 display. Different core counts, RAM sizes, even storage types. Neither has a TOP panel, but both have a Left one. Ordering-wise though, it may well have BEEN a top panel originally and was just moved to the side to not burn limited vertical space rather than plentiful horizontal space.

That is the panel where the dupes were obvious, but I don't have much of anything on the bottom panel to notice: it's nearly all window bars. However, the one thing I do have on there is the clock, which at the very least had all its settings wiped out by #1 - I just don't recall if it also gained a second clock at some point.
Except, I don't have to, because I (duh) kept the panel files, and... jep: two clockapplets them, both on the bottom panel. "Only" 2 of them, rather than 3, which is one less duplicate than the elements on the other panel, but it's possible I repaired that panel a bit. Only 2 indicator sets too.

So, we end back where we started: yes and no.
I think it's unlikely that the top (?really, "first"?) panel has anything special to it, and it's more likely that the issue is systemic. It may simply be that things are screwy enough by the time the first panel's been loaded on top of the one it's replacing that the code ends up erroring out, or running into dependent problems, etc.

If you're feeling brave (and ideally have a VM you can just snapshot and restore afterwards) you could try your luck with my steps: reproduceability seemed like your biggest headache in 18.04, but I'm 2 for 2 on 19.10 and lah got the same result as well, so it might be a lot easier now - and thus also a lot easier for Wimpy et al to at least understand (and find time for) even if an actual fix isn't easily managed.

Well, today's the day the 19.10 archives will start to freeze as flavours prepare for final release, so possibly not before 19.10's release unfortunately.

Has this bug been reported on Launchpad? Marking it as "affects me too" with easy reproduction steps will increase the heat. :fire:

1 Like

Could you please give me the URL where this should be reported ?

https://bugs.launchpad.net/ubuntu-mate - also accessible via the "Bug Tracker" link at the top of the community. :point_up:

1 Like

Thanks a lot. Gonna report it now.

Launchpad entry

  • In 3 years Mate Panel Layout change remain the same shi... and unreliable as in the following picture. (Configuration continue to be done in two files that look similar)
    (A FALSE AFFIRMATION - SEE DOWN WHERE WAS MY ISSUE)
  • Panel indicators in 3 years has been changed up and down, and it continue to be shi..., giving me the impression that 16.04 have the best indicators.

Even until now I manage to solve it, it looks like the panel issue is no more correctable if I remove par example one of mate menu almost all icons on left vertical bar disappear. (WRONG CONFIG FILE AS EXPLAINED DOWN)

Picture is taken from a new install,install was done using scripts that copy also those panel config files, but change was not reliable in Mate Tweak, and I was struggling wit it (until I manage to bring my app icons on left panel by switching around different layouts) (WRONG CONFIG FILE AS EXPLAINED DOWN).

I don't know what to say maybe this distribution is really in lack of developers, the developers that exist can only do small patches to existing bad coding as no one have time for a code rework. This is my feeling, and somehow I am sad about it ...

Ok , Ok manage to solve where is the issue, IT WAS IN MY CONFIGS, and let me explain.

SO MY PREVIOUS AFFIRMATION THAT MATE PANEL CHANGE IS NOT STABLE IS FALSE, so I will edit the post.

  1. Even if those configs work OK on 16.04 until 19.04, it can't load correctly on 19.10 because something is wrong in them, as it can be explained in following picture.
    I have corrected the name of fourteen launchers, the other launchers have same name (as file made manually in the past) so on load is displayed only the last one, as every time it replace the config of the next launcher as it has the same name, so it will display only the last one in the file with same name, witch in my case is bless hex editor.

  2. Double icon-ing display (as I put in previous picture) was the cause of having both .panel and .loyout configuration files. The layout have a lot of incorrect lunchers so it took from them just unique naming ones, and from other it chose all, and as they contain same thing it was displayed complete. Those file are added together and displayed in 19.10 so are showed as double icons.

In the end this means a lot of improvement has done to Mate Panels, that correct even that doubling configuration files, so this is really nice...

So really happy with those...

3 Likes

Thanks a lot mircea !

Your post made me give a deeper look at my custom layouts and I've been able to solve my main issue as well.

  • Adding "monitor=1" in the [Toplevel toplevel-0] section of the *.layout file allowed me to put panel 2 on monitor 2 as intended. Otherwise, panel 2 would go below panel 1 on monitor 1.

  • Renaming the objects in the *.layout file made them appear on the second panel as well.

I can now switch between single and multi-monitor layouts with the script I used before.

This doesn't change anything about the currently broken weather applet not remembering the prefs though.

Ok, I intend here to detail each bug that mate panel /mate tweak related to mate panel has, maybe I will fill this bugs directly on Github/Launchpad:

1. Mate Tweak > Panel > Save As (a custom made panel) (Specific to Mate 19.10)
Saving panel layout in .layout file, is incorrect, all applets are saved with same "header" like [Object separator] or [Object launcher].
On loading if multiple objects have same name, will be displayed only the last one.
To be solved the Save As button should save each object with a unique name, like [Object separator_1], [Object separator_2],...

2. Mate Tweak > Panel > Save As (a custom made panel) (Specific to all Mate releases)
Will save incorrectly two files a .layout and a .panel one. As .layout look more like a new format for .panel one it should be saved only .layout one. This will prevent inconsistent panel layout with double Icons. This feature might create regression probably on old Mate releases like 16.04 (just tested by me on 18.04 upward) It might also create regression for some custom layout, but improvement will affect more users, than users affected by regression.

3. Launcher location change between releases
A typical example is for remmina that was changed often between releases

  • on 16.04 launcher-location=/usr/share/applications/remina.desktop
  • on initial release of 18.04 launcher-location=/usr/share/applications/org.remina.desktop
  • on 19.10 launcher-location=/usr/share/applications/org.remmina.Remmina.desktop
    so this just coming insane, every time I have to readjust the launcher (as it disappear form bar)

4. Inconsistent launcher might prevent entire panel load
par example specifying launcher-location=/usr/share/applications/remina.desktop instead of launcher-location=/usr/share/applications/org.remmina.Remmina.desktop might prevent loading of all layout. This should not happen, the launcher should be ignored (found on Mate 18.04)

3 Likes

That's potentially awesome, thanks! :smiley:

It does kind of beg the question "Why are recent versions still LOADING both?", but as you (roughly) say it's probably so that they can load 16.04-era custom layouts.
(@vkareh et al - simply versioning the .layout file would fix that, IF that one's loaded first. I don't have my 19.10 VM up ATM to check, though it's a good thing to do for any config file anyway).

#3 kinda sucks, but IMO is NOT something the system should try to cope with - it'll add a bunch of extra cruft that will hang around forever.

#4 is another nice piece of detective work - and potentially a REALLY nasty bug, since a broken panel load can leave users with a machine that's barely usable from the GUI. As you say, bad entries need to just be ignored.
Can you file that one separately in Launchpad? It should be a much easier fix than the other problems and can be handled independently of them, so someone might find time to do that "soon" even if they can't manage the other pieces right away.

That was my intention, but right now I don't have neither account on github or Launchpad,
If you want to do it, my pleasure... (if you do it, put links also here for reference)

First two are related to Mate Tweak, other two Mate Panel.

I found this post via search. Thanks for all the details. I used Mate Tweak to save a panel layout, and was wondering how I could transfer that layout to a new OS (all in VMs.) From the discussion here, I learned that the way to do so was to manually copy the saved files from /usr/share/mate-panel/layouts. That works.

But having a Load button in Mate Tweak would be helpful. That way I could simply copy the files from my home directory from one system to another, and load them without having to modify system directories manually.

1 Like

Hello Utsuro,
i am very interested in this script you mention here.
i am searching for a way to switch between different costom mate panel layouts with a terminal command. (same as you, for using different numbers of monitors).
i would be very happy if you can help me.
lg Demna

Everything I did is explained here: