Missing menu bar in Sway

I was away for a few months and hadn’t used my reform in a while. After updating, things looked good. I powered down yesterday and booted it up today. After starting up in sway, I see that the menu bar is missing. Where would I begin to figure out what’s happening here?

It was a while ago, but when you update some of the places things are being looked for change. Waybar is one of them. I don’t know how I fixed it, because I relied A LOT on the community, but hopefully that will help you know where to look (no pun intended). (I remember it had to do with .local)

Try starting waybar in a terminal in sway, it should output some error messages.

I get this error message:

waybar: error while loading shared libraries: libfmt.so.7: cannot open shared object file: No such file or directory

I got my Reform yesterday and started into sway and ran apt update && apt upgrade followed by apt autoremove.
Before the update, waybar was working correctly.
However as I determined from the apt logs later, the autoremove command removed libfmt7.
Re-installing that package is not possible because it is not part of debian sid (any more).
It seems it has been replaced by the package libfmt8, which is installed and the waybar package claims to depend on it.
Bug reports and pull requests in the waybar repository indicate that updates to be compatible with libfmt8 should be shipped in the current waybar version on debian sid, but something is apparently still broken.

I went with @2disbetter 's suggestion and browsed the community a bit more, found https://community.mnt.re/t/waybar-broke-after-apt-upgrade/845 which seems related, and https://community.mnt.re/t/post-apt-upgrade-errors-tips/741.

From that I got a hunch and there were multiple waybar binaries. I changed one line in my sway config from

exec /usr/local/bin/waybar


exec /usr/bin/waybar

and after restarting sway, waybar is working again.

That also explains the confusion about the installed packages version being compatible with libfmt8, I assume the /usr/local/bin/waybar was compiled against that older version.

If you are on a system before sysimage-v3 and want to upgrade to the current state of things, then you have to do some manual migration. @mntmn wrote down some notes here: bit-by-bit reproducible and no need for superuser privileges (#15) · Issues · Reform / reform-system-image · GitLab

Essentially, a vanilla sysimage-v3 should have nothing in /usr/local/.