Closed
Description
When a host filesystem installs GTK to directories outside of /usr/lib
, those install locations are recreated within the AppDir. Since linuxdeploy
only evaluates libraries, binaries, etc. under usr/lib
in the AppDir, the GTK library (especially libgtk-#.so
) may not be included in the output AppImage.
This plugin should copy these files in to usr/lib
in the AppDir so linuxdeploy
can include their dependencies.
For example, on Fedora 37, gtk3-devel
installs to /usr/lib64
.
Example Resulting AppDir Layout
build/helloworld/linux/appimage/Hello World.AppDir/
├── AppRun
├── apprun-hooks
│ └── linuxdeploy-plugin-gtk.sh
├── AppRun.wrapped -> usr/bin/com.example.helloworld
├── com.example.helloworld.desktop
├── com.example.helloworld.png -> usr/share/icons/hicolor/512x512/apps/com.example.helloworld.png
└── usr
├── app
│ ├── helloworld
│ │ ├── app.py
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ └── resources
│ │ ├── helloworld.icns
│ │ ├── helloworld.ico
│ │ ├── helloworld.png
│ │ ├── __init__.py
│ │ ├── newimage.ico
│ │ ├── newimage.png
│ │ └── newimage-square-192.png
│ └── helloworld-0.0.1.dist-info
│ ├── INSTALLER
│ ├── METADATA
│ ├── top_level.txt
│ └── WHEEL
├── app_packages
│ ├── cairo
│ │ ├── _cairo.cpython-310-x86_64-linux-gnu.so
│ │ ├── include
│ │ │ └── py3cairo.h
│ │ ├── __init__.py
│ │ ├── __init__.pyi
│ │ └── py.typed
│ ├── gbulb
│ │ ├── glib_events.py
│ │ ├── gtk.py
│ │ ├── __init__.py
│ │ ├── transports.py
│ │ └── utils.py
│ ├── gbulb-0.6.4.dist-info
│ │ ├── INSTALLER
│ │ ├── LICENSE
│ │ ├── METADATA
│ │ ├── RECORD
│ │ ├── top_level.txt
│ │ └── WHEEL
│ ├── gi
│ │ ├── _constants.py
│ │ ├── docstring.py
│ │ ├── _error.py
│ │ ├── _gi_cairo.cpython-310-x86_64-linux-gnu.so
│ │ ├── _gi.cpython-310-x86_64-linux-gnu.so
│ │ ├── _gtktemplate.py
│ │ ├── importer.py
│ │ ├── __init__.py
│ │ ├── module.py
│ │ ├── _option.py
│ │ ├── _ossighelper.py
│ │ ├── overrides
│ │ │ ├── GdkPixbuf.py
│ │ │ ├── Gdk.py
│ │ │ ├── GIMarshallingTests.py
│ │ │ ├── Gio.py
│ │ │ ├── GLib.py
│ │ │ ├── GObject.py
│ │ │ ├── Gtk.py
│ │ │ ├── __init__.py
│ │ │ ├── keysyms.py
│ │ │ └── Pango.py
│ │ ├── _propertyhelper.py
│ │ ├── pygtkcompat.py
│ │ ├── repository
│ │ │ └── __init__.py
│ │ ├── _signalhelper.py
│ │ └── types.py
│ ├── include
│ │ └── pygobject-3.0
│ │ └── pygobject.h
│ ├── pycairo-1.23.0.dist-info
│ │ ├── COPYING
│ │ ├── COPYING-LGPL-2.1
│ │ ├── COPYING-MPL-1.1
│ │ ├── INSTALLER
│ │ ├── METADATA
│ │ ├── RECORD
│ │ ├── top_level.txt
│ │ └── WHEEL
│ ├── PyGObject-3.42.2.dist-info
│ │ ├── COPYING
│ │ ├── INSTALLER
│ │ ├── METADATA
│ │ ├── RECORD
│ │ ├── top_level.txt
│ │ └── WHEEL
│ ├── pygtkcompat
│ │ ├── generictreemodel.py
│ │ ├── __init__.py
│ │ └── pygtkcompat.py
│ ├── toga
│ │ ├── app.py
│ │ ├── colors.py
│ │ ├── command.py
│ │ ├── constants
│ │ │ └── __init__.py
│ │ ├── documents.py
│ │ ├── fonts.py
│ │ ├── handlers.py
│ │ ├── hardware
│ │ │ └── __init__.py
│ │ ├── icons.py
│ │ ├── images.py
│ │ ├── __init__.py
│ │ ├── keys.py
│ │ ├── platform.py
│ │ ├── resources
│ │ │ ├── __init__.py
│ │ │ ├── toga.icns
│ │ │ ├── toga.ico
│ │ │ └── toga.png
│ │ ├── sources
│ │ │ ├── accessors.py
│ │ │ ├── base.py
│ │ │ ├── __init__.py
│ │ │ ├── list_source.py
│ │ │ ├── tree_source.py
│ │ │ └── value_source.py
│ │ ├── style
│ │ │ ├── applicator.py
│ │ │ ├── __init__.py
│ │ │ └── pack.py
│ │ ├── validators.py
│ │ ├── widgets
│ │ │ ├── activityindicator.py
│ │ │ ├── base.py
│ │ │ ├── box.py
│ │ │ ├── button.py
│ │ │ ├── canvas.py
│ │ │ ├── datepicker.py
│ │ │ ├── detailedlist.py
│ │ │ ├── divider.py
│ │ │ ├── imageview.py
│ │ │ ├── __init__.py
│ │ │ ├── label.py
│ │ │ ├── multilinetextinput.py
│ │ │ ├── navigationview.py
│ │ │ ├── numberinput.py
│ │ │ ├── optioncontainer.py
│ │ │ ├── passwordinput.py
│ │ │ ├── progressbar.py
│ │ │ ├── scrollcontainer.py
│ │ │ ├── selection.py
│ │ │ ├── slider.py
│ │ │ ├── splitcontainer.py
│ │ │ ├── switch.py
│ │ │ ├── table.py
│ │ │ ├── textinput.py
│ │ │ ├── timepicker.py
│ │ │ ├── tree.py
│ │ │ └── webview.py
│ │ └── window.py
│ ├── toga_core-0.3.0.dist-info
│ │ ├── INSTALLER
│ │ ├── METADATA
│ │ ├── RECORD
│ │ ├── top_level.txt
│ │ └── WHEEL
│ ├── toga_gtk
│ │ ├── app.py
│ │ ├── colors.py
│ │ ├── command.py
│ │ ├── dialogs.py
│ │ ├── documents.py
│ │ ├── factory.py
│ │ ├── fonts.py
│ │ ├── hardware
│ │ │ └── __init__.py
│ │ ├── icons.py
│ │ ├── images.py
│ │ ├── __init__.py
│ │ ├── keys.py
│ │ ├── libs
│ │ │ ├── gtk.py
│ │ │ ├── __init__.py
│ │ │ ├── styles.py
│ │ │ └── utils.py
│ │ ├── paths.py
│ │ ├── widgets
│ │ │ ├── activityindicator.py
│ │ │ ├── base.py
│ │ │ ├── box.py
│ │ │ ├── button.py
│ │ │ ├── canvas.py
│ │ │ ├── detailedlist.py
│ │ │ ├── divider.py
│ │ │ ├── imageview.py
│ │ │ ├── __init__.py
│ │ │ ├── internal
│ │ │ │ ├── buttons
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── refresh.py
│ │ │ │ │ └── scroll.py
│ │ │ │ ├── __init__.py
│ │ │ │ ├── rows
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── scrollable.py
│ │ │ │ │ └── texticon.py
│ │ │ │ └── sourcetreemodel.py
│ │ │ ├── label.py
│ │ │ ├── multilinetextinput.py
│ │ │ ├── numberinput.py
│ │ │ ├── optioncontainer.py
│ │ │ ├── passwordinput.py
│ │ │ ├── progressbar.py
│ │ │ ├── scrollcontainer.py
│ │ │ ├── selection.py
│ │ │ ├── slider.py
│ │ │ ├── splitcontainer.py
│ │ │ ├── switch.py
│ │ │ ├── table.py
│ │ │ ├── textinput.py
│ │ │ ├── tree.py
│ │ │ └── webview.py
│ │ └── window.py
│ ├── toga_gtk-0.3.0.dist-info
│ │ ├── entry_points.txt
│ │ ├── INSTALLER
│ │ ├── METADATA
│ │ ├── RECORD
│ │ ├── REQUESTED
│ │ ├── top_level.txt
│ │ └── WHEEL
│ ├── travertino
│ │ ├── colors.py
│ │ ├── constants.py
│ │ ├── declaration.py
│ │ ├── fonts.py
│ │ ├── __init__.py
│ │ ├── layout.py
│ │ ├── node.py
│ │ └── size.py
│ └── travertino-0.1.3.dist-info
│ ├── INSTALLER
│ ├── LICENSE
│ ├── METADATA
│ ├── RECORD
│ ├── top_level.txt
│ └── WHEEL
├── bin
│ └── com.example.helloworld
├── lib
│ ├── libblkid.so.1
│ ├── libbz2.so.1
│ ├── libcairo-gobject.so.2
│ ├── libcairo.so.2
│ ├── libcrypt.so.1
│ ├── libepoxy.so.0
│ ├── libffi.so.6
│ ├── libgdk-3.so
│ ├── libgdk-3.so.0
│ ├── libgdk-3.so.0.2200.30
│ ├── libgdk_pixbuf-2.0.so
│ ├── libgdk_pixbuf-2.0.so.0
│ ├── libgdk_pixbuf-2.0.so.0.3612.0
│ ├── libgdk-x11-2.0.so.0
│ ├── libgdk-x11-2.0.so.0.2400.31
│ ├── libgio-2.0.so
│ ├── libgio-2.0.so.0
│ ├── libgio-2.0.so.0.5600.1
│ ├── libgirepository-1.0.so.1
│ ├── libglib-2.0.so.0
│ ├── libgmodule-2.0.so.0
│ ├── libgobject-2.0.so
│ ├── libgobject-2.0.so.0
│ ├── libgobject-2.0.so.0.5600.1
│ ├── libgraphite2.so.3
│ ├── libmount.so.1
│ ├── libpango-1.0.so
│ ├── libpango-1.0.so.0
│ ├── libpango-1.0.so.0.4200.3
│ ├── libpangocairo-1.0.so
│ ├── libpangocairo-1.0.so.0
│ ├── libpangocairo-1.0.so.0.4200.3
│ ├── libpangoft2-1.0.so
│ ├── libpangoft2-1.0.so.0
│ ├── libpangoft2-1.0.so.0.4200.3
│ ├── libpcre.so.1
│ ├── libpixbufloader-ani.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.so
│ ├── libpixbufloader-bmp.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
│ ├── libpixbufloader-gif.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
│ ├── libpixbufloader-icns.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-icns.so
│ ├── libpixbufloader-ico.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ico.so
│ ├── libpixbufloader-jasper.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jasper.so
│ ├── libpixbufloader-jpeg.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jpeg.so
│ ├── libpixbufloader-pnm.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pnm.so
│ ├── libpixbufloader-qtif.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-qtif.so
│ ├── libpixbufloader-tga.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tga.so
│ ├── libpixbufloader-tiff.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tiff.so
│ ├── libpixbufloader-xbm.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xbm.so
│ ├── libpixbufloader-xpm.so -> /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so
│ ├── libpixman-1.so.0
│ ├── libpng15.so.15
│ ├── libprintbackend-cloudprint.so -> /usr/lib64/gtk-3.0/3.0.0/printbackends/libprintbackend-cloudprint.so
│ ├── libprintbackend-cups.so -> /usr/lib64/gtk-3.0/3.0.0/printbackends/libprintbackend-cups.so
│ ├── libprintbackend-file.so -> /usr/lib64/gtk-3.0/3.0.0/printbackends/libprintbackend-file.so
│ ├── libprintbackend-lpr.so -> /usr/lib64/gtk-3.0/3.0.0/printbackends/libprintbackend-lpr.so
│ ├── libselinux.so.1
│ ├── libwayland-client.so.0
│ ├── libwayland-cursor.so.0
│ ├── libwayland-egl.so.1
│ ├── libXau.so.6
│ ├── libxcb-render.so.0
│ ├── libxcb-shm.so.0
│ ├── libXcomposite.so.1
│ ├── libXcursor.so.1
│ ├── libXdamage.so.1
│ ├── libXext.so.6
│ ├── libXfixes.so.3
│ ├── libXinerama.so.1
│ ├── libXi.so.6
│ ├── libxkbcommon.so.0
│ ├── libXrandr.so.2
│ └── libXrender.so.1
├── lib64
│ ├── gdk-pixbuf-2.0
│ │ └── 2.10.0
│ │ ├── loaders
│ │ │ ├── libpixbufloader-ani.so
│ │ │ ├── libpixbufloader-bmp.so
│ │ │ ├── libpixbufloader-gif.so
│ │ │ ├── libpixbufloader-icns.so
│ │ │ ├── libpixbufloader-ico.so
│ │ │ ├── libpixbufloader-jasper.so
│ │ │ ├── libpixbufloader-jpeg.so
│ │ │ ├── libpixbufloader-pnm.so
│ │ │ ├── libpixbufloader-qtif.so
│ │ │ ├── libpixbufloader-tga.so
│ │ │ ├── libpixbufloader-tiff.so
│ │ │ ├── libpixbufloader-xbm.so
│ │ │ └── libpixbufloader-xpm.so
│ │ └── loaders.cache
│ ├── girepository-1.0
│ │ ├── Atk-1.0.typelib
│ │ ├── Atspi-2.0.typelib
│ │ ├── cairo-1.0.typelib
│ │ ├── Colord-1.0.typelib
│ │ ├── ColorHug-1.0.typelib
│ │ ├── DBus-1.0.typelib
│ │ ├── DBusGLib-1.0.typelib
│ │ ├── fontconfig-2.0.typelib
│ │ ├── freetype2-2.0.typelib
│ │ ├── GDesktopEnums-3.0.typelib
│ │ ├── Gdk-2.0.typelib
│ │ ├── Gdk-3.0.typelib
│ │ ├── GdkPixbuf-2.0.typelib
│ │ ├── GdkX11-2.0.typelib
│ │ ├── GdkX11-3.0.typelib
│ │ ├── Gio-2.0.typelib
│ │ ├── GIRepository-2.0.typelib
│ │ ├── GL-1.0.typelib
│ │ ├── GLib-2.0.typelib
│ │ ├── GModule-2.0.typelib
│ │ ├── GObject-2.0.typelib
│ │ ├── Gst-1.0.typelib
│ │ ├── GstBase-1.0.typelib
│ │ ├── GstCheck-1.0.typelib
│ │ ├── GstController-1.0.typelib
│ │ ├── GstNet-1.0.typelib
│ │ ├── Gtk-2.0.typelib
│ │ ├── Gtk-3.0.typelib
│ │ ├── GUsb-1.0.typelib
│ │ ├── Json-1.0.typelib
│ │ ├── libxml2-2.0.typelib
│ │ ├── PackageKitGlib-1.0.typelib
│ │ ├── Pango-1.0.typelib
│ │ ├── PangoCairo-1.0.typelib
│ │ ├── PangoFT2-1.0.typelib
│ │ ├── PangoXft-1.0.typelib
│ │ ├── Rest-0.7.typelib
│ │ ├── RestExtras-0.7.typelib
│ │ ├── Soup-2.4.typelib
│ │ ├── SoupGNOME-2.4.typelib
│ │ ├── win32-1.0.typelib
│ │ ├── xfixes-4.0.typelib
│ │ ├── xft-2.0.typelib
│ │ ├── xlib-2.0.typelib
│ │ └── xrandr-1.3.typelib
│ └── gtk-3.0
│ ├── 3.0.0
│ │ ├── immodules
│ │ ├── immodules.cache
│ │ ├── printbackends
│ │ │ ├── libprintbackend-cloudprint.so
│ │ │ ├── libprintbackend-cups.so
│ │ │ ├── libprintbackend-file.so
│ │ │ └── libprintbackend-lpr.so
│ │ └── theming-engines
│ ├── immodules
│ └── modules
│ ├── libcanberra-gtk3-module.so
│ ├── libcanberra-gtk-module.so -> libcanberra-gtk3-module.so
│ └── libpk-gtk-module.so
├── python
└── share
├── applications
│ └── com.example.helloworld.desktop
├── glib-2.0
│ └── schemas
│ ├── gschema.dtd
│ ├── gschemas.compiled
│ ├── org.gnome.desktop.a11y.applications.gschema.xml
│ ├── org.gnome.desktop.a11y.gschema.xml
│ ├── org.gnome.desktop.a11y.keyboard.gschema.xml
│ ├── org.gnome.desktop.a11y.magnifier.gschema.xml
│ ├── org.gnome.desktop.a11y.mouse.gschema.xml
│ ├── org.gnome.desktop.app-folders.gschema.xml
│ ├── org.gnome.desktop.background.gschema.xml
│ ├── org.gnome.desktop.calendar.gschema.xml
│ ├── org.gnome.desktop.datetime.gschema.xml
│ ├── org.gnome.desktop.default-applications.gschema.xml
│ ├── org.gnome.desktop.enums.xml
│ ├── org.gnome.desktop.input-sources.gschema.xml
│ ├── org.gnome.desktop.interface.gschema.xml
│ ├── org.gnome.desktop.lockdown.gschema.xml
│ ├── org.gnome.desktop.media-handling.gschema.xml
│ ├── org.gnome.desktop.notifications.gschema.xml
│ ├── org.gnome.desktop.peripherals.gschema.xml
│ ├── org.gnome.desktop.privacy.gschema.xml
│ ├── org.gnome.desktop.screensaver.gschema.xml
│ ├── org.gnome.desktop.search-providers.gschema.xml
│ ├── org.gnome.desktop.session.gschema.xml
│ ├── org.gnome.desktop.sound.gschema.xml
│ ├── org.gnome.desktop.thumbnail-cache.gschema.xml
│ ├── org.gnome.desktop.thumbnailers.gschema.xml
│ ├── org.gnome.desktop.wm.keybindings.gschema.xml
│ ├── org.gnome.desktop.wm.preferences.gschema.xml
│ ├── org.gnome.system.locale.gschema.xml
│ ├── org.gnome.system.location.gschema.xml
│ ├── org.gnome.system.proxy.gschema.xml
│ ├── org.gtk.Demo.gschema.xml
│ ├── org.gtk.exampleapp.gschema.xml
│ ├── org.gtk.Settings.ColorChooser.gschema.xml
│ ├── org.gtk.Settings.Debug.gschema.xml
│ ├── org.gtk.Settings.EmojiChooser.gschema.xml
│ └── org.gtk.Settings.FileChooser.gschema.xml
└── icons
└── hicolor
├── 128x128
│ └── apps
│ └── com.example.helloworld.png
├── 16x16
│ └── apps
│ └── com.example.helloworld.png
├── 256x256
│ └── apps
│ └── com.example.helloworld.png
├── 32x32
│ └── apps
│ └── com.example.helloworld.png
├── 512x512
│ └── apps
│ └── com.example.helloworld.png
├── 64x64
│ └── apps
│ └── com.example.helloworld.png
└── scalable
└── apps
Metadata
Metadata
Assignees
Labels
No labels