probonopd / linuxdeployqt

Makes Linux applications self-contained by copying in the libraries and plugins that the application uses, and optionally generates an AppImage. Can be used for Qt and other applications
Other
2.22k stars 414 forks source link

How to add extra plugins in the build dir? #473

Closed trmdi closed 1 year ago

trmdi commented 3 years ago

Please see this file: https://download.opensuse.org/repositories/home:/trmdi:/test/AppImage/ (yml file: https://build.opensuse.org/package/view_file/home:trmdi:test/latte-dock/appimage.yml?expand=1)

I have 2 questions:

1, it seems that linuxdeployqt uses usr/lib and usr/plugins, while openSUSE uses usr/lib64 and usr/lib64/qt5/{plugins,qml}. How to tell linuxdeploy to use the path like openSUSE? 2, as you see in the appimage file, there are still some files remain in the build dir at usr/lib64/qt5. How to tell linuxdeployqt import those files?

probonopd commented 3 years ago

How to tell linuxdeploy to use the path like openSUSE?

As far as I remember, this is not possible. AppImages made with linuxdeployqt use the "normalized" FHS-like structure with ?usr/lib and usr/plugins.

there are still some files remain in the build dir at usr/lib64/qt5

Probably the make install step of the build process of the application has put them there? Just move them to the locations which linuxdeployqt is using.

If you don't like this, then you may want to look into the newer appimagetool deploy in go-appimage, which tries to use the filesystem structure of the host system.

Things like this have made me use FreeBSD as my daily driver. No more different distributions that all break things slightly differently to worry about.

trmdi commented 3 years ago

Probably the make install step of the build process of the application has put them there? Just move them to the locations which linuxdeployqt is using.

Ok, I am trying it. Thank you. :D

trmdi commented 3 years ago

Excuse me, I created a custom AppRun file but why it is overwritten ? https://github.com/probonopd/linuxdeployqt/blob/d41e2345694e6d09820df66e5edb6e8c01db9fb9/tools/linuxdeployqt/main.cpp#L381

Edit: solved. you have to chmod 755 it.

trmdi commented 3 years ago

Some plugins are still linked to the system's libraries. For example:

▶ ldd usr/plugins/plasma_containmentactions_lattecontextmenu.so | grep libQt5Quick
        libQt5Quick.so.5 => /usr/lib64/libQt5Quick.so.5 (0x00007f51d4717000)

/tmp/.mount_latte-WGN0AS                                                           
▶ find usr/lib -name libQt5Quick.so.5
usr/lib/libQt5Quick.so.5

How can I solve this?

Edit: solved. Use "-executable=usr/path/to/file.so"

trmdi commented 3 years ago

If the system qml dir is at /usr/lib64/qt5/qml and the app qml dir is at $BUILD_APPDIR/usr/qml then:

Edit: Ah, I partly understood it:

aziham commented 1 year ago

@trmdi Hi! I saw that you were trying to build Latte-Dock as an AppImage. I'm interested in doing the same thing and was wondering if you were able to get it working. Have you had any success with this? If so, could you please share the steps you took to create the AppImage? Thank you!

probonopd commented 1 year ago

Probably it would be best to ask the author of Latte-Dock to provide an officially supported AppImage.

trmdi commented 1 year ago

Probably it would be best to ask the author of Latte-Dock to provide an officially supported AppImage.

He's dropped it so some people want to make the appimage in order to isolate it with the system library, I guess.

trmdi commented 1 year ago

@aziham I tried that but didn't succeed. :(

aziham commented 1 year ago

Probably it would be best to ask the author of Latte-Dock to provide an officially supported AppImage.

@probonopd

As @trmdi have mentioned, psifidotos (the creator of Latte-Dock) is no longer maintaining the software. It might not be possible to ask the author to provide an officially supported AppImage under these circumstances.

aziham commented 1 year ago

@aziham I tried that but didn't succeed. :(

@trmdi I was hoping that you could package Latte-dock as an AppImage. I tried doing it myself but was unsuccessful ☹️

My idea was to package Latte-dock along with necessary applets such as window title, global menu, virtual-desktop-bar, etc. I planned to use this package as a standalone program in my next minimal setup, which comprises only of a tiling window manager without a desktop environment.

The reason behind moving away from KDE Plasma is that dotfiles are scattered all over the place, which makes it difficult to keep track of all configurations even with dotfile managers like Chezmoi. Additionally, some KDE programs mix config and state in the same file, which adds to the complexity.

To create a custom setup with a similar Plasma workflow, the only missing piece for me is Latte-dock. Unfortunately, I haven't been able to find a bar that includes both a global menu and virtual desktops applet.