Building LO against x11-less GTK

  • kernel 6.14.6
  • gnome-shell 48.1 (Wayland)
  • mutter 48.2 (-Dxwayland=false -Dx11=false)
  • gtk3 3.24.49 (-Dx11-backend=false)
  • gtk4 4.18.5 (-Dx11-backend=false)
  • libreoffice 25.3.2

In a native Wayland environment, with GTK3/4 both built without libx11, LO compilation bails at:

[build CXX] vcl/unx/gtk3/a11y/atkregistry.cxx
In file included from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/inc/unx/gtk/gtkframe.hxx:51,
                 from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/unx/gtk3/a11y/atkfactory.cxx:20:
/build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/inc/unx/gtk/gtkdata.hxx:28:10: fatal error: gdk/gdkx.h: No such file or directory
   28 | #include <gdk/gdkx.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [/build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/gbuild/LinkTarget.mk:339: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CxxObject/vcl/unx/gtk3/a11y/atkfactory.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:301: build] Error 2
==> ERROR: A failure occurred in build().
    Aborting...


I poked around the configuration and tried to brute force disabling x11, but ran into other issues.

--- a/configure.ac
+++ b/configure.ac
@@ -977,7 +977,7 @@
 
 linux-gnu*|k*bsd*-gnu*|linux-musl*)
     using_freetype_fontconfig=yes
-    using_x11=yes
+    using_x11=no
     build_skia=yes
     test_gdb_index=yes
     test_split_debug=yes


Eventually, this combo of options got me though compilation, but failed at the install portion of build:

Running './configure --with-extra-buildid=25.2.3-3.1 --with-vendor=Arch Linux --enable-split-app-modules --with-parallelism=24 --with-external-tar=/build/libreoffice-fresh/src/ext_sources --disable-fetch-external --enable-release-build --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --mandir=/usr/share/man --with-lang= --with-help=html --disable-avahi --enable-dbus --enable-evolution2 --enable-gio --disable-gtk3-kde5 --disable-kf5 --disable-kf6 --disable-qt5 --disable-qt6 --enable-gtk3 --enable-gtk4 --enable-lto --enable-openssl --enable-odk --enable-python=system --enable-scripting-beanshell --enable-scripting-javascript --disable-dconf --disable-report-builder --enable-ext-wiki-publisher --enable-ext-nlpsolver --without-fonts --with-system-libxml --with-system-libcdr --with-system-mdds --without-myspell-dicts --with-system-libvisio --with-system-libcmis --with-system-libmspub --with-system-libexttextcat --with-system-orcus --with-system-liblangtag --with-system-libodfgen --with-system-libmwaw --with-system-libetonyek --with-system-libfreehand --without-system-firebird --with-system-zxing --with-system-libtommath --with-system-libatomic-ops --with-system-libebook --with-system-libabw --with-system-coinmp --with-system-dicts --with-external-dict-dir=/usr/share/hunspell --with-external-hyph-dir=/usr/share/hyphen --with-external-thes-dir=/usr/share/mythes --with-system-beanshell --with-system-cppunit --with-system-graphite --with-system-glm --with-system-libnumbertext --with-system-libwpg --with-system-libwps --with-system-redland --with-system-libzmf --with-system-gpgmepp --with-system-libstaroffice --with-jdk-home=/usr/lib/jvm/default --with-ant-home=/usr/share/ant --with-system-boost --with-system-icu --with-system-cairo --with-system-libs --with-system-mythes --with-system-headers --without-system-hsqldb --without-junit --with-system-clucene --without-system-box2d --without-system-dragonbox --without-system-libfixmath --without-system-frozen --without-system-zxcvbn --without-system-java-websocket --with-system-rhino --with-gdrive-client-id=413772536636.apps.googleusercontent.com --with-gdrive-client-secret=0ZChLK6AxeA3Isu96MkwqDR4 --disable-dependency-tracking --srcdir=/build/libreoffice-fresh/src/libreoffice-25.2.3.2 --enable-option-checking=fatal'

: Setting Root Module: gid_Module_Root
: Using spellchecker file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/setup_native/source/packinfo/spellchecker_selection.txt 
: Collected spellchecker languages for spellchecker: en,es,fr 
: 
: *****************************************************************
: ERROR: The following files could not be found:
:   desktop_soffice_sh.filelist
:  at /build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/bin/modules/installer/scriptitems.pm line 1191.
: *****************************************************************

Tue May 13 13:59:59 2025 (00:01 min.)
Failed to install: No such file or directory at /build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/bin/ooinstall line 94.
make: *** [Makefile:359: install] Error 2
==> ERROR: A failure occurred in build().
    Aborting...

Tail of the fail:

Click here to expand
: SUCCESS: INSTDIR Source for services.rdb: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/instdir/./program/services/services.rdb
: 
: ERROR: Removing file desktop_soffice_sh.filelist from file list.
: 
: 
: Removing directory /tmp/ooopackaging5EoVYC/i_1015491747144798
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: Command line arguments:
: ######################################################
: -f
: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/instsetoo_native/util/openoffice.lst
: -l
: en-US
: -p
: LibreOffice
: -u
: /tmp
: -buildid
: 2
: -destdir
: /build/libreoffice-fresh/src/fakeinstall
: -simple
: /build/libreoffice-fresh/src/fakeinstall/usr/lib/libreoffice
: Separator: /
: 
: ########################################################
: Product list file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/instsetoo_native/util/openoffice.lst
: Taking setup script from workdir
: Unpackpath: /tmp
: PLATFORMID: linux_x86_64
: OS: LINUX
: CPUNAME: X86_64
: COM: GCC
: Product: LibreOffice
: BuildID: 2
: Build: 2520
: Product version
: Installpath: /usr/lib/libreoffice
: Package format: 
: Not calling epm
: No file stripping
: Unzip ARCHIVE files
: Languages:
: 	en-US
: ########################################################
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: zip list file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/instsetoo_native/util/openoffice.lst
: ######################################################
: Value of $installer::globals::addsystemintegration: 1
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: Reading all directories: Start
: ######################################################
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/InstallScriptTarget contains 2 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CustomTarget/readlicense_oo/readme contains 1 files (including subdirs)
: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CustomTarget/sysui/{pkgtype} does not exist. (Can be removed from include path list?)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CustomTarget/setup_native contains 3 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/PackageSet contains 39 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/GeneratedPackage contains 8 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/Package contains 388 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/ExtensionPackage contains 1 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CustomTarget/helpcontent2/help3xsl/filelists contains 9 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/Extension contains 87 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CustomTarget/readlicense_oo/license contains 2 files (including subdirs)
: Directory /build/libreoffice-fresh/src/libreoffice-25.2.3.2/setup_native/source/packinfo contains 23 files (including subdirs)
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: Reading all directories: End
: ######################################################
: 
: Including inc file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/cli_ure/version/version.txt 
: Setting of variable: CLI_URETYPES_NEW_VERSION = 1.0.9.0
: Setting of variable: CLI_URETYPES_OLD_VERSION = 1.0.0.0-1.0.8.0
: Setting of variable: CLI_URETYPES_POLICY_VERSION = 9.0.0.0
: Setting of variable: CLI_URETYPES_POLICY_ASSEMBLY = policy.1.0.cli_uretypes
: Setting of variable: CLI_BASETYPES_NEW_VERSION = 1.0.20.0
: Setting of variable: CLI_BASETYPES_OLD_VERSION = 1.0.0.0-1.0.19.0
: Setting of variable: CLI_BASETYPES_POLICY_VERSION = 20.0.0.0
: Setting of variable: CLI_BASETYPES_POLICY_ASSEMBLY = policy.1.0.cli_basetypes
: Setting of variable: CLI_URE_NEW_VERSION = 1.0.23.0
: Setting of variable: CLI_URE_OLD_VERSION = 1.0.0.0-1.0.22.0
: Setting of variable: CLI_URE_POLICY_VERSION = 23.0.0.0
: Setting of variable: CLI_URE_POLICY_ASSEMBLY = policy.1.0.cli_ure
: Setting of variable: CLI_CPPUHELPER_NEW_VERSION = 1.0.23.0
: Setting of variable: CLI_CPPUHELPER_OLD_VERSION = 1.0.0.0-1.0.22.0
: Setting of variable: CLI_CPPUHELPER_POLICY_VERSION = 23.0.0.0
: Setting of variable: CLI_CPPUHELPER_POLICY_ASSEMBLY = policy.1.0.cli_cppuhelper
: Including inc file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/unoil/climaker/version.txt 
: Setting of variable: CLI_OOOTYPES_NEW_VERSION = 1.0.9.0
: Setting of variable: CLI_OOOTYPES_OLD_VERSION = 1.0.0.0-1.0.8.0
: Setting of variable: CLI_OOOTYPES_POLICY_VERSION = 9.0.0.0
: Setting of variable: CLI_OOOTYPES_POLICY_ASSEMBLY = policy.1.0.cli_oootypes
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: setup script file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/InstallScriptTarget/setup_osl.ins
: ######################################################
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: Replacing variables in setup script (start)
: ######################################################
: 
: Tue May 13 13:59:58 2025 (00:00 min.)
: ######################################################
: Replacing variables in setup script (end)
: ######################################################
: 
: Logging variable settings:
: WITHOUTDOTUNIXPACKAGENAME=libreoffice
: REGISTRYLAYERNAME=Layers
: CLI_URE_POLICY_VERSION=23.0.0.0
: ADDSYSTEMINTEGRATION=1
: CLI_URETYPES_POLICY_VERSION=9.0.0.0
: UPDATE_DATABASE=1
: SXWFORMATNAME=OpenOffice.org
: UPDATE_DATABASE_LISTNAME=finals_instsetoo.txt
: CLI_CPPUHELPER_POLICY_VERSION=23.0.0.0
: MANUFACTURER=Arch Linux
: BASISPACKAGEPREFIX=libobasis
: PACKAGEVERSION=25.2.3.2
: UNIXPRODUCTNAME=libreoffice
: PROGRESSBARCOLOR=0,0,0
: PACKAGEREVISION=2
: PROGRESSTEXTCOLOR=0,0,0
: PROGRESSTEXTBASELINE=170
: REFERENCEOOOMAJORMINOR=4.1
: HIDELICENSEDIALOG=1
: LCONEWORDPRODUCTNAME=libreoffice
: DEFAULTDESTPATH=/opt
: PRODUCTVERSION=25.2
: PROGRESSSIZEHIGH=650,12
: PATCHCODEFILE=ooo_patchcodes.txt
: LIBO_VERSION_MAJOR=25
: PROGRESSFRAMECOLOR=102,102,102
: MASKEDPRODUCTNAME=LibreOffice
: SOLARISBRANDPACKAGENAME=libreoffice
: UREPACKAGEPREFIX=libreoffice
: WINDOWSBASISROOTNAME=LibreOffice
: SYSTEMINTUNIXPACKAGENAME=libreoffice
: PCPFILENAME=libreoffice.pcp
: CLI_BASETYPES_NEW_VERSION=1.0.20.0
: SERVICEPACK=1
: CLI_OOOTYPES_POLICY_VERSION=9.0.0.0
: WINDOWSSDKVERSION=
: USERDIRPRODUCTVERSION=4
: UNIXBASISROOTNAME=libreoffice25.2
: CLI_URE_OLD_VERSION=1.0.0.0-1.0.22.0
: CLI_URETYPES_POLICY_ASSEMBLY=policy.1.0.cli_uretypes
: SPELLCHECKERFILE=spellchecker_selection.txt
: SXWFORMATVERSION=1.1
: ADD_INCLUDE_FILES=cli_ure/version/version.txt,unoil/climaker/version.txt
: BRANDPACKAGEVERSION=25.2
: NATIVEPROGRESS=false
: UNIXPACKAGENAME=libreoffice
: PRODUCTMAJOR=520
: WINDOWSPATCHLEVEL=8
: ROOTMODULEGID=gid_Module_Root
: WITHOUTDOTPRODUCTVERSION=252
: PRODUCTEXTENSION=.3.2
: PRODUCTNAME=LibreOffice
: UREPACKAGEVERSION=25.2.3.2
: BASEPRODUCTVERSION=25.2
: CLI_URE_NEW_VERSION=1.0.23.0
: CLI_CPPUHELPER_OLD_VERSION=1.0.0.0-1.0.22.0
: LCPRODUCTNAME=libreoffice
: GLOBALPATCHFILEGID=gid_File_Txt_Patchfiles
: PRODUCTBUILDID=2
: SOLSUREPACKAGEPREFIX=libreoffice
: CLI_URE_POLICY_ASSEMBLY=policy.1.0.cli_ure
: UPDATEURL=https://update.libreoffice.org/check.php
: CHANGETARGETDIR=1
: PRODUCTADDON=
: PROGRESSPOSITIONHIGH=30,200
: CLI_OOOTYPES_POLICY_ASSEMBLY=policy.1.0.cli_oootypes
: UPDATEFOR=${UPDATEFOR}
: STYLES=(KEEP_OLD_VERSION)
: CLI_OOOTYPES_OLD_VERSION=1.0.0.0-1.0.8.0
: CLI_OOOTYPES_NEW_VERSION=1.0.9.0
: PATCHLEVEL=
: ONEWORDPRODUCTNAME=LibreOffice
: BUNDLEIDENTIFIER=
: CLI_BASETYPES_OLD_VERSION=1.0.0.0-1.0.19.0
: PROGRESSPOSITION=30,145
: CLI_CPPUHELPER_POLICY_ASSEMBLY=policy.1.0.cli_cppuhelper
: CLI_CPPUHELPER_NEW_VERSION=1.0.23.0
: PACKAGEPREFIX=
: LCPRODUCTEXTENSION=.3.2
: CLI_BASETYPES_POLICY_VERSION=20.0.0.0
: CLI_URETYPES_OLD_VERSION=1.0.0.0-1.0.8.0
: CLI_URETYPES_NEW_VERSION=1.0.9.0
: WITHOUTDOTUNIXPRODUCTNAME=libreoffice
: CLI_BASETYPES_POLICY_ASSEMBLY=policy.1.0.cli_basetypes
: LICENSENAME=LGPL
: PROGRESSSIZE=385,8
: POSTVERSIONEXTENSION=
: 64BITPRODUCT=
: CRASHDUMPENABLE=true
: PACKAGEMAP=package_names.txt,package_names_ext.txt
: URELAYERVERSION=1
: 
: 
: 
: Setting Root Module: gid_Module_Root
: Using spellchecker file: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/setup_native/source/packinfo/spellchecker_selection.txt 
: Collected spellchecker languages for spellchecker: en,es,fr 
: 
: *****************************************************************
: ERROR: The following files could not be found:
:   desktop_soffice_sh.filelist
:  at /build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/bin/modules/installer/scriptitems.pm line 1191.
: *****************************************************************

Tue May 13 13:59:59 2025 (00:01 min.)
Failed to install: No such file or directory at /build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/bin/ooinstall line 94.
make: *** [Makefile:359: install] Error 2
==> ERROR: A failure occurred in build().
    Aborting...


Happy to provide a full build log.

I likely just need the right combination of options, but I’m unfamiliar with this build.

And the failure when building only against x11-less GTK4:

        --disable-gtk3-kde5 \
        --disable-kf5 \
        --disable-kf6 \
        --disable-qt5 \
        --disable-qt6 \
        --disable-gtk3 \
        --enable-gtk4 \
[build CXX] vcl/unx/gtk4/a11y.cxx
[build CXX] vcl/unx/gtk4/convert3to4.cxx
In file included from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/unx/gtk4/fpicker/../../gtk3/fpicker/SalGtkFilePicker.cxx:38,
                 from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/unx/gtk4/fpicker/SalGtkFilePicker.cxx:10:
/build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/inc/unx/gtk/gtkdata.hxx:26:10: fatal error: gdk/x11/gdkx.h: No such file or directory
   26 | #include <gdk/x11/gdkx.h>
      |          ^~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [/build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/gbuild/LinkTarget.mk:339: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CxxObject/vcl/unx/gtk4/fpicker/SalGtkFilePicker.o] Error 1
make[1]: *** Waiting for unfinished jobs....
In file included from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/unx/gtk4/fpicker/../../gtk3/fpicker/SalGtkPicker.cxx:32,
                 from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/unx/gtk4/fpicker/SalGtkPicker.cxx:10:
/build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/inc/unx/gtk/gtkdata.hxx:26:10: fatal error: gdk/x11/gdkx.h: No such file or directory
   26 | #include <gdk/x11/gdkx.h>
      |          ^~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [/build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/gbuild/LinkTarget.mk:336: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CxxObject/vcl/unx/gtk4/fpicker/SalGtkPicker.o] Error 1
In file included from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/inc/unx/gtk/gtkframe.hxx:51,
                 from /build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/unx/gtk4/a11y.cxx:18:
/build/libreoffice-fresh/src/libreoffice-25.2.3.2/vcl/inc/unx/gtk/gtkdata.hxx:26:10: fatal error: gdk/x11/gdkx.h: No such file or directory
   26 | #include <gdk/x11/gdkx.h>
      |          ^~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [/build/libreoffice-fresh/src/libreoffice-25.2.3.2/solenv/gbuild/LinkTarget.mk:336: /build/libreoffice-fresh/src/libreoffice-25.2.3.2/workdir/CxxObject/vcl/unx/gtk4/a11y.o] Error 1
make: *** [Makefile:301: build] Error 2
==> ERROR: A failure occurred in build().
    Aborting...


Also, it seems --without-x && enable-gtk3 are mutually exclusive?

But, that’s what I’m trying to achieve here. Any guidance would be appreciated.

in this highly compartimentalized LO-verse, your question rather belongs to dev@ → Development - The Document Foundation Wiki

If you need help getting started, contact us:

Okay, thanks. I didn’t want to annoy any devs with what might be a simple compilation mistake.

If gtk-11 usage is limited to this quick grep result…

inc/unx/saldisp.hxx:    // this is an equivalent of gdk_x11_get_server_time()
inc/unx/gtk/gtkframe.hxx:#include <gtk/gtkx.h>
inc/unx/gtk/gtkinst.hxx:class SalGtkXWindow final : public weld::TransportAsXWindow
inc/unx/gtk/gtkinst.hxx:    SalGtkXWindow(weld::Window* pWeldWidget, GtkWidget* pWidget)
inc/unx/gtk/gtkdata.hxx:#include <gdk/x11/gdkx.h>
inc/unx/gtk/gtkdata.hxx:#include <gdk/gdkx.h>
inc/unx/gtk/gtkbackend.hxx:#include <gdk/x11/gdkx.h>
inc/unx/gtk/gtkbackend.hxx:#include <gdk/gdkx.h>
unx/gtk3/gtkdata.cxx:            MAP_BUILTIN( PointerStyle::Text, GDK_XTERM, "text" );
unx/gtk3/gtkdata.cxx:        gdk_x11_display_error_trap_push(pGdkDisp);
unx/gtk3/gtkdata.cxx:            gdk_x11_display_error_trap_pop_ignored(pGdkDisp); // faster
unx/gtk3/gtkdata.cxx:        return gdk_x11_display_error_trap_pop(pGdkDisp) != 0;
unx/gtk3/gtksys.cxx:    GdkX11Screen *pScreen = gdk_x11_display_get_screen(mpDisplay);
unx/gtk3/gtksys.cxx:    return SalX11Screen(gdk_x11_screen_get_screen_number(pScreen));
unx/gtk3/gtksys.cxx:        GdkMonitor* pPrimary = gdk_x11_display_get_primary_monitor(mpDisplay);
unx/gtk3/gtkframe.cxx:#   define gdk_x11_surface_get_xid gdk_x11_window_get_xid
unx/gtk3/gtkframe.cxx:        gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APPLICATION_ID", "org.libreoffice" );
unx/gtk3/gtkframe.cxx:        gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_MENUBAR_OBJECT_PATH", aDBusMenubarPath );
unx/gtk3/gtkframe.cxx:        gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_WINDOW_OBJECT_PATH", aDBusWindowPath );
unx/gtk3/gtkframe.cxx:        gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APPLICATION_OBJECT_PATH", "/org/libreoffice" );
unx/gtk3/gtkframe.cxx:        gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_UNIQUE_BUS_NAME", g_dbus_connection_get_unique_name( pSessionBus ) );
unx/gtk3/gtkframe.cxx:        m_aSystemData.pDisplay = gdk_x11_display_get_xdisplay(pDisplay);
unx/gtk3/gtkframe.cxx:        m_aSystemData.pVisual = gdk_x11_visual_get_xvisual(pVisual);
unx/gtk3/gtkframe.cxx:    m_pForeignTopLevel = gdk_x11_window_foreign_new_for_display( getGdkDisplay(), m_aForeignTopLevelWindow );
unx/gtk3/gtkframe.cxx:    m_pForeignParent = gdk_x11_window_foreign_new_for_display( getGdkDisplay(), m_aForeignParentWindow );
unx/gtk3/gtkframe.cxx:    Display *display = gdk_x11_display_get_xdisplay(getGdkDisplay());
unx/gtk3/gtkframe.cxx:        aDisplay = gdk_x11_display_get_xdisplay(getGdkDisplay());
unx/gtk3/gtkframe.cxx:            nTimestamp = gdk_x11_display_get_user_time(pDisplay);
unx/gtk3/gtkframe.cxx:        return gdk_x11_surface_get_xid(pSurface);
unx/gtk3/fpicker/SalGtkFilePicker.cxx:        if (SalGtkXWindow* pGtkXWindow = dynamic_cast<SalGtkXWindow*>(xParentWindow.get()))
unx/gtk3/fpicker/SalGtkFilePicker.cxx:            pParentWidget = pGtkXWindow->getGtkWidget();
unx/gtk3/gtkobject.cxx:        m_aSystemData.pDisplay = gdk_x11_display_get_xdisplay(pDisplay);
unx/gtk3/gtkobject.cxx:        m_aSystemData.pVisual = gdk_x11_visual_get_xvisual(pVisual);
unx/gtk3/gtkinst.cxx:            aPollFD.fd = ConnectionNumber(gdk_x11_display_get_xdisplay(pDisplay));
unx/gtk3/gtkinst.cxx:    static auto get_type = reinterpret_cast<GType (*) (void)>(dlsym(nullptr, "gdk_x11_display_get_type"));
unx/gtk3/gtkinst.cxx:    rtl::Reference<SalGtkXWindow> m_xWindow; //uno api
unx/gtk3/gtkinst.cxx:            m_xWindow.set(new SalGtkXWindow(this, m_pWidget));
unx/gtk3/gtkinst.cxx:    if (SalGtkXWindow* pGtkXWindow = dynamic_cast<SalGtkXWindow*>(rWindow.get()))
unx/gtk3/gtkinst.cxx:        return pGtkXWindow->getFrameWeld();


… I can probably code around it.