-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Is this still necessary for modern Gtk4/Libadwaita programs? #60
Comments
Well, I remember this plugin was required for GTK3 at least. It was a long time ago, but I faced a lot of compatibility issues without this plugin in the past, especially when the GTK version was not the same during the build (e.g. Ubuntu LTS) and the run (e.g. an up-to-date Arch Linux). The oldest supported version of Ubuntu for GitHub Runners is 20.04, meaning GTK 3.24 (AKA the latest GTK3 version).
Please refer to #39.
The excludelist is from pkg2appimage, it is not related to linuxdeploy. |
Hey, thanks for your detailed answer, I appreciate it.
That's actually wrong! That excludelist is hosted on pkg2appimage, but it's used by most AppImage creation tools including Linuxdeploy. Linuxdeploy uses the excludelist that was up-to-date at compile-time of the release, see linuxdeploy/linuxdeploy#286.
Yeah, that supports my thought, as by now AppImages only use the GTK version that's used during the build and shipped in the AppImage itself.
Thanks for the link, that's interesting. Although it contradicts my experience a bit. In there, it is stated that Adwaita is hardcoded as a theme, but I have the problem that I have a normal Libadwaita application with the Adwaita theme and it is not used (instead, the old default theme is used as a fallback). Maybe I misunderstood something? |
Ah, my bad, I was not aware of the generate-excludelist.sh script in linuxdeploy that relies on pkg2appimage excludelist, sorry. My knowledge about Libadwaita is very limited. I cannot say if this plugin is still necessary for GTK4, maybe it depends of application needs (like GDK PixBufs). |
Just a side note: @probonopd and I are currently looking into truly bundling everything in the future. Right now, linuxdeploy still relies on the excludelist. |
@probonopd Can you maybe confirm whether bundling Glib makes this plugin unnecessary? I'd assume it does so, based on my personal tests, but it would still be good to have your insight. |
It wouldn't. You still need to bundle auxiliary files, e.g., gsettings schemas and other files. You'd need to bundle all of these files. And that's what such a plugin is good at.
The idea came up a few days ago. We're wrapping up open projects right now, e.g., AppImageLauncher's new release. |
Thank you for that answer. As I said, my primary question was whether this is still important and what exactly this plugin does, as I tried an AppImge built without it on distributions without anything GTK-related and didn't make any difference. However, if it's necessary (or at least recommended) to do this, can you explain why this removes the Libadwaita theme (which is the default every modern GTK application moves) and makes the application appear in the fallback default theme which shouldn't be used? |
I am not an expert on Gtk+ and I also don't claim that the plugin does not contain any flaws. Your question was "do you need this plugin" and the answer is yes. Most applications use Gtk+ 3 with this plugin, testing with Gtk+ 4 could be better. Regarding your AppImage, you can always be lucky, but testing a single (possibly simple) application is too small of a sample size. This plugin has helped improve the look and feel of many applications. It's always possible that a single application doesn't need the functionality, but it certainly shouldn't harm. If it does, that's a bug of the plugin or maybe the plugin is used incorrectly. Regarding your Adwaita problem, I think it should be tracked in a separate issue because the verdict of this one is "do you need this plugin at all" which was replied to with "yes". |
I would assume that it is still needed, because bundling GLib does not mean that the rest of Gtk is deploying itself. |
Thanks to both of you for these answers :) I wrote the Adwaita thing in the same issue as it was the only difference I noticed and therefore was an important factor to consider whether to use this plugin (as well as this question); so they were connected in my head. If you want me to move it though, I can do that tomorrow. |
I've recently spent a lot of time looking into AppImages and how to package them.
I noticed that since this plugin has first been developed, the excludelist has been changed. Especially glib and its dependencies are now always bundled in AppImages, see this comment by @probonopd:
Therefore I am not entirely sure whether this plugin is required anymore. When I tested packaging my Gtk4/Libadwaita project, I noticed that this plugin doesn't seem to be necessary:
I created a new virtual machine and installed Arch on it (with X-Org, LXQt and Openbox) without any GTK dependencies. I then tested both version of my program (packaged with linuxdeploy) on it: One with the GTK plugin and one without. And both worked (without a different terminal output). So I'm not sure whether this plugin is necessary anymore.
For the record, I should mention that I do not use any icon assets of any theme in my project, so I don't know whether the plugin changes anything related to that though.
I did notice one major difference though: While my GTK code uses Libadwaita, the AppImage without this plugin was displayed correctly (with the Libadwaita theme) while the version built with this plugin was displayed with the default theme (as if I hadn't used Libadwaita but just GTK-4). So this is certainly a bug of this plugin that should be fixed. I would have made this a separate issue, but as I'm unsure whether the plugin is needed at all, I'll just keep it here for now.
@TheAssassin Can you maybe explain what this plugin actually does and what it changes with the AppImage? Is there still something I'm missing this plugin is required for? Or is it actually not necessary anymore for Gtk4/Libadwaita?
The text was updated successfully, but these errors were encountered: