pkulchenko / ZeroBraneStudio

Lightweight Lua-based IDE for Lua with code completion, syntax highlighting, live coding, remote debugger, and code analyzer; supports Lua 5.1, 5.2, 5.3, 5.4, LuaJIT and other Lua interpreters on Windows, macOS, and Linux
http://studio.zerobrane.com/
Other
2.6k stars 519 forks source link

ZBS fails to pin in KDE due to missing metadata #1114

Open ChefNiko opened 3 years ago

ChefNiko commented 3 years ago

Using the KDE desktop, I cannot pin ZeroBrane Studios to the task manager or panel. I opened a bug with KDE, which is available here.

System Info:

ZeroBrane Studio 1.90; MobDebug 0.706 Linux/KDE Plasma: Kubuntu 21.04 5.11.0-16-generic x64 KDE Plasma Version: 5.21.4 KDE Frameworks Version: 5.80.0 Qt Version: 5.15.2

From the KDE bug report:

"

WM2DesktopFileName

is not present

even our fallback WM_CLASS is unhelpful

WM_CLASS(STRING) = "lua", "Lua"

...

Please report to zerobrane to populate their metadata. "

pkulchenko commented 3 years ago

@ChefNiko, I'm not sure what the fix is. I don't know where WM_CLASS(STRING) = "lua", "Lua" values are coming from or where I would specify WM2DesktopFileName. There is zbstudio/res/zbstudio.desktop file, but it's only used during ZeroBrane Studio app installation on Linux, which doesn't seem to be your configuration, as you're using it from the repository. If you figure out how to populate that metadata, I can certainly take a look at this.

ChefNiko commented 3 years ago

I'm not an application developer, so I'm not really sure what the fix is either, but I've dug around a bit, and here's what I've found.

According to this link, the XAllocClassHint() function is used to set the WM_CLASS metadata.

However, I imagine you will at least want to wrap that in a conditional statement, because the other window managers won't like it much. Although, I don't know how it works when building the application for different window systems.

I'm also not sure if that will work, because I see the wxwidgets library is being used to handle most of the window management functions. So, I expect wxwidgets is setting the WM_CLASS to "lua", "Lua" (along with the other metadata) somewhere.

So, I posted on their forums here asking for a bit of help with this. Unfortunately, I don't have a lot of spare time to dig in to this much further. It would be great if you could work with the other people on the wxwidgets forum to get to the root of this.

pkulchenko commented 10 months ago

It looks like VLC as fixed this by adding StartupWMClass=VLC to their .desktop file: echo "StartupWMClass=VLC" >> /app/share/applications/vlc.desktop, but I'm not sure what that class should be in our case or if this indeed fixes the issue.