diff options
| author | root <root@alpha.trunkmasters.com> | 2026-09-12 03:04:40 -0500 |
|---|---|---|
| committer | root <root@alpha.trunkmasters.com> | 2026-09-12 03:04:40 -0500 |
| commit | 9f2ba2858a177b1c2335b5b46428ee7cec08c288 (patch) | |
| tree | 5d011733f0f36bb21431d32301b97936074fdbc6 | |
| parent | ae5ea37cbb0424d6e3e6c1e1d282946e201225e6 (diff) | |
| download | srcux-9f2ba2858a177b1c2335b5b46428ee7cec08c288.tar.gz srcux-9f2ba2858a177b1c2335b5b46428ee7cec08c288.tar.xz srcux-9f2ba2858a177b1c2335b5b46428ee7cec08c288.zip | |
Adding metadata
264 files changed, 38098 insertions, 2294 deletions
diff --git a/app-admin/chipass/Manifest b/app-admin/chipass/Manifest new file mode 100644 index 000000000000..033e887866b5 --- /dev/null +++ b/app-admin/chipass/Manifest @@ -0,0 +1 @@ +DIST ChiPass-2026.09.0-source.tar.bz2 11162444 BLAKE2B ecb62cb1911a3be2d422f134870576e36201099b229d140a444420cc2efc07a3d8ab0b8922879f1449c1afc1d05b4cd44a38760046455d8f2afc0cee93fe9a9a SHA512 183e3073e5c28f53b9fe3c05f597845d11e05d98ab9c27f0dc72a1a2c6d3554ee247d9fc7493485b0df6477b963e7e083c07fe01809dae64f6a1c982ea7036c2 diff --git a/app-admin/chipass/chipass-2026.09.0.ebuild b/app-admin/chipass/chipass-2026.09.0.ebuild new file mode 100644 index 000000000000..703736139179 --- /dev/null +++ b/app-admin/chipass/chipass-2026.09.0.ebuild @@ -0,0 +1,118 @@ +# Copyright 2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake virtualx xdg-utils + +MY_P=ChiPass-${PV} +DESCRIPTION="A slop-free, Qt6 secure password manager" +HOMEPAGE="https://codeberg.org/ChiPass/ChiPass" +SRC_URI="https://codeberg.org/ChiPass/ChiPass/releases/download/v${PV}/${MY_P}-source.tar.bz2" +S=${WORKDIR}/${MY_P} + +LICENSE="|| ( GPL-2 GPL-3 )" +# icons, see COPYING +LICENSE+=" LGPL-2 MIT CC0-1.0 Apache-2.0 GPL-2+" +# QTIOCompressor +LICENSE+=" || ( LGPL-2.1 GPL-3 )" +# zxcvb (TODO: unbundle) +LICENSE+=" MIT" +# KMessageWidget +LICENSE+=" LGPL-2.1" +# ykcore +LICENSE+=" BSD-2" + +SLOT="0" +KEYWORDS="~amd64" +IUSE="X test yubikey" +RESTRICT="!test? ( test )" + +DEPEND=" + app-crypt/argon2:= + dev-libs/botan:3= + dev-libs/zxcvbn-c + dev-qt/qt5compat:6 + dev-qt/qtbase:6[concurrent,dbus,gui,network,opengl] + dev-qt/qtsvg:6 + media-gfx/qrencode:= + sys-libs/readline:= + virtual/minizip:= + virtual/zlib:= + yubikey? ( + sys-apps/pcsc-lite + virtual/libusb:1 + ) + X? ( + x11-libs/libX11 + x11-libs/libXtst + ) +" +RDEPEND="${DEPEND}" +# asciidoctor is needed to build manpages +BDEPEND=" + dev-libs/appstream + dev-qt/qttools:6[linguist] + dev-ruby/asciidoctor + virtual/pkgconfig + test? ( + x11-misc/xclip + ) +" + +src_unpack() { + # https://codeberg.org/ChiPass/ChiPass/issues/120 + mkdir "${S}" || die + cd "${S}" || die + default +} + +src_prepare() { + cmake_src_prepare + + # unbundle zxcvbn-c + # it goes via add_library(zxcvbn), so CMake will just pass -lzxcvbn + # if it's not defined + > vendor/zxcvbn/CMakeLists.txt || die +} + +src_configure() { + local mycmakeargs=( + -DCHIPASS_WITH_AUTOTYPE=$(usex X) + -DCHIPASS_WITH_YUBIKEY=$(usex yubikey) + # Wayland support has no dependencies + -DCHIPASS_DESKTOP_TYPES=$(usev X "X11;")Wayland + -DCHIPASS_WITH_UPDATE_CHECK=OFF + # manpages + a few docs + -DCHIPASS_WITH_MANUAL=ON + -DCHIPASS_WITH_TESTS=$(usex test) + # GUI tests are very flaky, also on a real X11 session + -DCHIPASS_WITH_GUI_TESTS=OFF + ) + + cmake_src_configure +} + +src_test() { + # we need xvfb for clipboard + virtx cmake_src_test +} + +src_install() { + cmake_src_install + + # https://codeberg.org/ChiPass/ChiPass/issues/122 + mv "${ED}"/usr/share/{ChiPass/,}/man || die +} + +pkg_postinst() { + xdg_desktop_database_update + xdg_icon_cache_update + xdg_mimeinfo_database_update +} + +pkg_postrm() { + xdg_desktop_database_update + xdg_icon_cache_update + xdg_mimeinfo_database_update +} diff --git a/app-admin/chipass/metadata.xml b/app-admin/chipass/metadata.xml new file mode 100644 index 000000000000..3cbecbe5b6c6 --- /dev/null +++ b/app-admin/chipass/metadata.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>mgorny@gentoo.org</email> + <name>Michał Górny</name> + </maintainer> + <use> + <flag name="yubikey"> + YubiKey HMAC-SHA1 challenge-response database protection + </flag> + </use> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/app-arch/createrepo_c/Manifest b/app-arch/createrepo_c/Manifest index 32f312cfc206..5eb2ea0cb0bf 100644 --- a/app-arch/createrepo_c/Manifest +++ b/app-arch/createrepo_c/Manifest @@ -5,3 +5,4 @@ DIST createrepo_c-1.2.1-r3-docs-target.patch 1645 BLAKE2B 8915426f5e47143b387b48 DIST createrepo_c-1.2.1.tar.gz 639122 BLAKE2B 6705fd56f72934eef88b31fae725085c91b6b14a601d0f0908ed9307d72eabf17fd2258f13eeadeb7234b31d08a61eab2fc75c4b75bf8ea75ee69442715277bc SHA512 3acd54e5848ad3995d8b140b9d338fb8588c46d163e029b7203e49b3ff1a9984b55d403c3a5c590be23ebb5c5c74de369883eb51bba6fb51e8b247f9f10ab383 DIST createrepo_c-1.2.2.tar.gz 638827 BLAKE2B 011e342bd7af28bca6a6b4546dbc240feed75c8e8c4f076dcc83f6e98e514aaf88c23e224c92702879e4144ccf944c0d86f4e01ba54624e9624cd7159b18d748 SHA512 c95a376ccd611a3e041ad1c6fd70af0d7c17cc3db7a9926706f0ff9aeacf7f32a80ba18f8a98be4e2c2aea61d572a4b5ba7b0761f828b2faad0ea8f96e641320 DIST createrepo_c-1.2.3.tar.gz 639696 BLAKE2B 0d7b6615b7ca8123fe2687874b216085263f8a359b8abc86d5f3fda01b0d62fd4d759dfec4fdee20737aec24d89cc8b4f550e6106c8b377c250686e133206f78 SHA512 41eaa07356020f3c8624d785321cc0cb5d8a62ae857011cdd9dfc250ad6c8c77abcec292904044ad3f937efa8fb8c37d0065034baeeed3231728e3ab2620cbf4 +DIST createrepo_c-1.2.4.tar.gz 639165 BLAKE2B 7268cd33ad0e3f1d47326ad0c489b381ab9d4aeb41986a0300a9f15ddfdc5b9078bab98b9c74565582d2f93207863f74b5eeec8a914d70cfe489dd312c8a5d26 SHA512 b2967df9527b582e2f3f3eac9f389287f7d52dd85fb15e263b543a9528fc055b2388ef8bb9067697025fea789fccb3e805dab2e5fa43e681886fe7f5e6bef10c diff --git a/app-arch/createrepo_c/createrepo_c-1.2.4.ebuild b/app-arch/createrepo_c/createrepo_c-1.2.4.ebuild new file mode 100644 index 000000000000..c41f6d18d826 --- /dev/null +++ b/app-arch/createrepo_c/createrepo_c-1.2.4.ebuild @@ -0,0 +1,77 @@ +# Copyright 2020-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="C implementation of createrepo" +HOMEPAGE="https://github.com/rpm-software-management/createrepo_c" +if [[ ${PV} = 9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/rpm-software-management/createrepo_c.git" +else + SRC_URI="https://github.com/rpm-software-management/createrepo_c/archive/${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~x86" +fi + +LICENSE="GPL-2" +SLOT="0" + +IUSE="doc legacy test zstd" +RESTRICT="!test? ( test )" + +BDEPEND="doc? ( + app-text/doxygen +)" + +DEPEND=" + app-arch/bzip2:= + app-arch/drpm + app-arch/rpm + app-arch/xz-utils + app-arch/zchunk + app-arch/zstd:= + >=dev-db/sqlite-3.6.18:3 + dev-libs/glib:2 + dev-libs/libxml2:= + dev-libs/openssl:= + net-misc/curl + sys-apps/file + sys-libs/libmodulemd + virtual/zlib:= +" + +RDEPEND="${DEPEND}" + +src_configure() { + local mycmakeargs=( + -DENABLE_DRPM=ON + # As best I can tell, this enables distribution as a wheel. No need for this on gentoo! + -DENABLE_PYTHON=OFF + # Upstream enables some 'Legacy' stuff by default, let's put that behind a USE flag + -DENABLE_LEGACY_WEAKDEPS=$(usex legacy ON OFF) + -DWITH_LEGACY_HASHES=$(usex legacy ON OFF) + -DWITH_LIBMODULEMD=ON + -DWITH_ZCHUNK=ON + -DBUILD_DOC_C=$(usex doc ON OFF) + ) + + cmake_src_configure +} + +src_compile() { + cmake_src_compile + # Tests have a magic target! + use test && cmake_src_compile tests + use doc && cmake_src_compile doc-c +} + +src_test() { + "${S}"_build/tests/run_tests.sh || die "Failed to run C library tests" +} + +src_install() { + cmake_src_install + use doc && dodoc -r "${BUILD_DIR}/doc/html" +} diff --git a/app-crypt/p11-kit/p11-kit-0.26.4.ebuild b/app-crypt/p11-kit/p11-kit-0.26.4.ebuild index 33b992d5d05f..286187d302d8 100644 --- a/app-crypt/p11-kit/p11-kit-0.26.4.ebuild +++ b/app-crypt/p11-kit/p11-kit-0.26.4.ebuild @@ -16,7 +16,7 @@ SRC_URI=" LICENSE="MIT" SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris" +KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos ~x64-solaris" IUSE="+libffi gtk-doc nls systemd test" RESTRICT="!test? ( test )" diff --git a/app-crypt/ubuntu-keyring/Manifest b/app-crypt/ubuntu-keyring/Manifest index cacaac69b879..5cbdf6ca023c 100644 --- a/app-crypt/ubuntu-keyring/Manifest +++ b/app-crypt/ubuntu-keyring/Manifest @@ -1 +1,2 @@ DIST ubuntu-keyring_2023.11.28.1.orig.tar.xz 20236 BLAKE2B b6f925ef76e4aca2ae3461b0b2c04162556651557b88e01f925fa15745f9735d959a4ce6739b2591c408153f3ff5d4d09f3d6138c935502bff3c6ec8e8f14f04 SHA512 b17824a91d6e25c5658eae8d9ae509a4158b406768d5d4a8e117a230226ab7cd4327cf7e5b9bbb7baae7c66f3807d27926de85a1ea5c11a82684a890aeb8fd18 +DIST ubuntu-keyring_2026.08.18.tar.xz 22700 BLAKE2B 642fc7ee39af6b9e8d898bce630ecf1fbe590277aca7c4773b0bcb7900ca43f3b33d237663f33d48f944f4051a5951ac8edb36f53d9021fc2ddcb7496aada126 SHA512 46c0050ff9bcea1fc11c538242b1c6ea197d1bb68ad9a6a084d1fb69ef73bea6059a34a4ce1ea66ee11340dad03514e31a77375c3a7bb1d09b8df4036c3690f9 diff --git a/app-crypt/ubuntu-keyring/ubuntu-keyring-2026.08.18.ebuild b/app-crypt/ubuntu-keyring/ubuntu-keyring-2026.08.18.ebuild new file mode 100644 index 000000000000..4a8010e2c085 --- /dev/null +++ b/app-crypt/ubuntu-keyring/ubuntu-keyring-2026.08.18.ebuild @@ -0,0 +1,20 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="GnuPG archive keys of the Ubuntu archive" +HOMEPAGE="https://packages.ubuntu.com/stonking/ubuntu-keyring" +SRC_URI="mirror://ubuntu/pool/main/u/${PN}/${PN}_${PV}.tar.xz" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~loong ~ppc64 ~x86" + +DOCS=( changelog README ) + +src_install() { + default + insinto /usr/share/keyrings/ + doins keyrings/*.gpg +} diff --git a/app-emulation/wine-proton/wine-proton-11.0.2.ebuild b/app-emulation/wine-proton/wine-proton-11.0.2.ebuild index 99df9a781ac2..436217f1ea14 100644 --- a/app-emulation/wine-proton/wine-proton-11.0.2.ebuild +++ b/app-emulation/wine-proton/wine-proton-11.0.2.ebuild @@ -18,7 +18,7 @@ if [[ ${PV} == 9999 ]]; then else SRC_URI="https://github.com/ValveSoftware/wine/archive/refs/tags/proton-wine-${WINE_PV}.tar.gz" S=${WORKDIR}/${PN}-wine-${WINE_PV} - KEYWORDS="-* ~amd64 ~x86" + KEYWORDS="-* amd64 ~x86" fi DESCRIPTION="Valve Software's fork of Wine" diff --git a/app-i18n/fcitx-chewing/Manifest b/app-i18n/fcitx-chewing/Manifest index d99b2eff39c9..f0800388adb5 100644 --- a/app-i18n/fcitx-chewing/Manifest +++ b/app-i18n/fcitx-chewing/Manifest @@ -1 +1,2 @@ DIST fcitx-chewing-5.1.12.tar.zst 36871 BLAKE2B d610bdcb50e0603d7fcaf30b5bc1cd5c181c09870551a03ca5810ae884284cb05c9cd5921740caa1aa0020c312407f37ebe1572a18710c270341569b3ac26069 SHA512 49f10be63a9d3ee73ce35f7f1c2c815282e827f85b60a5ca54f98253a36a45796765b794304364f8f9ed33b7dcf4c59d5163d7dd0e1e209209477433d30a5526 +DIST fcitx-chewing-5.1.13.tar.zst 37606 BLAKE2B fa0bc677b9293d1be0f3253fcf5bf87de36d979098916e3afc01b74127a8086db8c4c99a116a054715159dfe90b23528ef0e35bb485f5fbb368ab65d4c2fd225 SHA512 3d073d8a4c199b7bf0460182952a64e770061ab8aea3db0533d73352c870c9d8e1237d1713ac3e5c5b9e32965c45184f33cba29f37c42e5999b2df02563bd5d0 diff --git a/app-i18n/fcitx-chewing/fcitx-chewing-5.1.13.ebuild b/app-i18n/fcitx-chewing/fcitx-chewing-5.1.13.ebuild new file mode 100644 index 000000000000..f7812ee047db --- /dev/null +++ b/app-i18n/fcitx-chewing/fcitx-chewing-5.1.13.ebuild @@ -0,0 +1,36 @@ +# Copyright 2024-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-chewing" + +inherit cmake unpacker xdg + +DESCRIPTION="Chewing Wrapper for Fcitx" +HOMEPAGE="https://github.com/fcitx/fcitx5-chewing" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" + +LICENSE="LGPL-2.1+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" +IUSE="test" +RESTRICT="!test? ( test )" + +RDEPEND=" + !app-i18n/fcitx-chewing:4 + >=app-i18n/fcitx-5.1.13:5 + >=app-i18n/libchewing-0.5.0 +" +DEPEND="${RDEPEND}" +BDEPEND="virtual/pkgconfig" + +src_configure() { + local mycmakeargs=( + -DENABLE_TEST=$(usex test) + ) + + cmake_src_configure +} diff --git a/app-i18n/fcitx-chinese-addons/Manifest b/app-i18n/fcitx-chinese-addons/Manifest index 37811a8ba9ce..be5eb69e1b2d 100644 --- a/app-i18n/fcitx-chinese-addons/Manifest +++ b/app-i18n/fcitx-chinese-addons/Manifest @@ -1,2 +1,3 @@ DIST fcitx5-chinese-addons-5.1.12_dict.tar.zst 1023851 BLAKE2B 3c3ab3ff9f569c7e746fa9b7cc0d00e50db932848d0ffe8498a7cda3e83ed2bb379bb5892f75354b4d24d03d35bc45d70009ce1dcbe8bb282c8fb28717e05dc6 SHA512 15551ad121acfe1568fc034739b58ec05a5126ffff84b1cc91064174b7a8d6d5990c0ad10478032d487f46d91c2c7886d6df0e6a2441f90bf868b97ef12c6680 DIST fcitx5-chinese-addons-5.1.13_dict.tar.zst 1025419 BLAKE2B 98ae9d3adf55f3c797949a2d8b1ffb4b789d2a62f509e79f799e35ff4a970e2dedee722e1814a22800143e27088514060e2a7d8f609f7d6d0809e5f2b50fb28c SHA512 4fafa0ed7bf7379771ec59f7d4cc4d308dbaec2fbed1f264ef8e68f6161d301ea0f3ae2e255a88e10bb45410fc77d00fba220254f41af2fc14e883b155e6b6a7 +DIST fcitx5-chinese-addons-5.1.14_dict.tar.zst 1036774 BLAKE2B c492ec274114befed4d5a1676af22b96be3d724638beb58df191d5f2210a78ddcd001ab81624ace9b617e5b39d2b6707519a17b60075ab7cdcaf4f86420f31ba SHA512 9541a79fbe25e0be3b76999362cfbb88f885bfc9f0fa8dd2b9ebe0f72dc5a4aaf7b35dbea88949c1de5deb8f77bb9afc0b114acf777cdbcc669cd8418fb64859 diff --git a/app-i18n/fcitx-chinese-addons/fcitx-chinese-addons-5.1.14.ebuild b/app-i18n/fcitx-chinese-addons/fcitx-chinese-addons-5.1.14.ebuild new file mode 100644 index 000000000000..48e1cb7389ad --- /dev/null +++ b/app-i18n/fcitx-chinese-addons/fcitx-chinese-addons-5.1.14.ebuild @@ -0,0 +1,56 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-chinese-addons" +inherit cmake unpacker xdg + +DESCRIPTION="Addons related to Chinese, including IME previous bundled inside fcitx4" +HOMEPAGE="https://github.com/fcitx/fcitx5-chinese-addons" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}_dict.tar.zst" +S="${WORKDIR}/${MY_PN}-${PV}" + +LICENSE="GPL-2+ LGPL-2+" +SLOT="5" +KEYWORDS="~amd64 ~riscv" +IUSE="+cloudpinyin +data +gui lua +opencc test webengine" +REQUIRED_USE="webengine? ( gui )" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=app-i18n/fcitx-5.1.22:5 + >=app-i18n/libime-1.1.14:5[data?] + >=dev-libs/boost-1.61:= + cloudpinyin? ( + >=dev-cpp/nlohmann_json-3.2 + net-misc/curl + ) + gui? ( + >=app-i18n/fcitx-qt-5.1.4:5[qt6(+),-onlyplugin] + dev-qt/qtbase:6[concurrent,gui,network,widgets] + webengine? ( dev-qt/qtwebengine:6[widgets] ) + ) + lua? ( app-i18n/fcitx-lua:5 ) + opencc? ( + app-i18n/opencc:= + >=dev-cpp/nlohmann_json-3.2 + ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig +" + +src_configure() { + local mycmakeargs=( + -DENABLE_BROWSER=$(usex webengine) + -DENABLE_CLOUDPINYIN=$(usex cloudpinyin) + -DENABLE_DATA=$(usex data) + -DENABLE_GUI=$(usex gui) + -DENABLE_OPENCC=$(usex opencc) + -DENABLE_TEST=$(usex test) + ) + cmake_src_configure +} diff --git a/app-i18n/fcitx-configtool/Manifest b/app-i18n/fcitx-configtool/Manifest index 89b77f4aab9f..7cc02aedd8b7 100644 --- a/app-i18n/fcitx-configtool/Manifest +++ b/app-i18n/fcitx-configtool/Manifest @@ -1 +1,2 @@ DIST fcitx-configtool-5.1.14.tar.zst 152234 BLAKE2B 624757bc7a5c00fa0744dcbb0603f3aaedbb543a2d822d383e47cb3473d9e74e25d07c60f0849be8ea941cb081e40bf75a51b9e10e317f74c40b562952582225 SHA512 be06a960d2f8bf2a6a91062f5de3b419dcd52f7108fc8589da0cb57205a45f479b81e38868e2acd2ad4ac2a41d794ff111681f84c76cdfdfd8b7055000b8f472 +DIST fcitx-configtool-5.1.15.tar.zst 156782 BLAKE2B 315ef12af88d569a448c4733a4cf16fe89a0cad34671d3e414a6935702f9c47f7d0e06e85f21e594985c074822ed1ee3e4e5dc78c29028feadbfa556064302bf SHA512 e43cc8cf27908ceb72d0b9ad420da6c1ec74c93a8145825081785afb916ce18ac4b9de2900897f6d6d2e4630a763fcc43377ac06bb931caec5fe1d353661b709 diff --git a/app-i18n/fcitx-configtool/fcitx-configtool-5.1.15.ebuild b/app-i18n/fcitx-configtool/fcitx-configtool-5.1.15.ebuild new file mode 100644 index 000000000000..b92063f2497f --- /dev/null +++ b/app-i18n/fcitx-configtool/fcitx-configtool-5.1.15.ebuild @@ -0,0 +1,71 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-configtool" + +inherit cmake unpacker + +DESCRIPTION="Configuration module for Fcitx" +HOMEPAGE="https://fcitx-im.org/ https://github.com/fcitx/fcitx5-configtool" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" +S="${WORKDIR}/${MY_PN}-${PV}" + +LICENSE="GPL-2+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" +IUSE="kcm +config-qt test X" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=app-i18n/fcitx-5.1.13:5 + >=app-i18n/fcitx-qt-5.1.4:5[qt6(+),-onlyplugin] + app-text/iso-codes + dev-qt/qtbase:6[concurrent,dbus,gui,widgets] + dev-qt/qtsvg:6 + kde-frameworks/kwidgetsaddons:6 + sys-devel/gettext + virtual/libintl + X? ( + x11-libs/libX11 + x11-misc/xkeyboard-config + ) + config-qt? ( kde-frameworks/kitemviews:6 ) + kcm? ( + dev-qt/qtdeclarative:6 + kde-frameworks/kcoreaddons:6 + kde-frameworks/kdeclarative:6 + kde-frameworks/ki18n:6 + kde-frameworks/kiconthemes:6 + kde-frameworks/kirigami:6 + kde-frameworks/kpackage:6 + kde-frameworks/ksvg:6 + kde-frameworks/kcmutils:6 + kde-plasma/libplasma:6= + x11-libs/libxkbcommon + ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + $(unpacker_src_uri_depends) + kde-frameworks/extra-cmake-modules:0 + sys-devel/gettext + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}"/${PN}-make-x11-dependencies-optional.patch +) + +src_configure() { + local mycmakeargs=( + -DKDE_INSTALL_USE_QT_SYS_PATHS=yes + -DENABLE_KCM=$(usex kcm) + -DENABLE_CONFIG_QT=$(usex config-qt) + -DENABLE_X11=$(usex X) + -DENABLE_TEST=$(usex test) + ) + + cmake_src_configure +} diff --git a/app-i18n/fcitx-hangul/Manifest b/app-i18n/fcitx-hangul/Manifest index be84470eadaa..c4cd68d999bf 100644 --- a/app-i18n/fcitx-hangul/Manifest +++ b/app-i18n/fcitx-hangul/Manifest @@ -1,2 +1,3 @@ DIST fcitx5-hangul-5.1.10.tar.zst 51029 BLAKE2B 9e2ad032979dabcb64f153c7df2e3433a0d16ab57f9d0402c25e77f47549338eaeebcd48e14ca0f2aff4f08ac89b10c2ce4718c9aeaa242bb243f6516b4dcd3f SHA512 c4f42c93668ef935ed9c22bfe5d41686c14e0e59154ba63a389bf7ee874aa3d133109ccb20101e336fc251801c9de3c4c11947f92731964617112f21ebd40430 +DIST fcitx5-hangul-5.1.11.tar.zst 51372 BLAKE2B 0ce2b25819836371449f3746fc1155a9951259b1ffe5ef4ff5249b4f07c0b5d285236529e45de73552d437133571202ad2a083f9d35574d238c7b154e3c2de9d SHA512 7be8618704abde331efb92cc0ebda2fc4f0fd5ec385e6d692743da822679fab2e9d95a1acf68e18628206e6d1bb4f675740f16e7cb4001ace44824c7a9881723 DIST fcitx5-hangul-5.1.9.tar.zst 50924 BLAKE2B 4e325a764c91c97c32ef35b41c21b3dd3531792beed035b9b29dbf53df2bf0634cca6156b60942777015261cf2cfceda91695067ca06217c87be9a7f36f18f97 SHA512 1254b8871e403b0fabec976c2aab34b5aabedddbcade94819e013b3c41e5fd9a2052ad13e2affc9c75f64ec3d5a78e44037091960c91183e3fc15c5972fcfb33 diff --git a/app-i18n/fcitx-hangul/fcitx-hangul-5.1.11.ebuild b/app-i18n/fcitx-hangul/fcitx-hangul-5.1.11.ebuild new file mode 100644 index 000000000000..bc3053444813 --- /dev/null +++ b/app-i18n/fcitx-hangul/fcitx-hangul-5.1.11.ebuild @@ -0,0 +1,31 @@ +# Copyright 2024-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-hangul" + +inherit cmake unpacker xdg + +DESCRIPTION="Korean Hangul input method for Fcitx" +HOMEPAGE="https://fcitx-im.org/ https://github.com/fcitx/fcitx5-hangul" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="LGPL-2.1+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" + +DEPEND=" + !app-i18n/fcitx-hangul:4 + >=app-i18n/fcitx-5.1.13:5 + >=app-i18n/libhangul-0.0.12 + virtual/libiconv +" +RDEPEND="${DEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig +" + +DOCS=( AUTHORS ) diff --git a/app-i18n/fcitx-lua/Manifest b/app-i18n/fcitx-lua/Manifest index 1ed415c0a999..5d6b4d3b8e08 100644 --- a/app-i18n/fcitx-lua/Manifest +++ b/app-i18n/fcitx-lua/Manifest @@ -1 +1,2 @@ DIST fcitx-lua-5.0.17.tar.zst 41460 BLAKE2B 2c3c700cba756d39a01caca56c2efde3a4056ae060a6f76b07b679945ca7a464cee2f2e1a1844f74e45231ffb4fe898afd41c7368784818ab34361afdae7a443 SHA512 e8164693d99583f3d137e5b2871f4e019ae1d00b983dab4252b4bc1e99b9bb5ff89a703794aade7a4d16ee6dfe15d36bac06b12e3ff56e9f8b17b6e598a2e1b8 +DIST fcitx-lua-5.0.18.tar.zst 41675 BLAKE2B dc07b20db73bed8cf8a3c76e19ea6fbbd038e97d49df4c510838b985f6bdb4deaf9b01910502c4f50338cb37b6a30f131dd3481983577aac2ceee08f51bdf8dc SHA512 07fc4f3dc84cc9cea332308f0cb7a5562f023db80f981c21c7939c03e193523cf58200904ec03e0d12be17030bb8807d342a4bae800e328c4be3e1e3b6e983e6 diff --git a/app-i18n/fcitx-lua/fcitx-lua-5.0.18.ebuild b/app-i18n/fcitx-lua/fcitx-lua-5.0.18.ebuild new file mode 100644 index 000000000000..638e34a5c26d --- /dev/null +++ b/app-i18n/fcitx-lua/fcitx-lua-5.0.18.ebuild @@ -0,0 +1,45 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +MY_PN="fcitx5-lua" + +inherit cmake lua-single xdg unpacker + +DESCRIPTION="Lua support for fcitx" +HOMEPAGE="https://github.com/fcitx/fcitx5-lua" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="LGPL-2.1+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" +IUSE="+dlopen test" +REQUIRED_USE="${LUA_REQUIRED_USE}" +RESTRICT="!test? ( test )" + +RDEPEND=" + ${LUA_DEPS} + >=app-i18n/fcitx-5.1.13:5 +" +DEPEND="${RDEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + sys-devel/gettext + virtual/pkgconfig +" + +pkg_setup() { + lua-single_pkg_setup +} + +src_configure() { + local mycmakeargs=( + -DUSE_DLOPEN=$(usex dlopen) + -DENABLE_TEST=$(usex test) + ) + cmake_src_configure +} diff --git a/app-i18n/fcitx-qt/Manifest b/app-i18n/fcitx-qt/Manifest index 433759e8846d..71b386fa36de 100644 --- a/app-i18n/fcitx-qt/Manifest +++ b/app-i18n/fcitx-qt/Manifest @@ -1 +1,2 @@ DIST fcitx-qt-5.1.14.tar.zst 131702 BLAKE2B 14c9fa7eff8f99a8c26f7193c7e2d5bb86b2dc8669f1263f7e1e962d4ddcbe16181ff2bff96caa04e44d5bef3fb16c45af13280467722725ea08cf352392eda7 SHA512 97c600af3d5b2d3657f1249f12f3795d7cef61a687b90a1a0f77c27e971ace17b589faf6c56cf31874ad41942dd968b0c458180f88cc6e6c4539809a96f81c5e +DIST fcitx-qt-5.1.15.tar.zst 133243 BLAKE2B cedd25515d91b203b57459fe759eaa442f4c10b58ea02ae7047341461f0613438a2869aab4f12c951425af1df63494fb150bb31a9af84c6d316cf9fdb69df668 SHA512 ce119719b98994becca266ac8405773c3de22f55b3e4577969efaf0e349c5e226acef4d6d52b01cf4984d38d48eb907a96b531312e3d1d861eb76ac127fc8e3d diff --git a/app-i18n/fcitx-qt/fcitx-qt-5.1.15.ebuild b/app-i18n/fcitx-qt/fcitx-qt-5.1.15.ebuild new file mode 100644 index 000000000000..c73403363681 --- /dev/null +++ b/app-i18n/fcitx-qt/fcitx-qt-5.1.15.ebuild @@ -0,0 +1,57 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-qt" + +inherit cmake dot-a unpacker + +DESCRIPTION="Qt library and IM module for fcitx5" +HOMEPAGE="https://github.com/fcitx/fcitx5-qt" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" +S="${WORKDIR}/${MY_PN}-${PV}" + +LICENSE="BSD LGPL-2.1+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" +IUSE="onlyplugin staticplugin wayland +X" +REQUIRED_USE=" + staticplugin? ( onlyplugin ) +" + +RDEPEND=" + !onlyplugin? ( >=app-i18n/fcitx-5.1.13:5 ) + dev-qt/qtbase:6=[dbus,gui,widgets,wayland?] + wayland? ( dev-qt/qtwayland:6 ) + X? ( + x11-libs/libX11 + x11-libs/libxcb + x11-libs/libxkbcommon + ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig + !onlyplugin? ( sys-devel/gettext ) +" + +src_configure() { + use staticplugin && lto-guarantee-fat + local mycmakeargs=( + -DENABLE_QT4=no + -DENABLE_QT5=no + -DENABLE_QT6=yes + -DENABLE_QT6_WAYLAND_WORKAROUND=$(usex wayland) + -DENABLE_X11=$(usex X) + -DBUILD_ONLY_PLUGIN=$(usex onlyplugin) + -DBUILD_STATIC_PLUGIN=$(usex staticplugin) + ) + cmake_src_configure +} + +src_install() { + cmake_src_install + use staticplugin && strip-lto-bytecode +} diff --git a/app-i18n/fcitx-rime/Manifest b/app-i18n/fcitx-rime/Manifest index 7eefbf801832..0a6b2f492576 100644 --- a/app-i18n/fcitx-rime/Manifest +++ b/app-i18n/fcitx-rime/Manifest @@ -1 +1,2 @@ DIST fcitx-rime-5.1.14.tar.zst 64632 BLAKE2B ca0941a95f0c11cff050886819d6910b0ec6f052d1f50e472cdf9f92a51b97b4a70272f434ce928cf5ac39c2dd0dc8ebc08acd2f35cd0336c4ca63da2b55e274 SHA512 061aafd5b7604add2e63f06388e1276264d2ca254ea869be8aab62e5e521d58a19599a00a8f9bfef2de7a09a79106f883830c7f9c7bdbff43422bc9344b84b89 +DIST fcitx-rime-5.1.16.tar.zst 67676 BLAKE2B 885447bcc8fbb221e92b2f80b79c3da4921897be1566d5824e2f18f6e714185983e5f39cf977ca1dc5131b873756ccf49f514c1fe2976a554fb368b58ff170cd SHA512 6a6522913ddfa28ff77599bffb82f66a5c64a02de3f86c467298e0c822a93db88e4533a4681290794022a7a94df7aef4045b9ae03956a928667a6d87f75a707a diff --git a/app-i18n/fcitx-rime/fcitx-rime-5.1.16.ebuild b/app-i18n/fcitx-rime/fcitx-rime-5.1.16.ebuild new file mode 100644 index 000000000000..ada1cd7d7feb --- /dev/null +++ b/app-i18n/fcitx-rime/fcitx-rime-5.1.16.ebuild @@ -0,0 +1,30 @@ +# Copyright 2024-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake unpacker xdg + +MY_PN="fcitx5-rime" +DESCRIPTION="Chinese RIME input methods for Fcitx" +HOMEPAGE="https://fcitx-im.org/ https://github.com/fcitx/fcitx5-rime" +SRC_URI="https://download.fcitx-im.org/fcitx5/fcitx5-rime/fcitx5-rime-${PV}.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="LGPL-2.1+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~riscv ~x86" + +DEPEND=" + !app-i18n/fcitx-rime:4 + >=app-i18n/fcitx-5.1.22:5 + app-i18n/librime + app-i18n/rime-data + virtual/libintl +" +RDEPEND="${DEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules + sys-devel/gettext + virtual/pkgconfig +" diff --git a/app-i18n/fcitx-table-extra/Manifest b/app-i18n/fcitx-table-extra/Manifest index 101f00d37c28..7895d9445ef0 100644 --- a/app-i18n/fcitx-table-extra/Manifest +++ b/app-i18n/fcitx-table-extra/Manifest @@ -1,4 +1,5 @@ DIST fcitx-table-extra-5.1.10.tar.zst 13784495 BLAKE2B 8bfebf6a942f7affc3a1535b8eb6e3f0586648deda0df58aae8581a7e52b5e026fc6cf36e0ef1bb1e837f133284fc0769e14b7a47963c6df784aac322b1e88a8 SHA512 77de35afcc65af6026457541937dee49281faa0a7569f0d61955db4a736ca011fb6c2ab25093a7e1141310c4737543d6724231b9a06824641b2fea91bbcdf178 DIST fcitx-table-extra-5.1.11.tar.zst 13784696 BLAKE2B 2e80d554c40d1a6c6a0528a25d83d523d57f8d61e5932c4fc5c38005ac9a0464f2e72d28f1a72bb73cb39629e13e1377811910ccb6ff8c629fd4953218042c31 SHA512 9bab9fb31e071394d27ddd1d654f3654e643895fa9e1abcdc6637e5ac066d76f6d3cc829708e75d3d2f0ada95faa3e08546db8d08446154cf2b16795453ed136 DIST fcitx-table-extra-5.1.12.tar.zst 13786289 BLAKE2B 15c5f914a926a9cfbd8e037f230323b82c4d11c30144e02287ae96ebd9a4172f4a0eb17800ef76100e531340462a609d6fd74dbf87c42c87296638dae525e07e SHA512 eeeea59f4467d9c3124c4af7dcd4d9638c1e059ddc07ff9bfe7b6bb48083aa37b9174c580a93b9e1db625d2e1760248cb1426db36149d0ccb81cde6d8ca94254 +DIST fcitx-table-extra-5.1.13.tar.zst 13788707 BLAKE2B ab0b2dd6e4835266727430876a05f0d35e9270d9ac2a2022db4b658d9da4043934beaf8ecff8c0b285ecab6d4c440a195a5092530108d4bdb91cec83cc30747d SHA512 3046ab40044143daf0f1ab3f76aca3e6306ae53a14898c403d41b71f8fb2e2a6187b858474c7098358abdaec5b7a7ccb8afa16271dc18202af389e2868aa7ffb DIST fcitx-table-extra-5.1.8.tar.zst 13785617 BLAKE2B 13f2ff4f94bfe6a61468dca1df0083ce84ac9de32dd1e85041cd7ad03332052697630b8befcebfffdb8477beda20edd9e5fe3a25ecf968fc7e6487a76ef20bc2 SHA512 a7bb036983813b694b6c38dc4e68192f409e408099b289a0e5222aa26475ed091830ee8e3d78e71a90a02f9aa2f653e8b9925ca936ac62b1a50893c465b50392 diff --git a/app-i18n/fcitx-table-extra/fcitx-table-extra-5.1.13.ebuild b/app-i18n/fcitx-table-extra/fcitx-table-extra-5.1.13.ebuild new file mode 100644 index 000000000000..6c74a176f999 --- /dev/null +++ b/app-i18n/fcitx-table-extra/fcitx-table-extra-5.1.13.ebuild @@ -0,0 +1,28 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN=fcitx5-table-extra + +inherit cmake unpacker xdg + +DESCRIPTION="Provides extra table for Fcitx, including Boshiamy, Zhengma, Cangjie, and Quick" +HOMEPAGE="https://github.com/fcitx/fcitx5-table-extra" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="GPL-3+" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" + +DEPEND=" + !app-i18n/fcitx-table-extra:4 + app-i18n/fcitx:5 + app-i18n/libime +" +RDEPEND="${DEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig +" diff --git a/app-i18n/fcitx-table-other/Manifest b/app-i18n/fcitx-table-other/Manifest index 650e6a539ec9..ade9a6916dd2 100644 --- a/app-i18n/fcitx-table-other/Manifest +++ b/app-i18n/fcitx-table-other/Manifest @@ -1,3 +1,4 @@ DIST fcitx-table-other-5.1.5.tar.zst 526950 BLAKE2B 892a83f0e345b859d0ec30aa55c168049ee65da26336531d956feef336a30a204aec9af622816f51d54812e3c1744ea53f1a32c05ce64603f981c3ffa6579f82 SHA512 af3061cb3c00b9bf299f2dd6b9e8ce2472b0386d8a87b2630d2bac61302f1f58783390fbd25e21591f19032e6f7e8217f4e0d3919a8e9fd2bd6621231bbc9a0d DIST fcitx-table-other-5.1.6.tar.zst 526382 BLAKE2B 71439c3e2d62e1aa38787bf225b910461497cf8658e602f5fb490f141ea57be8e32e30b22f4a641f93f197070557da041f66c4182023427e05c9373fa76f5763 SHA512 56dffcb927670b75a2f16a0ca6389abd59478817930000714d537f12a4e45e62d3b9cb7f8432098c5b80eb2519d28b0c8af11f2c1c47b8cb0745f3c3ebba58fb DIST fcitx-table-other-5.1.7.tar.zst 528989 BLAKE2B 918ecfa24686459e8b80cc3f0fd9a1f234ec653987ae84cca3caa4202b34884f16210f4dacf72037e88f55239284258eb5f842c56eaad55c019088989771c023 SHA512 5d0069851f1dc7c6e3d87de797b892ec5b5e23f067c2efda4310db7241cecea5a00aa1a3e76c5a3889a2da3fad94abd0a59ea717cf8d4bc5f0d70f986f91d3f5 +DIST fcitx-table-other-5.1.8.tar.zst 527528 BLAKE2B 3ba234c091a2bd03b4c077603c23d0bba5e90a1377296d07b49fa51e279cf7289687c8e1d6f871b2659abb7569a236b8694a4087127fa8c9c6a0d17cbb66e1b5 SHA512 42000302f49cf50dbb63c527545d183e159a2d197e78c3ec2d63e051d7e5a56e7c61e95b4d8941c2b8732c04d8ebac638899acd04ed097f6aaaa1b906ae9cc54 diff --git a/app-i18n/fcitx-table-other/fcitx-table-other-5.1.8.ebuild b/app-i18n/fcitx-table-other/fcitx-table-other-5.1.8.ebuild new file mode 100644 index 000000000000..f4ccf52248ba --- /dev/null +++ b/app-i18n/fcitx-table-other/fcitx-table-other-5.1.8.ebuild @@ -0,0 +1,27 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN=fcitx5-table-other + +inherit cmake unpacker xdg + +DESCRIPTION="Provides some other tables for Fcitx, fork from ibus-table-others, scim-tables" +HOMEPAGE="https://github.com/fcitx/fcitx5-table-other" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="GPL-3" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" + +DEPEND=" + app-i18n/fcitx:5 + app-i18n/libime +" +RDEPEND="${DEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig +" diff --git a/app-i18n/fcitx-unikey/Manifest b/app-i18n/fcitx-unikey/Manifest index d0af6591ae62..e0be6023a784 100644 --- a/app-i18n/fcitx-unikey/Manifest +++ b/app-i18n/fcitx-unikey/Manifest @@ -1,3 +1,4 @@ DIST fcitx5-unikey-5.1.10.tar.zst 115658 BLAKE2B 6877f2bcb83e942f5bed0c269e83d9a812ba5b2629cf2f7624b3153043915331d48395d738d524e971114cabd61bac0b82b3870d80c0d180e3bcd4b13b35d847 SHA512 444eaa5642c12072741e2236f2346b0f61429afaba79dba9a0ce99a21f28041221c6d04ab0b73a39025d8896bf3c09aab08edc57748de7913300d138f6ff6028 DIST fcitx5-unikey-5.1.11.tar.zst 116425 BLAKE2B 1531727a9afee716cde1d38c47034d1382aab13f2969aa9441589e0dade683633925a412dcc6dd7f18a22ccb3a7cfc66a8a1509fb03f8faaaa53e486071064e8 SHA512 a0b86ab7cac647b08ba3e058a25344940e84dbfd6627ba63d388a6f4a7facefa1305bbb95eb3cf3aff55ae167afb839a82cbee72cac8691ad3af3155b5619ffa +DIST fcitx5-unikey-5.1.12.tar.zst 116378 BLAKE2B 6af9ee032b00879a2d042ee23b8030f6f64ac087bc29d6afccf067101095765558173bece54480227d4f01b37c51214eef956c27a015325a88513917079d7bec SHA512 2987b50c8a0cb383bfd90ad4b42bc97ca74a8f76ce82453db39e9e40ed9325fdfe458510b8419ca1e49bcc9c93452ac2eb5298de8c99d156e4859acce078c7c0 DIST fcitx5-unikey-5.1.8.tar.zst 114365 BLAKE2B b88b4b81acb1108720daddb17761a5dc6b4a678d625091fa33d724d7606ad855b4040796568d4701f129a093f6f9c5f3103b30b1431a5171b209531e8ec0230a SHA512 cee0bafc018624b8509504304278a1e0f86b8ac81021b0426d0281cfb7fd71c6fdb43a99a0605df0831a97433282ab15fb1382c51a56bed2969baeb7e6fc6d6c diff --git a/app-i18n/fcitx-unikey/fcitx-unikey-5.1.12.ebuild b/app-i18n/fcitx-unikey/fcitx-unikey-5.1.12.ebuild new file mode 100644 index 000000000000..ea7b073864fa --- /dev/null +++ b/app-i18n/fcitx-unikey/fcitx-unikey-5.1.12.ebuild @@ -0,0 +1,37 @@ +# Copyright 2024-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5-unikey" +inherit cmake unpacker xdg + +DESCRIPTION="Unikey (Vietnamese Input Method) engine support for Fcitx" +HOMEPAGE="https://fcitx-im.org/ https://github.com/fcitx/fcitx5-unikey" +SRC_URI="https://download.fcitx-im.org/fcitx5/${MY_PN}/${MY_PN}-${PV}.tar.zst" +S="${WORKDIR}/${MY_PN}-${PV}" + +LICENSE="LGPL-2+ GPL-2+" +SLOT="5" +KEYWORDS="~amd64 ~x86" +IUSE="+gui test" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=app-i18n/fcitx-5.1.13:5 + >=app-i18n/fcitx-qt-5.1.4:5[qt6(+),-onlyplugin] + gui? ( dev-qt/qtbase:6[dbus,gui,widgets] ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig +" + +src_configure() { + local mycmakeargs=( + -DENABLE_QT=$(usex gui) + -DENABLE_TEST=$(usex test) + ) + cmake_src_configure +} diff --git a/app-i18n/fcitx/Manifest b/app-i18n/fcitx/Manifest index f628e2e222db..c69e76469c6f 100644 --- a/app-i18n/fcitx/Manifest +++ b/app-i18n/fcitx/Manifest @@ -1,2 +1,3 @@ DIST fcitx-5.1.17.tar.zst 8407147 BLAKE2B 9b99d9a53b5bcd89942b848e3b4adae0e8f950e3a679a2d30b995caadfe09472c7d9611e05f80504874cf8185108914faf1711a29e9a1d258b5789509901cab0 SHA512 fe3f13d7615ae823b0746bd731d0eac4df90b216c22c186c4f63ab71c0450f38adfa558e906a5493bb5eab873bffea913477c8dcb2ba7055668305cf995e235f DIST fcitx-5.1.21.tar.zst 10508623 BLAKE2B 37fbe9f7052ee4e804f670faf3f262349dc5c6608165c3e085089662f2e4e16c345ab9316d5daceb9f43620a7622a7a7f0c2fdfe2ee03c1575c285ccd75f0338 SHA512 88a536843cd7eb6a1bc85dfb1ddb4096119a63b333736d768d0d59fa61721da6699f517e188129bd3dbced8cc782972f6b89ff0da3e27f95a21ee9bb12a27a9d +DIST fcitx-5.1.22.tar.zst 10555128 BLAKE2B 0c0916025e28ac8ad33d0d767eab9600b291dff39c811c906a48ab038fa8eba29e375cc41263066dd6f1de4a45ef15d27cea522c93c76393047db4ddd479e9e0 SHA512 de37034aa4e8fd1a2de79e01ce5c622625eebe43391b5a2aa850a17cef0d08d17d1f735eadc3605b0fda5062f6e2ab8bdb82f4cb52f42e799f2e3b679776a4f0 diff --git a/app-i18n/fcitx/fcitx-5.1.22.ebuild b/app-i18n/fcitx/fcitx-5.1.22.ebuild new file mode 100644 index 000000000000..375cb8623409 --- /dev/null +++ b/app-i18n/fcitx/fcitx-5.1.22.ebuild @@ -0,0 +1,136 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_PN="fcitx5" + +inherit cmake flag-o-matic toolchain-funcs unpacker xdg + +DESCRIPTION="Fcitx 5 is a generic input method framework" +HOMEPAGE="https://fcitx-im.org/ https://github.com/fcitx/fcitx5" +SRC_URI="https://download.fcitx-im.org/fcitx5/fcitx5/fcitx5-${PV}_dict.tar.zst -> ${P}.tar.zst" + +S="${WORKDIR}/${MY_PN}-${PV}" +LICENSE="LGPL-2+ Unicode-DFS-2016" +SLOT="5" +KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~riscv ~x86" +IUSE="+autostart doc +emoji +enchant +keyboard presage +server systemd system-yoga test wayland +X" +REQUIRED_USE=" + || ( wayland X ) + X? ( keyboard ) + wayland? ( keyboard ) +" + +RESTRICT="!test? ( test )" + +RDEPEND=" + dev-libs/libfmt + gnome-base/librsvg + sys-devel/gettext + virtual/libintl + x11-libs/cairo[X?] + x11-libs/gdk-pixbuf:2 + x11-libs/pango[X?] + doc? ( + app-text/doxygen + dev-texlive/texlive-fontutils + ) + emoji? ( virtual/zlib:= ) + enchant? ( app-text/enchant:2 ) + keyboard? ( + app-text/iso-codes + dev-libs/expat + dev-cpp/nlohmann_json + x11-misc/xkeyboard-config + x11-libs/libxkbcommon[X?,wayland?] + ) + systemd? ( + sys-apps/systemd + ) + !systemd? ( + dev-libs/libuv + sys-apps/dbus + ) + system-yoga? ( + dev-libs/yoga + ) + wayland? ( + dev-libs/glib:2 + dev-libs/wayland + dev-libs/wayland-protocols + dev-util/wayland-scanner + ) + X? ( + dev-libs/glib:2 + >=x11-libs/xcb-imdkit-1.0.3:5 + x11-libs/libX11 + x11-libs/libxkbfile + x11-libs/xcb-util + x11-libs/xcb-util-keysyms + x11-libs/xcb-util-wm + ) +" +DEPEND="${RDEPEND} + wayland? ( + dev-libs/plasma-wayland-protocols + ) +" +BDEPEND=" + virtual/pkgconfig + kde-frameworks/extra-cmake-modules:0 +" + +src_configure() { + if [[ $(tc-get-cxx-stdlib) == "libc++" ]]; then + # std::osyncstream used in fcitx-utils/log.cpp is marked as experimental. + append-cxxflags $(test-flags-CXX -fexperimental-library) + fi + + local mycmakeargs=( + -DENABLE_DBUS=on + -DENABLE_XDGAUTOSTART=$(usex autostart) + -DENABLE_SERVER=$(usex server) + -DENABLE_KEYBOARD=$(usex keyboard) + -DENABLE_TEST=$(usex test) + -DENABLE_ENCHANT=$(usex enchant) + -DENABLE_EMOJI=$(usex emoji) + -DENABLE_PRESAGE=$(usex presage) + -DENABLE_WAYLAND=$(usex wayland) + -DENABLE_X11=$(usex X) + -DENABLE_DOC=$(usex doc) + -DUSE_SYSTEMD=$(usex systemd) + -DUSE_SYSTEM_YOGA=$(usex system-yoga) + ) + cmake_src_configure +} + +src_compile() { + cmake_src_compile + use doc && cmake_src_compile doc +} + +src_test() { + # break by sandbox + local CMAKE_SKIP_TESTS=( + testdbus + testservicewatcher + ) + cmake_src_test +} + +src_install() { + cmake_src_install + use doc && dodoc -r "${BUILD_DIR}"/doc/* +} + +pkg_postinst() { + xdg_pkg_postinst + + elog + elog "Follow the instructions on:" + elog "https://wiki.gentoo.org/wiki/Fcitx#Using_Fcitx" + elog "https://fcitx-im.org/wiki/Setup_Fcitx_5" + elog "https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland" + elog +} diff --git a/app-i18n/libime/Manifest b/app-i18n/libime/Manifest index 39317a1cdd38..91a8694656ca 100644 --- a/app-i18n/libime/Manifest +++ b/app-i18n/libime/Manifest @@ -1,2 +1,3 @@ DIST libime-1.1.14_dict.tar.zst 49597501 BLAKE2B d6f314f41a04a53fb12a77db4bc54a725b0554bd81b9f2f7659a3db5b9f8c65760e87b15285321097f152c48a2d27dfa8348d1b582f7f698446369b7271458c3 SHA512 2afe7dbfe7c087fa45f1175ad08cde59da3d7c8baf9413be6291f36b6786a1501f1b3ca3ec795b3852b1e87a3afb7eb099b258f053c2185ea03bf5885046c88d DIST libime-1.1.15_dict.tar.zst 50352125 BLAKE2B 3af200a19ec23517615c5adc63066415c493e287a5158e853151a82473116dd0c59dd3d832d78ed9673eaee99edcc25ff7382a7d9bb95e9bc55b39de49827fa8 SHA512 b262779726519d68ee91f78474639ff5d36536ffdfdbae73349c12053c456c6666ed3dd2d452f417c9e002f66e256fc8a3bf99fd0a74fc90ab27b1afb6cb4b98 +DIST libime-1.1.16_dict.tar.zst 85245044 BLAKE2B 2972315ca94c3a045e4277e23d3c359274c06861c9be144c2c8a17adf38ecda954713e16a5d10492ce96b47d16631417a197554264d2546c4cbd1a0ff4a226fe SHA512 763bc2f8f9056c046ed2d1569fec2e1b4b5f20bdca5dbd1c1c0df5718946721015bcad2d6c18196181dab196d189a0ead810638e430093ca074c53512b502668 diff --git a/app-i18n/libime/libime-1.1.16.ebuild b/app-i18n/libime/libime-1.1.16.ebuild new file mode 100644 index 000000000000..654d44915db6 --- /dev/null +++ b/app-i18n/libime/libime-1.1.16.ebuild @@ -0,0 +1,53 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake unpacker + +DESCRIPTION="Fcitx5 Next generation of fcitx" +HOMEPAGE="https://fcitx-im.org/" +SRC_URI="https://download.fcitx-im.org/fcitx5/libime/libime-${PV}_dict.tar.zst" + +LICENSE="LGPL-2+" +SLOT="5" +KEYWORDS="~amd64 ~ppc64 ~riscv" +IUSE="+data doc test" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=app-i18n/fcitx-5.1.20:5 + app-arch/zstd:= + dev-libs/boost:= +" +DEPEND="${RDEPEND}" +BDEPEND=" + kde-frameworks/extra-cmake-modules:0 + virtual/pkgconfig + doc? ( + app-text/doxygen + dev-texlive/texlive-fontutils + ) +" + +src_configure() { + # 957570 : remove unused kenlm CMakeLists.txt + rm src/libime/core/kenlm/CMakeLists.txt || die + + local mycmakeargs=( + -DENABLE_DATA=$(usex data) + -DENABLE_DOC=$(usex doc) + -DENABLE_TEST=$(usex test) + ) + cmake_src_configure +} + +src_compile() { + cmake_src_compile + use doc && cmake_src_compile doc +} + +src_install() { + cmake_src_install + use doc && dodoc -r "${BUILD_DIR}"/doc/* +} diff --git a/app-i18n/rime-data/Manifest b/app-i18n/rime-data/Manifest index 3c696db14382..545bc494f411 100644 --- a/app-i18n/rime-data/Manifest +++ b/app-i18n/rime-data/Manifest @@ -1,63 +1,84 @@ DIST rime-array-1.0.20250124.tar.gz 1721033 BLAKE2B 5bce47a0d78252a43934c4a4af83df7a8323af40411a765369aedac5bcb0da8f290e3a236b821aee33681a8ce89794586e9252a683f3ab2e25ea9459693319f1 SHA512 9999ec3bd3865c1a9d4bb35ba195bdd9dd3317701b3c693359faa67fdf41b0a1dc827124ec25b6f12b4281e155bad874a75d25cf67c52f33fecc5d8f426970ce DIST rime-array-1.0.20251206.tar.gz 1721033 BLAKE2B 5bce47a0d78252a43934c4a4af83df7a8323af40411a765369aedac5bcb0da8f290e3a236b821aee33681a8ce89794586e9252a683f3ab2e25ea9459693319f1 SHA512 9999ec3bd3865c1a9d4bb35ba195bdd9dd3317701b3c693359faa67fdf41b0a1dc827124ec25b6f12b4281e155bad874a75d25cf67c52f33fecc5d8f426970ce DIST rime-array-1.0.20260703.tar.gz 1721033 BLAKE2B 5bce47a0d78252a43934c4a4af83df7a8323af40411a765369aedac5bcb0da8f290e3a236b821aee33681a8ce89794586e9252a683f3ab2e25ea9459693319f1 SHA512 9999ec3bd3865c1a9d4bb35ba195bdd9dd3317701b3c693359faa67fdf41b0a1dc827124ec25b6f12b4281e155bad874a75d25cf67c52f33fecc5d8f426970ce +DIST rime-array-1.0.20260826.tar.gz 1721033 BLAKE2B 5bce47a0d78252a43934c4a4af83df7a8323af40411a765369aedac5bcb0da8f290e3a236b821aee33681a8ce89794586e9252a683f3ab2e25ea9459693319f1 SHA512 9999ec3bd3865c1a9d4bb35ba195bdd9dd3317701b3c693359faa67fdf41b0a1dc827124ec25b6f12b4281e155bad874a75d25cf67c52f33fecc5d8f426970ce DIST rime-bopomofo-1.0.20250124.tar.gz 5985 BLAKE2B 01b43029f35a392e363bbf60e0708651122dc14f2aaf6c103292e571a06ebdd804fc3097e0b0f874b66efadeff6c0d521a7ee3c640111b6054e318eeb6d84ae7 SHA512 106a2897ac409b12e5a9aee35bed31e6bd76e4c2cb5caed5d201e03891b316fe42e279c72e5a3b06fe575ea2e897903986fcab9401933b7dfc4d47064be01bce DIST rime-bopomofo-1.0.20251206.tar.gz 5953 BLAKE2B f1d95d6aff9449be2f3aca80024dc28e2d20ef400606961bdfea4ee6959b5eda2c34070edf6b697cef95be2cfa8f72d0d0fcfda65c1e342ec9c5c89af34604cf SHA512 9aa70caf5e1cd96a6c27755d13ef395cb23492a6c42b7f33b3b6f6c17a1faa4ae5224184602ff08bcbb4e06f036c2d2ed804e38ff1146769f1b5590184f73ede DIST rime-bopomofo-1.0.20260703.tar.gz 8907 BLAKE2B b4cae3074b6bd01de5eb28ba837ca5260e8fa73741ebbbf12a9c6462cd5428e4beb78580adeabedc67b004c973d87e4c6b4e86be6fa3cc60969f798a6bbf175c SHA512 677fedd087a6f96306bf90a178acce48ed352e4d3888761751f32c261a01d56af3e97d67364e9d3ba8a53791e85b207f996a8d6aa2a9834b814be2b7c0cfed9c +DIST rime-bopomofo-1.0.20260826.tar.gz 8907 BLAKE2B b4cae3074b6bd01de5eb28ba837ca5260e8fa73741ebbbf12a9c6462cd5428e4beb78580adeabedc67b004c973d87e4c6b4e86be6fa3cc60969f798a6bbf175c SHA512 677fedd087a6f96306bf90a178acce48ed352e4d3888761751f32c261a01d56af3e97d67364e9d3ba8a53791e85b207f996a8d6aa2a9834b814be2b7c0cfed9c DIST rime-cangjie-1.0.20250124.tar.gz 392488 BLAKE2B 8c8ed40265e20793571b1c615134d293295fddd17ce48df9054d61b36b3a572d7546dbc5368f9f63efae73bf3572f9f2e9cad447b16eb2d3fd207e931e0c703d SHA512 b56c1363413fe6579cac994c0a2c12d75fe9efb842c4536a0962f64bb197009ab1f5071a204a2bc7983d0e06ecd6934e4db72a157a2cda76294b98d304715cad DIST rime-cangjie-1.0.20251206.tar.gz 392488 BLAKE2B 8c8ed40265e20793571b1c615134d293295fddd17ce48df9054d61b36b3a572d7546dbc5368f9f63efae73bf3572f9f2e9cad447b16eb2d3fd207e931e0c703d SHA512 b56c1363413fe6579cac994c0a2c12d75fe9efb842c4536a0962f64bb197009ab1f5071a204a2bc7983d0e06ecd6934e4db72a157a2cda76294b98d304715cad DIST rime-cangjie-1.0.20260703.tar.gz 400759 BLAKE2B 6e87c55519dd722f48ffcae4614b53ffa633f986bf4d9c0dafff453386a77340e0bda0aab6e536a991a9139af94a6d8160baf2c4d6d41364805f6f7eb308c5e6 SHA512 8389dc5b2dcc9c7ae036f911b0a6e852e60c3c2d76d25ab7852337888fa927930042fb675a1a418e67eeb4af1e78d7856d8571f1c091169cbf3e342ee1f137c4 +DIST rime-cangjie-1.0.20260826.tar.gz 400759 BLAKE2B 6e87c55519dd722f48ffcae4614b53ffa633f986bf4d9c0dafff453386a77340e0bda0aab6e536a991a9139af94a6d8160baf2c4d6d41364805f6f7eb308c5e6 SHA512 8389dc5b2dcc9c7ae036f911b0a6e852e60c3c2d76d25ab7852337888fa927930042fb675a1a418e67eeb4af1e78d7856d8571f1c091169cbf3e342ee1f137c4 DIST rime-cantonese-1.0.20250124.tar.gz 4808499 BLAKE2B 229519f301dabb2952f207787c36b17762ccc982a963e1ef686981ed933c55c72b64929f37f56744eb63e943479637cfeb9b0a923b22a9180ea218cc1b0eb91c SHA512 590ab5a0b629090130d257a92f6f3286239d4433930a3dac9719ad3f18bef9c5a2a56e739c0d43cbebc6c4dfdcd09b3f908e8f496bf5e49acfd01925d6eab406 DIST rime-cantonese-1.0.20251206.tar.gz 4809002 BLAKE2B 527117f796dda3dda9189a554b8e6c6f55c2ae2140ea8efe412a3c9bb041063e1276b493c57b1f7660815a3a42047c573d495bafa46bc3d5141467e07d4a479e SHA512 1070f5017b20febd6c9865c81751f5565e5eb09cd4b35cba7611690534b790ba1cd8614c61ce0d2a84d989fa5d33e7aadb0a8f7bcf357b6cd5745d814ac290d0 DIST rime-cantonese-1.0.20260703.tar.gz 4808686 BLAKE2B 54fc6d538535b1256d30c8036f46c45aa5a8e45f52181e4332a6e3933541696c67f5af32032bb265ec6b63eaf22327385646b1f75089b130dd25e7cb1629dd36 SHA512 c85549e03229ecea8b9c921633c8b4941552707b4915246b8c37a7f1c5afbaa7f311b87692bf3735d3006f732c1d8c7592b7f95fa16a33c4821bfca23b823145 +DIST rime-cantonese-1.0.20260826.tar.gz 4808710 BLAKE2B 5cf4b078c2cbf1ce9e8cf2e71a995aa0eb53e948b35a2da228fdcacb7a2f71089beb42b4a1ccc9b972375e228af406d304bb6ba6007b51f74188ff96cd7cd55a SHA512 d3e896743e3ce01f905b765da040495f353a0f86432ca01bcc62331beb2b015491e745c23feb095e58dfbf06f76318a51e2da31166d5ec80ebf51ef84932bf85 DIST rime-combo-pinyin-1.0.20250124.tar.gz 23225 BLAKE2B d3998722bbcbbe7a762d40660cb7bdefebd89c817a418f8e5a154393911240ae44c300d7d8482823a9dfecdf8fd2f64ed18e72fab884f8d3ea3a447d5618ba6f SHA512 9d5c00b1fe209533cabb21201a3d6a745852b7d1477c18ddb14816aaa9c34766df697d76a936108915c3c23cc673ba26bbeda3baa8ebdadda39604b4552a781f DIST rime-combo-pinyin-1.0.20251206.tar.gz 23436 BLAKE2B b252ca266a2be531ddbe6cb0801138c7823c6999072665eb4d3df27a4ff1703903cd3d34c187eb48e4c3d301f9c45ad779600e17a02a771712df59b7c51a4ba1 SHA512 89b3856fb90a1c559c88b2ec1f5449db03f6a7b8fe1ff0d517d561f16f661348696fa1bbb2693e97ebc33540aee80c0f62cd2ce286b81363edfc67d102416729 DIST rime-combo-pinyin-1.0.20260703.tar.gz 23454 BLAKE2B 17025677cd73056b080aba94ef2c776ab36d144da7d02be6c896dc5c44032b598a85f5ed97d36543ab632cdf6ee3d2f32855ffffb431d09eeb5cbc796e5e13e1 SHA512 d4fde521bd51b6b5072f81b36c958b3668aa456ef7144425ea7347d3a90f7f1de9dcb37fc274a2d184097b4ecbcca89bf7128830d87d3c5a622b1f1db0b71f65 +DIST rime-combo-pinyin-1.0.20260826.tar.gz 23454 BLAKE2B 17025677cd73056b080aba94ef2c776ab36d144da7d02be6c896dc5c44032b598a85f5ed97d36543ab632cdf6ee3d2f32855ffffb431d09eeb5cbc796e5e13e1 SHA512 d4fde521bd51b6b5072f81b36c958b3668aa456ef7144425ea7347d3a90f7f1de9dcb37fc274a2d184097b4ecbcca89bf7128830d87d3c5a622b1f1db0b71f65 DIST rime-double-pinyin-1.0.20250124.tar.gz 16998 BLAKE2B c8c93eee98e896d69e5b677a8eb38979e74ab8bbefdf705aa2ab9afd8f30bea3a3156dab994e95a33313e7fc4e2af4a25b7eade32c8f8bb009f7c955e1215e2a SHA512 2ab98a7b804b2fa3d0a59fd0b9a8b79316caa3a2da070766359d550d1d56edf85d55874044409780a2a21d729a2a7e834fdcf9419eb0d34252acbdef304a5c40 DIST rime-double-pinyin-1.0.20251206.tar.gz 17395 BLAKE2B ba4a281bf96ebbfefc03af9c819daf176ee8044e65579c99f5a33457c8f3f812db0d328d741f20f0659040d702ad728cbc12866f2febc97c82b3b9c55a3df5ad SHA512 4858e60377b196953393c399851fba4add6a4a7efd66eeff290e59dcf68463198de45774ff2ad91d9a605849f0f748f7c9863d9c85bd8240da50a30922c7c1ca DIST rime-double-pinyin-1.0.20260703.tar.gz 17395 BLAKE2B ba4a281bf96ebbfefc03af9c819daf176ee8044e65579c99f5a33457c8f3f812db0d328d741f20f0659040d702ad728cbc12866f2febc97c82b3b9c55a3df5ad SHA512 4858e60377b196953393c399851fba4add6a4a7efd66eeff290e59dcf68463198de45774ff2ad91d9a605849f0f748f7c9863d9c85bd8240da50a30922c7c1ca +DIST rime-double-pinyin-1.0.20260826.tar.gz 17395 BLAKE2B ba4a281bf96ebbfefc03af9c819daf176ee8044e65579c99f5a33457c8f3f812db0d328d741f20f0659040d702ad728cbc12866f2febc97c82b3b9c55a3df5ad SHA512 4858e60377b196953393c399851fba4add6a4a7efd66eeff290e59dcf68463198de45774ff2ad91d9a605849f0f748f7c9863d9c85bd8240da50a30922c7c1ca DIST rime-emoji-1.0.20250124.tar.gz 50946 BLAKE2B 91a96e7b4913ef2a380c1e98fc77b5289094f4efafa31fab1e64f5fc5a22082f89ebb27953e1cc1b84dfd8d9d97c92e6412560bc513a0eaa2ca72d787da89ac8 SHA512 b4785f4909e270a0cc40a2706a20ac9193358f901cba48bb4c3f5e0dcf67688e18e99101aa7e5945e73e5c9b73c71113216c2c91ad5d6eab1885943c6ca7f839 DIST rime-emoji-1.0.20251206.tar.gz 51135 BLAKE2B 49b901138a68e111ce022bd5082261643783623e14e43ab90d1580f28f7e68dd77553400a5e84348157fd8a5e6fe2d27cf7c5c2d3a25e65695bcd9e90703509c SHA512 b2ce0a9c2b58823d3b9316f165b0a1cccc31353f034e3453a4afa5a3a693403e1a42e177873e446497225e5b514b3bb94971a1b8aaa9a767de6473e6ca5ebf22 DIST rime-emoji-1.0.20260703.tar.gz 51389 BLAKE2B 74012875a136072de5cadd9fb6eee6736d68dbf44f1f8e0b8a730b2c63113518f158a2ba7c1fde88adc6e576b4eab2329fda27564c8f1d9f376d535deda76146 SHA512 6373b712c4c22695439caade3fdb79eb7e0f19c10b1de904efbd7b08f30c3118e6bfd4634b82e6b95ebe0cf2129139e7475355ea6c3c0ab884a77ec6e91fda8a +DIST rime-emoji-1.0.20260826.tar.gz 51389 BLAKE2B 74012875a136072de5cadd9fb6eee6736d68dbf44f1f8e0b8a730b2c63113518f158a2ba7c1fde88adc6e576b4eab2329fda27564c8f1d9f376d535deda76146 SHA512 6373b712c4c22695439caade3fdb79eb7e0f19c10b1de904efbd7b08f30c3118e6bfd4634b82e6b95ebe0cf2129139e7475355ea6c3c0ab884a77ec6e91fda8a DIST rime-essay-1.0.20250124.tar.gz 2578130 BLAKE2B f7a1ed0336a1df820ae73daab93348077fdfd80c230410559ffb4d0250fc045e771a09319c19a20136290a5baf95f0603d7751ce98373c4fd1f70f2ec6457c35 SHA512 e072350b3e304d79cf20c69f9fcde944f4a38071973f193bac577ab2cb476ab3b274cdf18ca61e1f29bd779daab89be517e984ebc00b863e4e01a6d25dd0a882 DIST rime-essay-1.0.20251206.tar.gz 2577572 BLAKE2B d7748f5b3bc1443d2c4de2e781fa041b17861fcf186c43b73e882e453ff895ae73345395601114bfea928f6ab02206d2283225eccdeff6c27642109cfb579295 SHA512 03ff6ade9dbed4dbb968f70dea78509710965f330397c832993117edd22ca305ebf99901c1e14da8d6eca22f7c9ef867c6c2492a0bfc4ea13b181c59a7682a47 DIST rime-essay-1.0.20260703.tar.gz 2585526 BLAKE2B cdb7f632f1cfcfe65b1447dd535d9c29c85c4bfabfbde3c22036e05270596538b2ca06a16905b4c9aff19c2154029734afa1ce4961d24b1addf70b8f271b1574 SHA512 6273c3694302812affceb5daa32205a7c52fabc0930d459122cf9a3d63c1a342cf4a280926adcc3963bef43dd5719e0b24c7403464cc9809ab66795bc4c32717 +DIST rime-essay-1.0.20260826.tar.gz 2585526 BLAKE2B cdb7f632f1cfcfe65b1447dd535d9c29c85c4bfabfbde3c22036e05270596538b2ca06a16905b4c9aff19c2154029734afa1ce4961d24b1addf70b8f271b1574 SHA512 6273c3694302812affceb5daa32205a7c52fabc0930d459122cf9a3d63c1a342cf4a280926adcc3963bef43dd5719e0b24c7403464cc9809ab66795bc4c32717 DIST rime-ipa-1.0.20250124.tar.gz 9510 BLAKE2B e271911cb4d066ff4b7813be062f9778bb04469b15268bdc93530f664a75ee723007ba806772092fd30302fea7a610b879b2a0598ec424a90d4c14e446a0ba87 SHA512 06cd5fb467e6694458bd67505fac7a496c490e9aabf8ad92ec881ac354e63dfaf2f9a4dd216960b260d62183cade49d267444ac340466ef03ce2ab7a9646b9f1 DIST rime-ipa-1.0.20251206.tar.gz 9510 BLAKE2B e271911cb4d066ff4b7813be062f9778bb04469b15268bdc93530f664a75ee723007ba806772092fd30302fea7a610b879b2a0598ec424a90d4c14e446a0ba87 SHA512 06cd5fb467e6694458bd67505fac7a496c490e9aabf8ad92ec881ac354e63dfaf2f9a4dd216960b260d62183cade49d267444ac340466ef03ce2ab7a9646b9f1 DIST rime-ipa-1.0.20260703.tar.gz 9510 BLAKE2B e271911cb4d066ff4b7813be062f9778bb04469b15268bdc93530f664a75ee723007ba806772092fd30302fea7a610b879b2a0598ec424a90d4c14e446a0ba87 SHA512 06cd5fb467e6694458bd67505fac7a496c490e9aabf8ad92ec881ac354e63dfaf2f9a4dd216960b260d62183cade49d267444ac340466ef03ce2ab7a9646b9f1 +DIST rime-ipa-1.0.20260826.tar.gz 9510 BLAKE2B e271911cb4d066ff4b7813be062f9778bb04469b15268bdc93530f664a75ee723007ba806772092fd30302fea7a610b879b2a0598ec424a90d4c14e446a0ba87 SHA512 06cd5fb467e6694458bd67505fac7a496c490e9aabf8ad92ec881ac354e63dfaf2f9a4dd216960b260d62183cade49d267444ac340466ef03ce2ab7a9646b9f1 DIST rime-luna-pinyin-1.0.20250124.tar.gz 395840 BLAKE2B 1a00d21ad4d5c20ca8d386b10a36a71f199615999753bfeaf3640953b065679c4d102fe6436cc72f50cf84dc9116e4247b22a054bb71dc3df84d566e021b8f83 SHA512 2177143a4c213d43a1ed96427a9deb4ee88a6fe15e0dc2bcecdae6584436ff8de8692cf987a5a15c0d6cf44c993a061152532640ed05253571f2809ca69b8e5c DIST rime-luna-pinyin-1.0.20251206.tar.gz 395953 BLAKE2B 15ee3fe54c0e065d280fa367cbba32848799923432ff41f8cf75a1147249b0d2b61b55223b47a59856fe794c3a3ebfc33909851a5f0101d48e9315ad56d792ac SHA512 6e354b074ac589a577c5484954bd0289753b32e34ae688560f7c64a056391fc6c34f7a5207a5c8c1f290f03a56586b2b7cbd3bed045090e7ef3438ce735c5d81 DIST rime-luna-pinyin-1.0.20260703.tar.gz 395713 BLAKE2B 425aa079f1fd00adae0a5c411b1eab0354d03d56e13e35b88a97df934563979ebf4227e738a518ee7cf79f6fd56bb21fe9f6b58b0750c43606cb07f345b255e7 SHA512 f0bbd34a93659ea8f2c5a08048441defac6e9790b7e061670eafc97dfa82a983c5c1d6c1e695bb70ff3fdd6b85dcea0d026ec1a135480dffd8ae61384166ee42 +DIST rime-luna-pinyin-1.0.20260826.tar.gz 395336 BLAKE2B 823786df6ce5b4f2c79f08a2ec31b59829bdedcd4672c80d4cb052e08e08a31874c1d52cd680c1ae84bda8f977ef82f3326e354ed7bc1a5c1fe9d198d1820d8d SHA512 66e7a08648808cf960418c52b454b710c3d60bb92131a1a8e03e6a44971ea1be78b4bc6b6f38fd4f7689c36370c017f9d2e27b7029b4a1bf35f1659956db88f3 DIST rime-middle-chinese-1.0.20250124.tar.gz 137940 BLAKE2B 72e8a0b19a432505a68bfae4d72b657216e5ddb3361a756b6b2eabde6d94c0c863a635c2bcbcca446b6363361e2add93c04dbdc161368aae75d749aa35a47506 SHA512 dabcf2683e54dcf44e6ce7a89da6b1d808a210ca20fbe131f793bb0c9d51213c3514f231b944adf4495aa8fe2a43d7ae984d83dc90fa49a0e4bd6279df9cd009 DIST rime-middle-chinese-1.0.20251206.tar.gz 137940 BLAKE2B 72e8a0b19a432505a68bfae4d72b657216e5ddb3361a756b6b2eabde6d94c0c863a635c2bcbcca446b6363361e2add93c04dbdc161368aae75d749aa35a47506 SHA512 dabcf2683e54dcf44e6ce7a89da6b1d808a210ca20fbe131f793bb0c9d51213c3514f231b944adf4495aa8fe2a43d7ae984d83dc90fa49a0e4bd6279df9cd009 DIST rime-middle-chinese-1.0.20260703.tar.gz 137940 BLAKE2B 72e8a0b19a432505a68bfae4d72b657216e5ddb3361a756b6b2eabde6d94c0c863a635c2bcbcca446b6363361e2add93c04dbdc161368aae75d749aa35a47506 SHA512 dabcf2683e54dcf44e6ce7a89da6b1d808a210ca20fbe131f793bb0c9d51213c3514f231b944adf4495aa8fe2a43d7ae984d83dc90fa49a0e4bd6279df9cd009 +DIST rime-middle-chinese-1.0.20260826.tar.gz 137940 BLAKE2B 72e8a0b19a432505a68bfae4d72b657216e5ddb3361a756b6b2eabde6d94c0c863a635c2bcbcca446b6363361e2add93c04dbdc161368aae75d749aa35a47506 SHA512 dabcf2683e54dcf44e6ce7a89da6b1d808a210ca20fbe131f793bb0c9d51213c3514f231b944adf4495aa8fe2a43d7ae984d83dc90fa49a0e4bd6279df9cd009 DIST rime-pinyin-simp-1.0.20250124.tar.gz 545333 BLAKE2B 9871245ea78e9d1601ebc4361635fb3cab9835c8a0851f10e5d54f99ddbca1b7ddb469281e1a11a669bfd666cce824690da77422a530ac229d06460168cc487c SHA512 215401d67dfc777475a3e46b066e07df53c3e8a783b9067e6b6cb25ff0fe8c23f03b2db18e86eb9fe0febeacbe9a89bb9073610f2ae3c90a5f33e27cebb3328f DIST rime-pinyin-simp-1.0.20251206.tar.gz 545333 BLAKE2B 9871245ea78e9d1601ebc4361635fb3cab9835c8a0851f10e5d54f99ddbca1b7ddb469281e1a11a669bfd666cce824690da77422a530ac229d06460168cc487c SHA512 215401d67dfc777475a3e46b066e07df53c3e8a783b9067e6b6cb25ff0fe8c23f03b2db18e86eb9fe0febeacbe9a89bb9073610f2ae3c90a5f33e27cebb3328f DIST rime-pinyin-simp-1.0.20260703.tar.gz 545333 BLAKE2B 9871245ea78e9d1601ebc4361635fb3cab9835c8a0851f10e5d54f99ddbca1b7ddb469281e1a11a669bfd666cce824690da77422a530ac229d06460168cc487c SHA512 215401d67dfc777475a3e46b066e07df53c3e8a783b9067e6b6cb25ff0fe8c23f03b2db18e86eb9fe0febeacbe9a89bb9073610f2ae3c90a5f33e27cebb3328f +DIST rime-pinyin-simp-1.0.20260826.tar.gz 545333 BLAKE2B 9871245ea78e9d1601ebc4361635fb3cab9835c8a0851f10e5d54f99ddbca1b7ddb469281e1a11a669bfd666cce824690da77422a530ac229d06460168cc487c SHA512 215401d67dfc777475a3e46b066e07df53c3e8a783b9067e6b6cb25ff0fe8c23f03b2db18e86eb9fe0febeacbe9a89bb9073610f2ae3c90a5f33e27cebb3328f DIST rime-prelude-1.0.20250124.tar.gz 18313 BLAKE2B 09e926f77abc5a4fcc55d6f6f27f1b8b2e1a69317d8cb4a2656eecd416c1b7139a0de65d7eea30afaf342566753daa2be0c88104cf2c05d78cb26d0b567c9f04 SHA512 0cf701db3ca87ed15022428ba516d939cd10d4b97cb6d4ecdafaec70399c60f9d58a4f8b96e8fb8159534514bbf4e3b2206ec0cfac094d8039c0040ce79dc093 DIST rime-prelude-1.0.20251206.tar.gz 18340 BLAKE2B b7569d5c4f2a5f447bacd466f85b82e4a78ac79924374d7f061671994ecae2aa8ce807b7a7289710d71143fd5c7dea56918eb5674483f2a8e6cba73ad813a6d0 SHA512 a255e1eba62e31ba82c32182be2d387d6b52006befd42eadb2b8a0721aac32ab36618021192cbc9f3fb6d81e9dea2e69122c0fccb7f60b1a98c180f760912d33 DIST rime-prelude-1.0.20260703.tar.gz 18436 BLAKE2B 28223dd762428c84b3965c15a65becd15936b504a9ed36b3ef9e105228ebe95b2a8a91e696e9bb874307a10d73c1d75cb4d79bf148178d9a198ce460620bf8d6 SHA512 65b8b9ba8f0b84217da07ef8425f6a13e801b9a16d7b4380b122ab6189fa6956b4eb3187d20373a1ece6d2248d9cc52d0d4baa2c3ba05190137498de8ce9cce7 +DIST rime-prelude-1.0.20260826.tar.gz 18436 BLAKE2B 28223dd762428c84b3965c15a65becd15936b504a9ed36b3ef9e105228ebe95b2a8a91e696e9bb874307a10d73c1d75cb4d79bf148178d9a198ce460620bf8d6 SHA512 65b8b9ba8f0b84217da07ef8425f6a13e801b9a16d7b4380b122ab6189fa6956b4eb3187d20373a1ece6d2248d9cc52d0d4baa2c3ba05190137498de8ce9cce7 DIST rime-quick-1.0.20250124.tar.gz 151060 BLAKE2B 80adf8a416969d5623400b06721e5bb4dc0a972d0a0ef09e10bbb2c6dfbb7d92c89503b60d59413e425cbb097f0c2d00cbdd932372c7c664846cc8e48958c632 SHA512 d693b90b76cf3dc72e84bb378e3b1a35850bed9edec45bfb321bf800561bd03fdf34ea41bc7ca8da53b02579de111da394a6aa4493989a4a4bde2eb0e2d7d485 DIST rime-quick-1.0.20251206.tar.gz 151060 BLAKE2B 80adf8a416969d5623400b06721e5bb4dc0a972d0a0ef09e10bbb2c6dfbb7d92c89503b60d59413e425cbb097f0c2d00cbdd932372c7c664846cc8e48958c632 SHA512 d693b90b76cf3dc72e84bb378e3b1a35850bed9edec45bfb321bf800561bd03fdf34ea41bc7ca8da53b02579de111da394a6aa4493989a4a4bde2eb0e2d7d485 DIST rime-quick-1.0.20260703.tar.gz 38764 BLAKE2B c64a326ac0b6bdb93e07ebd23767a92ff94c1ebe299d4e4108f92c2210c8e4bd6f5e1e550e7d5fd7ed4cb3610ac265410907703ed443259d04f0841ad091ebb4 SHA512 eec051a3063b9a27304b848229a0191f94d0d178ba5a4f11fe15b58700ac18dcc7587530c6da6cd7b4387218996a989b76a2ccbe931fbe184b8242d836969912 +DIST rime-quick-1.0.20260826.tar.gz 38805 BLAKE2B dca28dae162416f23c3c1f87ad2a94c25b0f95b4942842621cdf11ed530933fd91f5254a811f9de1b49d65246d220ec3f077833ce3d26335bf3424a3e9a7d286 SHA512 73343245f508ca63c8e9071782659418c65ef21df90f2d5161bb4929672407ecce77b78d8b82844242299e866f233922b7a0444c9d53ea48b7963e226155c4a8 DIST rime-scj-1.0.20250124.tar.gz 228601 BLAKE2B ca68ce8b08edc4c1cb5dae0d3f50a4a66adb9dd6dea49260ef4b0f14b16cb0b7b6555c89de1d332a68f8641c031ada602ebc4946851ff141b14f0fdf41f6d364 SHA512 396e8c1cb0679078afaced1bb8525446340bda02bbcc42e48ccc2414b1830439a2599e8ea2a4ae15b47fd9f488ba52eec342596f1c5efa074955f274cf69728d DIST rime-scj-1.0.20251206.tar.gz 228601 BLAKE2B ca68ce8b08edc4c1cb5dae0d3f50a4a66adb9dd6dea49260ef4b0f14b16cb0b7b6555c89de1d332a68f8641c031ada602ebc4946851ff141b14f0fdf41f6d364 SHA512 396e8c1cb0679078afaced1bb8525446340bda02bbcc42e48ccc2414b1830439a2599e8ea2a4ae15b47fd9f488ba52eec342596f1c5efa074955f274cf69728d DIST rime-scj-1.0.20260703.tar.gz 228601 BLAKE2B ca68ce8b08edc4c1cb5dae0d3f50a4a66adb9dd6dea49260ef4b0f14b16cb0b7b6555c89de1d332a68f8641c031ada602ebc4946851ff141b14f0fdf41f6d364 SHA512 396e8c1cb0679078afaced1bb8525446340bda02bbcc42e48ccc2414b1830439a2599e8ea2a4ae15b47fd9f488ba52eec342596f1c5efa074955f274cf69728d +DIST rime-scj-1.0.20260826.tar.gz 228601 BLAKE2B ca68ce8b08edc4c1cb5dae0d3f50a4a66adb9dd6dea49260ef4b0f14b16cb0b7b6555c89de1d332a68f8641c031ada602ebc4946851ff141b14f0fdf41f6d364 SHA512 396e8c1cb0679078afaced1bb8525446340bda02bbcc42e48ccc2414b1830439a2599e8ea2a4ae15b47fd9f488ba52eec342596f1c5efa074955f274cf69728d DIST rime-soutzoe-1.0.20250124.tar.gz 37388 BLAKE2B 2eaecd629ae4b00b9ecb73eb58a77bd123906c45fa71318aa0468caefca3aa151181be7766cccc81a6aba260def897a7c58032257a517443c3da3dba91cb6996 SHA512 5141fe76deffe40a22e2c3013d6f4b47e6e65c6f652b85aa0401612a78384430f78e1031d894a735903ece9d8e319b836c9388edd05a0593f23d7961bea92a04 DIST rime-soutzoe-1.0.20251206.tar.gz 37388 BLAKE2B 2eaecd629ae4b00b9ecb73eb58a77bd123906c45fa71318aa0468caefca3aa151181be7766cccc81a6aba260def897a7c58032257a517443c3da3dba91cb6996 SHA512 5141fe76deffe40a22e2c3013d6f4b47e6e65c6f652b85aa0401612a78384430f78e1031d894a735903ece9d8e319b836c9388edd05a0593f23d7961bea92a04 DIST rime-soutzoe-1.0.20260703.tar.gz 37388 BLAKE2B 2eaecd629ae4b00b9ecb73eb58a77bd123906c45fa71318aa0468caefca3aa151181be7766cccc81a6aba260def897a7c58032257a517443c3da3dba91cb6996 SHA512 5141fe76deffe40a22e2c3013d6f4b47e6e65c6f652b85aa0401612a78384430f78e1031d894a735903ece9d8e319b836c9388edd05a0593f23d7961bea92a04 +DIST rime-soutzoe-1.0.20260826.tar.gz 37388 BLAKE2B 2eaecd629ae4b00b9ecb73eb58a77bd123906c45fa71318aa0468caefca3aa151181be7766cccc81a6aba260def897a7c58032257a517443c3da3dba91cb6996 SHA512 5141fe76deffe40a22e2c3013d6f4b47e6e65c6f652b85aa0401612a78384430f78e1031d894a735903ece9d8e319b836c9388edd05a0593f23d7961bea92a04 DIST rime-stenotype-1.0.20250124.tar.gz 15311 BLAKE2B edfc0989e9a86b7664b5316270fafb2f8c3f45af6ad757a1ad89d30ce4b93aa8cb20c86f62692adabdcbd33bce67022ecaf3e1bc34ffddd2ea0b497dca9ba2c3 SHA512 4c01a70348e0e28b0b0e33f605e22e6017c9870f4e218fcc1fe36c2d480796461b3f74edb7501d78bebbaa9b05f62524c792b10c3ac42d89f39ed6a99b1426c2 DIST rime-stenotype-1.0.20251206.tar.gz 15378 BLAKE2B 95ede56ed58ea7d51ae91309f9a4b37bd141cffa6e4916f5021823829a74434d1e4c6b489c18a92b768402c5fb2d5a2c85cfdb79fff8773850e665203cfab510 SHA512 b0d86a559f57f353f293ee2591bdb05cda97dbd87b0e5fafc35a32233eee3560c060d998715455fefd856d5ea3b01ea4406d144db28d6a4d5e86682dc69f8674 DIST rime-stenotype-1.0.20260703.tar.gz 15378 BLAKE2B 95ede56ed58ea7d51ae91309f9a4b37bd141cffa6e4916f5021823829a74434d1e4c6b489c18a92b768402c5fb2d5a2c85cfdb79fff8773850e665203cfab510 SHA512 b0d86a559f57f353f293ee2591bdb05cda97dbd87b0e5fafc35a32233eee3560c060d998715455fefd856d5ea3b01ea4406d144db28d6a4d5e86682dc69f8674 +DIST rime-stenotype-1.0.20260826.tar.gz 15378 BLAKE2B 95ede56ed58ea7d51ae91309f9a4b37bd141cffa6e4916f5021823829a74434d1e4c6b489c18a92b768402c5fb2d5a2c85cfdb79fff8773850e665203cfab510 SHA512 b0d86a559f57f353f293ee2591bdb05cda97dbd87b0e5fafc35a32233eee3560c060d998715455fefd856d5ea3b01ea4406d144db28d6a4d5e86682dc69f8674 DIST rime-stroke-1.0.20250124.tar.gz 707487 BLAKE2B 184f3f07d6a5a7992dbedb225c681446f6e66d988f3bba01aeca520f323103ac98e0e4c0ac71416938d6ca83aae1a2acdfc83035086b8ff3c7665e730f40744f SHA512 a859d7b47c658e8d1a4269b2f99f7ec757937a5060de2213d19e9029b15e93006988194483b238759ccaa54e0da2e9c4fb1d6e2e368eeb366f23f7e36dfe4f99 DIST rime-stroke-1.0.20251206.tar.gz 1068311 BLAKE2B 4e1c86cb59b47dc9d813be26a66079dfccce2f480db89f1a5b477e9a97927ebd7fc4f858490300065e933619133dc99543b2aeb344e46e2d717145ec2e9a39b2 SHA512 8578896613094817e11da5a025eebea3010280a3b732b070d8c7af756aa9e1df4367d90b2867d1989d743f7a1efd4f35c1bca5d62fcbd18b156bd3e15546910e DIST rime-stroke-1.0.20260703.tar.gz 1068311 BLAKE2B 4e1c86cb59b47dc9d813be26a66079dfccce2f480db89f1a5b477e9a97927ebd7fc4f858490300065e933619133dc99543b2aeb344e46e2d717145ec2e9a39b2 SHA512 8578896613094817e11da5a025eebea3010280a3b732b070d8c7af756aa9e1df4367d90b2867d1989d743f7a1efd4f35c1bca5d62fcbd18b156bd3e15546910e +DIST rime-stroke-1.0.20260826.tar.gz 1068296 BLAKE2B ea9587f587086fc3270c95f8ee08d27c7d58ba6b5bf0325c85bbfb89fa35cfd0342558a0f299c4d580961a7e61f4dcf8790dcf7e63d1b4989112c760979e1ebf SHA512 8cbf176974e16a07a654c51333d0b0d5d961933530eb0e2b2d34f8b034fb3ee03ef8e3fa3b329838b620913d0f2faf35455ed38a112078cd5af814f4c858efae DIST rime-terra-pinyin-1.0.20250124.tar.gz 730673 BLAKE2B 53f2b2e5f4076db40d40e9c6d7d6c45b6ae906a7e8c5f9fdbb09f384035bda9e084a96ed6e11977b4851392c87deea605886a10a449b8dc96f12b742524ebb3b SHA512 bf77828acab2452f35106296c48c09b417c70cd8e7764d72beb41adfb57d3063b866e156aac7faa5b224a0e28ad20f27d02dafdc8d517ff7055c199e5e0e093a DIST rime-terra-pinyin-1.0.20251206.tar.gz 731199 BLAKE2B d117789b75678135cfd681413835bec4489dbaf2b7a68f1b194b177a2ff1bbf81a1fdaf1ca4dead501ad8983c94d063fdf7768ba206ac766a7d61914d37407e3 SHA512 67a57fcbdbb4a6f314cee30116c4f6afe51317d52134a4f76c7da7462fbcafbc6608d8d61431a9408605c4623f6b9009a03b703bd6186bce791eb909002dbdbf DIST rime-terra-pinyin-1.0.20260703.tar.gz 731214 BLAKE2B f3ce35d7b478655a2e8f3402c284c151a9f93d118f42e1f4c7df0d433031992109a5194d34d04623d6f235021138a410866d8c7b420a2b9cfb36379ebf414896 SHA512 27178f18dceaa9e9f2c1226a3808d867eb55f01d602dd3a689020b7cb3410213d9f93bf9364199a1dd09004c0eebb4c0cd74ef68826436b72d4471c426f19e5f +DIST rime-terra-pinyin-1.0.20260826.tar.gz 731178 BLAKE2B 37490b27ed24bace91faff9c9cfaecc1015cad4320db00d99ba99db4ab795d4cfbe7fcc4bca657cc958f458f2e8e7ac68a9d0c1d9ecd6581e70e65336b2c56aa SHA512 3e4aba3b25830235bf794c2bd1fd83ea5fc8082a287254cda2107111a832eed91446e27b88b335e304abfcbe8e1361cdaf0576d804b4d38dd1904ca228aff5c5 DIST rime-wubi-1.0.20250124.tar.gz 1093293 BLAKE2B ae3551bb51824e6c4fea52a18793acf477b48b827df24ad16b24fd5265d2567a35c70f4b09082247fcce5de6f7433fc19bcf3e43f2adf2683aeac658f9f13beb SHA512 f535a15f1a52b7173b42d72fec58cbb68887be590cee1a2a6b1d883dec377d61cf17ece68f0c400dec26b55fd0ac2744d0fb835d8c9129245ddc985fa256ebb8 DIST rime-wubi-1.0.20251206.tar.gz 1093293 BLAKE2B ae3551bb51824e6c4fea52a18793acf477b48b827df24ad16b24fd5265d2567a35c70f4b09082247fcce5de6f7433fc19bcf3e43f2adf2683aeac658f9f13beb SHA512 f535a15f1a52b7173b42d72fec58cbb68887be590cee1a2a6b1d883dec377d61cf17ece68f0c400dec26b55fd0ac2744d0fb835d8c9129245ddc985fa256ebb8 DIST rime-wubi-1.0.20260703.tar.gz 1093293 BLAKE2B ae3551bb51824e6c4fea52a18793acf477b48b827df24ad16b24fd5265d2567a35c70f4b09082247fcce5de6f7433fc19bcf3e43f2adf2683aeac658f9f13beb SHA512 f535a15f1a52b7173b42d72fec58cbb68887be590cee1a2a6b1d883dec377d61cf17ece68f0c400dec26b55fd0ac2744d0fb835d8c9129245ddc985fa256ebb8 +DIST rime-wubi-1.0.20260826.tar.gz 1093293 BLAKE2B ae3551bb51824e6c4fea52a18793acf477b48b827df24ad16b24fd5265d2567a35c70f4b09082247fcce5de6f7433fc19bcf3e43f2adf2683aeac658f9f13beb SHA512 f535a15f1a52b7173b42d72fec58cbb68887be590cee1a2a6b1d883dec377d61cf17ece68f0c400dec26b55fd0ac2744d0fb835d8c9129245ddc985fa256ebb8 DIST rime-wugniu-1.0.20250124.tar.gz 268955 BLAKE2B c1dc03f1e27716ee4725e031c570a67da3f2543ec760d624f19e0f40cb44089ddedd10ee226dfe4211d8f7b29c0c66db640f41794dbf09c5543f669ae132715f SHA512 257d4bd8d62dda5bce4beb39879fc46b4981590ce16d347ad3e2441f1b9bacabfe3772d8e0cf134a4a70b7dd5490e6bb6b6526e0e45d58d22730217e23407095 DIST rime-wugniu-1.0.20251206.tar.gz 268955 BLAKE2B c1dc03f1e27716ee4725e031c570a67da3f2543ec760d624f19e0f40cb44089ddedd10ee226dfe4211d8f7b29c0c66db640f41794dbf09c5543f669ae132715f SHA512 257d4bd8d62dda5bce4beb39879fc46b4981590ce16d347ad3e2441f1b9bacabfe3772d8e0cf134a4a70b7dd5490e6bb6b6526e0e45d58d22730217e23407095 DIST rime-wugniu-1.0.20260703.tar.gz 268954 BLAKE2B a5c079b2a47773ba26c3df3e5f61c40bf0035cdfdb20b202637097b56b0b9e2997fbed44062af5455f1c96ab75b73533745e093a86420ca7d0b74c72382326c8 SHA512 2ac628efdd7081a58e2db2badcfad20950b8f02ced8b79465b2c4fb8066527bd3beb450cfb592f8cd12783efc7c462c1e09d75bf88a65b4c5f2fdf3ca6c8bc34 +DIST rime-wugniu-1.0.20260826.tar.gz 268954 BLAKE2B a5c079b2a47773ba26c3df3e5f61c40bf0035cdfdb20b202637097b56b0b9e2997fbed44062af5455f1c96ab75b73533745e093a86420ca7d0b74c72382326c8 SHA512 2ac628efdd7081a58e2db2badcfad20950b8f02ced8b79465b2c4fb8066527bd3beb450cfb592f8cd12783efc7c462c1e09d75bf88a65b4c5f2fdf3ca6c8bc34 diff --git a/app-i18n/rime-data/rime-data-1.0.20260826.ebuild b/app-i18n/rime-data/rime-data-1.0.20260826.ebuild new file mode 100644 index 000000000000..7a7d9fa55a13 --- /dev/null +++ b/app-i18n/rime-data/rime-data-1.0.20260826.ebuild @@ -0,0 +1,84 @@ +# Copyright 2024-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +declare -A PKGS=( + [rime-essay]=0debef3f5ae37f081758dd8bbd1fe79719410f7c + [rime-bopomofo]=6085c9a38a4a728047862b33d67eee18aa86f3b9 + [rime-cangjie]=52d90a1b1312e74042b38c1cbc8142defbc53171 + [rime-luna-pinyin]=56b934b099dfbeab842320f13aa8b461a6ab3e42 + [rime-prelude]=082425ea0684bca36474415d4a0e8db9b016487e + [rime-stroke]=1e8fff9b9494ddec23b0cbc526bcfd8171a6fd48 + [rime-terra-pinyin]=8a2c895ad7ee8e2b137d91be77f18f86b04d7fc9 +) +declare -A PKGS_EXTRA=( + [rime-array]=557dbe38381de174fe96e53e9bf8c863a275307c + [rime-cantonese]=259f0e48bba840c3a2e0d117539e96937f3d89bc + [rime-combo-pinyin]=862894a75b6f7bce9038ed6fb8f1e906bb2b1e04 + [rime-double-pinyin]=01a13287cbd27819be1c34fa1ddc1b3643d5001b + [rime-emoji]=d1dbb424124fc50452a179300c7f287dbcc0db64 + [rime-ipa]=22b71710e029bcb412e9197192a638ab11bc2abf + [rime-middle-chinese]=582e144e525525ac2b6c2498097d7c7919e84174 + [rime-pinyin-simp]=0c6861ef7420ee780270ca6d993d18d4101049d0 + [rime-quick]=5dcdb9e353d314239e9c8cddc0f42d52da4837bb + [rime-scj]=cab5a0858765eff0553dd685a2d61d5536e9149c + [rime-soutzoe]=beeaeca72d8e17dfd1e9af58680439e9012987dc + [rime-stenotype]=bef930831ffe97846fa484a81014ad3e465a25c1 + [rime-wubi]=152a0d3f3efe40cae216d1e3b338242446848d07 + [rime-wugniu]=2818f4812af3b6f11fc0248fa8918966a3312d2c +) + +generate_src_uri() { + local -n LIST=$1 + local pkg + for pkg in "${!LIST[@]}"; do + SRC_URI+=" https://github.com/rime/${pkg}/archive/${LIST[$pkg]}.tar.gz -> ${pkg}-${PV}.tar.gz" + done +} + +DESCRIPTION="Data resources for Rime Input Method Engine" +HOMEPAGE="https://rime.im/ https://github.com/rime/plum" + +generate_src_uri PKGS +SRC_URI+=" extra? ( " +generate_src_uri PKGS_EXTRA +SRC_URI+=" )" + +S=${WORKDIR} + +# LGPL-3 : +# essay bopomofo cangjie emoji ipa +# luna-pinyin prelude quick stroke terra-pinyin wubi +# GPL-3 : +# array combo-pinyin double-pinyin middle-chinese +# scj soutzoe stenotype wugniu +# Apache-2 : +# rime-pinyin-simp +# CC-BY-4.0 : +# rime-cantonese +LICENSE="GPL-3 LGPL-3 extra? ( Apache-2.0 CC-BY-4.0 )" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" + +IUSE="extra" + +src_install() { + insinto "/usr/share/rime-data" + + _install_pkgs() { + local -n LIST=$1 + local pkg f + for pkg in "${!LIST[@]}"; do + doins "${pkg}-${LIST[$pkg]}"/*[!AUTHORS\|LICENSE\|README.md\|check.py] + for f in AUTHORS LICENSE README.md; do + if [[ -f "${pkg}-${LIST[$pkg]}/${f}" ]]; then + newdoc "${pkg}-${LIST[$pkg]}/${f}" "${pkg}_${f}" + fi + done + done + } + + _install_pkgs PKGS + use extra && _install_pkgs PKGS_EXTRA +} diff --git a/app-text/nuspell/Manifest b/app-text/nuspell/Manifest index 6a0724222621..c28237e16540 100644 --- a/app-text/nuspell/Manifest +++ b/app-text/nuspell/Manifest @@ -1,3 +1,4 @@ DIST nuspell-5.1.6.tar.gz 373260 BLAKE2B 978f1055c4e8f68a1e7e712b98af11b5f9a4be3b42044d7d31733cf30d301145da501da95168e1c96518bba6e0f2d525a6929d5fa81f350828158e6db7dad147 SHA512 ab6d9394a55d9a2a347ccae47aeef6a96af70f421ad6ea8f7ac7fde2052790f37fb1c7ec3112daac7600d193430a560cb1915ab6557c9353717f65cb32f13ab8 DIST nuspell-5.1.7.tar.gz 339465 BLAKE2B 653238057e23049834054ae162ed313e4e431d6e7711511e00168d96af74efa473a6181e167afa9005ff28566710d4cee15f8acb0bae0ee508ead99f790f2f09 SHA512 cb030dca90a52000a7cf4ea7f15e10ee90aec59e56e8212f8ba69f37e070f1100390393191cdbbf88b14836f408c8eb2fb9712be3d472491b1c93dd5cedd9a40 DIST nuspell-5.1.8.tar.gz 339640 BLAKE2B 733da7d3f8f2a58aab0d202de36037abce3ed7d72217b53cbcffd9362e47a838ba00169207801b5b7c326de93c38b3879f80c042f71cf27c4d9e44794b871b07 SHA512 1973fb0fd9c807b3bb4e9f49c792847741443e43035e83a79226ed041b8350ea8ca8855d2e204b5f3c9257d07ab853fd2077165731548dfd2e5521e36079db68 +DIST nuspell-5.1.9.tar.gz 339740 BLAKE2B ae21b3b4f75b76e8ca4f185e9afafe1b4406d625da62a96e20d58f9ff5d413124ed9e2128d81f6a84b45775b560c3c06ddb5b2d34033a2a5c8a3519fd07a768b SHA512 42b00631a15777bcdd65182e9032e99f41064413d9cc5109753b435e60c92dffce495402333aae7f4a3dd67588c9b1a96294d00e212b103a85d60070cb30c7e8 diff --git a/app-text/nuspell/nuspell-5.1.9.ebuild b/app-text/nuspell/nuspell-5.1.9.ebuild new file mode 100644 index 000000000000..ebe528846b26 --- /dev/null +++ b/app-text/nuspell/nuspell-5.1.9.ebuild @@ -0,0 +1,51 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="Spell checker library and CLI for complex natural languages" +HOMEPAGE="https://nuspell.github.io/ https://github.com/nuspell/nuspell" +SRC_URI="https://github.com/nuspell/nuspell/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="LGPL-3+" +SLOT="0/5" # due to libnuspell.so.5 +KEYWORDS="~amd64 ~loong ~riscv ~x86" +IUSE="doc test" + +RDEPEND=">=dev-libs/icu-60" +DEPEND="${RDEPEND} + doc? ( app-text/doxygen virtual/pandoc ) + test? ( >=dev-cpp/catch-3.1.1:0 ) + " + +DOCS=( CHANGELOG.md ) + +RESTRICT="!test? ( test )" + +src_prepare() { + if ! use test ; then + rm -R external/hunspell/ || die + fi + cmake_src_prepare +} + +src_configure() { + local mycmakeargs=( + -DBUILD_DOCS=$(usex doc) + -DBUILD_TESTING=$(usex test) + ) + + cmake_src_configure +} + +pkg_postinst() { + einfo + einfo 'Nuspell needs language packs and/or dictionaries to be of use' + einfo 'e.g. package app-dicts/myspell-en or one of its siblings.' + einfo + einfo 'Besides MySpell dictionaries, for other options please' + einfo 'see https://nuspell.github.io/#languages-and-users .' + einfo +} diff --git a/dev-perl/Crypt-DSA-GMP/Crypt-DSA-GMP-0.20.0.ebuild b/dev-perl/Crypt-DSA-GMP/Crypt-DSA-GMP-0.20.0.ebuild index 2a4cae5174de..242350e512d4 100644 --- a/dev-perl/Crypt-DSA-GMP/Crypt-DSA-GMP-0.20.0.ebuild +++ b/dev-perl/Crypt-DSA-GMP/Crypt-DSA-GMP-0.20.0.ebuild @@ -10,7 +10,7 @@ inherit perl-module DESCRIPTION="DSA Signatures and Key Generation" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="amd64 x86" RDEPEND=" dev-perl/Crypt-Random-Seed diff --git a/dev-perl/Crypt-OpenPGP/Crypt-OpenPGP-1.210.0.ebuild b/dev-perl/Crypt-OpenPGP/Crypt-OpenPGP-1.210.0.ebuild index 94906c68350d..892ddeb56879 100644 --- a/dev-perl/Crypt-OpenPGP/Crypt-OpenPGP-1.210.0.ebuild +++ b/dev-perl/Crypt-OpenPGP/Crypt-OpenPGP-1.210.0.ebuild @@ -10,7 +10,7 @@ inherit perl-module DESCRIPTION="Pure-Perl OpenPGP-compatible PGP implementation" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="amd64 x86" # Note: Don't depend on Alt::, non Alt:: works for now RDEPEND=" diff --git a/dev-perl/Math-Prime-Util-GMP/Math-Prime-Util-GMP-0.530.0.ebuild b/dev-perl/Math-Prime-Util-GMP/Math-Prime-Util-GMP-0.530.0.ebuild index 43f5d5c70ccc..40fc71b98413 100644 --- a/dev-perl/Math-Prime-Util-GMP/Math-Prime-Util-GMP-0.530.0.ebuild +++ b/dev-perl/Math-Prime-Util-GMP/Math-Prime-Util-GMP-0.530.0.ebuild @@ -10,7 +10,7 @@ inherit perl-module DESCRIPTION="Utilities related to prime numbers and factoring, using GMP" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="amd64 x86" RDEPEND=" dev-libs/gmp:= diff --git a/dev-python/alembic/Manifest b/dev-python/alembic/Manifest index 37b611eeadb1..d630b9f74f99 100644 --- a/dev-python/alembic/Manifest +++ b/dev-python/alembic/Manifest @@ -1,4 +1,4 @@ -DIST alembic-1.18.5.tar.gz 2060480 BLAKE2B cc85b5ebd73920c8f0afe2b9884aab1f30718b94a7ccb4b117186a9088b4141dce27dd505ce5c3015f3b93cabc837ad33e0905117ceee34fde77782b45875a6b SHA512 41d9675e2c99d339e2aa92e670acc0d562ab6a23d2006f2180478fa912ede643be959ca89713678adffe37deb20118a0d67ea7c023b2dea15d3acb5be18721fc DIST alembic-1.19.0.tar.gz 2069906 BLAKE2B b7f08fbc1023101ca709ee5f6bb82514621a46b18d9c22ad26d9d00c0231cb51186a25c1db0b37943bdb55ea6b2d3c25637ab92667193cd0e85b8f574144dbfc SHA512 7674acbd3bccef780a0b987fdecf7cb3439dc65f58dfeb1d4773c04f81625cbca80152a7a802e54a8cb57b58554f908671feae9680e1fa3567a9f53617c94eef DIST alembic-1.19.1.tar.gz 2070816 BLAKE2B b6e2a7189ae5ca980a9f398464bac175501d51932d952b456d6c0ee67d9917a16ced95b669ddb480c24c7bee531b4c1528839894b38e05497b834c48f5dc3252 SHA512 d394e3626c02f06903fe45f4d60c89dfecc68cc45f539e9fca06015726a39cdcd03fbb4a57cf7cc19d0853f6a687b9d2afa1b15e5b54a552b113ad6b7535de6a DIST alembic-1.19.2.tar.gz 2082643 BLAKE2B 649f08694658c0974c59a04ac059fee1520e58975bc264c7f2c2834934be855c5b22eab636d23845baebacf929a46fb67a99ac5c3a1660205f83df93e61c93b1 SHA512 c6ae515303f5106bf357c92ff979c9960a682b086c91423d467565613e8011be17db90b13c298f237e37d5a598b32fa9aa0251e5499e4aaf6626b66ea4e41bc8 +DIST alembic-1.20.0.tar.gz 2093272 BLAKE2B 85ed0b3703a6080548a974ade247f60fe322d1b959aceecbce9120cae42b59c995e60e9f413d3afedce59a6f36ce06f5143899f1be477ae05cf83ebbe69618b0 SHA512 d81b45783104ed5a349ae53dfbb07dd90bd9a3bd7f2f9c91e9f5005733949a684afec0cd03518475308b527f146164ded4160b5d26c096f6c595d1ffd2d4bab2 diff --git a/dev-python/alembic/alembic-1.18.5.ebuild b/dev-python/alembic/alembic-1.20.0.ebuild index 4500ba72f4a7..0dead21950f2 100644 --- a/dev-python/alembic/alembic-1.18.5.ebuild +++ b/dev-python/alembic/alembic-1.20.0.ebuild @@ -16,11 +16,11 @@ HOMEPAGE=" LICENSE="MIT" SLOT="0" -KEYWORDS="amd64 arm64 ~riscv x86" +KEYWORDS="~amd64 ~arm64 ~riscv ~x86" IUSE="doc" RDEPEND=" - >=dev-python/sqlalchemy-1.4.23[${PYTHON_USEDEP}] + >=dev-python/sqlalchemy-2.0[${PYTHON_USEDEP}] dev-python/mako[${PYTHON_USEDEP}] >=dev-python/typing-extensions-4.12[${PYTHON_USEDEP}] " diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest index d10526f854ec..05788faf236a 100644 --- a/dev-python/boto3/Manifest +++ b/dev-python/boto3/Manifest @@ -13,3 +13,4 @@ DIST boto3-1.43.89.gh.tar.gz 1225424 BLAKE2B 625bb37a542644c8fe37aab42a115bf8be2 DIST boto3-1.43.90.gh.tar.gz 1226424 BLAKE2B 027f90499bd5b8e3389b65dbe06b3221efae0df3809b7b364edaec6e7c33082043fbcf8ae69f48b55ab46fb161a7c707c17a61558ce503a9ebf1ab883857967a SHA512 aa68333b98d43e4fe04b1f8fc23098bb252286e6cc57332e592a26b551ec75f75165e790ddbf37a15ca406b7ba82a24c470a11f46377c10a58b0da1a470cd34d DIST boto3-1.43.91.gh.tar.gz 1227750 BLAKE2B cc3273f932ae1c6f5a75211f52fcf2b1b7c33562a7c71d4cb3efeb4b20f8da47ae503f2e7542d925913e4107cb7340d2e2ebcf7e1f7ea6424481b9e06a0e405d SHA512 9aa16e9b42ca0b5fcfed14f1f5db0ddb5e1950c04da80231b25d3374ca770a146cabda3e7052b358ca721d17b29dbb2496bdee44201022001ccacf4cd7d7ee29 DIST boto3-1.43.92.gh.tar.gz 1229218 BLAKE2B 1286e2d3a0d6e9f557660c6ad611e149d63fdaab11224ee9eb3bbae72a1108253cc631f44307d0790a3296f0ae99a8d4572a77c353d42a69527f9929dad0b51e SHA512 fd2caee8ba3d5a7fe7299496068d2e46d2b8a247ca5e554602d4dea81a4261f7b412fa6c8f0377bc08b9ac6b4e9ff87a8814951059f2fcec86ae4f7bdbe31cf6 +DIST boto3-1.43.93.gh.tar.gz 1230597 BLAKE2B 183d94cea0d706147a75674cb85a600ad21c2683618ba18a14e8630f23b19c94c11d0bc03ddc517194dad42dfb9445d1b34076b1f1b3ecbcec51ceccf30e5db0 SHA512 01612175497aada3b3fdf62ffcdb0626dc0fd5090d7d156d2a1f5fad4ec19b904ffecfd4b59880cf71ec07658bf00c2245bdd3c989a7513689ab59a2511e06ea diff --git a/dev-python/boto3/boto3-1.43.93.ebuild b/dev-python/boto3/boto3-1.43.93.ebuild new file mode 100644 index 000000000000..93fbbe6dd59b --- /dev/null +++ b/dev-python/boto3/boto3-1.43.93.ebuild @@ -0,0 +1,53 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{13..14} ) + +inherit distutils-r1 + +DESCRIPTION="The AWS SDK for Python" +HOMEPAGE=" + https://github.com/boto/boto3/ + https://pypi.org/project/boto3/ +" +SRC_URI=" + https://github.com/boto/boto3/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86" + +RDEPEND=" + >=dev-python/botocore-${PV}[${PYTHON_USEDEP}] + >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}] + >=dev-python/s3transfer-0.19.0[${PYTHON_USEDEP}] +" + +EPYTEST_PLUGINS=() +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +python_prepare_all() { + # don't lock versions to narrow ranges + sed -e '/botocore/ d' \ + -e '/jmespath/ d' \ + -e '/s3transfer/ d' \ + -i setup.py || die + + # do not rely on bundled deps in botocore (sic!) + find -name '*.py' -exec sed -i \ + -e 's:from botocore[.]vendored import:import:' \ + -e 's:from botocore[.]vendored[.]:from :' \ + {} + || die + + distutils-r1_python_prepare_all +} + +python_test() { + epytest tests/{functional,unit} +} diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest index 0e72a7eb8657..eaa72aeb63d2 100644 --- a/dev-python/botocore/Manifest +++ b/dev-python/botocore/Manifest @@ -13,3 +13,4 @@ DIST botocore-1.43.89.gh.tar.gz 17111395 BLAKE2B 25837125b5d9477b011c065594ffa1b DIST botocore-1.43.90.gh.tar.gz 17119827 BLAKE2B ade6107a22be148042c1c67dfd60445c819e021f112d62d696bd2d25409a1ce256a5d91fad193c152c408c247a046045fc6bb21cc8f4adff98c5d25e26136e14 SHA512 c072f119ce927495fa9720de11bfa95e7dfbef8f68c87689af248eabed4a3451d6adb20e1d9b4c17eace231d38f5bee5395efc7861f39951078b7873abb625ab DIST botocore-1.43.91.gh.tar.gz 17127799 BLAKE2B 7746ea5a5eccb1142bd440dfed2524cdea8bd37c558ef79645d173cf87404784b8ebc420a9e868da7465951ce907e2c33438ad78465c0082d5a2ff363df053cf SHA512 0e095317d1d77ae4a7f6e7605fd92b809f27034fee9e6414470fbc379e9a0bfffe00580e88c14ab96250c8ad39ecc105b7a7417a4f526807cf8f523516031606 DIST botocore-1.43.92.gh.tar.gz 17135217 BLAKE2B 90d05a69153bc9ce4c1879dbc0af44fd876fb64439c94877e9ddbaceef1c6ef0b237807826a9b1fa67f706855ed87f20406e5b3c1de0e5a39197e2ae67c5a20f SHA512 2f2d7d6ec7b9309f0e95b2d8f84c701755ba28027c0ef0e340fe0f3e1bd78148c8fe8eb43a3bf7b036af4784dbb59076900e52702c43ff3c92e35065959616f1 +DIST botocore-1.43.93.gh.tar.gz 17142451 BLAKE2B eec2955aa252ff8bc49c24095006f0c75669f7946dcdaece4c7f640e724910b14c1b1b0b07fb8e6661d96e95fe148201381d70b4685a7282c2c64f2656fde57a SHA512 e021322d630deb94f738aa5096a7b72ffdeffbeaf5d3f6fbc9e835b7f41afa25a738d353e37b4fbd73b5b8889334ccdf4caec64d4c63e4e966e0e245c6117cf0 diff --git a/dev-python/botocore/botocore-1.43.93.ebuild b/dev-python/botocore/botocore-1.43.93.ebuild new file mode 100644 index 000000000000..a3a161f78545 --- /dev/null +++ b/dev-python/botocore/botocore-1.43.93.ebuild @@ -0,0 +1,67 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{13..14} ) + +inherit distutils-r1 + +DESCRIPTION="Low-level, data-driven core of boto 3" +HOMEPAGE=" + https://github.com/boto/botocore/ + https://pypi.org/project/botocore/ +" +SRC_URI=" + https://github.com/boto/botocore/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86" + +RDEPEND=" + <dev-python/jmespath-2[${PYTHON_USEDEP}] + dev-python/python-dateutil[${PYTHON_USEDEP}] + >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}] +" +# unbundled packages +RDEPEND+=" + dev-python/requests[${PYTHON_USEDEP}] + dev-python/six[${PYTHON_USEDEP}] +" +BDEPEND=" + test? ( + dev-python/jsonschema[${PYTHON_USEDEP}] + ) +" + +EPYTEST_PLUGINS=() +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +src_prepare() { + # unpin deps + sed -i -e "s:>=.*':':" setup.py || die + + # unbundle deps + rm -r botocore/vendored || die + find -name '*.py' -exec sed -i \ + -e 's:from botocore[.]vendored import:import:' \ + -e 's:from botocore[.]vendored[.]:from :' \ + {} + || die + + distutils-r1_src_prepare +} + +python_test() { + local EPYTEST_DESELECT=( + # rely on bundled six + tests/functional/test_six_imports.py::test_no_bare_six_imports + tests/functional/test_six_threading.py::test_six_thread_safety + ) + + epytest tests/{functional,unit} +} diff --git a/dev-python/contourpy/Manifest b/dev-python/contourpy/Manifest index 245f090c36bd..b2903ff4cc35 100644 --- a/dev-python/contourpy/Manifest +++ b/dev-python/contourpy/Manifest @@ -1 +1,2 @@ DIST contourpy-1.3.3.gh.tar.gz 13447399 BLAKE2B 3739abeb637fc17d3ab87d419b6f2a48bf3c0faca0581884c8abcb2078383b26cea104a058d3bf0505bd3111893a1e14c3a90c27e873838711f36c21615a7c78 SHA512 b920fc30189075cb29d6af346d0b7c9038b46b03c561388652eaf0d9647cb5246894903742c230b99fe5e3e62c6a60fcb634a24c31da6930819acd2eefb5f631 +DIST contourpy-1.4.0.gh.tar.gz 13308045 BLAKE2B 4d9000bd10e6e504213ccada31177635d9d6d5b9a494c3af4c1849c790715a102b423a39cf4fc7ee01eb557203621895ed3ad39182e04d2e096b405241658611 SHA512 e48dcc49b452d6ec2a0805938fadb0a1a778ddd3f4909c5e81b2f378fbdfd67d08bff03e8441a57a74dfe8f5c2aaec5e4efa1bccf368eb0d3094adb4a152ac98 diff --git a/dev-python/contourpy/contourpy-1.4.0.ebuild b/dev-python/contourpy/contourpy-1.4.0.ebuild new file mode 100644 index 000000000000..61a902d0967d --- /dev/null +++ b/dev-python/contourpy/contourpy-1.4.0.ebuild @@ -0,0 +1,49 @@ +# Copyright 2022-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=meson-python +PYTHON_COMPAT=( python3_{13..14} ) + +inherit distutils-r1 + +DESCRIPTION="Python library for calculating contours in 2D quadrilateral grids" +HOMEPAGE=" + https://pypi.org/project/contourpy/ + https://github.com/contourpy/contourpy/ +" +SRC_URI=" + https://github.com/contourpy/contourpy/archive/v${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos" + +RDEPEND=" + >=dev-python/numpy-1.25[${PYTHON_USEDEP}] +" +BDEPEND=" + >=dev-python/pybind11-2.13.4[${PYTHON_USEDEP}] + test? ( + dev-python/matplotlib[${PYTHON_USEDEP}] + dev-python/pillow[${PYTHON_USEDEP}] + dev-python/wurlitzer[${PYTHON_USEDEP}] + ) +" + +DISTUTILS_ARGS=( + -Dwerror=false +) + +EPYTEST_PLUGINS=( pytest-rerunfailures ) +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +EPYTEST_IGNORE=( + # linters + tests/test_codebase.py +) diff --git a/dev-python/crc32c/Manifest b/dev-python/crc32c/Manifest index b3f5e226066a..4868363936e7 100644 --- a/dev-python/crc32c/Manifest +++ b/dev-python/crc32c/Manifest @@ -1,2 +1 @@ -DIST crc32c-2.8.tar.gz 48179 BLAKE2B 8a4a91d068fe2baed4f4f089fef77ef9f3fd24d0e10c029500740f04b09150eeeea761fe919968253bbf83bb084a91b2ae0a0cc9f3db509701e75f67110858ab SHA512 10f139333f912d62dee4b6c21590b3182c3e6652e31aceb1bdec28ca8817ef8aa26abec3f44e6a271cb5c4f8c4abd8942b56e4642a9ab434cb41866c1ce03e19 DIST crc32c-2.9.tar.gz 48240 BLAKE2B 3b1ee57b0b374787e538b41270f05cc057cbb1b4dfb596fc5de2b7237f13e347ea185ad565764b224a903a9f032b5a524da62f61d3a26ad94f27e9cb9ec4fb3e SHA512 ef7db78766996dffad1eaa1c4f9e170c63ff483360bac353d3449afba90194db7aeff2cdafe7e016a2dc6daf7b01acb7e78ab8a8f5777d450e6712a7a7aa150c diff --git a/dev-python/crc32c/crc32c-2.8.ebuild b/dev-python/crc32c/crc32c-2.8.ebuild deleted file mode 100644 index 2077fd7ca054..000000000000 --- a/dev-python/crc32c/crc32c-2.8.ebuild +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright 2024-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DISTUTILS_EXT=1 -DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{13..14} ) - -inherit distutils-r1 pypi - -DESCRIPTION="CRC32c algorithm in hardware and software" -HOMEPAGE=" - https://github.com/ICRAR/crc32c/ - https://pypi.org/project/crc32c/ -" - -LICENSE="LGPL-2.1+" -SLOT="0" -KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~sparc ~x86" -# NB: these don't affect the build, they are only used for tests -IUSE="cpu_flags_arm_crc32 cpu_flags_x86_sse4_2" - -EPYTEST_PLUGINS=() -distutils_enable_tests pytest - -python_test() { - local -x CRC32C_SW_MODE - - # force = run "software" code (i.e. unoptimized) - # none = run "hardware" code (i.e. SSE4.2 / ARMv8 CRC32) - for CRC32C_SW_MODE in none force; do - if [[ ${CRC32C_SW_MODE} == none ]]; then - if ! use cpu_flags_arm_crc32 && ! use cpu_flags_x86_sse4_2; then - continue - fi - - # the test suite just skips all tests, so double-check - "${EPYTHON}" -c "import crc32c" || - die "Importing crc32c failed (accelerated code path broken?)" - fi - - einfo "Testing with CRC32C_SW_MODE=${CRC32C_SW_MODE}" - epytest - done -} diff --git a/dev-python/hcloud/Manifest b/dev-python/hcloud/Manifest index dacb97b1e4fd..3a0fa1c4f4be 100644 --- a/dev-python/hcloud/Manifest +++ b/dev-python/hcloud/Manifest @@ -1,2 +1,2 @@ -DIST hcloud-python-2.22.0.gh.tar.gz 152735 BLAKE2B 65f255dcc47470050e5619dd6335f83664789d88c4a5d9e5f6c3cff6c6f25f8f881b2ed23d01e426b331f1cda8d5610c870c46b01467fc642b87e46427f7eec0 SHA512 4706147405fe50c5db44ab181607c660bf71faf595f75229a46cc00ed4a9fbcf70a86e91b104e86fcacb54ef8d0804d33919a65db299da57b0cf660e04ebb7f6 DIST hcloud-python-2.23.0.gh.tar.gz 151968 BLAKE2B f5f0468a5c68192e1813bb5f08b0bda523987b67e39b794989e57f1e0f0506075398990443fffd4df87c5b98d2fc22a020e1b1583d27f26d23c949a331ab8462 SHA512 eebfd11411f2edda739997aa3194f23621c065e75444605f71dcbfcc3dd7dd6ee0e1a351738f5a75d2bc87d57bd288af30b4efa6cccb9cf00751e96424b5314c +DIST hcloud-python-2.24.0.gh.tar.gz 152444 BLAKE2B 22463dae842f98e6b594c8bd04e3aa5ff1b1a48cfc8c161acf937da31b4fb6119f82ce72aa02224c757045d6b363e1316359356676066e93301803e36e5a7112 SHA512 1c9cbb03619f8f34eb0de354893d443707c855375571ea263df1ac19c4f55cae3fee474d6f28eb16260318d150b16d6977c4191d5c87d48a239eb33cf1fad276 diff --git a/dev-python/hcloud/hcloud-2.22.0.ebuild b/dev-python/hcloud/hcloud-2.24.0.ebuild index 08e3c96a695f..9b729306ac26 100644 --- a/dev-python/hcloud/hcloud-2.22.0.ebuild +++ b/dev-python/hcloud/hcloud-2.24.0.ebuild @@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P} LICENSE="MIT" SLOT="0" -KEYWORDS="amd64" +KEYWORDS="~amd64" IUSE="examples" RDEPEND=" diff --git a/dev-python/imapclient/Manifest b/dev-python/imapclient/Manifest index ce2a23482ef1..701389703906 100644 --- a/dev-python/imapclient/Manifest +++ b/dev-python/imapclient/Manifest @@ -1 +1,2 @@ DIST imapclient-3.1.0.gh.tar.gz 93612 BLAKE2B a8c929affe8572f65bb6dafefc48ba064f1bb12230da7ada9d7af338ecc3834a6216509c59aeccad7faf47dd167dfc0b383b81988091b6578580a2fa8e3d5b15 SHA512 39e065a1a7df22ce80dfed47ab41e9702d3da4976f23f630e4c7b084c33b0007a24f9120b217478e6cebaa7f482921f2d1284bf3740597efe6db97b709ee6dd8 +DIST imapclient-4.0.1.gh.tar.gz 161264 BLAKE2B f177a0b59fcd5eb3f133d4c80dffbd1fed1c0a01973ca3a435c4b5484e7d5f8d00c2def3d2684cc6621b3512d31d481a221e6d8ae723363b37cc82e034f07710 SHA512 8fa536bd7ccb9bd0ea06694bad5ac01fdd27a6c01f0848b004e3cca8f8f94a0ff017f1ddd163dcc8a3e23ce509f96a01b3cf24a3cf9950b70b5f66876b122e2c diff --git a/dev-python/imapclient/imapclient-4.0.1.ebuild b/dev-python/imapclient/imapclient-4.0.1.ebuild new file mode 100644 index 000000000000..81769ed2c35e --- /dev/null +++ b/dev-python/imapclient/imapclient-4.0.1.ebuild @@ -0,0 +1,32 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{13..14} ) + +inherit distutils-r1 + +DESCRIPTION="easy-to-use, pythonic, and complete IMAP client library" +HOMEPAGE=" + https://github.com/mjs/imapclient/ + https://pypi.org/project/IMAPClient/ +" +SRC_URI=" + https://github.com/mjs/imapclient/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="doc examples" + +distutils_enable_sphinx doc/src +distutils_enable_tests unittest + +python_install_all() { + distutils-r1_python_install_all + use examples && dodoc -r examples +} diff --git a/dev-python/matplotlib/Manifest b/dev-python/matplotlib/Manifest index f6f538c267d1..0a0c1aa15de5 100644 --- a/dev-python/matplotlib/Manifest +++ b/dev-python/matplotlib/Manifest @@ -3,7 +3,7 @@ DIST matplotlib-3.10.9.tar.gz 34811233 BLAKE2B 93a2b76390f68f366ad9e761e32a8fd2e DIST matplotlib-3.10.9.tar.gz.provenance 9742 BLAKE2B 0c46e3818add6d952b1e1a7b45ec523fb7637bb030bb83b89d2b9f60cf2cc41c728ed3bb537db396fe88a436f0bcd33d656e5d68aa04e23651aa44c31b6725c2 SHA512 e86e176981d5736517a14b8eb0be633068bff2d24d4028d2eb5a1a4612a24cba98d9cef884cd98daa57252cdff4db5419be5bdc4b4b3aae8d778fd16e954a1fe DIST matplotlib-3.11.0.tar.gz 33251176 BLAKE2B becc1da603c014acb2e8ed9c6cd4558cc75c715adc021d397495fcf59b6f0a57c3e6b700469d23570043f221a1a807234868070588fc35c7aef0de0b2c9d0c46 SHA512 129dc761ca38b368d9981b9e079ca853ed07c2bd7c9c991f504ad5f1fab4f709c5281b7853c5d90c07952c9ef8bc598500618c88bdb0db21c259d7a43fa616b8 DIST matplotlib-3.11.0.tar.gz.provenance 10233 BLAKE2B fb45ccc496c4198763f370423d8e5517d188e5a92435d08262e3bfb5b23976d9d0705cb583609fe570f624378c5fc13e1a58ac769344f8288d99c67bc48653e7 SHA512 ceb6374ee0bb8c7fe4fe1d3bc6cff687d3ed5e8d87bba416aed477deff284b85c6eff26f0867f158bfaeea93ea707837a39fd9850439d586233a8b3ae0fcaf78 -DIST matplotlib-3.11.0rc2.tar.gz 33206182 BLAKE2B 54ec520fa553e94ba916a7e4a0c081e91b65f570891995707fef71e3e34af740ee5786b7cca18ce416d8cf37d98d6ae977ab6d52c3e01a7ab81e1ad17724b09a SHA512 8ded3dcaf3abf52640b11d1560b5a0b673cc864ff082020255b84699772c4ed4f4695f46dc5b5d9e9a0fc136051b63cb7255c323b59943768f502eeddf43d2e1 -DIST matplotlib-3.11.0rc2.tar.gz.provenance 9981 BLAKE2B 65b5efa306d4ae7c107a3b69404748b414bf8f3f4b1eae1ca01880e7160bdeb07a034905e0cba6cab45b8664c5132797566fea94610a33d870ec15339ca3dcbb SHA512 d36424ad521cec542d71589d2135c4728fc3a7bcf40d35c32a94e002355a014827350882598ef0ecfddf94b2f9dbf66c4c51e6d5a5526b08c3a8e7cfae6f8263 DIST matplotlib-3.11.1.tar.gz 32612045 BLAKE2B c5bd522384724bc059208e7ed8db27340234c25d1771b1f4fc06b261a15123dc679245466da9c55487aa475d508951b5bfc8adb23b377488fd9b61e4e920f4c0 SHA512 9300ac294f151c478cc8fc38d94931d1431f4083adeac6061c78a100abbbaa8145cd826dab9275319ae91ddb617a4fa4cd2bff1320832941181f707b43ba872a DIST matplotlib-3.11.1.tar.gz.provenance 10413 BLAKE2B 3e03cd552d74d19d00f33930bbb3c34cf171c4ddf10a598fc9d9f5d1584209adb84cf39938851bf272980ed747cad69d1cdd14deff25ba5a8f88444987f4fb3e SHA512 2591c1cdbfaa2ff4cd2a129c2c61c75db38027f0a34f5e140ce5137dca3b48a5d38b995e0e93abda0102673c782a59fb062df0c2b561a61ae7742af02e8df89c +DIST matplotlib-3.11.2.tar.gz 32660610 BLAKE2B 9893c56622ed40c86150f02d935c76661afafb17d23e246c0aa355000d80b5687490371ca9eb8b6905f121f027d8c9d0514a36cdc49b0e228d95425e54816283 SHA512 9957be4b7d9b3147ae8ac24f5a35c6b7d3c207f75a8fabe1c79e42bbebdf83a3ce7fdbbcd77a234b972c8e1c4e2f5f4043906e39b62afd0423cf770c91fa5f2b +DIST matplotlib-3.11.2.tar.gz.provenance 10270 BLAKE2B c9cb7c426f80fa9f7eb257e5b14c7a2a4089c2df77cc180014f31560ef8da449ac43a4785b1922b916548f8fda829a4408f4851c5a457846eddc2667a1e5b76d SHA512 7dbd2ff8b36af1d8f5ef20274468afda8d36bb25074fec9c8eae8aeb0a1af554fe6dea993e5ba10981ae740f887d5f1c344d408b9c906c7324543e7a984ba500 diff --git a/dev-python/matplotlib/matplotlib-3.11.0_rc2.ebuild b/dev-python/matplotlib/matplotlib-3.11.2.ebuild index 719a49ae6084..57100e039aea 100644 --- a/dev-python/matplotlib/matplotlib-3.11.0_rc2.ebuild +++ b/dev-python/matplotlib/matplotlib-3.11.2.ebuild @@ -25,7 +25,7 @@ HOMEPAGE=" LICENSE="BitstreamVera BSD matplotlib MIT OFL-1.1" SLOT="0" if [[ ${PV} != *_rc* ]]; then - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos" + KEYWORDS="~alpha ~amd64 ~arm64 ~ppc ~ppc64 ~riscv ~x86" fi IUSE="cairo excel gtk3 latex qt6 tk webagg wxwidgets" @@ -52,7 +52,7 @@ RDEPEND=" ${DEPEND} >=dev-python/contourpy-1.0.1[${PYTHON_USEDEP}] >=dev-python/cycler-0.10.0-r1[${PYTHON_USEDEP}] - >=dev-python/fonttools-4.22.0[${PYTHON_USEDEP}] + >=dev-python/fonttools-4.28.2[${PYTHON_USEDEP}] >=dev-python/kiwisolver-1.3.1[${PYTHON_USEDEP}] >=dev-python/packaging-20.0[${PYTHON_USEDEP}] >=dev-python/pillow-8[jpeg,webp,${PYTHON_USEDEP}] diff --git a/dev-python/meson-python/Manifest b/dev-python/meson-python/Manifest index 93a0552c0b17..b51b82a54e84 100644 --- a/dev-python/meson-python/Manifest +++ b/dev-python/meson-python/Manifest @@ -1,2 +1,3 @@ DIST meson-python-0.20.0.gh.tar.gz 94677 BLAKE2B 9ab721d6c547f63a5235ac240f7eaa301ad1dda7d6cf077d11e06a5938ca58089f70396366fb9d0c73f94d190891eb46e0a20cde8aa2e4504b69784f1b4dfa25 SHA512 804f2885e2ebf8f2dfc2a91bf30a5306409684a8b6acdcb69217f45a5c6411e32b1373897efc71e148739502388727efc4e5d52b5f9375be676663ca3d189b6b DIST meson-python-0.21.0.gh.tar.gz 105284 BLAKE2B d0521471e3e46f4f921b889eaa4e76658bd98fb898e919717f61b4d97124a70bc53a0373972b7c363d16a0adabc8653cfb69a877571443ab6216ff0507de44c8 SHA512 16e43402b7102eabf6832755eeeb1483fbd9cff34de3e469dbb7d3c74e850800cfef79e71e049b19005397c74c90d4de1bf36f1291f6af9dfd84c7fde0bb493b +DIST meson-python-0.21.1.gh.tar.gz 105984 BLAKE2B 70d2b30613fe4162a96ef953185ce0cd29219318a61dce14d2976a81b4774a90c1516f83a4a1506f073d545e48274c2a3c5e9551f99422fb407bdc49c20f6a79 SHA512 a51b23d86226a4cde82a0ab835a218ecf7594b242b0996d1f0562d39669c6b2a2d070548584678498a027506724026dda09847baef9b6abb0d7d1c0646d086d9 diff --git a/dev-python/meson-python/meson-python-0.21.1.ebuild b/dev-python/meson-python/meson-python-0.21.1.ebuild new file mode 100644 index 000000000000..e16aee261d69 --- /dev/null +++ b/dev-python/meson-python/meson-python-0.21.1.ebuild @@ -0,0 +1,72 @@ +# Copyright 2022-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=standalone +PYTHON_COMPAT=( python3_{13..14} ) + +inherit distutils-r1 + +DESCRIPTION="Meson PEP 517 Python build backend" +HOMEPAGE=" + https://pypi.org/project/meson-python/ + https://github.com/mesonbuild/meson-python/ +" +SRC_URI=" + https://github.com/mesonbuild/meson-python/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos" + +RDEPEND=" + >=dev-python/pyproject-metadata-0.7.1[${PYTHON_USEDEP}] + >=dev-build/meson-0.63.0 + !kernel_Darwin? ( dev-util/patchelf ) +" +BDEPEND=" + ${RDEPEND} + test? ( + >=dev-python/cython-0.29.34 + >=dev-python/packaging-23.1[${PYTHON_USEDEP}] + dev-vcs/git + ) +" + +EPYTEST_PLUGINS=( pytest-mock ) +distutils_enable_tests pytest + +src_prepare() { + distutils-r1_src_prepare + + # Strip unnecessary Python-level dependency on meson, it is used + # as an external executable anyway. + sed -i -e '/meson >=/d' pyproject.toml || die +} + +src_test() { + # required by tests/test_sdist.py::test_reproducible + git config --global user.email "test@example.com" || die + git config --global user.name "The Test Suite" || die + git init -q || die + git add -A || die + git commit -m init -q || die + + distutils-r1_src_test +} + +python_test() { + unset NINJA + + local EPYTEST_DESELECT=() + if ! has_version "dev-build/meson[${PYTHON_USEDEP}]"; then + EPYTEST_DESELECT+=( + tests/test_wheel.py::test_vendored_meson + ) + fi + + epytest +} diff --git a/dev-python/pyjwt/Manifest b/dev-python/pyjwt/Manifest index e54db53f0c58..f3d9392ee671 100644 --- a/dev-python/pyjwt/Manifest +++ b/dev-python/pyjwt/Manifest @@ -1,2 +1,4 @@ DIST pyjwt-2.13.0.tar.gz 107515 BLAKE2B 6d0b35a81b84f244f56b4b7258f2fb3ffdef912aeecc7e82a901063910fb4a8baa19735ef80521032113c5ce8492a81cae8b016bfb22b17da0b29637f2de0a8b SHA512 e12fcc5171e48ef74f4384287c05d94367b7add4844066b650abd6c82534e557959f59ffce9bd6d4dc6970b99b7357be5bb652d0546937b3a64dfd329b63b561 DIST pyjwt-2.13.0.tar.gz.provenance 9703 BLAKE2B f5dea7b13b251884b447f37a75960a03cbfb6d8b8adc6dbb5068b3972a08bef97df7c22374c17344a7d013c578e7c9eec71fbceb0705869d92c12cca5ab750ab SHA512 a2a63e02619ef49735d9787793ca2805c0ac43ca51a54649f6e11f9801dc761583e7a6b6a303082850e9af6ea006a0f4851050bce9b9b4cae7facaf5da616141 +DIST pyjwt-2.14.0.tar.gz 113177 BLAKE2B 1d742b2fab9d551defeb05236ac9a2bed44f7fd14268171d1fa85d11c194026075ad8fac3411d11c1215e8625c56e7ac911b84898d8a737420220765c467a947 SHA512 33b5ea83edb24fd4d73cc471c1d5ecbd0be45eef1d19c873a0a9a5615d2d52d8401176c71287a466c05f1086479dabeded203910c5815927574b8ebd07428936 +DIST pyjwt-2.14.0.tar.gz.provenance 9988 BLAKE2B ac5810b7f29e21ced6fbb5baba8353cc6538b60b5bf9da6a718324ee0a7efe1430e0b525a4840a6943cf3008dabfe49106c74614a4ba682cc0059be508333790 SHA512 288729fa3a1b194519e3a3c3f2c93709814d16ed1c551eda876214484477107d4e80940e0bbbe2773281235e9bf770de43ad178b47c8e8c7dc6639136cc7a064 diff --git a/dev-python/pyjwt/pyjwt-2.14.0.ebuild b/dev-python/pyjwt/pyjwt-2.14.0.ebuild new file mode 100644 index 000000000000..c74b8e2a878d --- /dev/null +++ b/dev-python/pyjwt/pyjwt-2.14.0.ebuild @@ -0,0 +1,42 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYPI_PN="PyJWT" +PYPI_VERIFY_REPO=https://github.com/jpadilla/pyjwt +PYTHON_COMPAT=( python3_{13..14} ) + +inherit distutils-r1 optfeature pypi + +DESCRIPTION="JSON Web Token implementation in Python" +HOMEPAGE=" + https://github.com/jpadilla/pyjwt/ + https://pypi.org/project/PyJWT/ +" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86" + +RDEPEND=" + !dev-python/python-jwt +" +BDEPEND=" + test? ( + >=dev-python/cryptography-3.4.0[${PYTHON_USEDEP}] + ) +" + +EPYTEST_PLUGINS=() +distutils_enable_tests pytest + +EPYTEST_DESELECT=( + # Internet + tests/test_jwks_client.py::TestPyJWKClient::test_get_jwt_set_sslcontext_default +) + +pkg_postinst() { + optfeature "cryptography" dev-python/cryptography +} diff --git a/dev-python/pypdf/Manifest b/dev-python/pypdf/Manifest index 6d778c486f97..52bb0a442ed7 100644 --- a/dev-python/pypdf/Manifest +++ b/dev-python/pypdf/Manifest @@ -4,4 +4,6 @@ DIST pypdf-6.17.0.tar.gz 7018352 BLAKE2B d71d8c781a63ac6555687a1bbcee35430026ced DIST pypdf-6.17.0.tar.gz.provenance 9698 BLAKE2B cf83fc4ab9ffc1f97ab32dbdf161d6d659580595575d30299a3aa5e0e8bee9240cf58c4a417a9945896fbb274167ac34445115ff1a093f71dcdaef10df98396e SHA512 5b5b7fa985d94634cacc755750e5b58823ffa5a839ae35c7d6ce6df5fe397194a15862c3be9635bb177acad75162ca231e65c30438e5f06ba13fc2f9d4dab46c DIST pypdf-6.18.0.tar.gz 7024871 BLAKE2B e14b829e0b54904c8e445b83f860d76eb306b6541b8575c4320293b740053f832095b6f86596b761dde417ad39c9963e53c68cabc2972f4d3bac2b26f9ffeae7 SHA512 15fb146d9837e4b258b81fa34279e7141a12a79c1b14a87e1ab288bc309a8db789f5fad163e2e147b92eef58b59ef8a3edeeb6f6638f03499a8cba7bc907d5e7 DIST pypdf-6.18.0.tar.gz.provenance 9694 BLAKE2B 5aedd7c28b8e8b3e778af725f4b20e9a34deb33b60c08bce214356c7ba80da053e970fb6a61b80ac8fba2f3b89bc580c2db67ed40b4f0f33201a658eb45c26fa SHA512 273d4b8bb9da317aa85a8d7fb5c1ea03d7f466b099ada848dd239a3f75cfef018f1085a4b8da87937757440aba839699884c9c928b473c7868ae472f43287d6d +DIST pypdf-6.18.1.tar.gz 7027577 BLAKE2B 21880eb3da99e5ad432466a76abf57b2e3a3fc8bdbb4add8b4140740a0dcae70886d8a3b4d08878c74e41d1e2a6b9c9d50aada2cc7eca365257d26a915ea4b76 SHA512 c4a452e1c87ae0e7c915df75471de5efb747230d0ee4391d4c6b47dab771a78ae07e85e9ad35736092a8066429237747c48afa0fd90bc140b392aeea1838bcf6 +DIST pypdf-6.18.1.tar.gz.provenance 9788 BLAKE2B 3b073bb57e7d2ea5d98083213dc594e3b147370e4e44c6c743992bdc2e09d52d2b5cee3f9f1bcb99f1293458327ed0af35699c5477aa9d6339d4ae0a194a7e66 SHA512 7c253ea25e4ded5a649d3aa811f41ed94e0dc5e5eb183ca8c5ad4affa981be7bdc1e0e0070c35b2eb4f16df92ef180d0d04755556bfe1c8df63a8eba41165ad4 DIST pypdf-sample-files-818dc013ad1f537198e9fcfae8a6b0dffe25ffa3.gh.tar.gz 11850954 BLAKE2B fbd0af91de44f2d224b3266727f0dfc462efb4d23176f4ebff147cbfa37337d891859c468b545d0c00796048584e6b621dc622d667e3d45c0b89b92f29ca3030 SHA512 bc601bfaf17f31c6358f594eaf879479e97028d7f5e5825c309a5d1eb843bfea5080c9e151287a0d915ecbc3f4d4755e326ac8fa1ceeb696c76b9f5ecc0d7e9f diff --git a/dev-python/pypdf/pypdf-6.18.1.ebuild b/dev-python/pypdf/pypdf-6.18.1.ebuild new file mode 100644 index 000000000000..c5dfe9f5773b --- /dev/null +++ b/dev-python/pypdf/pypdf-6.18.1.ebuild @@ -0,0 +1,59 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=flit-core +PYPI_VERIFY_REPO=https://github.com/py-pdf/pypdf +PYTHON_COMPAT=( python3_{13..14} ) + +inherit distutils-r1 pypi + +SAMPLE_COMMIT=818dc013ad1f537198e9fcfae8a6b0dffe25ffa3 +DESCRIPTION="Python library to work with PDF files" +HOMEPAGE=" + https://pypi.org/project/pypdf/ + https://github.com/py-pdf/pypdf/ +" +SRC_URI+=" + test? ( + https://github.com/py-pdf/sample-files/archive/${SAMPLE_COMMIT}.tar.gz + -> ${PN}-sample-files-${SAMPLE_COMMIT}.gh.tar.gz + ) +" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" + +BDEPEND=" + test? ( + >=dev-python/cryptography-3.1[${PYTHON_USEDEP}] + dev-python/fonttools[${PYTHON_USEDEP}] + >=dev-python/pillow-8.0.0[jpeg,jpeg2k,tiff,zlib,${PYTHON_USEDEP}] + dev-python/pyyaml[${PYTHON_USEDEP}] + media-libs/jbig2dec[png] + ) +" + +EPYTEST_PLUGINS=( pytest-timeout ) +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +EPYTEST_DESELECT=( + # probably requires extra deps + tests/test_appearance_stream.py::test_appearance_stream_rtl + # speed test, uses tons of memory + tests/test_filters.py::test_flatedecode__decode_png_prediction__speed +) + +src_unpack() { + default + if use test; then + mv "sample-files-${SAMPLE_COMMIT}" "${S}"/sample-files || die + fi +} + +python_test() { + epytest -o addopts= -m "not enable_socket" +} diff --git a/dev-python/pyqt6-webengine/pyqt6-webengine-6.11.0.ebuild b/dev-python/pyqt6-webengine/pyqt6-webengine-6.11.0.ebuild index debbcf6ebb3b..37a31a226d19 100644 --- a/dev-python/pyqt6-webengine/pyqt6-webengine-6.11.0.ebuild +++ b/dev-python/pyqt6-webengine/pyqt6-webengine-6.11.0.ebuild @@ -8,8 +8,6 @@ DISTUTILS_USE_PEP517=sip PYTHON_COMPAT=( python3_{13..14} ) inherit distutils-r1 flag-o-matic multiprocessing pypi qmake-utils -QT_PV=$(ver_cut 1-2):6 - DESCRIPTION="Python bindings for QtWebEngine" HOMEPAGE="https://www.riverbankcomputing.com/software/pyqtwebengine/" @@ -19,12 +17,12 @@ KEYWORDS="amd64 arm64" IUSE="debug quick +widgets" RDEPEND=" - >=dev-python/pyqt6-${QT_PV%:*}[gui,ssl,webchannel,${PYTHON_USEDEP}] - >=dev-qt/qtbase-${QT_PV}[gui,widgets?] - >=dev-qt/qtwebengine-${QT_PV}[widgets] + >=dev-python/pyqt6-$(ver_cut 1-2)[gui,ssl,webchannel,${PYTHON_USEDEP}] + dev-qt/qtbase:6[gui,widgets?] + dev-qt/qtwebengine:6[widgets] quick? ( dev-python/pyqt6[qml] - >=dev-qt/qtwebengine-${QT_PV}[qml] + dev-qt/qtwebengine:6[qml] ) widgets? ( dev-python/pyqt6[network,printsupport,widgets] ) " @@ -32,7 +30,7 @@ DEPEND="${RDEPEND}" BDEPEND=" >=dev-python/pyqt-builder-1.19[${PYTHON_USEDEP}] >=dev-python/sip-6.15[${PYTHON_USEDEP}] - >=dev-qt/qtbase-${QT_PV} + dev-qt/qtbase:6 " src_prepare() { diff --git a/dev-python/tqdm/Manifest b/dev-python/tqdm/Manifest index b52f3d318a19..6d083a92b498 100644 --- a/dev-python/tqdm/Manifest +++ b/dev-python/tqdm/Manifest @@ -2,3 +2,5 @@ DIST tqdm-4.69.1.tar.gz 793046 BLAKE2B a8c96922147fd13bb04a75ea4c08ac1d1ed5a076d DIST tqdm-4.69.1.tar.gz.provenance 9573 BLAKE2B 4ff0b33b10620a586c9bf6fce89c78891361eefe966e5cd72ca2517bd104a055d418111aa33d1049b0619ee6bf7d4604703a1f8ea1bbf103e8d25f61a557ee3c SHA512 0dd45e0cc9dce5228b45c2b0f4037fea8fcd4dc58971961f0b1f7ae56e2dbeaddcfb934af81cfd537c1166f62cc6d14aed287ea359a8c1778b8166308fc244c1 DIST tqdm-4.70.0.tar.gz 795438 BLAKE2B 7548bff6157c7356a0b4c011e3f6a5a143ac8ac31d445ee282fcc989496a83000a3f85eee05150e9bd0714cb506924b5fa096d3eeda0a73065fc7dc67134a953 SHA512 34f9cde7df0c9c914769c9254800ddf8668ca04a31316752253056a9cbbde9b0ae104517be51259e0220c7a1beb81587f9d91e920841fe7ecd8600c3e3570b51 DIST tqdm-4.70.0.tar.gz.provenance 9663 BLAKE2B e7de4e53436b5c2115de0751a9bc9bd02e3e6fdd20f264c564797c25500e6cc7eff3606c6cef8f75bba0ad495e13531a9b2a16381628737935b21bcf6324430a SHA512 287259aa31f75f7d80e93c94d5e997f6cbb868c69182d7288b106a4b27f8fa3d885338de3afbc079d48081f5667f30b9e640f91302af17e2cbf7c42e369d18f3 +DIST tqdm-4.70.1.tar.gz 171846 BLAKE2B abd5cff0d0c314dc0dbd2c9f95a648800403bba10d21e6d6baaf1d7a769fc3d0b433de14a8ee16307e3a07566719e8b264e67f4be70cfe1e8d775be016f17ba9 SHA512 4751b31258842ff25fa09a3ffeea68dbc373d5d0c20c3c34570b8d3ba3bb4feb246e141c413915f7b59435c6cfc5b23a52d13bbefd681740c4ea388e9219dda5 +DIST tqdm-4.70.1.tar.gz.provenance 9524 BLAKE2B 393b97cc97a3b2199a2bd716ff851ae4da9e683b53d5031dc6a8ebd9635f9aef377334662a0e63fe90da63ac4a6344aaf71810430a943a22d156fa06be81e768 SHA512 7092354628bbd28297cb03ee29ec81f959a7527244bcfef56984d1936b0ef8ed076b403704fc9307f3750d6e3db042d4b51a56b1b307c014154f843f72d95333 diff --git a/dev-python/tqdm/tqdm-4.70.1.ebuild b/dev-python/tqdm/tqdm-4.70.1.ebuild new file mode 100644 index 000000000000..1830f731430d --- /dev/null +++ b/dev-python/tqdm/tqdm-4.70.1.ebuild @@ -0,0 +1,43 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYPI_VERIFY_REPO=https://github.com/tqdm/tqdm +PYTHON_COMPAT=( python3_{13..14} ) + +inherit distutils-r1 pypi shell-completion + +DESCRIPTION="Add a progress meter to your loops in a second" +HOMEPAGE=" + https://github.com/tqdm/tqdm/ + https://pypi.org/project/tqdm/ +" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos" +IUSE="examples" + +BDEPEND=" + dev-python/setuptools-scm[${PYTHON_USEDEP}] +" + +EPYTEST_PLUGINS=( pytest-{asyncio,timeout} ) +distutils_enable_tests pytest + +EPYTEST_IGNORE=( + # Skip unpredictable performance tests + tests/tests_perf.py +) + +python_install_all() { + doman tqdm/tqdm.1 + newbashcomp tqdm/completion.sh tqdm + if use examples; then + dodoc -r examples + docompress -x /usr/share/doc/${PF}/examples + fi + distutils-r1_python_install_all +} diff --git a/dev-python/translate-toolkit/Manifest b/dev-python/translate-toolkit/Manifest index 0fc2b19ef307..5e922dfe91a2 100644 --- a/dev-python/translate-toolkit/Manifest +++ b/dev-python/translate-toolkit/Manifest @@ -1,3 +1,4 @@ DIST translate-3.19.17.gh.tar.gz 1419163 BLAKE2B 6dbfd25d4a8ca2e22be4da2c6f4e1e081ac2902d5911498d0e4d13fd182dff3f338cfe36a5ef93e4ad9c276b443f84bac6b44b12cdae1ac07a46830dec36aecc SHA512 8f28c6d312e6a6a9aef3b177981222ee8f80751b1ea0075f0ad7ec7774840822a50d806d9fbbcb21ed95d4dfdf491a8added8ef7bba1166665160613d5e08444 DIST translate-3.19.18.gh.tar.gz 1430779 BLAKE2B cd8276ede35ac17df538688c5bc4d9135799f651dafe56daaecae78a2369fe5782c5c4d9d26e81e5a666c81eace1e68fa747a0f7b3e17941d49565ce540db95e SHA512 83e05ff2a200fde531d390d36da5ed8915a8aa61184c6fe924223fbb75c5e27eecce29af1252c89c3aee393fe8fdc68f88b6d7df4f97881406eb8ab204f9c1b6 DIST translate-3.19.19.gh.tar.gz 1436103 BLAKE2B 05d4e3e9b39e363af629ef352eaeaf0da6668ed2372b4a1f69c8373f421a8d868fc7f75947f4b41df99e60147c76871ae2f47c936e3c14d80418dfd87c741d25 SHA512 f9eeb572b8003ade578a5bf67eb8c482e200088da5df99f72751d5bf2a58a5094bd2602cff778d4565c48bb3de31f2a0381bf527403a8b73e1079384bf50bccf +DIST translate-3.20.0.gh.tar.gz 1460876 BLAKE2B f5bc82a77db2f99980e5bc778963f8e242629b88a8e0f39af740fc802b3fc855912635695443536d4df16fa670d7abe264904a2ba672c53487c22ab63584cddd SHA512 355302b2862d223a8c237ebf067339d456baabd1fe6e0c2c62e2ffca05218316052aa36d298c6d21a77f9b773469a34c8358319ee0f99a517284d5a601f9c4c5 diff --git a/dev-python/translate-toolkit/translate-toolkit-3.20.0.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.20.0.ebuild new file mode 100644 index 000000000000..451b2d4da920 --- /dev/null +++ b/dev-python/translate-toolkit/translate-toolkit-3.20.0.ebuild @@ -0,0 +1,124 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{13..14} ) +PYTHON_REQ_USE="sqlite" + +inherit distutils-r1 + +MY_P=translate-${PV} +DESCRIPTION="Toolkit to convert between many translation formats" +HOMEPAGE=" + https://github.com/translate/translate/ + https://pypi.org/project/translate-toolkit/ +" +SRC_URI=" + https://github.com/translate/translate/archive/${PV}.tar.gz + -> ${MY_P}.gh.tar.gz +" +S="${WORKDIR}"/${MY_P} + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+html +ical +ini +subtitles +yaml" + +RDEPEND=" + app-text/iso-codes + >=dev-python/chardet-3.0.4[${PYTHON_USEDEP}] + dev-python/cheroot[${PYTHON_USEDEP}] + >=dev-python/levenshtein-0.12.0[${PYTHON_USEDEP}] + >=dev-python/lxml-5.2.0[${PYTHON_USEDEP}] + >=dev-python/mistletoe-1.1.0[${PYTHON_USEDEP}] + >=dev-python/pyparsing-3[${PYTHON_USEDEP}] + dev-python/ruamel-yaml[${PYTHON_USEDEP}] + dev-python/tomlkit[${PYTHON_USEDEP}] + >=dev-python/unicode-segmentation-rs-0.2.0[${PYTHON_USEDEP}] + >=dev-python/wcwidth-0.2.14[${PYTHON_USEDEP}] + sys-devel/gettext + html? ( dev-python/utidylib[${PYTHON_USEDEP}] ) + ical? ( dev-python/vobject[${PYTHON_USEDEP}] ) + ini? ( >=dev-python/iniparse-0.5[${PYTHON_USEDEP}] ) + subtitles? ( media-video/gaupol[${PYTHON_USEDEP}] ) + yaml? ( dev-python/pyyaml[${PYTHON_USEDEP}] ) +" +BDEPEND=" + test? ( + dev-python/phply[${PYTHON_USEDEP}] + ) +" + +EPYTEST_PLUGINS=( syrupy ) +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +src_prepare() { + distutils-r1_src_prepare + + # strip unnecessary pins + sed -i -e 's:,<[0-9.]*::' pyproject.toml || die +} + +src_test() { + # unfortunately, this bad quality package doesn't support XDG_DATA_DIRS + # correctly, so we need to reassemble all data files in a single directory + local -x XDG_DATA_HOME=${T}/share + cp -r translate/share "${T}/" || die + cp -r "${ESYSROOT}"/usr/share/gaupol "${XDG_DATA_HOME}"/ || die + + distutils-r1_src_test +} + +python_test() { + local EPYTEST_DESELECT=( + # Fails with network-sandbox (and even with it off but w/ softer fail) + 'tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff' + 'tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff' + ) + local EPYTEST_IGNORE=( + # unpackaged fluent.* + tests/translate/convert/test_fluent2po.py + tests/translate/storage/test_fluent.py + tests/translate/storage/test_identity_editing.py + # changes directory and does not change it back, sigh + tests/odf_xliff/test_odf_xliff.py + ) + + if ! has_version "dev-python/iniparse[${PYTHON_USEDEP}]"; then + EPYTEST_IGNORE+=( + translate/convert/test_ini2po.py + translate/convert/test_po2ini.py + ) + fi + + if ! has_version "media-video/gaupol[${PYTHON_USEDEP}]"; then + EPYTEST_IGNORE+=( + translate/storage/test_subtitles.py + ) + fi + + epytest +} + +python_install_all() { + distutils-r1_python_install_all + + insinto /usr + doins -r translate/share + + if ! use html; then + rm "${ED}"/usr/bin/{html2po,po2html} || die + fi + if ! use ical; then + rm "${ED}"/usr/bin/{ical2po,po2ical} || die + fi + if ! use ini; then + rm "${ED}"/usr/bin/{ini2po,po2ini} || die + fi + if ! use subtitles; then + rm "${ED}"/usr/bin/{sub2po,po2sub} || die + fi +} diff --git a/dev-python/types-docutils/Manifest b/dev-python/types-docutils/Manifest index 78c72b8dc321..62907d47ca4c 100644 --- a/dev-python/types-docutils/Manifest +++ b/dev-python/types-docutils/Manifest @@ -1,4 +1,3 @@ -DIST types_docutils-0.22.3.20260518.tar.gz 57504 BLAKE2B 21d6dcc5006dcef7a8ef44a70837b84719f55f62997fc9ff92e1a039764f39244d3ddf6bdf91d37c16092e6a46427bef3d4312865ccee2dc0dbcf5bc6435ca51 SHA512 b6a6905a2483e7f3c0c52994689064b956efbce7854db72648861981531a93f0e230a84a5586d22ce44cda10a795595ffc75e5a54ea5ce3a8c9e4b567c4961ea -DIST types_docutils-0.22.3.20260712.tar.gz 57848 BLAKE2B 83b0f5b5a7915a02c8964ecb4080076df0b61098d1a3df68c1b40a0687830e8e3be1c773b1e8d0880c171a101582a1799220d8c7346ebc44fa592f0978f75685 SHA512 050064f777bbf22f80b7f9971879e6de0d1c42121b9f26bd7991db39b0a208924a51c5b75daacf3310ec240ef1e05d4374e297a646a91a5113292a328158e29f DIST types_docutils-0.22.3.20260724.tar.gz 57883 BLAKE2B f3def14eea58297a97078dee93b47b0ca349535233f3122224d9c76382c899cb2e870b9bf784ac1e97e89ec4ef37e519fc26891db145a6d728b929e5da65eaf2 SHA512 7debe111c9936fc24ac71cd400e87cf8734e84b8038226bc0484575086fa57dc4e46497c7640fd8ea549c2d061b12e8a6bcdd66e1d73b39f40d58b32686fd287 DIST types_docutils-0.23.0.20260827.tar.gz 58209 BLAKE2B 8db07fbca8cdf688e6a54355bf014296024eb452a52f43264f0782db500d9092ab57948b97aa54f93684c015ebe0b6c8a82b925ce5cfaff85a820b365ea55185 SHA512 bd0d6b8111f564f1ab6326f69cbefb9be444cf803ac3b4261c9e2b7ed544796558bd35fa0f7f8fe98a61850e46c8ddfdb244442abe8c7ae833bfcfae3521f9c0 +DIST types_docutils-0.23.0.20260911.tar.gz 58223 BLAKE2B dfb39a6d38d97c0f41b549ba377a44afaab0f2cf5184a57cc177dc9cdb0901ea5455ecc0848cba777fefd86614d0529d4bd10f806b9315de3693635686ce33f4 SHA512 294eb180cc36e10eb7519618993836e6f4f3652496ecf93975b824144d4b64ead77841472feca7cc0041856bd11faa0553080638f16313fa34573213585c1c67 diff --git a/dev-python/types-docutils/types-docutils-0.22.3.20260518.ebuild b/dev-python/types-docutils/types-docutils-0.22.3.20260518.ebuild deleted file mode 100644 index 55fe3d738c14..000000000000 --- a/dev-python/types-docutils/types-docutils-0.22.3.20260518.ebuild +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2022-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{13..14} ) - -inherit distutils-r1 pypi - -DESCRIPTION="Typing stubs for docutils" -HOMEPAGE="https://pypi.org/project/types-docutils/" - -LICENSE="Apache-2.0" -SLOT="0" -KEYWORDS="amd64 arm64 x86" diff --git a/dev-python/types-docutils/types-docutils-0.22.3.20260712.ebuild b/dev-python/types-docutils/types-docutils-0.23.0.20260911.ebuild index c92bb7bf56ff..c92bb7bf56ff 100644 --- a/dev-python/types-docutils/types-docutils-0.22.3.20260712.ebuild +++ b/dev-python/types-docutils/types-docutils-0.23.0.20260911.ebuild diff --git a/dev-python/urwid/Manifest b/dev-python/urwid/Manifest index 5f5f7fbf8f5e..6281c7b6e803 100644 --- a/dev-python/urwid/Manifest +++ b/dev-python/urwid/Manifest @@ -12,3 +12,5 @@ DIST urwid-4.1.1.tar.gz 931618 BLAKE2B e95dd2d7e6b3031bef3c18ad281061b4d28c4e94c DIST urwid-4.1.1.tar.gz.provenance 9585 BLAKE2B 6d7c6f2771f44b0d58dc1637f1ee2619a0984e6f18d90040e748bc8e825574dbeab7945718212b94c7e6eb2b0517d994cf61aaa459dc6f4beb686bf7342636b2 SHA512 eddcc53048ce59d01caa6c9f8a6f7cc936fc98148d10f856f6ae68b4033d77957b454333e8a91af383a4c3cdf492f1aec8e36666b6a460e2145c1c1665dc6828 DIST urwid-4.1.2.tar.gz 941510 BLAKE2B c375bf938541e1df1bf1ca3c3ed9b6e91d8ab10741f8545197439502a28f2e7fe5eca7c08836082be1f0536b424683b08b72edadc27e4cd3c092759603f6bcee SHA512 d83d3a30602410ed1b9370a760cd540f9e1f8837596cee3a731e6d3446e54f390c1df424fa003259fc8d1ad7f6c1911c8e549ca9f2287263ca27b78a485ea751 DIST urwid-4.1.2.tar.gz.provenance 9620 BLAKE2B 95fdeda020824cd77e2e5a7aea0c7cb6baf36b43b1c817956fbfbcb3218befc2b175d2ad3a5ce530e806f540602c2d1f49b37acfdad180f368906e4f07d713f8 SHA512 10adfa1e6b78d556b45b6e05dd56612211a8ee300eca1653d715c6e4a1fa6e52df660ff1f074b18a070c6d52c954a243936f98e0a0fc05cf39f929305a297eb0 +DIST urwid-4.1.3.tar.gz 944854 BLAKE2B c683dcec93c42e838665f98d7cfe5190b700b1a1a37efa1c8e92a405b954dd25dcad60fc11355ea4d5f2d86ae917a56b0e7e8104044e2c3191ddbbef037f2227 SHA512 52146221d6cf94190c1be79df469c262e9f4846e0d9c76d5e1f02af72ec393e8a867d7bba13d182fc801d20cfa6a32d74db51d0c657a3972df85c8ba33c3d41f +DIST urwid-4.1.3.tar.gz.provenance 9538 BLAKE2B b2c79aee2754a26f15bd49d773a2ad8ff58949a236a5179a405b7dfd388b69807298993d63987b015483a062cf6023d2b9a703993f0949409743096f99017906 SHA512 a2ade6d50b29215aefd54300131adf9fafd88c26425ef08579715720ae0154c9a1f0c5f18ba7f3b931a4a4692c5f82a0b3dcdf422fbe0cbc0c8b05981fae1580 diff --git a/dev-python/urwid/urwid-4.1.3.ebuild b/dev-python/urwid/urwid-4.1.3.ebuild new file mode 100644 index 000000000000..aba0d14bbb3d --- /dev/null +++ b/dev-python/urwid/urwid-4.1.3.ebuild @@ -0,0 +1,49 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYPI_VERIFY_REPO=https://github.com/urwid/urwid +PYTHON_COMPAT=( python3_{13..14} ) +PYTHON_REQ_USE="ncurses" + +inherit distutils-r1 optfeature pypi + +DESCRIPTION="Curses-based user interface library for Python" +HOMEPAGE=" + https://urwid.org/ + https://pypi.org/project/urwid/ + https://github.com/urwid/urwid/ +" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" +IUSE="examples" + +RDEPEND=" + dev-python/typing-extensions[${PYTHON_USEDEP}] + >=dev-python/wcwidth-0.4[${PYTHON_USEDEP}] +" +BDEPEND=" + dev-python/setuptools-scm[${PYTHON_USEDEP}] +" + +EPYTEST_PLUGINS=() +distutils_enable_tests pytest + +src_prepare() { + distutils-r1_src_prepare + + sed -i -e 's:--cov --cov-report=term::' pyproject.toml || die +} + +python_install_all() { + use examples && dodoc -r examples + distutils-r1_python_install_all +} + +pkg_postinst() { + optfeature "Trio event loop" "dev-python/trio" +} diff --git a/dev-qt/qtbase/qtbase-6.12.9999.ebuild b/dev-qt/qtbase/qtbase-6.12.9999.ebuild index 155555f15585..73d61474f8e0 100644 --- a/dev-qt/qtbase/qtbase-6.12.9999.ebuild +++ b/dev-qt/qtbase/qtbase-6.12.9999.ebuild @@ -154,7 +154,6 @@ RDEPEND=" !<dev-qt/qtvirtualkeyboard-${PV}:6 !<dev-qt/qtwayland-${PV}:6 !<dev-qt/qtwebchannel-${PV}:6 - !<dev-qt/qtwebengine-${PV}:6 !<dev-qt/qtwebsockets-${PV}:6 !<dev-qt/qtwebview-${PV}:6 syslog? ( virtual/logger ) diff --git a/dev-qt/qtbase/qtbase-6.9999.ebuild b/dev-qt/qtbase/qtbase-6.9999.ebuild index 155555f15585..73d61474f8e0 100644 --- a/dev-qt/qtbase/qtbase-6.9999.ebuild +++ b/dev-qt/qtbase/qtbase-6.9999.ebuild @@ -154,7 +154,6 @@ RDEPEND=" !<dev-qt/qtvirtualkeyboard-${PV}:6 !<dev-qt/qtwayland-${PV}:6 !<dev-qt/qtwebchannel-${PV}:6 - !<dev-qt/qtwebengine-${PV}:6 !<dev-qt/qtwebsockets-${PV}:6 !<dev-qt/qtwebview-${PV}:6 syslog? ( virtual/logger ) diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-6.11.2-QTBUG-149607.patch b/dev-qt/qtdeclarative/files/qtdeclarative-6.11.2-QTBUG-149607.patch new file mode 100644 index 000000000000..31e2cf886ea2 --- /dev/null +++ b/dev-qt/qtdeclarative/files/qtdeclarative-6.11.2-QTBUG-149607.patch @@ -0,0 +1,151 @@ +https://qt-project.atlassian.net/browse/QTBUG-149607 +https://bugs.kde.org/show_bug.cgi?id=508377 +https://mail.kde.org/pipermail/distributions/2026-September/001731.html +--- a/src/qml/qml/qqmlglobal.cpp ++++ b/src/qml/qml/qqmlglobal.cpp +@@ -1113,7 +1113,7 @@ + // A non-composite type will always have a metaobject. + const QMetaObject *typeMetaObject = type.metaObject(); +- const QQmlPropertyCache::ConstPtr typePropertyCache = typeMetaObject +- ? QQmlPropertyCache::ConstPtr() +- : QQmlMetaType::findPropertyCacheInCompositeTypes(type.typeId()); ++ QVarLengthArray<QQmlPropertyCache::ConstPtr, 4> allPropertyCacheCandidates = ++ typeMetaObject ? QVarLengthArray<QQmlPropertyCache::ConstPtr, 4>{} ++ : QQmlMetaType::rawCompositePropertyCachesForType(type.typeId()); + + if (const QQmlData *ddata = ddata_for_cast(object)) { +@@ -1135,5 +1135,5 @@ + // Multiple property caches can hold the same metaobject, for example for + // versions of non-composite types. +- if (propertyCache == typePropertyCache.data()) ++ if (allPropertyCacheCandidates.contains(propertyCache)) + return true; + } +@@ -1141,9 +1141,9 @@ + } + +- // If nothing else works, we have to create the metaobjects. ++ // If nothing else works, we have to create the metaobjects (if we can). ++ if (!typeMetaObject && !allPropertyCacheCandidates.isEmpty()) ++ typeMetaObject = allPropertyCacheCandidates.first()->createMetaObject(); + +- return object->metaObject()->inherits(typeMetaObject +- ? typeMetaObject +- : (typePropertyCache ? typePropertyCache->createMetaObject() : nullptr)); ++ return object->metaObject()->inherits(typeMetaObject); + } + +--- a/src/qml/qml/qqmlmetatype.cpp ++++ b/src/qml/qml/qqmlmetatype.cpp +@@ -1491,4 +1491,18 @@ + * \internal + * ++ * Returns all candidate property caches for a composite ++ * metatype instead of only the last inserted one. ++ * compare rawPropertyCacheForType (which handles however also non-composites) ++ */ ++QVarLengthArray<QQmlPropertyCache::ConstPtr, 4> ++QQmlMetaType::rawCompositePropertyCachesForType(QMetaType metaType) ++{ ++ const QQmlMetaTypeDataPtr data; ++ return data->findPropertyCachesInCompositeTypes(metaType); ++} ++ ++/*! ++ * \internal ++ * + * Look up by QQmlType and version. We only fall back to lookup by metaobject if the type + * has no revisiononed attributes here. Unspecified versions are interpreted as "any". +--- a/src/qml/qml/qqmlmetatype_p.h ++++ b/src/qml/qml/qqmlmetatype_p.h +@@ -24,4 +24,5 @@ + + #include <QtCore/qtyperevision.h> ++#include <QtCore/qvarlengtharray.h> + + QT_BEGIN_NAMESPACE +@@ -172,4 +173,8 @@ + QMetaType metaType, QTypeRevision version); + ++ // All property caches for a composite metatype, which may map to more than one of them. ++ static QVarLengthArray<QQmlPropertyCache::ConstPtr, 4> rawCompositePropertyCachesForType( ++ QMetaType metaType); ++ + static bool canConvert(QObject *o, QMetaType metaType); + static bool canConvert(const QQmlPropertyCache::ConstPtr &from, QMetaType metaType); +--- a/src/qml/qml/qqmlmetatypedata.cpp ++++ b/src/qml/qml/qqmlmetatypedata.cpp +@@ -258,4 +258,16 @@ + } + ++QVarLengthArray<QQmlPropertyCache::ConstPtr, 4> ++QQmlMetaTypeData::findPropertyCachesInCompositeTypes(QMetaType t) const ++{ ++ QVarLengthArray<QQmlPropertyCache::ConstPtr, 4> result; ++ const auto [begin, end] = compositeTypes.equal_range(t.iface()); ++ for (auto iter = begin; iter != end; ++iter) { ++ if (auto cache = propertyCacheForPotentialInlineComponentType(t, iter)) ++ result.append(std::move(cache)); ++ } ++ return result; ++} ++ + void QQmlMetaTypeData::clearCompositeTypes() + { +--- a/src/qml/qml/qqmlmetatypedata_p.h ++++ b/src/qml/qml/qqmlmetatypedata_p.h +@@ -24,4 +24,5 @@ + + #include <QtCore/qset.h> ++#include <QtCore/qvarlengtharray.h> + #include <QtCore/qvector.h> + +@@ -120,4 +121,8 @@ + QQmlPropertyCache::ConstPtr findPropertyCacheInCompositeTypes(QMetaType t) const; + ++ // Same, but returns all matches rather than only the last inserted one. ++ QVarLengthArray<QQmlPropertyCache::ConstPtr, 4> findPropertyCachesInCompositeTypes( ++ QMetaType t) const; ++ + static QQmlPropertyCache::ConstPtr propertyCacheForPotentialInlineComponentType( + QMetaType t, const QQmlMetaTypeData::CompositeTypes::const_iterator &iter); +--- a/src/qml/qml/qqmlpropertyvalidator.cpp ++++ b/src/qml/qml/qqmlpropertyvalidator.cpp +@@ -3,4 +3,5 @@ + // Qt-Security score:significant + ++#include "qqmlmetatype_p.h" + #include "qqmlpropertyvalidator_p.h" + +@@ -782,8 +783,27 @@ + // Determine isAssignable value + bool isAssignable = false; +- QQmlPropertyCache::ConstPtr c = propertyCaches.at(binding->value.objectIndex); +- while (c && !isAssignable) { +- isAssignable |= c == propertyMetaObject; +- c = c->parent(); ++ QQmlPropertyCache::ConstPtr source = propertyCaches.at(binding->value.objectIndex); ++ ++ const auto inheritsFrom = [&](const QQmlPropertyCache::ConstPtr &target) { ++ for (QQmlPropertyCache::ConstPtr c = source; c; c = c->parent()) { ++ if (c == target) ++ return true; ++ } ++ return false; ++ }; ++ ++ isAssignable = inheritsFrom(propertyMetaObject); ++ ++ if (!isAssignable) { ++ // A single (composite) metatype can map to multiple property caches when ++ // there are multiple engines; rawPropertyCacheForType only returns one of ++ // them. For non-composite types this yields an empty list and is a no-op. ++ const auto candidates = QQmlMetaType::rawCompositePropertyCachesForType(propType); ++ for (const auto &candidate : candidates) { ++ if (inheritsFrom(candidate)) { ++ isAssignable = true; ++ break; ++ } ++ } + } + diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.11.2.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.11.2-r1.ebuild index 4018eb574563..2d6da14dabc6 100644 --- a/dev-qt/qtdeclarative/qtdeclarative-6.11.2.ebuild +++ b/dev-qt/qtdeclarative/qtdeclarative-6.11.2-r1.ebuild @@ -32,6 +32,10 @@ BDEPEND=" ~dev-qt/qtshadertools-${PV}:6 " +PATCHES=( + "${FILESDIR}"/${PN}-6.11.2-QTBUG-149607.patch +) + src_configure() { local mycmakeargs=( $(cmake_use_find_package qmlls Qt6LanguageServerPrivate) diff --git a/dev-qt/qtgraphs/qtgraphs-6.11.1.ebuild b/dev-qt/qtgraphs/qtgraphs-6.11.1.ebuild index 03c5d9864546..724871665f9b 100644 --- a/dev-qt/qtgraphs/qtgraphs-6.11.1.ebuild +++ b/dev-qt/qtgraphs/qtgraphs-6.11.1.ebuild @@ -21,6 +21,9 @@ RDEPEND=" quick3d? ( ~dev-qt/qtquick3d-${PV}:6 ) " DEPEND="${RDEPEND}" +BDEPEND=" + ~dev-qt/qtshadertools-${PV}:6 +" CMAKE_SKIP_TESTS=( # hangs+timeout with offscreen rendering diff --git a/dev-qt/qtgraphs/qtgraphs-6.11.2.ebuild b/dev-qt/qtgraphs/qtgraphs-6.11.2.ebuild index 94b9ea9227b6..e2bd770dd65d 100644 --- a/dev-qt/qtgraphs/qtgraphs-6.11.2.ebuild +++ b/dev-qt/qtgraphs/qtgraphs-6.11.2.ebuild @@ -21,6 +21,9 @@ RDEPEND=" quick3d? ( ~dev-qt/qtquick3d-${PV}:6 ) " DEPEND="${RDEPEND}" +BDEPEND=" + ~dev-qt/qtshadertools-${PV}:6 +" CMAKE_SKIP_TESTS=( # hangs+timeout with offscreen rendering diff --git a/dev-qt/qtgraphs/qtgraphs-6.11.9999.ebuild b/dev-qt/qtgraphs/qtgraphs-6.11.9999.ebuild index 94b9ea9227b6..e2bd770dd65d 100644 --- a/dev-qt/qtgraphs/qtgraphs-6.11.9999.ebuild +++ b/dev-qt/qtgraphs/qtgraphs-6.11.9999.ebuild @@ -21,6 +21,9 @@ RDEPEND=" quick3d? ( ~dev-qt/qtquick3d-${PV}:6 ) " DEPEND="${RDEPEND}" +BDEPEND=" + ~dev-qt/qtshadertools-${PV}:6 +" CMAKE_SKIP_TESTS=( # hangs+timeout with offscreen rendering diff --git a/dev-qt/qtgraphs/qtgraphs-6.12.9999.ebuild b/dev-qt/qtgraphs/qtgraphs-6.12.9999.ebuild index 0e4bee639f08..0a16ebe732d2 100644 --- a/dev-qt/qtgraphs/qtgraphs-6.12.9999.ebuild +++ b/dev-qt/qtgraphs/qtgraphs-6.12.9999.ebuild @@ -21,6 +21,9 @@ RDEPEND=" quick3d? ( ~dev-qt/qtquick3d-${PV}:6 ) " DEPEND="${RDEPEND}" +BDEPEND=" + ~dev-qt/qtshadertools-${PV}:6 +" CMAKE_SKIP_TESTS=( # hangs+timeout with offscreen rendering @@ -31,7 +34,8 @@ src_configure() { local mycmakeargs=( # simpler than keeping track of and disabling every graphs-3d* features $(cmake_use_find_package quick3d Qt6Quick3D) - # not packaged yet, and Qt disables it by default for now + # qtcanvaspainter is not packaged yet, and the default is the + # "high_quality_backend" making which is best debatable -DQT_FEATURE_graphs_2d_high_performance_backend=OFF ) diff --git a/dev-qt/qtgraphs/qtgraphs-6.9999.ebuild b/dev-qt/qtgraphs/qtgraphs-6.9999.ebuild index 0e4bee639f08..0a16ebe732d2 100644 --- a/dev-qt/qtgraphs/qtgraphs-6.9999.ebuild +++ b/dev-qt/qtgraphs/qtgraphs-6.9999.ebuild @@ -21,6 +21,9 @@ RDEPEND=" quick3d? ( ~dev-qt/qtquick3d-${PV}:6 ) " DEPEND="${RDEPEND}" +BDEPEND=" + ~dev-qt/qtshadertools-${PV}:6 +" CMAKE_SKIP_TESTS=( # hangs+timeout with offscreen rendering @@ -31,7 +34,8 @@ src_configure() { local mycmakeargs=( # simpler than keeping track of and disabling every graphs-3d* features $(cmake_use_find_package quick3d Qt6Quick3D) - # not packaged yet, and Qt disables it by default for now + # qtcanvaspainter is not packaged yet, and the default is the + # "high_quality_backend" making which is best debatable -DQT_FEATURE_graphs_2d_high_performance_backend=OFF ) diff --git a/dev-qt/qtmultimedia/qtmultimedia-6.12.9999.ebuild b/dev-qt/qtmultimedia/qtmultimedia-6.12.9999.ebuild index d0664da14600..3ebd6effd1f2 100644 --- a/dev-qt/qtmultimedia/qtmultimedia-6.12.9999.ebuild +++ b/dev-qt/qtmultimedia/qtmultimedia-6.12.9999.ebuild @@ -22,7 +22,6 @@ REQUIRED_USE=" vaapi? ( ffmpeg opengl ) " -# dlopen/dbus: pipewire RDEPEND=" ~dev-qt/qtbase-${PV}:6[concurrent,gui,network,opengl=,vulkan=,widgets] alsa? ( @@ -124,6 +123,7 @@ src_configure() { ") $(qt_feature pipewire) $(usev pipewire $(qt_feature dbus pipewire_screencapture)) + -DQT_FEATURE_pipewire_symbolloader=OFF $(qt_feature pulseaudio) $(qt_feature v4l linux_v4l) $(qt_feature vaapi) diff --git a/dev-qt/qtmultimedia/qtmultimedia-6.9999.ebuild b/dev-qt/qtmultimedia/qtmultimedia-6.9999.ebuild index 3334e0811f0c..03ed4e79cb51 100644 --- a/dev-qt/qtmultimedia/qtmultimedia-6.9999.ebuild +++ b/dev-qt/qtmultimedia/qtmultimedia-6.9999.ebuild @@ -22,7 +22,6 @@ REQUIRED_USE=" vaapi? ( ffmpeg opengl ) " -# dlopen/dbus: pipewire RDEPEND=" ~dev-qt/qtbase-${PV}:6[concurrent,gui,network,opengl=,vulkan=,widgets] alsa? ( @@ -123,6 +122,7 @@ src_configure() { ") $(qt_feature pipewire) $(usev pipewire $(qt_feature dbus pipewire_screencapture)) + -DQT_FEATURE_pipewire_symbolloader=OFF $(qt_feature pulseaudio) $(qt_feature v4l linux_v4l) $(qt_feature vaapi) diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.11.0-gcc17.patch b/dev-qt/qtwebengine/files/qtwebengine-6.11.0-gcc17.patch deleted file mode 100644 index 416074ed1860..000000000000 --- a/dev-qt/qtwebengine/files/qtwebengine-6.11.0-gcc17.patch +++ /dev/null @@ -1,29 +0,0 @@ -https://bugs.gentoo.org/973445 -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125064 ---- a/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/compiler_specific.h -+++ b/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/compiler_specific.h -@@ -352,5 +352,5 @@ - // struct PA_TRIVIAL_ABI S { ~S(); } - // ``` --#if PA_HAS_CPP_ATTRIBUTE(clang::trivial_abi) -+#if PA_HAS_CPP_ATTRIBUTE(clang::trivial_abi) && defined(__clang__) - #define PA_TRIVIAL_ABI [[clang::trivial_abi]] - #else ---- a/src/3rdparty/chromium/base/compiler_specific.h -+++ b/src/3rdparty/chromium/base/compiler_specific.h -@@ -575,5 +575,5 @@ - // struct TRIVIAL_ABI S { ~S(); } - // ``` --#if __has_cpp_attribute(clang::trivial_abi) -+#if __has_cpp_attribute(clang::trivial_abi) && defined(__clang__) - #define TRIVIAL_ABI [[clang::trivial_abi]] - #else ---- a/src/3rdparty/chromium/skia/config/SkUserConfig.h -+++ b/src/3rdparty/chromium/skia/config/SkUserConfig.h -@@ -104,5 +104,5 @@ - - #if defined(__has_attribute) --#if __has_attribute(trivial_abi) -+#if __has_attribute(trivial_abi) && defined(__clang__) - #define SK_TRIVIAL_ABI [[clang::trivial_abi]] - #else diff --git a/dev-qt/qtwebengine/qtwebengine-6.11.1.ebuild b/dev-qt/qtwebengine/qtwebengine-6.11.1.ebuild index 1d21e7771015..95bd6d0a20c8 100644 --- a/dev-qt/qtwebengine/qtwebengine-6.11.1.ebuild +++ b/dev-qt/qtwebengine/qtwebengine-6.11.1.ebuild @@ -110,7 +110,6 @@ PATCHES=( "${WORKDIR}"/patches/${PN} ) PATCHES+=( # add extras as needed here, may merge in set if carries across versions "${FILESDIR}"/${PN}-6.10.3-climits.patch - "${FILESDIR}"/${PN}-6.11.0-gcc17.patch "${FILESDIR}"/${PN}-6.11.1-gcc17.patch "${FILESDIR}"/${PN}-6.11.1-musl-missing-includes.patch "${FILESDIR}"/${PN}-6.11.1-musl-arm64-ifunc.patch diff --git a/dev-qt/qtwebengine/qtwebengine-6.11.2.ebuild b/dev-qt/qtwebengine/qtwebengine-6.11.2.ebuild index f88fc5545fe9..5dec6704b957 100644 --- a/dev-qt/qtwebengine/qtwebengine-6.11.2.ebuild +++ b/dev-qt/qtwebengine/qtwebengine-6.11.2.ebuild @@ -110,7 +110,6 @@ PATCHES=( "${WORKDIR}"/patches/${PN} ) PATCHES+=( # add extras as needed here, may merge in set if carries across versions "${FILESDIR}"/${PN}-6.10.3-climits.patch - "${FILESDIR}"/${PN}-6.11.0-gcc17.patch "${FILESDIR}"/${PN}-6.11.1-musl-missing-includes.patch "${FILESDIR}"/${PN}-6.11.1-musl-arm64-mte.patch "${FILESDIR}"/${PN}-6.11.2-libcxx23.patch diff --git a/dev-qt/qtwebengine/qtwebengine-6.11.9999.ebuild b/dev-qt/qtwebengine/qtwebengine-6.11.9999.ebuild index c94cb514275e..5dec6704b957 100644 --- a/dev-qt/qtwebengine/qtwebengine-6.11.9999.ebuild +++ b/dev-qt/qtwebengine/qtwebengine-6.11.9999.ebuild @@ -3,7 +3,7 @@ EAPI=8 -PYTHON_COMPAT=( python3_{11..14} ) +PYTHON_COMPAT=( python3_{12..14} ) inherit check-reqs flag-o-matic multiprocessing optfeature inherit prefix python-any-r1 qt6-build toolchain-funcs @@ -110,7 +110,6 @@ PATCHES=( "${WORKDIR}"/patches/${PN} ) PATCHES+=( # add extras as needed here, may merge in set if carries across versions "${FILESDIR}"/${PN}-6.10.3-climits.patch - "${FILESDIR}"/${PN}-6.11.0-gcc17.patch "${FILESDIR}"/${PN}-6.11.1-musl-missing-includes.patch "${FILESDIR}"/${PN}-6.11.1-musl-arm64-mte.patch "${FILESDIR}"/${PN}-6.11.2-libcxx23.patch diff --git a/dev-qt/qtwebengine/qtwebengine-6.12.9999.ebuild b/dev-qt/qtwebengine/qtwebengine-6.140.9999.ebuild index c94cb514275e..efbe305ab0b4 100644 --- a/dev-qt/qtwebengine/qtwebengine-6.12.9999.ebuild +++ b/dev-qt/qtwebengine/qtwebengine-6.140.9999.ebuild @@ -3,10 +3,12 @@ EAPI=8 -PYTHON_COMPAT=( python3_{11..14} ) +PYTHON_COMPAT=( python3_{12..14} ) inherit check-reqs flag-o-matic multiprocessing optfeature inherit prefix python-any-r1 qt6-build toolchain-funcs +QT_PV=6.8:6 + DESCRIPTION="Library for rendering dynamic web content in Qt6 C++ and QML applications" SRC_URI+=" https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}-6.11-patchset-5.tar.xz @@ -34,9 +36,9 @@ RDEPEND=" dev-libs/libxslt dev-libs/nspr dev-libs/nss - ~dev-qt/qtbase-${PV}:6[accessibility=,gui,opengl=,ssl,vulkan?,widgets?] - ~dev-qt/qtdeclarative-${PV}:6[widgets?] - ~dev-qt/qtwebchannel-${PV}:6[qml?] + >=dev-qt/qtbase-${QT_PV}=[accessibility=,gui,opengl=,ssl,vulkan?,widgets?] + >=dev-qt/qtdeclarative-${QT_PV}=[widgets?] + >=dev-qt/qtwebchannel-${QT_PV}[qml?] media-libs/fontconfig media-libs/freetype media-libs/harfbuzz:= @@ -66,8 +68,8 @@ RDEPEND=" x11-libs/libxkbfile alsa? ( media-libs/alsa-lib ) !bindist? ( >=media-libs/openh264-2.4:= ) - designer? ( ~dev-qt/qttools-${PV}:6[designer] ) - geolocation? ( ~dev-qt/qtpositioning-${PV}:6 ) + designer? ( >=dev-qt/qttools-${QT_PV}[designer] ) + geolocation? ( >=dev-qt/qtpositioning-${QT_PV} ) kerberos? ( virtual/krb5 ) opengl? ( media-libs/libglvnd[X] ) pulseaudio? ( media-libs/libpulse[glib] ) @@ -110,7 +112,6 @@ PATCHES=( "${WORKDIR}"/patches/${PN} ) PATCHES+=( # add extras as needed here, may merge in set if carries across versions "${FILESDIR}"/${PN}-6.10.3-climits.patch - "${FILESDIR}"/${PN}-6.11.0-gcc17.patch "${FILESDIR}"/${PN}-6.11.1-musl-missing-includes.patch "${FILESDIR}"/${PN}-6.11.1-musl-arm64-mte.patch "${FILESDIR}"/${PN}-6.11.2-libcxx23.patch diff --git a/dev-qt/qtwebengine/qtwebengine-6.9999.ebuild b/dev-qt/qtwebengine/qtwebengine-6.9999.ebuild index 5aeb2ac84dd9..7358e2b80bc4 100644 --- a/dev-qt/qtwebengine/qtwebengine-6.9999.ebuild +++ b/dev-qt/qtwebengine/qtwebengine-6.9999.ebuild @@ -3,10 +3,12 @@ EAPI=8 -PYTHON_COMPAT=( python3_{11..14} ) +PYTHON_COMPAT=( python3_{12..14} ) inherit check-reqs flag-o-matic multiprocessing optfeature inherit prefix python-any-r1 qt6-build toolchain-funcs +QT_PV=6.8:6 + DESCRIPTION="Library for rendering dynamic web content in Qt6 C++ and QML applications" SRC_URI+=" https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}-6.11-patchset-5.tar.xz @@ -34,9 +36,9 @@ RDEPEND=" dev-libs/libxslt dev-libs/nspr dev-libs/nss - ~dev-qt/qtbase-${PV}:6[accessibility=,gui,opengl=,ssl,vulkan?,widgets?] - ~dev-qt/qtdeclarative-${PV}:6[widgets?] - ~dev-qt/qtwebchannel-${PV}:6[qml?] + >=dev-qt/qtbase-${QT_PV}=[accessibility=,gui,opengl=,ssl,vulkan?,widgets?] + >=dev-qt/qtdeclarative-${QT_PV}=[widgets?] + >=dev-qt/qtwebchannel-${QT_PV}[qml?] media-libs/fontconfig media-libs/freetype media-libs/harfbuzz:= @@ -66,8 +68,8 @@ RDEPEND=" x11-libs/libxkbfile alsa? ( media-libs/alsa-lib ) !bindist? ( >=media-libs/openh264-2.4:= ) - designer? ( ~dev-qt/qttools-${PV}:6[designer] ) - geolocation? ( ~dev-qt/qtpositioning-${PV}:6 ) + designer? ( >=dev-qt/qttools-${QT_PV}[designer] ) + geolocation? ( >=dev-qt/qtpositioning-${QT_PV} ) kerberos? ( virtual/krb5 ) opengl? ( media-libs/libglvnd[X] ) pulseaudio? ( media-libs/libpulse[glib] ) @@ -110,7 +112,6 @@ PATCHES=( "${WORKDIR}"/patches/${PN} ) PATCHES+=( # add extras as needed here, may merge in set if carries across versions "${FILESDIR}"/${PN}-6.10.3-climits.patch - "${FILESDIR}"/${PN}-6.11.0-gcc17.patch ) python_check_deps() { diff --git a/dev-qt/qtwebview/qtwebview-6.12.9999.ebuild b/dev-qt/qtwebview/qtwebview-6.12.9999.ebuild index 4c09e718b2ba..4e3c0785b62e 100644 --- a/dev-qt/qtwebview/qtwebview-6.12.9999.ebuild +++ b/dev-qt/qtwebview/qtwebview-6.12.9999.ebuild @@ -14,6 +14,6 @@ fi RDEPEND=" ~dev-qt/qtbase-${PV}:6[gui] ~dev-qt/qtdeclarative-${PV}:6 - ~dev-qt/qtwebengine-${PV}:6[qml] + dev-qt/qtwebengine:6=[qml] " DEPEND="${RDEPEND}" diff --git a/dev-qt/qtwebview/qtwebview-6.9999.ebuild b/dev-qt/qtwebview/qtwebview-6.9999.ebuild index 76539b793b79..4e3c0785b62e 100644 --- a/dev-qt/qtwebview/qtwebview-6.9999.ebuild +++ b/dev-qt/qtwebview/qtwebview-6.9999.ebuild @@ -1,4 +1,4 @@ -# Copyright 2023-2024 Gentoo Authors +# Copyright 2023-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -14,6 +14,6 @@ fi RDEPEND=" ~dev-qt/qtbase-${PV}:6[gui] ~dev-qt/qtdeclarative-${PV}:6 - ~dev-qt/qtwebengine-${PV}:6[qml] + dev-qt/qtwebengine:6=[qml] " DEPEND="${RDEPEND}" diff --git a/dev-util/mesa_clc/Manifest b/dev-util/mesa_clc/Manifest index 868463db1d4b..981260ce724e 100644 --- a/dev-util/mesa_clc/Manifest +++ b/dev-util/mesa_clc/Manifest @@ -5,3 +5,4 @@ DIST mesa-26.1.6.tar.xz 77770828 BLAKE2B 1bb16b0982b81518d8a0dcfc9b78c487167b783 DIST mesa-26.1.7.tar.xz 77799016 BLAKE2B 1418efe5171982eca1560891f18a8be8249b00c9305e461fe68f6dc7f02ec8eb093f67f02c602a96c77bbc7434cad8129ecf8def686b2528cda5892340c8d2db SHA512 9acc75c3d6386f90cf761dfa42e72b1c36d399a6905127d18aa3eb84d665502da7c3cebead82fdbca91ad510673ba7e296b5e148602d6db7e79172d6155f3ec5 DIST mesa-26.1.8.tar.xz 77827888 BLAKE2B 173997a90bbb27d8f6b1e4c349430d063a9264efddf03c9449f93b9e0438fa38948dfbfecddb798cd57818070953b8c525cb3796807101632b1b642c4d6b0361 SHA512 eb3d46ae9aaba70fdd908486cef24041fec9264ddf586eaebbba65ce55e716d306ef9e91be83e742dfaec4dfc94105a5cd3a36b29bf56614febcbcf6c1f8b516 DIST mesa-26.2.1.tar.xz 68500756 BLAKE2B f5ec3451d18da9336d775259dd0d3f0c73c81d0857ba7da32dd296aba258ad5b8424fb8781582a838375e99710451d2aaeda94def604ad006e5a5a378b44d30a SHA512 d4bc755442c6573a1b75cafad50ec66594fa0ca7599c525f368bdecbd551a970e890ed6b044d9251f84278d27dcaa30649fbf4f4bf0adbaa76e1cc1ba6a1181f +DIST mesa-26.2.2.tar.xz 68533264 BLAKE2B a9924a7cbac5dbdb4d93ba8499c49a6be51edd8ec5b258f2986a5690b04f6898012389dcc7e07097bad0defed52e9255d3a2c82bb6101a531b17fde82ef69afc SHA512 55b1234c8653dad9b85ba3de7b777a0d957909baf4628f0c00e21d4ba89c004cb687a1dcf8da46ed0a092231dd4f859027509f83ad8c558750845ba470902615 diff --git a/dev-util/mesa_clc/mesa_clc-26.2.2.ebuild b/dev-util/mesa_clc/mesa_clc-26.2.2.ebuild new file mode 100644 index 000000000000..4b4d408ec3b6 --- /dev/null +++ b/dev-util/mesa_clc/mesa_clc-26.2.2.ebuild @@ -0,0 +1,124 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( {18..22} ) +PYTHON_COMPAT=( python3_{13..14} ) + +inherit llvm-r2 meson python-any-r1 + +MY_PV="${PV/_/-}" + +DESCRIPTION="mesa_clc tool used for building OpenCL C to SPIR-V" +HOMEPAGE="https://mesa3d.org/" + +if [[ ${PV} == 9999 ]]; then + S="${WORKDIR}/mesa_clc-${MY_PV}" + EGIT_REPO_URI="https://gitlab.freedesktop.org/mesa/mesa.git" + inherit git-r3 +else + S="${WORKDIR}/mesa-${MY_PV}" + SRC_URI="https://archive.mesa3d.org/mesa-${MY_PV}.tar.xz" + KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86" +fi + +LICENSE="MIT" +SLOT="0" + +VIDEO_CARDS="asahi panfrost" +for card in ${VIDEO_CARDS}; do + IUSE_VIDEO_CARDS+=" video_cards_${card}" +done +IUSE="${IUSE_VIDEO_CARDS} debug" + +RDEPEND=" + dev-util/spirv-tools + $(llvm_gen_dep ' + dev-util/spirv-llvm-translator:${LLVM_SLOT} + llvm-core/clang:${LLVM_SLOT}= + llvm-core/llvm:${LLVM_SLOT}= + =llvm-runtimes/libclc-${LLVM_SLOT}* + ') +" +DEPEND="${RDEPEND} + dev-libs/expat + >=virtual/zlib-1.2.8:= + x11-libs/libdrm +" +BDEPEND=" + ${PYTHON_DEPS} + $(python_gen_any_dep " + >=dev-python/mako-0.8.0[\${PYTHON_USEDEP}] + dev-python/packaging[\${PYTHON_USEDEP}] + dev-python/pyyaml[\${PYTHON_USEDEP}] + ") + virtual/pkgconfig +" + +python_check_deps() { + python_has_version -b ">=dev-python/mako-0.8.0[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/packaging[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/pyyaml[${PYTHON_USEDEP}]" || return 1 +} + +pkg_setup() { + llvm-r2_pkg_setup + python-any-r1_pkg_setup +} + +src_configure() { + tools_enable video_cards_asahi asahi + tools_enable video_cards_panfrost panfrost + + tools_list() { + local tools="$(sort -u <<< "${1// /$'\n'}")" + echo "${tools//$'\n'/,}" + } + + PKG_CONFIG_PATH="$(get_llvm_prefix)/$(get_libdir)/pkgconfig" + + use debug && EMESON_BUILDTYPE=debug + + local emesonargs=( + -Dallow-broken-lto=true + -Dllvm=enabled + -Dshared-llvm=enabled + -Dmesa-clc=enabled + -Dinstall-mesa-clc=true + -Dprecomp-compiler=enabled + -Dinstall-precomp-compiler=true + -Dtools=$(tools_list "${TOOLS[*]}") + + -Dgallium-drivers='' + -Dvulkan-drivers='' + + # Set platforms empty to avoid the default "auto" setting. If + # platforms is empty meson.build will add surfaceless. + -Dplatforms='' + + -Dglx=disabled + -Dlibunwind=disabled + -Dzstd=disabled + + -Db_ndebug=$(usex debug false true) + ) + + meson_src_configure +} + +src_install() { + dobin "${BUILD_DIR}"/src/compiler/clc/mesa_clc + dobin "${BUILD_DIR}"/src/compiler/spirv/vtn_bindgen2 + use video_cards_asahi && dobin "${BUILD_DIR}"/src/asahi/clc/asahi_clc + use video_cards_panfrost && dobin "${BUILD_DIR}"/src/panfrost/clc/panfrost_compile +} + +# $1 - VIDEO_CARDS flag (check skipped for "--") +# other args - names of tools to enable +tools_enable() { + if [[ $1 == -- ]] || use $1; then + shift + TOOLS+=("$@") + fi +} diff --git a/dev-util/ruff/Manifest b/dev-util/ruff/Manifest index 19fe1444020c..b0a3a1705929 100644 --- a/dev-util/ruff/Manifest +++ b/dev-util/ruff/Manifest @@ -11,4 +11,8 @@ DIST ruff-0.16.3-crates.tar.xz 28676112 BLAKE2B 39589abb617e446375d6005c4af0febc DIST ruff-0.16.3.gh.tar.gz 12914254 BLAKE2B f4c3c8eb0f4894dde899147e44fe4c017993c4c593f15599bd3f282f28b6830f8502f85d6a32a1dad5839349fd92519806a8152b248f61906d3a2a8d8affee79 SHA512 1e1bdb8265944685c2ea4faa97601236d994a24e19ae0f615952dd2c103e930b104b85a0d16d376efe22384b2a46a8486fb5f7dd025496cb9e858c3090fc86bb DIST ruff-0.16.5-crates.tar.xz 29012584 BLAKE2B ba060dbbcbeaa9ba63d1b71808326db157166f132618f21c3ad38db15d18475052549fd5e6b302ca220f8ce6490d234baa9d076e1bef3d478a74ba483eaa04b8 SHA512 0a1b4ac564c87535b243537a3047f6332869c79f7cacdf24c0c27355f660c8fd4e9ee8dc1027381404fb02db3eb3071b8a13cd815445954a4a274322cb5872b5 DIST ruff-0.16.5.gh.tar.gz 13274834 BLAKE2B 9b52f311a8e409f4ad781981684191e90b226fb4ab9acaaf0154694750c1e90d92cd3fa0daf9e1ab537d75ddc0656d2b21d24476900d2775f34cdd343b95a549 SHA512 b6f108000cdab01cb8cb0cce05f2ce20b4b5f521d2823c1d5f8dbde263bbb75d2d23cda58ca9ae69eaae2ddb2536c31df74b6e3cf4ea494bdf7dba11defebb15 +DIST ruff-0.16.6-crates.tar.xz 29012584 BLAKE2B ba060dbbcbeaa9ba63d1b71808326db157166f132618f21c3ad38db15d18475052549fd5e6b302ca220f8ce6490d234baa9d076e1bef3d478a74ba483eaa04b8 SHA512 0a1b4ac564c87535b243537a3047f6332869c79f7cacdf24c0c27355f660c8fd4e9ee8dc1027381404fb02db3eb3071b8a13cd815445954a4a274322cb5872b5 +DIST ruff-0.16.6.gh.tar.gz 13482468 BLAKE2B 7b563df5d39afe53448402d5c708da3fdd07a094f923f593234de2a7eefc7c37f95bfa80e36ce014f0278f8c31765b64a51fc8a657b9372a5c31f090a89fb7a9 SHA512 9516c23d1e2963a5db8ed808c2ae99145afe44f8b86d8b83867f7baa839001784a356718de7f7c636fa8f125d269e2cfc622c68908eef941a39564bdfc9f5bd6 +DIST ruff-0.16.7-crates.tar.xz 29020036 BLAKE2B 032e998658369c0c2dd15d4307b29a09c56015194d570439fcdf2eb51bfe81ff325fcc6b316b82be88f93f1fcb3c6a4b7685cf81a5e178d23eac1bfc87885ac0 SHA512 a5b9e9da3964fadaef3b16900ace802585f8b956976f2a8edfe8b039ed870b4ba10ac526ff18f44560284c9413a7ace548f5ee4a56fbb768728268d8996a1ef8 +DIST ruff-0.16.7.gh.tar.gz 13601619 BLAKE2B d4a80f813d79b63b1bc9130654ea170ec6496e4bfa13afbeb2b3dc674227e2a8b0e67ab1f46b76394b47129487d3ec31226389dda9335e43257c6f2d44cf3b16 SHA512 221deb759aa9db4d3fc189a66011d6f763bbec60166e62fb935778966ec6f35e88b8ac94a31ed22412f6398100517f4f4e119d1aad884beba2a60e57c1e9662c DIST salsa-55e5e7d32fa3fc189276f35bb04c9438f9aedbd1.gh.tar.gz 731425 BLAKE2B ce720abaa295b46c7e1fa06a73e2ad9a48a6b9da7f2b4a91edba38a28bb9a63a1661886fc7c5d6dbc915f589f2e055731a544cdf18afb4dd7b3f6815c59e543b SHA512 91942cfc6bbfb7f07366cdd3d42e5296bff877ee723b24868ff3c278defd0ef247f03e957332bc0696553f0f1977a41c18d08efe7887f5bda3a1cb98543bddbd diff --git a/dev-util/ruff/ruff-0.16.6.ebuild b/dev-util/ruff/ruff-0.16.6.ebuild new file mode 100644 index 000000000000..00904e43056a --- /dev/null +++ b/dev-util/ruff/ruff-0.16.6.ebuild @@ -0,0 +1,111 @@ +# Copyright 2024-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# Autogenerated by pycargoebuild 0.15.1 + +EAPI=8 + +CRATES=" +" + +RUST_MIN_VER="1.96" + +inherit shell-completion cargo + +DESCRIPTION="An extremely fast Python linter, written in Rust" +HOMEPAGE=" + https://docs.astral.sh/ruff/ + https://github.com/astral-sh/ruff +" +SRC_URI=" + ${CARGO_CRATE_URIS} + https://github.com/astral-sh/ruff/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz + https://github.com/gentoo-crate-dist/${PN}/releases/download/${PV}/${P}-crates.tar.xz +" + +LICENSE="MIT" +# Dependent crate licenses +LICENSE+=" + Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD CC0-1.0 ISC MIT + MPL-2.0 PSF-2 Unicode-3.0 Unicode-DFS-2016 WTFPL-2 ZLIB +" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv" + +RDEPEND=" + !elibc_musl? ( !elibc_Darwin? ( !elibc_bionic? ( dev-libs/jemalloc:= ) ) ) + app-arch/zstd +" +DEPEND=" + ${RDEPEND} +" + +QA_FLAGS_IGNORED="usr/bin/.*" + +DOCS=( + BREAKING_CHANGES.md + CONTRIBUTING.md + README.md + assets + docs +) + +src_prepare() { + default + + # Experimental cruft cleaner. These crates are not used by the ruff binary, + # and when they are removed in the git repo, the lockfile is regenerated + # and gets quite a bit smaller. Hence pycargoebuild also produces much + # smaller CRATES= variables. Less for the user to download, fewer distfiles + # to mirror. + pushd crates >/dev/null || die + rm -r ruff_{benchmark,dev} ty{,_{server,completion_eval}} *_wasm || die + popd > /dev/null || die + + # tests that hang in the ebuild environment + rm crates/ruff_annotate_snippets/tests/examples.rs || die +} + +src_configure() { + export RUSTFLAGS="${RUSTFLAGS}" + cargo_src_configure +} + +src_compile() { + local -x ZSTD_SYS_USE_PKG_CONFIG=1 + # Gentoo bug #927338 + if use !elibc_musl && use !elibc_Darwin && use !elibc_bionic; then + local -x CARGO_FEATURE_UNPREFIXED_MALLOC_ON_SUPPORTED_PLATFORMS=1 + local -x JEMALLOC_OVERRIDE="${ESYSROOT}/usr/$(get_libdir)"/libjemalloc.so + fi + cargo_src_compile --bin ruff + + local releasedir + releasedir=$(cargo_target_dir) + + ${releasedir}/ruff generate-shell-completion bash > ruff-completion.bash || die + ${releasedir}/ruff generate-shell-completion fish > ruff-completion.fish || die + ${releasedir}/ruff generate-shell-completion zsh > ruff-completion.zsh || die +} + +src_test() { + local -x ZSTD_SYS_USE_PKG_CONFIG=1 + # Gentoo bug #927338 + if use !elibc_musl && use !elibc_Darwin && use !elibc_bionic; then + local -x CARGO_FEATURE_UNPREFIXED_MALLOC_ON_SUPPORTED_PLATFORMS=1 + local -x JEMALLOC_OVERRIDE="${ESYSROOT}/usr/$(get_libdir)"/libjemalloc.so + fi + cargo_src_test --target-dir "${PWD}"/tested-target/ +} + +src_install() { + local releasedir=$(cargo_target_dir) + + dobin ${releasedir}/ruff + + newbashcomp ruff-completion.bash ruff + newfishcomp ruff-completion.fish ruff.fish + newzshcomp ruff-completion.zsh _ruff + + dodoc -r "${DOCS[@]}" +} diff --git a/dev-util/ruff/ruff-0.16.7.ebuild b/dev-util/ruff/ruff-0.16.7.ebuild new file mode 100644 index 000000000000..00904e43056a --- /dev/null +++ b/dev-util/ruff/ruff-0.16.7.ebuild @@ -0,0 +1,111 @@ +# Copyright 2024-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# Autogenerated by pycargoebuild 0.15.1 + +EAPI=8 + +CRATES=" +" + +RUST_MIN_VER="1.96" + +inherit shell-completion cargo + +DESCRIPTION="An extremely fast Python linter, written in Rust" +HOMEPAGE=" + https://docs.astral.sh/ruff/ + https://github.com/astral-sh/ruff +" +SRC_URI=" + ${CARGO_CRATE_URIS} + https://github.com/astral-sh/ruff/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz + https://github.com/gentoo-crate-dist/${PN}/releases/download/${PV}/${P}-crates.tar.xz +" + +LICENSE="MIT" +# Dependent crate licenses +LICENSE+=" + Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD CC0-1.0 ISC MIT + MPL-2.0 PSF-2 Unicode-3.0 Unicode-DFS-2016 WTFPL-2 ZLIB +" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv" + +RDEPEND=" + !elibc_musl? ( !elibc_Darwin? ( !elibc_bionic? ( dev-libs/jemalloc:= ) ) ) + app-arch/zstd +" +DEPEND=" + ${RDEPEND} +" + +QA_FLAGS_IGNORED="usr/bin/.*" + +DOCS=( + BREAKING_CHANGES.md + CONTRIBUTING.md + README.md + assets + docs +) + +src_prepare() { + default + + # Experimental cruft cleaner. These crates are not used by the ruff binary, + # and when they are removed in the git repo, the lockfile is regenerated + # and gets quite a bit smaller. Hence pycargoebuild also produces much + # smaller CRATES= variables. Less for the user to download, fewer distfiles + # to mirror. + pushd crates >/dev/null || die + rm -r ruff_{benchmark,dev} ty{,_{server,completion_eval}} *_wasm || die + popd > /dev/null || die + + # tests that hang in the ebuild environment + rm crates/ruff_annotate_snippets/tests/examples.rs || die +} + +src_configure() { + export RUSTFLAGS="${RUSTFLAGS}" + cargo_src_configure +} + +src_compile() { + local -x ZSTD_SYS_USE_PKG_CONFIG=1 + # Gentoo bug #927338 + if use !elibc_musl && use !elibc_Darwin && use !elibc_bionic; then + local -x CARGO_FEATURE_UNPREFIXED_MALLOC_ON_SUPPORTED_PLATFORMS=1 + local -x JEMALLOC_OVERRIDE="${ESYSROOT}/usr/$(get_libdir)"/libjemalloc.so + fi + cargo_src_compile --bin ruff + + local releasedir + releasedir=$(cargo_target_dir) + + ${releasedir}/ruff generate-shell-completion bash > ruff-completion.bash || die + ${releasedir}/ruff generate-shell-completion fish > ruff-completion.fish || die + ${releasedir}/ruff generate-shell-completion zsh > ruff-completion.zsh || die +} + +src_test() { + local -x ZSTD_SYS_USE_PKG_CONFIG=1 + # Gentoo bug #927338 + if use !elibc_musl && use !elibc_Darwin && use !elibc_bionic; then + local -x CARGO_FEATURE_UNPREFIXED_MALLOC_ON_SUPPORTED_PLATFORMS=1 + local -x JEMALLOC_OVERRIDE="${ESYSROOT}/usr/$(get_libdir)"/libjemalloc.so + fi + cargo_src_test --target-dir "${PWD}"/tested-target/ +} + +src_install() { + local releasedir=$(cargo_target_dir) + + dobin ${releasedir}/ruff + + newbashcomp ruff-completion.bash ruff + newfishcomp ruff-completion.fish ruff.fish + newzshcomp ruff-completion.zsh _ruff + + dodoc -r "${DOCS[@]}" +} diff --git a/gui-apps/oledsaver/Manifest b/gui-apps/oledsaver/Manifest new file mode 100644 index 000000000000..2200d936a709 --- /dev/null +++ b/gui-apps/oledsaver/Manifest @@ -0,0 +1,7 @@ +DIST oledsaver-1.0.0.tar.gz 26720 BLAKE2B 411970d3e0d80e78c355cc3f0be3626c7ed6a06fb04d525174583a2d8b07c6a67ac1736f697b5700f4e45f242a3a52943d5991e8293cea781acf24a3ef49726e SHA512 f8b74fb7aac9f87e5f6f651b40d270d859966a18fda18ed014eab05af2d0e1a386da7217b86f3147e2a242bdd5481c18384f1fcf8f543b34d1003011df9523f5 +DIST oledsaver-1.0.1.tar.gz 27183 BLAKE2B 9d7e83eb71f56c6cf4c2a818a9a8a0c5469406a319e5d5e27aca956688db776674d88b6e43665d1f9ce6bcde45c2d9d9a722e0f8f7fdf130a4b5f08a4cbf7617 SHA512 19564fc3655399e33242326a067e0f1b8f292c5f6f5dac6f4ea906a41c0262ced07cf8bc7d07771a0a2b939c9428fed05fdfb1aedd0ffa8975e1325461b318c5 +DIST oledsaver-1.0.2.tar.gz 29061 BLAKE2B 7e5c1fcd3d81362238f6234682a1f88d3773bedce8c6f993cddecd5196afb633b89675be65b782495524e20d0fe166e5e0e0e20dd3ffca9b6d3d92bab6fb0f94 SHA512 a49956bda3f3acf62d445d70fcb492ef809c6fc55c5d40b4370e27b9144315952c5d77cca5b9ba261c3ba868035d9c7c76aee80214e0db1a6453d5f3e480e830 +DIST oledsaver-1.0.3.tar.gz 31167 BLAKE2B ecde4bb9844f179f011a4f88c081ac36dace7bea2605f2db5974df9c5231f4bf7c9d4fc5613c3029a04ff938428b10e96fff01c3703d995e00d5a8378dd2cd02 SHA512 15bfe230442225f6622935d2cff64edef9e3a2eecafef7f531b4b4a7f23ca7b44a1d110fbcccec89f497892871614db1b240cf450732a0fa09f3f35b58ee8fad +DIST oledsaver-1.0.4.tar.gz 31873 BLAKE2B 7963c3110ae0d1e2bd8bb3b8d9629aecf91e1e6f62638eca7b87b14c5aec201cd6ba41baa60def58bf97ac08659678c156541bfe6c165f1fd1b96bad4c05ba3f SHA512 0f5b7e220fa01f5da681acc6421e4da586d90ef06519d78d61b8aac3a1011afded473b6be4a404a4c9bf2d3267ba0f743df4b06849924ada3c92f5189fa6561a +DIST oledsaver-1.0.5.tar.gz 32250 BLAKE2B 4893b610eb3c8bda568e8fcde95f5eaf4144a57c553296a0f12fb42403774ba8df42e5f6a59d0809c84fc5308ccf6a032ab022ce90ffd7688d5c57796a50b289 SHA512 f3fe7d327ec4249f292091938fd0458542243671552150604c17a4059641bdc8462bc1f79b1dbedcfc8a1221fb0663a04938721e3238d23a57d6f5619b1f5177 +DIST oledsaver-1.0.6.tar.gz 32964 BLAKE2B 5de0014b1a341d968dfb3fd62f599a44a628b4ef057e2c0a5e62df47c15a36433bfe0b2fd68afccdb31f5ba4323a83c43b72cdde25fca27290fa7cb4cf52d285 SHA512 c33353ff5d1bb2d29874cad80d20311439d2882f3916f06ac363c7f0b488f6dd7817cc92297de21b96479d7f34beaa82533543cd8b6a33235ab6c6c15bf3651c diff --git a/gui-apps/oledsaver/README.video-inhibition.md b/gui-apps/oledsaver/README.video-inhibition.md new file mode 100644 index 000000000000..ffa4598fbf4f --- /dev/null +++ b/gui-apps/oledsaver/README.video-inhibition.md @@ -0,0 +1,31 @@ +# Per-output video inhibition + +Oledsaver 1.0.9 adds a Wayfire `oledsaver-idle` plugin. Load it alongside `ipc`, +`ipc-rules`, and `oledsaver-cursor` in Wayfire's `core/plugins` setting. + +`INHIBIT_VIDEO = 1` in the `[global]` section of oledsaver.conf enables this feature +(default). Set it to 0 to disable it. The manager reloads configuration periodically. + +Applications that create Wayland idle inhibitors, including tested mpv playback, +keep their window's output awake. Moving the window moves the protection; pausing +or closing it releases protection and the normal idle countdown resumes. Minimized +windows, disabled scene nodes, and windows off the current workspace are ignored. +An already active saver on the playback output is dismissed. Explicit activation +and lock requests still take precedence until user input resumes. + +This follows application keep-awake requests, not video frame analysis. Players +that do not use Wayland idle inhibition cannot be detected this way. Applications +may also use inhibitors for non-video tasks. The window's primary output is used; +a window spanning multiple monitors does not inhibit every intersected monitor. + +The manager uses ext-idle-notify v2's input-only notification to avoid one video +inhibiting idle detection across all monitors. With protocol v1 it falls back to +the old notification and logs a warning about the focused output also staying awake. + +IPC diagnostic: `oledsaver/idle_inhibitors` returns `{"outputs":["DP-2"]}`. +Manager logs contain per-output `video inhibition active/released` transitions. + +Validation: build with `make -C files all`; the C regression test is +`tests/test-inhibition.c` (link with the same protocol sources and libraries as +`files/oledsaver.c`). Live mpv tests covered playback on DP-1, moving to DP-3, +pause, resume, and preserving an existing DP-2 inhibitor throughout. diff --git a/gui-apps/oledsaver/files/Makefile b/gui-apps/oledsaver/files/Makefile new file mode 100644 index 000000000000..67302fa9bf08 --- /dev/null +++ b/gui-apps/oledsaver/files/Makefile @@ -0,0 +1,98 @@ +CC ?= gcc +CXX ?= c++ +CFLAGS ?= -Wall -Wextra -Wno-format-truncation -O2 -std=c11 +CXXFLAGS ?= -Wall -Wextra -O2 -std=c++17 +LDFLAGS ?= +PREFIX ?= /usr +DESTDIR ?= + +# json-c via pkg-config +JSON_C_CFLAGS := $(shell pkg-config --cflags json-c) +JSON_C_LIBS := $(shell pkg-config --libs json-c) + +# Wayland + EGL + GLESv2 + FreeType +WL_CFLAGS := $(shell pkg-config --cflags wayland-client wayland-egl egl glesv2 freetype2) +WL_LIBS := $(shell pkg-config --libs wayland-client wayland-egl egl glesv2 freetype2) -lrt -lm + +# Wayfire plugin helper for compositor cursor control +WF_CFLAGS := $(shell pkg-config --cflags wayfire wf-utils) +WF_LIBS := $(shell pkg-config --libs wayfire wf-utils) +WF_PLUGINDIR := $(shell pkg-config --variable=plugindir wayfire) +WF_METADATADIR := $(shell pkg-config --variable=metadatadir wayfire) + +# Protocol XML sources +WLR_LAYER_SHELL_XML ?= wlr-layer-shell-unstable-v1.xml +XDG_OUTPUT_XML ?= $(shell pkg-config --variable=pkgdatadir wayland-protocols)/unstable/xdg-output/xdg-output-unstable-v1.xml +XDG_SHELL_XML ?= $(shell pkg-config --variable=pkgdatadir wayland-protocols)/stable/xdg-shell/xdg-shell.xml +EXT_IDLE_NOTIFY_XML ?= $(shell pkg-config --variable=pkgdatadir wayland-protocols)/staging/ext-idle-notify/ext-idle-notify-v1.xml + +# Generated protocol files +PROTO_HEADERS := wlr-layer-shell-unstable-v1-client-protocol.h \ + xdg-output-unstable-v1-client-protocol.h \ + xdg-shell-client-protocol.h \ + ext-idle-notify-v1-client-protocol.h +PROTO_SOURCES := wlr-layer-shell-unstable-v1-protocol.c \ + xdg-output-unstable-v1-protocol.c \ + xdg-shell-protocol.c \ + ext-idle-notify-v1-protocol.c + +.PHONY: all clean install install-conf + +IDLE_PLUGIN := $(if $(wildcard oledsaver-idle.cpp),liboledsaver-idle.so) + +all: oledsaver liboledsaver-cursor.so $(IDLE_PLUGIN) + +# ── Protocol generation ────────────────────────────────────────────── + +wlr-layer-shell-unstable-v1-client-protocol.h: $(WLR_LAYER_SHELL_XML) + wayland-scanner client-header $< $@ + +wlr-layer-shell-unstable-v1-protocol.c: $(WLR_LAYER_SHELL_XML) + wayland-scanner private-code $< $@ + +xdg-output-unstable-v1-client-protocol.h: $(XDG_OUTPUT_XML) + wayland-scanner client-header $< $@ + +xdg-output-unstable-v1-protocol.c: $(XDG_OUTPUT_XML) + wayland-scanner private-code $< $@ + +xdg-shell-client-protocol.h: $(XDG_SHELL_XML) + wayland-scanner client-header $< $@ + +xdg-shell-protocol.c: $(XDG_SHELL_XML) + wayland-scanner private-code $< $@ + +ext-idle-notify-v1-client-protocol.h: $(EXT_IDLE_NOTIFY_XML) + wayland-scanner client-header $< $@ + +ext-idle-notify-v1-protocol.c: $(EXT_IDLE_NOTIFY_XML) + wayland-scanner private-code $< $@ + +# ── oledsaver (combined manager + renderer) ────────────────────────── + +oledsaver: oledsaver.c $(PROTO_SOURCES) $(PROTO_HEADERS) + $(CC) $(CFLAGS) $(JSON_C_CFLAGS) $(WL_CFLAGS) -o $@ oledsaver.c $(PROTO_SOURCES) $(LDFLAGS) $(JSON_C_LIBS) $(WL_LIBS) -lpthread + +liboledsaver-cursor.so: oledsaver-cursor.cpp + $(CXX) $(CXXFLAGS) -fPIC -shared -DWAYFIRE_PLUGIN -DWLR_USE_UNSTABLE $(WF_CFLAGS) -o $@ $< $(LDFLAGS) $(WF_LIBS) + +liboledsaver-idle.so: oledsaver-idle.cpp + $(CXX) $(CXXFLAGS) -fPIC -shared -DWAYFIRE_PLUGIN -DWLR_USE_UNSTABLE $(WF_CFLAGS) -o $@ $< $(LDFLAGS) $(WF_LIBS) + +# ── Install / Clean ───────────────────────────────────────────────── + +install: oledsaver liboledsaver-cursor.so $(IDLE_PLUGIN) + install -Dm755 oledsaver $(DESTDIR)$(PREFIX)/bin/oledsaver + install -Dm755 liboledsaver-cursor.so $(DESTDIR)$(WF_PLUGINDIR)/liboledsaver-cursor.so + install -Dm644 oledsaver-cursor.xml $(DESTDIR)$(WF_METADATADIR)/oledsaver-cursor.xml + +ifneq ($(IDLE_PLUGIN),) + install -Dm755 liboledsaver-idle.so $(DESTDIR)$(WF_PLUGINDIR)/liboledsaver-idle.so + install -Dm644 oledsaver-idle.xml $(DESTDIR)$(WF_METADATADIR)/oledsaver-idle.xml +endif + +install-conf: + install -Dm644 oledsaver.conf.default $(DESTDIR)/etc/oledsaver.conf + +clean: + rm -f oledsaver liboledsaver-cursor.so liboledsaver-idle.so $(PROTO_HEADERS) $(PROTO_SOURCES) diff --git a/gui-apps/oledsaver/files/ext-idle-notify-v1-client-protocol.h b/gui-apps/oledsaver/files/ext-idle-notify-v1-client-protocol.h new file mode 100644 index 000000000000..4cae6ddbf8a1 --- /dev/null +++ b/gui-apps/oledsaver/files/ext-idle-notify-v1-client-protocol.h @@ -0,0 +1,323 @@ +/* Generated by wayland-scanner 1.25.0 */ + +#ifndef EXT_IDLE_NOTIFY_V1_CLIENT_PROTOCOL_H +#define EXT_IDLE_NOTIFY_V1_CLIENT_PROTOCOL_H + +#include <stdint.h> +#include <stddef.h> +#include "wayland-client.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @page page_ext_idle_notify_v1 The ext_idle_notify_v1 protocol + * @section page_ifaces_ext_idle_notify_v1 Interfaces + * - @subpage page_iface_ext_idle_notifier_v1 - idle notification manager + * - @subpage page_iface_ext_idle_notification_v1 - idle notification + * @section page_copyright_ext_idle_notify_v1 Copyright + * <pre> + * + * Copyright © 2015 Martin Gräßlin + * Copyright © 2022 Simon Ser + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * </pre> + */ +struct ext_idle_notification_v1; +struct ext_idle_notifier_v1; +struct wl_seat; + +#ifndef EXT_IDLE_NOTIFIER_V1_INTERFACE +#define EXT_IDLE_NOTIFIER_V1_INTERFACE +/** + * @page page_iface_ext_idle_notifier_v1 ext_idle_notifier_v1 + * @section page_iface_ext_idle_notifier_v1_desc Description + * + * This interface allows clients to monitor user idle status. + * + * After binding to this global, clients can create ext_idle_notification_v1 + * objects to get notified when the user is idle for a given amount of time. + * @section page_iface_ext_idle_notifier_v1_api API + * See @ref iface_ext_idle_notifier_v1. + */ +/** + * @defgroup iface_ext_idle_notifier_v1 The ext_idle_notifier_v1 interface + * + * This interface allows clients to monitor user idle status. + * + * After binding to this global, clients can create ext_idle_notification_v1 + * objects to get notified when the user is idle for a given amount of time. + */ +extern const struct wl_interface ext_idle_notifier_v1_interface; +#endif +#ifndef EXT_IDLE_NOTIFICATION_V1_INTERFACE +#define EXT_IDLE_NOTIFICATION_V1_INTERFACE +/** + * @page page_iface_ext_idle_notification_v1 ext_idle_notification_v1 + * @section page_iface_ext_idle_notification_v1_desc Description + * + * This interface is used by the compositor to send idle notification events + * to clients. + * + * Initially the notification object is not idle. The notification object + * becomes idle when no user activity has happened for at least the timeout + * duration, starting from the creation of the notification object. User + * activity may include input events or a presence sensor, but is + * compositor-specific. + * + * How this notification responds to idle inhibitors depends on how + * it was constructed. If constructed from the + * get_idle_notification request, then if an idle inhibitor is + * active (e.g. another client has created a zwp_idle_inhibitor_v1 + * on a visible surface), the compositor must not make the + * notification object idle. However, if constructed from the + * get_input_idle_notification request, then idle inhibitors are + * ignored, and only input from the user, e.g. from a keyboard or + * mouse, counts as activity. + * + * When the notification object becomes idle, an idled event is sent. When + * user activity starts again, the notification object stops being idle, + * a resumed event is sent and the timeout is restarted. + * @section page_iface_ext_idle_notification_v1_api API + * See @ref iface_ext_idle_notification_v1. + */ +/** + * @defgroup iface_ext_idle_notification_v1 The ext_idle_notification_v1 interface + * + * This interface is used by the compositor to send idle notification events + * to clients. + * + * Initially the notification object is not idle. The notification object + * becomes idle when no user activity has happened for at least the timeout + * duration, starting from the creation of the notification object. User + * activity may include input events or a presence sensor, but is + * compositor-specific. + * + * How this notification responds to idle inhibitors depends on how + * it was constructed. If constructed from the + * get_idle_notification request, then if an idle inhibitor is + * active (e.g. another client has created a zwp_idle_inhibitor_v1 + * on a visible surface), the compositor must not make the + * notification object idle. However, if constructed from the + * get_input_idle_notification request, then idle inhibitors are + * ignored, and only input from the user, e.g. from a keyboard or + * mouse, counts as activity. + * + * When the notification object becomes idle, an idled event is sent. When + * user activity starts again, the notification object stops being idle, + * a resumed event is sent and the timeout is restarted. + */ +extern const struct wl_interface ext_idle_notification_v1_interface; +#endif + +#define EXT_IDLE_NOTIFIER_V1_DESTROY 0 +#define EXT_IDLE_NOTIFIER_V1_GET_IDLE_NOTIFICATION 1 +#define EXT_IDLE_NOTIFIER_V1_GET_INPUT_IDLE_NOTIFICATION 2 + + +/** + * @ingroup iface_ext_idle_notifier_v1 + */ +#define EXT_IDLE_NOTIFIER_V1_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_ext_idle_notifier_v1 + */ +#define EXT_IDLE_NOTIFIER_V1_GET_IDLE_NOTIFICATION_SINCE_VERSION 1 +/** + * @ingroup iface_ext_idle_notifier_v1 + */ +#define EXT_IDLE_NOTIFIER_V1_GET_INPUT_IDLE_NOTIFICATION_SINCE_VERSION 2 + +/** @ingroup iface_ext_idle_notifier_v1 */ +static inline void +ext_idle_notifier_v1_set_user_data(struct ext_idle_notifier_v1 *ext_idle_notifier_v1, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) ext_idle_notifier_v1, user_data); +} + +/** @ingroup iface_ext_idle_notifier_v1 */ +static inline void * +ext_idle_notifier_v1_get_user_data(struct ext_idle_notifier_v1 *ext_idle_notifier_v1) +{ + return wl_proxy_get_user_data((struct wl_proxy *) ext_idle_notifier_v1); +} + +static inline uint32_t +ext_idle_notifier_v1_get_version(struct ext_idle_notifier_v1 *ext_idle_notifier_v1) +{ + return wl_proxy_get_version((struct wl_proxy *) ext_idle_notifier_v1); +} + +/** + * @ingroup iface_ext_idle_notifier_v1 + * + * Destroy the manager object. All objects created via this interface + * remain valid. + */ +static inline void +ext_idle_notifier_v1_destroy(struct ext_idle_notifier_v1 *ext_idle_notifier_v1) +{ + wl_proxy_marshal_flags((struct wl_proxy *) ext_idle_notifier_v1, + EXT_IDLE_NOTIFIER_V1_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) ext_idle_notifier_v1), WL_MARSHAL_FLAG_DESTROY); +} + +/** + * @ingroup iface_ext_idle_notifier_v1 + * + * Create a new idle notification object. + * + * The notification object has a minimum timeout duration and is tied to a + * seat. The client will be notified if the seat is inactive for at least + * the provided timeout. See ext_idle_notification_v1 for more details. + * + * A zero timeout is valid and means the client wants to be notified as + * soon as possible when the seat is inactive. + */ +static inline struct ext_idle_notification_v1 * +ext_idle_notifier_v1_get_idle_notification(struct ext_idle_notifier_v1 *ext_idle_notifier_v1, uint32_t timeout, struct wl_seat *seat) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_flags((struct wl_proxy *) ext_idle_notifier_v1, + EXT_IDLE_NOTIFIER_V1_GET_IDLE_NOTIFICATION, &ext_idle_notification_v1_interface, wl_proxy_get_version((struct wl_proxy *) ext_idle_notifier_v1), 0, NULL, timeout, seat); + + return (struct ext_idle_notification_v1 *) id; +} + +/** + * @ingroup iface_ext_idle_notifier_v1 + * + * Create a new idle notification object to track input from the + * user, such as keyboard and mouse movement. Because this object is + * meant to track user input alone, it ignores idle inhibitors. + * + * The notification object has a minimum timeout duration and is tied to a + * seat. The client will be notified if the seat is inactive for at least + * the provided timeout. See ext_idle_notification_v1 for more details. + * + * A zero timeout is valid and means the client wants to be notified as + * soon as possible when the seat is inactive. + */ +static inline struct ext_idle_notification_v1 * +ext_idle_notifier_v1_get_input_idle_notification(struct ext_idle_notifier_v1 *ext_idle_notifier_v1, uint32_t timeout, struct wl_seat *seat) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_flags((struct wl_proxy *) ext_idle_notifier_v1, + EXT_IDLE_NOTIFIER_V1_GET_INPUT_IDLE_NOTIFICATION, &ext_idle_notification_v1_interface, wl_proxy_get_version((struct wl_proxy *) ext_idle_notifier_v1), 0, NULL, timeout, seat); + + return (struct ext_idle_notification_v1 *) id; +} + +/** + * @ingroup iface_ext_idle_notification_v1 + * @struct ext_idle_notification_v1_listener + */ +struct ext_idle_notification_v1_listener { + /** + * notification object is idle + * + * This event is sent when the notification object becomes idle. + * + * It's a compositor protocol error to send this event twice + * without a resumed event in-between. + */ + void (*idled)(void *data, + struct ext_idle_notification_v1 *ext_idle_notification_v1); + /** + * notification object is no longer idle + * + * This event is sent when the notification object stops being + * idle. + * + * It's a compositor protocol error to send this event twice + * without an idled event in-between. It's a compositor protocol + * error to send this event prior to any idled event. + */ + void (*resumed)(void *data, + struct ext_idle_notification_v1 *ext_idle_notification_v1); +}; + +/** + * @ingroup iface_ext_idle_notification_v1 + */ +static inline int +ext_idle_notification_v1_add_listener(struct ext_idle_notification_v1 *ext_idle_notification_v1, + const struct ext_idle_notification_v1_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) ext_idle_notification_v1, + (void (**)(void)) listener, data); +} + +#define EXT_IDLE_NOTIFICATION_V1_DESTROY 0 + +/** + * @ingroup iface_ext_idle_notification_v1 + */ +#define EXT_IDLE_NOTIFICATION_V1_IDLED_SINCE_VERSION 1 +/** + * @ingroup iface_ext_idle_notification_v1 + */ +#define EXT_IDLE_NOTIFICATION_V1_RESUMED_SINCE_VERSION 1 + +/** + * @ingroup iface_ext_idle_notification_v1 + */ +#define EXT_IDLE_NOTIFICATION_V1_DESTROY_SINCE_VERSION 1 + +/** @ingroup iface_ext_idle_notification_v1 */ +static inline void +ext_idle_notification_v1_set_user_data(struct ext_idle_notification_v1 *ext_idle_notification_v1, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) ext_idle_notification_v1, user_data); +} + +/** @ingroup iface_ext_idle_notification_v1 */ +static inline void * +ext_idle_notification_v1_get_user_data(struct ext_idle_notification_v1 *ext_idle_notification_v1) +{ + return wl_proxy_get_user_data((struct wl_proxy *) ext_idle_notification_v1); +} + +static inline uint32_t +ext_idle_notification_v1_get_version(struct ext_idle_notification_v1 *ext_idle_notification_v1) +{ + return wl_proxy_get_version((struct wl_proxy *) ext_idle_notification_v1); +} + +/** + * @ingroup iface_ext_idle_notification_v1 + * + * Destroy the notification object. + */ +static inline void +ext_idle_notification_v1_destroy(struct ext_idle_notification_v1 *ext_idle_notification_v1) +{ + wl_proxy_marshal_flags((struct wl_proxy *) ext_idle_notification_v1, + EXT_IDLE_NOTIFICATION_V1_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) ext_idle_notification_v1), WL_MARSHAL_FLAG_DESTROY); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/gui-apps/oledsaver/files/ext-idle-notify-v1-protocol.c b/gui-apps/oledsaver/files/ext-idle-notify-v1-protocol.c new file mode 100644 index 000000000000..851cbab29fdc --- /dev/null +++ b/gui-apps/oledsaver/files/ext-idle-notify-v1-protocol.c @@ -0,0 +1,80 @@ +/* Generated by wayland-scanner 1.25.0 */ + +/* + * Copyright © 2015 Martin Gräßlin + * Copyright © 2022 Simon Ser + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include <stdbool.h> +#include <stdlib.h> +#include <stdint.h> +#include "wayland-util.h" + +#ifndef __has_attribute +# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */ +#endif + +#if (__has_attribute(visibility) || defined(__GNUC__) && __GNUC__ >= 4) +#define WL_PRIVATE __attribute__ ((visibility("hidden"))) +#else +#define WL_PRIVATE +#endif + +extern const struct wl_interface ext_idle_notification_v1_interface; +extern const struct wl_interface wl_seat_interface; + +static const struct wl_interface *ext_idle_notify_v1_types[] = { + &ext_idle_notification_v1_interface, + NULL, + &wl_seat_interface, + &ext_idle_notification_v1_interface, + NULL, + &wl_seat_interface, +}; + +static const struct wl_message ext_idle_notifier_v1_requests[] = { + { "destroy", "", ext_idle_notify_v1_types + 0 }, + { "get_idle_notification", "nuo", ext_idle_notify_v1_types + 0 }, + { "get_input_idle_notification", "2nuo", ext_idle_notify_v1_types + 3 }, +}; + +WL_PRIVATE const struct wl_interface ext_idle_notifier_v1_interface = { + "ext_idle_notifier_v1", 2, + 3, ext_idle_notifier_v1_requests, + 0, NULL, +}; + +static const struct wl_message ext_idle_notification_v1_requests[] = { + { "destroy", "", ext_idle_notify_v1_types + 0 }, +}; + +static const struct wl_message ext_idle_notification_v1_events[] = { + { "idled", "", ext_idle_notify_v1_types + 0 }, + { "resumed", "", ext_idle_notify_v1_types + 0 }, +}; + +WL_PRIVATE const struct wl_interface ext_idle_notification_v1_interface = { + "ext_idle_notification_v1", 2, + 1, ext_idle_notification_v1_requests, + 2, ext_idle_notification_v1_events, +}; + diff --git a/gui-apps/oledsaver/files/liboledsaver-cursor.so b/gui-apps/oledsaver/files/liboledsaver-cursor.so Binary files differnew file mode 100755 index 000000000000..a9c8697c8a4e --- /dev/null +++ b/gui-apps/oledsaver/files/liboledsaver-cursor.so diff --git a/gui-apps/oledsaver/files/liboledsaver-idle.so b/gui-apps/oledsaver/files/liboledsaver-idle.so Binary files differnew file mode 100755 index 000000000000..b5b739749366 --- /dev/null +++ b/gui-apps/oledsaver/files/liboledsaver-idle.so diff --git a/gui-apps/oledsaver/files/oledsaver b/gui-apps/oledsaver/files/oledsaver Binary files differnew file mode 100755 index 000000000000..53837e770738 --- /dev/null +++ b/gui-apps/oledsaver/files/oledsaver diff --git a/gui-apps/oledsaver/files/oledsaver-cursor.cpp b/gui-apps/oledsaver/files/oledsaver-cursor.cpp new file mode 100644 index 000000000000..ee8f0e65e75a --- /dev/null +++ b/gui-apps/oledsaver/files/oledsaver-cursor.cpp @@ -0,0 +1,104 @@ +#include <cmath> +#include <string> + +#include <wayfire/core.hpp> +#include <wayfire/output-layout.hpp> +#include <wayfire/output.hpp> +#include <wayfire/plugin.hpp> +#include <wayfire/plugins/common/shared-core-data.hpp> +#include <wayfire/plugins/ipc/ipc-method-repository.hpp> + +namespace wf +{ +class oledsaver_cursor_plugin_t : public wf::plugin_interface_t +{ + public: + void init() override + { + repo->register_method("oledsaver/cursor_status", + [=] (wf::json_t data) { return this->cursor_status(data); }); + repo->register_method("oledsaver/hide_cursor", + [=] (wf::json_t data) { return this->hide_cursor(data); }); + repo->register_method("oledsaver/unhide_cursor", + [=] (wf::json_t data) { return this->unhide_cursor(data); }); + } + + void fini() override + { + repo->unregister_method("oledsaver/cursor_status"); + repo->unregister_method("oledsaver/hide_cursor"); + repo->unregister_method("oledsaver/unhide_cursor"); + set_cursor_hidden(false); + } + + bool is_unloadable() override + { + return false; + } + + private: + wf::shared_data::ref_ptr_t<wf::ipc::method_repository_t> repo; + bool cursor_hidden = false; + + wf::output_t *get_output_at(wf::pointf_t position) + { + for (auto output : wf::get_core().output_layout->get_outputs()) + { + if (output->get_layout_geometry() & position) + { + return output; + } + } + + return nullptr; + } + + void set_cursor_hidden(bool hidden) + { + if (hidden == cursor_hidden) + { + return; + } + + if (hidden) + { + wf::get_core().hide_cursor(); + } else + { + wf::get_core().unhide_cursor(); + } + + cursor_hidden = hidden; + } + + wf::json_t cursor_status(wf::json_t) + { + wf::json_t response; + auto pos = wf::get_core().get_cursor_position(); + bool valid = std::isfinite(pos.x) && std::isfinite(pos.y); + + response["valid"] = valid; + response["hidden"] = cursor_hidden; + response["x"] = valid ? pos.x : 0.0; + response["y"] = valid ? pos.y : 0.0; + + auto output = valid ? get_output_at(pos) : nullptr; + response["output"] = (output && output->handle) ? output->handle->name : ""; + return response; + } + + wf::json_t hide_cursor(wf::json_t) + { + set_cursor_hidden(true); + return wf::ipc::json_ok(); + } + + wf::json_t unhide_cursor(wf::json_t) + { + set_cursor_hidden(false); + return wf::ipc::json_ok(); + } +}; +} + +DECLARE_WAYFIRE_PLUGIN(wf::oledsaver_cursor_plugin_t); diff --git a/gui-apps/oledsaver/files/oledsaver-cursor.xml b/gui-apps/oledsaver/files/oledsaver-cursor.xml new file mode 100644 index 000000000000..3f5758293202 --- /dev/null +++ b/gui-apps/oledsaver/files/oledsaver-cursor.xml @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<wayfire> + <plugin name="oledsaver-cursor"> + <_short>Oledsaver Cursor</_short> + <_long>Expose cursor output and cursor hide controls for oledsaver.</_long> + <category>Utility</category> + </plugin> +</wayfire> diff --git a/gui-apps/oledsaver/files/oledsaver-idle.cpp b/gui-apps/oledsaver/files/oledsaver-idle.cpp new file mode 100644 index 000000000000..9e6625833a79 --- /dev/null +++ b/gui-apps/oledsaver/files/oledsaver-idle.cpp @@ -0,0 +1,76 @@ +#include <set> +#include <string> +#include <wayfire/core.hpp> +#include <wayfire/output.hpp> +#include <wayfire/plugin.hpp> +#include <wayfire/view.hpp> +#include <wayfire/nonstd/wlroots-full.hpp> +#include <wayfire/plugins/common/shared-core-data.hpp> +#include <wayfire/plugins/ipc/ipc-method-repository.hpp> + +/* Expose per-surface keep-awake requests without turning them into a global + * inhibition. This is separate from the non-unloadable cursor plugin so it + * can be enabled on an existing desktop without restarting Wayfire. */ +class oledsaver_idle_plugin_t : public wf::plugin_interface_t +{ + wf::shared_data::ref_ptr_t<wf::ipc::method_repository_t> repo; + + wf::json_t status() + { + std::set<std::string> outputs; + auto manager = wf::get_core().protocols.idle_inhibit; + if (manager) + { + wlr_idle_inhibitor_v1 *inhibitor; + wl_list_for_each(inhibitor, &manager->inhibitors, link) + { + auto surface = wlr_surface_get_root_surface(inhibitor->surface); + auto view = wf::wl_surface_to_wayfire_view(surface->resource); + if (!view || !view->is_mapped() || !view->get_output()) + continue; + + bool enabled = true; + for (wf::scene::node_t *node = view->get_root_node().get(); node; node = node->parent()) + { + if (!node->is_enabled()) + enabled = false; + } + if (!enabled) + continue; + + auto output = view->get_output(); + auto box = view->get_bounding_box(); + auto screen = output->get_relative_geometry(); + // Exclude views on other workspaces. Do not use occlusion: + // our own saver overlay must not hide the inhibitor below it. + if (box.width <= 0 || box.height <= 0 || + box.x >= screen.x + screen.width || box.y >= screen.y + screen.height || + box.x + box.width <= screen.x || box.y + box.height <= screen.y) + continue; + + if (output->handle) + outputs.insert(output->handle->name); + } + } + + wf::json_t response; + response["outputs"] = wf::json_t::array(); + for (const auto& output : outputs) + response["outputs"].append(output); + return response; + } + + public: + void init() override + { + repo->register_method("oledsaver/idle_inhibitors", + [this] (wf::json_t) { return status(); }); + } + + void fini() override + { + repo->unregister_method("oledsaver/idle_inhibitors"); + } +}; + +DECLARE_WAYFIRE_PLUGIN(oledsaver_idle_plugin_t); diff --git a/gui-apps/oledsaver/files/oledsaver-idle.xml b/gui-apps/oledsaver/files/oledsaver-idle.xml new file mode 100644 index 000000000000..956e0f2f4f22 --- /dev/null +++ b/gui-apps/oledsaver/files/oledsaver-idle.xml @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<wayfire> + <plugin name="oledsaver-idle"> + <_short>Oledsaver Video Inhibition</_short> + <_long>Expose per-output Wayland idle inhibitors to oledsaver.</_long> + <category>Utility</category> + </plugin> +</wayfire> diff --git a/gui-apps/oledsaver/files/oledsaver.c b/gui-apps/oledsaver/files/oledsaver.c new file mode 100644 index 000000000000..f6a1439e83d6 --- /dev/null +++ b/gui-apps/oledsaver/files/oledsaver.c @@ -0,0 +1,3700 @@ +/* + * oledsaver -- combined OLED screensaver: manager + renderer in one binary. + * + * No flags → manager mode (idle detection, Wayfire focus IPC, Wayland outputs) + * --render → renderer mode (Wayland layer-shell Matrix rain) + * + * The manager fork/execs itself with --render --output <name> [--color ...] + * [--font-size ...] [--min-speed ...] [--max-speed ...] etc. using /proc/self/exe. + * + * Build: make -C ~/.local/src oledsaver + * Requires: json-c, pthreads, wayland-client, wayland-egl, EGL, GLESv2, freetype2 + */ + +#define _GNU_SOURCE +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdbool.h> +#include <unistd.h> +#include <errno.h> +#include <signal.h> +#include <time.h> +#include <math.h> +#include <fcntl.h> +#include <pthread.h> +#include <sys/socket.h> +#include <sys/stat.h> +#include <sys/un.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <sys/mman.h> +#include <stdarg.h> +#include <stdint.h> +#include <poll.h> +#include <dirent.h> + +#include <json-c/json.h> +#include <wayland-client.h> +#include <wayland-egl.h> +#include <EGL/egl.h> +#include <EGL/eglext.h> +#include <GLES2/gl2.h> +#include <ft2build.h> +#include FT_FREETYPE_H + +#include "wlr-layer-shell-unstable-v1-client-protocol.h" +#include "xdg-output-unstable-v1-client-protocol.h" +#include "ext-idle-notify-v1-client-protocol.h" + +/* =================================================================== + * RENDERER MODE (Wayland layer-shell Matrix rain) + * =================================================================== */ + +/* ── Tuning constants ─────────────────────────────────────────────── */ + +#define TARGET_FPS 30 +#define FRAME_INTERVAL_US (1000000 / TARGET_FPS) + +/* These are now defaults; actual values come from CLI flags */ +#define DEFAULT_MIN_DENSITY 0.25 +#define DEFAULT_MAX_DENSITY 0.45 +#define DEFAULT_MIN_TRAIL 4 +#define DEFAULT_MAX_TRAIL 28 +#define DEFAULT_MIN_SPEED 0.4 +#define DEFAULT_MAX_SPEED 2.0 +#define DEFAULT_AVG_SPEED 0.8 +#define DEFAULT_FONT_SIZE 12 +#define MIN_FONT_SIZE 6 +#define MAX_FONT_SIZE 72 +#define DEFAULT_HEAD_HOLD_FRAMES 5 +#define DEFAULT_HEAD_MUTATION_CHANCE 0.15 +#define DEFAULT_HEAD_WHITE_MIN 0.75 +#define DEFAULT_HEAD_WHITE_MAX 1.00 +#define MUTATION_CHANCE 0.07 +#define RESPAWN_DELAY_MAX 40 +#define FADE_LEVELS 6 +#define HEAD_GLOW_EXTRA 2 + +#define DEFAULT_DEPTH_LAYERS 4 +#define MIN_DEPTH_LAYERS 1 +#define MAX_DEPTH_LAYERS 8 + +/* Character sets */ +static const uint32_t KATAKANA_START = 0xFF66; +static const uint32_t KATAKANA_END = 0xFF9D; +#define NUM_KATAKANA (KATAKANA_END - KATAKANA_START + 1) + +static const char *LATIN_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; +static const char *DIGIT_CHARS = "0123456789"; +static const char *SYMBOL_CHARS = "!@#$%^&*()-=+[]{}|;:<>?/~"; + +/* ── Color presets ────────────────────────────────────────────────── */ + +typedef struct { float r, g, b; } rgb_t; + +static const struct { const char *name; rgb_t color; } RENDER_COLOR_TABLE[] = { + { "green", { 0.0f, 1.0f, 0.0f } }, + { "red", { 1.0f, 0.2f, 0.2f } }, + { "blue", { 0.3f, 0.5f, 1.0f } }, + { "white", { 1.0f, 1.0f, 1.0f } }, + { "yellow", { 1.0f, 1.0f, 0.0f } }, + { "cyan", { 0.0f, 1.0f, 1.0f } }, + { "magenta", { 1.0f, 0.0f, 1.0f } }, +}; +#define RENDER_NUM_COLORS (sizeof(RENDER_COLOR_TABLE) / sizeof(RENDER_COLOR_TABLE[0])) + +/* ── Glyph atlas types ────────────────────────────────────────────── */ + +#define ATLAS_MAX_GLYPHS 256 + +typedef struct { + uint32_t codepoint; + float u0, v0, u1, v1; /* UV coords in atlas */ + int width, height; /* glyph bitmap size */ + int bearing_x, bearing_y; + int advance; /* horizontal advance in pixels (26.6 fixed >> 6) */ +} glyph_info_t; + +typedef struct { + GLuint texture; + int tex_width, tex_height; + glyph_info_t glyphs[ATLAS_MAX_GLYPHS]; + int glyph_count; + int cell_w, cell_h; /* max advance and line height for grid calc */ +} glyph_atlas_t; + +/* ── Data types (renderer) ────────────────────────────────────────── */ + +typedef struct { + uint32_t codepoint; + int age; + bool mirrored; /* horizontally flip the glyph */ + float white_mix; /* white fraction used while the glyph is near the head */ +} render_cell_t; + +typedef struct { + bool active; + double speed; + double head_pos; + int trail_len; + int respawn_timer; + float x_offset; /* horizontal jitter in pixels */ + bool skip; /* permanently inactive column for gaps */ + int flash_timer; /* when > 0, column is flashing */ + float flash_brightness; /* brightness boost during flash */ + rgb_t color; /* per-trail color */ + int last_head_row; + int head_hold_frames; +} render_column_t; + +typedef struct { + int cols, rows; + int cell_w, cell_h; + double opacity; + double speed_scale; + double density; + double font_scale; + render_column_t *columns; + render_cell_t *cells; +} depth_layer_t; + +/* Depth layer extreme values for interpolation */ +#define LAYER_FAR_FONT_SCALE 0.5 +#define LAYER_FAR_OPACITY 0.2 +#define LAYER_FAR_SPEED_SCALE 0.4 +#define LAYER_FAR_DENSITY 0.35 + +#define LAYER_NEAR_FONT_SCALE 1.25 +#define LAYER_NEAR_OPACITY 1.0 +#define LAYER_NEAR_SPEED_SCALE 1.4 +#define LAYER_NEAR_DENSITY 0.15 + +/* ── Vertex type for batched quad rendering ───────────────────────── */ + +typedef struct { + float x, y; + float u, v; + float r, g, b, a; +} vertex_t; + +/* Max quads per draw call (each quad = 6 vertices) */ +#define MAX_QUADS (256 * 256) +#define VERTS_PER_QUAD 6 + +/* ── Render phase lifecycle ────────────────────────────────────────── */ + +typedef enum { + PHASE_FADE_TO_BLACK, /* desktop fades to black overlay */ + PHASE_FADE_IN, /* matrix rain fades in on black */ + PHASE_RUNNING, /* normal matrix rain */ + PHASE_FADE_OUT, /* matrix rain fades out to black */ + PHASE_FADE_TO_DESKTOP /* black fades to reveal desktop */ +} render_phase_t; + +/* ── Renderer global state ────────────────────────────────────────── */ + +static struct { + /* Wayland globals */ + struct wl_display *display; + struct wl_registry *registry; + struct wl_compositor *compositor; + struct zwlr_layer_shell_v1 *layer_shell; + struct zxdg_output_manager_v1 *xdg_output_manager; + + /* Target output */ + struct wl_output *target_output; + char target_name[128]; + bool output_found; + int output_width; + int output_height; + int output_scale; + + /* Surface */ + struct wl_surface *surface; + struct zwlr_layer_surface_v1 *layer_surface; + uint32_t configure_serial; + bool configured; + int surface_width; + int surface_height; + + /* EGL */ + EGLDisplay egl_display; + EGLContext egl_context; + EGLSurface egl_surface; + struct wl_egl_window *egl_window; + + /* OpenGL */ + GLuint shader_program; + GLint u_projection; + GLint u_atlas; + GLint a_pos; + GLint a_uv; + GLint a_color; + GLuint vbo; + vertex_t *vertex_buf; + int vertex_count; + + /* FreeType */ + FT_Library ft_library; + FT_Face ft_face; + + /* Glyph atlas (one at largest font size) */ + glyph_atlas_t atlas; + + /* Matrix state */ + int num_depth_layers; + depth_layer_t layers[MAX_DEPTH_LAYERS]; + rgb_t base_color; + int color_mode; /* 0=fixed, 1=random_trail_named, 2=random_trail_hex */ + int font_size; + + /* Configurable ranges (set via CLI flags) */ + double min_speed; + double max_speed; + double avg_speed; + int min_trail; + int max_trail; + double min_density; + double max_density; + double layer_near_density; + double layer_far_density; + int head_hold_frames; + double head_mutation_chance; + double head_white_min; + double head_white_max; + + /* Run control */ + volatile sig_atomic_t stop; + volatile sig_atomic_t fade_out_requested; + bool closed; + + /* Phase-based transition state */ + render_phase_t phase; + int phase_frame; + float surface_alpha; /* alpha for glClearColor (0=transparent, 1=opaque) */ + float fade_opacity; /* rain opacity multiplier (0=invisible, 1=full) */ + int fade_frames; /* configurable transition duration */ +} S; + +#define DEFAULT_FADE_FRAMES 30 /* 1 second at 30fps */ + +/* ── Renderer helpers ─────────────────────────────────────────────── */ + +static inline double render_randf(void) { return (double)rand() / RAND_MAX; } +static inline int render_randi(int lo, int hi) { return lo + rand() % (hi - lo + 1); } + +static inline float render_head_white_mix(void) { + return (float)(S.head_white_min + + (S.head_white_max - S.head_white_min) * render_randf()); +} + +/* Generate a random speed biased toward avg, clamped to [lo, hi]. + Uses sum-of-3-uniforms (approx gaussian) for bell-curve distribution. */ +static inline double render_rand_speed(double lo, double hi, double avg) { + double r = (render_randf() + render_randf() + render_randf()) / 3.0; + /* r is ~gaussian centered on 0.5; map to [lo, hi] biased toward avg */ + double v = (r < 0.5) + ? lo + (avg - lo) * (r / 0.5) + : avg + (hi - avg) * ((r - 0.5) / 0.5); + if (v < lo) v = lo; + if (v > hi) v = hi; + return v; +} + +static render_cell_t *render_cell_at_layer(depth_layer_t *layer, int row, int col) { + return &layer->cells[row * layer->cols + col]; +} + +static uint32_t render_random_codepoint(void) { + int choice = rand() % 100; + if (choice < 40) { + return KATAKANA_START + (rand() % NUM_KATAKANA); + } else if (choice < 70) { + return (uint32_t)LATIN_CHARS[rand() % (int)strlen(LATIN_CHARS)]; + } else if (choice < 85) { + return (uint32_t)DIGIT_CHARS[rand() % (int)strlen(DIGIT_CHARS)]; + } else { + return (uint32_t)SYMBOL_CHARS[rand() % (int)strlen(SYMBOL_CHARS)]; + } +} + +static rgb_t render_parse_hex(const char *hex) { + rgb_t c = { 0.0f, 0.0f, 0.0f }; + const char *p = hex; + if (*p == '#') p++; + unsigned int val = 0; + if (sscanf(p, "%06x", &val) == 1) { + c.r = ((val >> 16) & 0xFF) / 255.0f; + c.g = ((val >> 8) & 0xFF) / 255.0f; + c.b = (val & 0xFF) / 255.0f; + } + return c; +} + +static rgb_t render_lookup_color(const char *name) { + /* Hex color: #RRGGBB or RRGGBB */ + if (name[0] == '#' || (strlen(name) == 6 && strspn(name, "0123456789abcdefABCDEF") == 6)) + return render_parse_hex(name); + for (size_t i = 0; i < RENDER_NUM_COLORS; i++) { + if (strcasecmp(name, RENDER_COLOR_TABLE[i].name) == 0) + return RENDER_COLOR_TABLE[i].color; + } + /* Per-output random: pick one color at startup */ + if (strcasecmp(name, "random_named") == 0) + return RENDER_COLOR_TABLE[rand() % RENDER_NUM_COLORS].color; + if (strcasecmp(name, "random_hex") == 0) + return (rgb_t){ + (float)(rand() % 256) / 255.0f, + (float)(rand() % 256) / 255.0f, + (float)(rand() % 256) / 255.0f + }; + /* Per-trail random modes: base_color is fallback, actual color set per-trail */ + if (strcasecmp(name, "random_trail_named") == 0 || + strcasecmp(name, "random_trail_hex") == 0) + return RENDER_COLOR_TABLE[0].color; + return RENDER_COLOR_TABLE[0].color; +} + +enum { COLOR_FIXED = 0, COLOR_RANDOM = 1, COLOR_RANDOM_HEX = 2 }; + +static rgb_t render_random_color(void) { + return RENDER_COLOR_TABLE[rand() % RENDER_NUM_COLORS].color; +} + +static rgb_t render_random_hex_color(void) { + return (rgb_t){ + (float)(rand() % 256) / 255.0f, + (float)(rand() % 256) / 255.0f, + (float)(rand() % 256) / 255.0f + }; +} + +static rgb_t render_trail_color(void) { + switch (S.color_mode) { + case COLOR_RANDOM: return render_random_color(); + case COLOR_RANDOM_HEX: return render_random_hex_color(); + default: return S.base_color; + } +} + +/* ── FreeType / Glyph Atlas ───────────────────────────────────────── */ + +/* Build list of all codepoints we need */ +static int render_build_codepoint_list(uint32_t *out, int max) { + int n = 0; + /* Katakana */ + for (uint32_t cp = KATAKANA_START; cp <= KATAKANA_END && n < max; cp++) + out[n++] = cp; + /* Latin */ + for (const char *p = LATIN_CHARS; *p && n < max; p++) + out[n++] = (uint32_t)*p; + /* Digits */ + for (const char *p = DIGIT_CHARS; *p && n < max; p++) + out[n++] = (uint32_t)*p; + /* Symbols */ + for (const char *p = SYMBOL_CHARS; *p && n < max; p++) + out[n++] = (uint32_t)*p; + return n; +} + +static bool render_init_freetype(int font_pixel_size) { + if (FT_Init_FreeType(&S.ft_library)) { + fprintf(stderr, "Failed to init FreeType\n"); + return false; + } + + /* Try fonts in order of preference */ + static const char *font_paths[] = { + "/usr/share/fonts/noto-cjk/NotoSansMonoCJKjp-Regular.otf", + "/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc", + "/usr/share/fonts/google-noto-sans-cjk-fonts/NotoSansCJK-Regular.ttc", + "/usr/share/fonts/google-noto-cjk/NotoSansMonoCJKjp-Regular.otf", + "/usr/share/fonts/noto/NotoSansMono-Regular.ttf", + "/usr/share/fonts/liberation-mono/LiberationMono-Regular.ttf", + "/usr/share/fonts/liberation/LiberationMono-Regular.ttf", + "/usr/share/fonts/TTF/LiberationMono-Regular.ttf", + "/usr/share/fonts/dejavu/DejaVuSansMono.ttf", + "/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf", + NULL + }; + + bool loaded = false; + for (int i = 0; font_paths[i]; i++) { + if (FT_New_Face(S.ft_library, font_paths[i], 0, &S.ft_face) == 0) { + fprintf(stderr, "Loaded font: %s\n", font_paths[i]); + loaded = true; + break; + } + } + + if (!loaded) { + fprintf(stderr, "No suitable font found, trying fc-match\n"); + /* Last resort: use fontconfig via popen */ + FILE *fp = popen("fc-match -f '%{file}' 'monospace'", "r"); + if (fp) { + char path[512]; + if (fgets(path, sizeof(path), fp)) { + char *nl = strchr(path, '\n'); + if (nl) *nl = '\0'; + if (FT_New_Face(S.ft_library, path, 0, &S.ft_face) == 0) { + fprintf(stderr, "Loaded font via fc-match: %s\n", path); + loaded = true; + } + } + pclose(fp); + } + } + + if (!loaded) { + fprintf(stderr, "Could not load any font\n"); + FT_Done_FreeType(S.ft_library); + return false; + } + + FT_Set_Pixel_Sizes(S.ft_face, 0, font_pixel_size); + return true; +} + +static bool render_build_atlas(int font_pixel_size) { + uint32_t codepoints[ATLAS_MAX_GLYPHS]; + int cp_count = render_build_codepoint_list(codepoints, ATLAS_MAX_GLYPHS); + + /* First pass: render all glyphs to measure total atlas size */ + FT_Set_Pixel_Sizes(S.ft_face, 0, font_pixel_size); + + /* Estimate atlas dimensions: pack in rows */ + int row_height = 0; + int atlas_w = 0, atlas_h = 0; + int padding = 2; + int max_row_w = 2048; /* max texture width */ + + /* Temporary storage for bitmaps */ + typedef struct { + uint32_t cp; + int w, h, bearing_x, bearing_y, advance; + unsigned char *bitmap; + } tmp_glyph_t; + + tmp_glyph_t *tmp_glyphs = calloc(cp_count, sizeof(tmp_glyph_t)); + int valid_count = 0; + int max_cell_w = 0, max_cell_h = 0; + + for (int i = 0; i < cp_count; i++) { + if (FT_Load_Char(S.ft_face, codepoints[i], FT_LOAD_RENDER)) { + continue; /* skip glyphs that fail to render */ + } + FT_GlyphSlot g = S.ft_face->glyph; + int gw = g->bitmap.width; + int gh = g->bitmap.rows; + + tmp_glyph_t *tg = &tmp_glyphs[valid_count]; + tg->cp = codepoints[i]; + tg->w = gw; + tg->h = gh; + tg->bearing_x = g->bitmap_left; + tg->bearing_y = g->bitmap_top; + tg->advance = (int)(g->advance.x >> 6); + + if (tg->advance > max_cell_w) max_cell_w = tg->advance; + if (gh > max_cell_h) max_cell_h = gh; + + /* Copy bitmap data */ + tg->bitmap = malloc(gw * gh); + if (tg->bitmap && gw > 0 && gh > 0) { + for (int r = 0; r < gh; r++) + memcpy(tg->bitmap + r * gw, + g->bitmap.buffer + r * g->bitmap.pitch, gw); + } + + valid_count++; + } + + /* Calculate atlas layout */ + int cx = 0, cy = 0; + row_height = 0; + for (int i = 0; i < valid_count; i++) { + tmp_glyph_t *tg = &tmp_glyphs[i]; + int gw = tg->w + padding; + int gh = tg->h + padding; + + if (cx + gw > max_row_w) { + cy += row_height; + cx = 0; + row_height = 0; + } + if (gh > row_height) row_height = gh; + cx += gw; + if (cx > atlas_w) atlas_w = cx; + } + atlas_h = cy + row_height; + + /* Round up to power of 2 */ + int pot_w = 1; while (pot_w < atlas_w) pot_w <<= 1; + int pot_h = 1; while (pot_h < atlas_h) pot_h <<= 1; + atlas_w = pot_w; + atlas_h = pot_h; + + /* Allocate atlas pixel data (single channel) */ + unsigned char *atlas_data = calloc(atlas_w * atlas_h, 1); + + /* Second pass: blit glyphs and record UVs */ + cx = 0; cy = 0; row_height = 0; + S.atlas.glyph_count = 0; + + for (int i = 0; i < valid_count; i++) { + tmp_glyph_t *tg = &tmp_glyphs[i]; + int gw = tg->w; + int gh = tg->h; + + if (cx + gw + padding > atlas_w) { + cy += row_height; + cx = 0; + row_height = 0; + } + if (gh + padding > row_height) row_height = gh + padding; + + /* Blit */ + if (tg->bitmap && gw > 0 && gh > 0) { + for (int r = 0; r < gh; r++) { + memcpy(atlas_data + (cy + r) * atlas_w + cx, + tg->bitmap + r * gw, gw); + } + } + + /* Record glyph info */ + glyph_info_t *gi = &S.atlas.glyphs[S.atlas.glyph_count++]; + gi->codepoint = tg->cp; + gi->u0 = (float)cx / atlas_w; + gi->v0 = (float)cy / atlas_h; + gi->u1 = (float)(cx + gw) / atlas_w; + gi->v1 = (float)(cy + gh) / atlas_h; + gi->width = gw; + gi->height = gh; + gi->bearing_x = tg->bearing_x; + gi->bearing_y = tg->bearing_y; + gi->advance = tg->advance; + + cx += gw + padding; + + free(tg->bitmap); + } + free(tmp_glyphs); + + S.atlas.tex_width = atlas_w; + S.atlas.tex_height = atlas_h; + /* Use font metrics for consistent cell size */ + S.atlas.cell_w = max_cell_w > 0 ? max_cell_w : font_pixel_size; + /* Use ascender + descender for proper line height */ + int line_height = (int)((S.ft_face->size->metrics.height + 63) >> 6); + S.atlas.cell_h = line_height > 0 ? line_height : (int)(font_pixel_size * 1.4); + if (max_cell_h > S.atlas.cell_h) S.atlas.cell_h = max_cell_h; + + /* Create GL texture */ + glGenTextures(1, &S.atlas.texture); + glBindTexture(GL_TEXTURE_2D, S.atlas.texture); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, atlas_w, atlas_h, + 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, atlas_data); + + free(atlas_data); + + fprintf(stderr, "Atlas: %dx%d, %d glyphs, cell=%dx%d\n", + atlas_w, atlas_h, S.atlas.glyph_count, + S.atlas.cell_w, S.atlas.cell_h); + + return true; +} + +static const glyph_info_t *render_find_glyph(uint32_t codepoint) { + for (int i = 0; i < S.atlas.glyph_count; i++) { + if (S.atlas.glyphs[i].codepoint == codepoint) + return &S.atlas.glyphs[i]; + } + /* Fallback to '?' or first glyph */ + for (int i = 0; i < S.atlas.glyph_count; i++) { + if (S.atlas.glyphs[i].codepoint == '?') + return &S.atlas.glyphs[i]; + } + return S.atlas.glyph_count > 0 ? &S.atlas.glyphs[0] : NULL; +} + +/* ── EGL setup ────────────────────────────────────────────────────── */ + +static bool render_init_egl(void) { + S.egl_display = eglGetDisplay((EGLNativeDisplayType)S.display); + if (S.egl_display == EGL_NO_DISPLAY) { + /* Try platform extension */ + PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT = + (PFNEGLGETPLATFORMDISPLAYEXTPROC)eglGetProcAddress("eglGetPlatformDisplayEXT"); + if (eglGetPlatformDisplayEXT) { + S.egl_display = eglGetPlatformDisplayEXT( + EGL_PLATFORM_WAYLAND_KHR, S.display, NULL); + } + } + if (S.egl_display == EGL_NO_DISPLAY) { + fprintf(stderr, "Failed to get EGL display\n"); + return false; + } + + EGLint major, minor; + if (!eglInitialize(S.egl_display, &major, &minor)) { + fprintf(stderr, "Failed to initialize EGL\n"); + return false; + } + fprintf(stderr, "EGL %d.%d initialized\n", major, minor); + + if (!eglBindAPI(EGL_OPENGL_ES_API)) { + fprintf(stderr, "Failed to bind OpenGL ES API\n"); + return false; + } + + EGLint config_attribs[] = { + EGL_SURFACE_TYPE, EGL_WINDOW_BIT, + EGL_RED_SIZE, 8, + EGL_GREEN_SIZE, 8, + EGL_BLUE_SIZE, 8, + EGL_ALPHA_SIZE, 8, + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, + EGL_NONE + }; + + EGLConfig config; + EGLint num_configs; + if (!eglChooseConfig(S.egl_display, config_attribs, &config, 1, &num_configs) || + num_configs == 0) { + fprintf(stderr, "Failed to choose EGL config\n"); + return false; + } + + EGLint context_attribs[] = { + EGL_CONTEXT_CLIENT_VERSION, 2, + EGL_NONE + }; + + S.egl_context = eglCreateContext(S.egl_display, config, EGL_NO_CONTEXT, + context_attribs); + if (S.egl_context == EGL_NO_CONTEXT) { + fprintf(stderr, "Failed to create EGL context\n"); + return false; + } + + /* Create EGL window surface */ + S.egl_window = wl_egl_window_create(S.surface, + S.surface_width, S.surface_height); + if (!S.egl_window) { + fprintf(stderr, "Failed to create wl_egl_window\n"); + return false; + } + + S.egl_surface = eglCreateWindowSurface(S.egl_display, config, + (EGLNativeWindowType)S.egl_window, NULL); + if (S.egl_surface == EGL_NO_SURFACE) { + fprintf(stderr, "Failed to create EGL surface\n"); + return false; + } + + if (!eglMakeCurrent(S.egl_display, S.egl_surface, S.egl_surface, S.egl_context)) { + fprintf(stderr, "eglMakeCurrent failed\n"); + return false; + } + + /* Set swap interval to 0 for manual frame pacing */ + eglSwapInterval(S.egl_display, 0); + + fprintf(stderr, "EGL surface created: %dx%d\n", S.surface_width, S.surface_height); + return true; +} + +/* ── Shader compilation ───────────────────────────────────────────── */ + +static const char *vertex_shader_src = + "attribute vec2 a_pos;\n" + "attribute vec2 a_uv;\n" + "attribute vec4 a_color;\n" + "varying vec2 v_uv;\n" + "varying vec4 v_color;\n" + "uniform mat4 u_projection;\n" + "void main() {\n" + " gl_Position = u_projection * vec4(a_pos, 0.0, 1.0);\n" + " v_uv = a_uv;\n" + " v_color = a_color;\n" + "}\n"; + +static const char *fragment_shader_src = + "precision mediump float;\n" + "varying vec2 v_uv;\n" + "varying vec4 v_color;\n" + "uniform sampler2D u_atlas;\n" + "void main() {\n" + " float a = texture2D(u_atlas, v_uv).r;\n" + " if (a < 0.01) discard;\n" + " float scanline = 1.0 - 0.08 * mod(gl_FragCoord.y, 2.0);\n" + " gl_FragColor = vec4(v_color.rgb * a * scanline, 1.0);\n" + "}\n"; + +static GLuint render_compile_shader(GLenum type, const char *src) { + GLuint shader = glCreateShader(type); + glShaderSource(shader, 1, &src, NULL); + glCompileShader(shader); + + GLint compiled; + glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled); + if (!compiled) { + char log[512]; + glGetShaderInfoLog(shader, sizeof(log), NULL, log); + fprintf(stderr, "Shader compile error: %s\n", log); + glDeleteShader(shader); + return 0; + } + return shader; +} + +static bool render_init_shaders(void) { + GLuint vs = render_compile_shader(GL_VERTEX_SHADER, vertex_shader_src); + GLuint fs = render_compile_shader(GL_FRAGMENT_SHADER, fragment_shader_src); + if (!vs || !fs) return false; + + S.shader_program = glCreateProgram(); + glAttachShader(S.shader_program, vs); + glAttachShader(S.shader_program, fs); + glLinkProgram(S.shader_program); + + GLint linked; + glGetProgramiv(S.shader_program, GL_LINK_STATUS, &linked); + if (!linked) { + char log[512]; + glGetProgramInfoLog(S.shader_program, sizeof(log), NULL, log); + fprintf(stderr, "Shader link error: %s\n", log); + return false; + } + + glDeleteShader(vs); + glDeleteShader(fs); + + S.u_projection = glGetUniformLocation(S.shader_program, "u_projection"); + S.u_atlas = glGetUniformLocation(S.shader_program, "u_atlas"); + S.a_pos = glGetAttribLocation(S.shader_program, "a_pos"); + S.a_uv = glGetAttribLocation(S.shader_program, "a_uv"); + S.a_color = glGetAttribLocation(S.shader_program, "a_color"); + + /* Create VBO */ + glGenBuffers(1, &S.vbo); + + /* Allocate CPU-side vertex buffer */ + S.vertex_buf = malloc(MAX_QUADS * VERTS_PER_QUAD * sizeof(vertex_t)); + S.vertex_count = 0; + + fprintf(stderr, "Shaders compiled and linked\n"); + return true; +} + +static void render_set_projection(int width, int height) { + /* Orthographic projection: (0,0) top-left, (w,h) bottom-right */ + float proj[16] = { + 2.0f / width, 0.0f, 0.0f, 0.0f, + 0.0f, -2.0f / height, 0.0f, 0.0f, + 0.0f, 0.0f, -1.0f, 0.0f, + -1.0f, 1.0f, 0.0f, 1.0f, + }; + glUseProgram(S.shader_program); + glUniformMatrix4fv(S.u_projection, 1, GL_FALSE, proj); +} + +/* ── Vertex buffer helpers ────────────────────────────────────────── */ + +static void render_push_quad(float x0, float y0, float x1, float y1, + float u0, float v0, float u1, float v1, + float r, float g, float b, float a) { + if (S.vertex_count + VERTS_PER_QUAD > MAX_QUADS * VERTS_PER_QUAD) + return; + + vertex_t *v = &S.vertex_buf[S.vertex_count]; + + /* Triangle 1: top-left, top-right, bottom-left */ + v[0] = (vertex_t){ x0, y0, u0, v0, r, g, b, a }; + v[1] = (vertex_t){ x1, y0, u1, v0, r, g, b, a }; + v[2] = (vertex_t){ x0, y1, u0, v1, r, g, b, a }; + + /* Triangle 2: top-right, bottom-right, bottom-left */ + v[3] = (vertex_t){ x1, y0, u1, v0, r, g, b, a }; + v[4] = (vertex_t){ x1, y1, u1, v1, r, g, b, a }; + v[5] = (vertex_t){ x0, y1, u0, v1, r, g, b, a }; + + S.vertex_count += VERTS_PER_QUAD; +} + +static void render_flush_quads(void) { + if (S.vertex_count == 0) return; + + glBindBuffer(GL_ARRAY_BUFFER, S.vbo); + glBufferData(GL_ARRAY_BUFFER, S.vertex_count * sizeof(vertex_t), + S.vertex_buf, GL_STREAM_DRAW); + + glEnableVertexAttribArray(S.a_pos); + glEnableVertexAttribArray(S.a_uv); + glEnableVertexAttribArray(S.a_color); + + glVertexAttribPointer(S.a_pos, 2, GL_FLOAT, GL_FALSE, sizeof(vertex_t), + (void *)offsetof(vertex_t, x)); + glVertexAttribPointer(S.a_uv, 2, GL_FLOAT, GL_FALSE, sizeof(vertex_t), + (void *)offsetof(vertex_t, u)); + glVertexAttribPointer(S.a_color, 4, GL_FLOAT, GL_FALSE, sizeof(vertex_t), + (void *)offsetof(vertex_t, r)); + + glDrawArrays(GL_TRIANGLES, 0, S.vertex_count); + + glDisableVertexAttribArray(S.a_pos); + glDisableVertexAttribArray(S.a_uv); + glDisableVertexAttribArray(S.a_color); + + S.vertex_count = 0; +} + +/* ── Matrix engine ────────────────────────────────────────────────── */ + +static void render_tick_layer(depth_layer_t *layer); + +static void render_get_layer_properties(int layer_idx, int num_layers, + double *font_scale, double *opacity, + double *speed_scale, double *density) { + if (num_layers == 1) { + *font_scale = 1.0; + *opacity = 1.0; + *speed_scale = 1.0; + /* density from config, use midpoint of min/max */ + *density = (S.min_density + S.max_density) * 0.5; + return; + } + + double t = (double)layer_idx / (num_layers - 1); + *font_scale = LAYER_FAR_FONT_SCALE + t * (LAYER_NEAR_FONT_SCALE - LAYER_FAR_FONT_SCALE); + *opacity = LAYER_FAR_OPACITY + t * (LAYER_NEAR_OPACITY - LAYER_FAR_OPACITY); + *speed_scale = LAYER_FAR_SPEED_SCALE + t * (LAYER_NEAR_SPEED_SCALE - LAYER_FAR_SPEED_SCALE); + *density = S.layer_far_density + t * (S.layer_near_density - S.layer_far_density); +} + +static void render_init_layer(depth_layer_t *layer, int width, int height, + int layer_idx) { + render_get_layer_properties(layer_idx, S.num_depth_layers, + &layer->font_scale, &layer->opacity, + &layer->speed_scale, &layer->density); + + /* Cell size: scale the atlas cell size by font_scale */ + layer->cell_w = (int)(S.atlas.cell_w * layer->font_scale + 0.5); + layer->cell_h = (int)(S.atlas.cell_h * layer->font_scale + 0.5); + if (layer->cell_w < 4) layer->cell_w = 4; + if (layer->cell_h < 6) layer->cell_h = 6; + + layer->cols = width / layer->cell_w; + layer->rows = height / layer->cell_h; + if (layer->cols < 1) layer->cols = 1; + if (layer->rows < 1) layer->rows = 1; + + free(layer->columns); + free(layer->cells); + layer->columns = calloc(layer->cols, sizeof(render_column_t)); + layer->cells = calloc(layer->rows * layer->cols, sizeof(render_cell_t)); + + double min_spd = S.min_speed * layer->speed_scale; + double max_spd = S.max_speed * layer->speed_scale; + double avg_spd = S.avg_speed * layer->speed_scale; + + for (int c = 0; c < layer->cols; c++) { + render_column_t *col = &layer->columns[c]; + col->x_offset = (render_randf() - 0.5f) * layer->cell_w * 0.5f; + col->skip = (render_randf() < 0.15); + col->last_head_row = -1; + col->head_hold_frames = 0; + if (render_randf() < layer->density) { + col->active = true; + col->color = render_trail_color(); + col->speed = render_rand_speed(min_spd, max_spd, avg_spd); + /* Spread start positions across the full screen height + so columns appear mid-fall from the start */ + col->head_pos = render_randf() * layer->rows * 2 - layer->rows; + col->trail_len = render_randi(S.min_trail, S.max_trail); + } else { + col->active = false; + col->respawn_timer = render_randi(1, RESPAWN_DELAY_MAX); + } + } + + /* Pre-populate cells for columns that are already mid-screen */ + for (int i = 0; i < layer->rows * layer->cols; i++) { + layer->cells[i].codepoint = render_random_codepoint(); + layer->cells[i].age = 9999; + layer->cells[i].mirrored = (render_randf() < 0.20); + layer->cells[i].white_mix = (float)S.head_white_max; + } + for (int c = 0; c < layer->cols; c++) { + render_column_t *col = &layer->columns[c]; + if (!col->active || col->skip) continue; + int head = (int)col->head_pos; + /* Fill trail behind the head with aged characters */ + for (int t = 0; t < col->trail_len && head - t >= 0; t++) { + int r = head - t; + if (r < layer->rows) { + render_cell_t *cell = render_cell_at_layer(layer, r, c); + cell->codepoint = render_random_codepoint(); + cell->age = t; + cell->mirrored = (render_randf() < 0.20); + cell->white_mix = render_head_white_mix(); + } + } + } +} + +static void render_init_matrix(int width, int height) { + S.surface_width = width; + S.surface_height = height; + + for (int l = 0; l < S.num_depth_layers; l++) { + render_init_layer(&S.layers[l], width, height, l); + } + + /* Pre-run the simulation so first frame looks like it's been + running for a while — no visible startup sweep */ + int warmup = 60 + rand() % 120; /* 2-6 seconds at 30fps */ + for (int f = 0; f < warmup; f++) { + for (int l = 0; l < S.num_depth_layers; l++) { + render_tick_layer(&S.layers[l]); + } + } +} + +static void render_tick_layer(depth_layer_t *layer) { + double min_spd = S.min_speed * layer->speed_scale; + double max_spd = S.max_speed * layer->speed_scale; + double avg_spd = S.avg_speed * layer->speed_scale; + + for (int c = 0; c < layer->cols; c++) { + render_column_t *col = &layer->columns[c]; + if (col->skip) continue; + + if (!col->active) { + if (--col->respawn_timer <= 0) { + col->active = true; + col->color = render_trail_color(); + col->speed = render_rand_speed(min_spd, max_spd, avg_spd); + col->head_pos = -1.0; + col->trail_len = render_randi(S.min_trail, S.max_trail); + col->last_head_row = -1; + col->head_hold_frames = 0; + } + continue; + } + + col->head_pos += col->speed; + int head_row = (int)col->head_pos; + bool head_visible = head_row >= 0 && head_row < layer->rows; + + if (head_visible) { + render_cell_t *cell = render_cell_at_layer(layer, head_row, c); + if (head_row != col->last_head_row) { + cell->codepoint = render_random_codepoint(); + cell->mirrored = (render_randf() < 0.20); + cell->white_mix = render_head_white_mix(); + col->last_head_row = head_row; + col->head_hold_frames = 0; + } else { + col->head_hold_frames++; + if (col->head_hold_frames >= S.head_hold_frames && + render_randf() < S.head_mutation_chance) { + cell->codepoint = render_random_codepoint(); + cell->mirrored = (render_randf() < 0.20); + cell->white_mix = render_head_white_mix(); + col->head_hold_frames = 0; + } + } + cell->age = 0; + } + + /* Flash columns: ~0.3% chance per frame of starting a flash */ + if (col->flash_timer > 0) { + col->flash_timer--; + } else if (render_randf() < 0.003) { + col->flash_timer = 6 + rand() % 5; /* 6-10 frames */ + col->flash_brightness = 1.8f; + } + + for (int r = 0; r < layer->rows; r++) { + render_cell_t *cell = render_cell_at_layer(layer, r, c); + if (head_visible && r == head_row) + continue; + if (cell->age < 9999) { + cell->age++; + } + if (cell->age > 0 && cell->age < col->trail_len && render_randf() < MUTATION_CHANCE) { + cell->codepoint = render_random_codepoint(); + } + } + + if (head_row > layer->rows + col->trail_len) { + col->active = false; + col->respawn_timer = render_randi(1, RESPAWN_DELAY_MAX); + col->last_head_row = -1; + col->head_hold_frames = 0; + for (int r = 0; r < layer->rows; r++) { + render_cell_at_layer(layer, r, c)->age = 9999; + } + } + } +} + +static void render_tick_matrix(void) { + for (int l = 0; l < S.num_depth_layers; l++) { + render_tick_layer(&S.layers[l]); + } +} + +/* ── Rendering ────────────────────────────────────────────────────── */ + +static void render_frame(void) { + int w = S.surface_width; + int h = S.surface_height; + + glViewport(0, 0, w, h); + /* glClearColor/glClear is handled by the phase logic in the main loop */ + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glUseProgram(S.shader_program); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, S.atlas.texture); + glUniform1i(S.u_atlas, 0); + + float fade = S.fade_opacity; + + /* Render layers back-to-front (0=far, N-1=near) */ + for (int l = 0; l < S.num_depth_layers; l++) { + depth_layer_t *layer = &S.layers[l]; + float alpha = (float)layer->opacity * fade; + float scale = (float)layer->font_scale; + + S.vertex_count = 0; + + for (int c = 0; c < layer->cols; c++) { + render_column_t *col = &layer->columns[c]; + if (col->skip) continue; + + for (int r = 0; r < layer->rows; r++) { + render_cell_t *cell = render_cell_at_layer(layer, r, c); + + if (cell->age >= 9999) continue; + + float brightness; + bool is_head = false; + + if (cell->age == 0 && col->active) { + is_head = true; + brightness = 1.0f; + } else if (cell->age < col->trail_len) { + float t = 1.0f - (float)cell->age / col->trail_len; + brightness = t * t; + if (brightness < 0.05f) continue; + } else { + continue; + } + + /* Flash column boost */ + if (col->flash_timer > 0) { + float flash_t = (float)col->flash_timer / 10.0f; + float boost = 1.0f + (col->flash_brightness - 1.0f) * flash_t; + brightness *= boost; + if (brightness > 1.0f && !is_head) brightness = 1.0f; + } + + const glyph_info_t *gi = render_find_glyph(cell->codepoint); + if (!gi) continue; + + /* Position the glyph within the cell */ + float cell_x = (float)(c * layer->cell_w) + layer->columns[c].x_offset; + float cell_y = (float)(r * layer->cell_h); + + /* Scale glyph dimensions by layer font_scale relative to atlas */ + float gw = gi->width * scale; + float gh = gi->height * scale; + float bx = gi->bearing_x * scale; + float by = gi->bearing_y * scale; + + /* Center glyph in cell: x based on bearing, y based on bearing */ + float x0 = cell_x + bx; + float y0 = cell_y + (layer->cell_h - by); + float x1 = x0 + gw; + float y1 = y0 + gh; + + /* UV coordinates — possibly mirrored horizontally */ + float qu0 = cell->mirrored ? gi->u1 : gi->u0; + float qu1 = cell->mirrored ? gi->u0 : gi->u1; + + /* Determine color: white-to-trail gradient for head and near-head */ + rgb_t tc = col->color; + float cr, cg, cb; + float white_mix = cell->white_mix; + if (white_mix < 0.0f) white_mix = 0.0f; + if (white_mix > 1.0f) white_mix = 1.0f; + if (is_head) { + cr = white_mix + (1.0f - white_mix) * tc.r; + cg = white_mix + (1.0f - white_mix) * tc.g; + cb = white_mix + (1.0f - white_mix) * tc.b; + } else if (cell->age == 1) { + white_mix *= 0.7f; + cr = white_mix + (1.0f - white_mix) * tc.r; + cg = white_mix + (1.0f - white_mix) * tc.g; + cb = white_mix + (1.0f - white_mix) * tc.b; + } else if (cell->age == 2) { + white_mix *= 0.4f; + cr = white_mix + (1.0f - white_mix) * tc.r; + cg = white_mix + (1.0f - white_mix) * tc.g; + cb = white_mix + (1.0f - white_mix) * tc.b; + } else { + /* pure trail color */ + cr = tc.r; cg = tc.g; cb = tc.b; + } + + if (is_head) { + /* Enhanced "type-in" glow: 50% larger pad, stronger alpha */ + float glow_pad = HEAD_GLOW_EXTRA * scale * 1.5f; + if (glow_pad < 1.5f) glow_pad = 1.5f; + float ga = 0.6f * alpha; + render_push_quad(x0 - glow_pad, y0 - glow_pad, + x1 + glow_pad, y1 + glow_pad, + qu0, gi->v0, qu1, gi->v1, + cr * ga, cg * ga, cb * ga, 1.0f); + + /* Head character: full brightness white */ + render_push_quad(x0, y0, x1, y1, + qu0, gi->v0, qu1, gi->v1, + cr * alpha, cg * alpha, cb * alpha, 1.0f); + } else { + float b = brightness * alpha; + render_push_quad(x0, y0, x1, y1, + qu0, gi->v0, qu1, gi->v1, + cr * b, cg * b, cb * b, 1.0f); + } + } + } + + render_flush_quads(); + } +} + +/* ── Wayland output tracking ──────────────────────────────────────── */ + +struct render_output_info { + struct wl_output *output; + struct zxdg_output_v1 *xdg_output; + char name[128]; + int width, height; + int scale; + struct wl_list link; +}; + +static struct wl_list render_output_list; + +static void render_xdg_output_handle_name(void *data, + struct zxdg_output_v1 *xdg_output, const char *name) { + (void)xdg_output; + struct render_output_info *info = data; + snprintf(info->name, sizeof(info->name), "%s", name); + + if (strcmp(name, S.target_name) == 0) { + S.target_output = info->output; + S.output_found = true; + S.output_width = info->width; + S.output_height = info->height; + S.output_scale = info->scale > 0 ? info->scale : 1; + } +} + +static void render_xdg_output_handle_logical_position(void *data, + struct zxdg_output_v1 *xdg_output, int32_t x, int32_t y) { + (void)data; (void)xdg_output; (void)x; (void)y; +} + +static void render_xdg_output_handle_logical_size(void *data, + struct zxdg_output_v1 *xdg_output, int32_t w, int32_t h) { + (void)xdg_output; + struct render_output_info *info = data; + info->width = w; + info->height = h; + if (strcmp(info->name, S.target_name) == 0) { + S.output_width = w; + S.output_height = h; + } +} + +static void render_xdg_output_handle_done(void *data, + struct zxdg_output_v1 *xdg_output) { + (void)data; (void)xdg_output; +} + +static void render_xdg_output_handle_description(void *data, + struct zxdg_output_v1 *xdg_output, const char *desc) { + (void)data; (void)xdg_output; (void)desc; +} + +static const struct zxdg_output_v1_listener render_xdg_output_listener = { + .logical_position = render_xdg_output_handle_logical_position, + .logical_size = render_xdg_output_handle_logical_size, + .done = render_xdg_output_handle_done, + .name = render_xdg_output_handle_name, + .description = render_xdg_output_handle_description, +}; + +static void render_output_handle_geometry(void *data, struct wl_output *output, + int32_t x, int32_t y, int32_t pw, int32_t ph, int32_t subpixel, + const char *make, const char *model, int32_t transform) { + (void)data; (void)output; (void)x; (void)y; + (void)pw; (void)ph; (void)subpixel; + (void)make; (void)model; (void)transform; +} + +static void render_output_handle_mode(void *data, struct wl_output *output, + uint32_t flags, int32_t width, int32_t height, int32_t refresh) { + (void)output; (void)refresh; + struct render_output_info *info = data; + if (flags & WL_OUTPUT_MODE_CURRENT) { + info->width = width; + info->height = height; + } +} + +static void render_output_handle_scale(void *data, struct wl_output *output, + int32_t factor) { + (void)output; + struct render_output_info *info = data; + info->scale = factor; +} + +static void render_output_handle_done(void *data, struct wl_output *output) { + (void)data; (void)output; +} + +static void render_output_handle_name(void *data, struct wl_output *output, + const char *name) { + (void)output; + struct render_output_info *info = data; + snprintf(info->name, sizeof(info->name), "%s", name); + + if (strcmp(name, S.target_name) == 0) { + S.target_output = info->output; + S.output_found = true; + S.output_width = info->width; + S.output_height = info->height; + S.output_scale = info->scale > 0 ? info->scale : 1; + } +} + +static void render_output_handle_description(void *data, struct wl_output *output, + const char *desc) { + (void)data; (void)output; (void)desc; +} + +static const struct wl_output_listener render_output_listener = { + .geometry = render_output_handle_geometry, + .mode = render_output_handle_mode, + .done = render_output_handle_done, + .scale = render_output_handle_scale, + .name = render_output_handle_name, + .description = render_output_handle_description, +}; + +/* ── Layer surface events ─────────────────────────────────────────── */ + +static void render_layer_surface_configure(void *data, + struct zwlr_layer_surface_v1 *surface, + uint32_t serial, uint32_t width, uint32_t height) { + (void)data; + S.configure_serial = serial; + S.surface_width = width ? (int)width : S.output_width; + S.surface_height = height ? (int)height : S.output_height; + S.configured = true; + + zwlr_layer_surface_v1_ack_configure(surface, serial); +} + +static void render_layer_surface_closed(void *data, + struct zwlr_layer_surface_v1 *surface) { + (void)data; (void)surface; + S.closed = true; +} + +static const struct zwlr_layer_surface_v1_listener render_layer_surface_listener = { + .configure = render_layer_surface_configure, + .closed = render_layer_surface_closed, +}; + +/* ── Registry ─────────────────────────────────────────────────────── */ + +static void render_registry_handle_global(void *data, struct wl_registry *registry, + uint32_t name, const char *interface, uint32_t version) { + (void)data; + + if (strcmp(interface, wl_compositor_interface.name) == 0) { + S.compositor = wl_registry_bind(registry, name, + &wl_compositor_interface, 4); + } else if (strcmp(interface, zwlr_layer_shell_v1_interface.name) == 0) { + S.layer_shell = wl_registry_bind(registry, name, + &zwlr_layer_shell_v1_interface, version < 3 ? version : 3); + } else if (strcmp(interface, zxdg_output_manager_v1_interface.name) == 0) { + S.xdg_output_manager = wl_registry_bind(registry, name, + &zxdg_output_manager_v1_interface, version < 3 ? version : 3); + } else if (strcmp(interface, wl_output_interface.name) == 0) { + struct render_output_info *info = calloc(1, sizeof(*info)); + info->output = wl_registry_bind(registry, name, + &wl_output_interface, version < 4 ? version : 4); + info->scale = 1; + wl_output_add_listener(info->output, &render_output_listener, info); + wl_list_insert(&render_output_list, &info->link); + } +} + +static void render_registry_handle_global_remove(void *data, + struct wl_registry *registry, uint32_t name) { + (void)data; (void)registry; (void)name; +} + +static const struct wl_registry_listener render_registry_listener = { + .global = render_registry_handle_global, + .global_remove = render_registry_handle_global_remove, +}; + +/* ── Renderer signal handling ─────────────────────────────────────── */ + +static void render_sig_handler(int sig) { + (void)sig; + S.stop = 1; +} + +static void render_sigusr1_handler(int sig) { + (void)sig; + S.fade_out_requested = 1; +} + +static void ensure_wayland_display(void) { + const char *display = getenv("WAYLAND_DISPLAY"); + const char *runtime_dir = getenv("XDG_RUNTIME_DIR"); + + if ((display && display[0] != '\0') || !runtime_dir || runtime_dir[0] == '\0') + return; + + DIR *dir = opendir(runtime_dir); + if (!dir) + return; + + struct dirent *ent; + while ((ent = readdir(dir)) != NULL) { + if (strncmp(ent->d_name, "wayland-", 8) != 0) + continue; + + char path[512]; + struct stat st; + snprintf(path, sizeof(path), "%s/%s", runtime_dir, ent->d_name); + if (stat(path, &st) == 0 && S_ISSOCK(st.st_mode)) { + setenv("WAYLAND_DISPLAY", ent->d_name, 0); + break; + } + } + + closedir(dir); +} + +/* ── Renderer main ────────────────────────────────────────────────── */ + +static int renderer_main(int argc, char **argv) { + /* Defaults */ + S.target_name[0] = '\0'; + S.font_size = DEFAULT_FONT_SIZE; + S.base_color = (rgb_t){ 0.0f, 1.0f, 0.0f }; + S.output_scale = 1; + S.min_speed = DEFAULT_MIN_SPEED; + S.max_speed = DEFAULT_MAX_SPEED; + S.avg_speed = DEFAULT_AVG_SPEED; + S.min_trail = DEFAULT_MIN_TRAIL; + S.max_trail = DEFAULT_MAX_TRAIL; + S.min_density = DEFAULT_MIN_DENSITY; + S.max_density = DEFAULT_MAX_DENSITY; + S.layer_near_density = LAYER_NEAR_DENSITY; + S.layer_far_density = LAYER_FAR_DENSITY; + S.head_hold_frames = DEFAULT_HEAD_HOLD_FRAMES; + S.head_mutation_chance = DEFAULT_HEAD_MUTATION_CHANCE; + S.head_white_min = DEFAULT_HEAD_WHITE_MIN; + S.head_white_max = DEFAULT_HEAD_WHITE_MAX; + S.num_depth_layers = DEFAULT_DEPTH_LAYERS; + S.fade_frames = DEFAULT_FADE_FRAMES; + + const char *color_name = "green"; + + /* Parse args (skip --render which was already consumed) */ + for (int i = 1; i < argc; i++) { + if (strcmp(argv[i], "--render") == 0) { + continue; /* already handled */ + } else if (strcmp(argv[i], "--output") == 0 && i + 1 < argc) { + snprintf(S.target_name, sizeof(S.target_name), "%s", argv[++i]); + } else if (strcmp(argv[i], "--color") == 0 && i + 1 < argc) { + color_name = argv[++i]; + } else if (strcmp(argv[i], "--font-size") == 0 && i + 1 < argc) { + S.font_size = atoi(argv[++i]); + if (S.font_size < MIN_FONT_SIZE) S.font_size = MIN_FONT_SIZE; + if (S.font_size > MAX_FONT_SIZE) S.font_size = MAX_FONT_SIZE; + } else if (strcmp(argv[i], "--min-speed") == 0 && i + 1 < argc) { + S.min_speed = atof(argv[++i]); + } else if (strcmp(argv[i], "--max-speed") == 0 && i + 1 < argc) { + S.max_speed = atof(argv[++i]); + } else if (strcmp(argv[i], "--avg-speed") == 0 && i + 1 < argc) { + S.avg_speed = atof(argv[++i]); + } else if (strcmp(argv[i], "--min-trail") == 0 && i + 1 < argc) { + S.min_trail = atoi(argv[++i]); + } else if (strcmp(argv[i], "--max-trail") == 0 && i + 1 < argc) { + S.max_trail = atoi(argv[++i]); + } else if (strcmp(argv[i], "--min-density") == 0 && i + 1 < argc) { + S.min_density = atof(argv[++i]); + } else if (strcmp(argv[i], "--max-density") == 0 && i + 1 < argc) { + S.max_density = atof(argv[++i]); + } else if (strcmp(argv[i], "--speed") == 0 && i + 1 < argc) { + double mult = atof(argv[++i]); + if (mult < 0.1) mult = 0.1; + if (mult > 5.0) mult = 5.0; + S.min_speed *= mult; + S.max_speed *= mult; + } else if (strcmp(argv[i], "--depth-layers") == 0 && i + 1 < argc) { + S.num_depth_layers = atoi(argv[++i]); + if (S.num_depth_layers < MIN_DEPTH_LAYERS) + S.num_depth_layers = MIN_DEPTH_LAYERS; + if (S.num_depth_layers > MAX_DEPTH_LAYERS) + S.num_depth_layers = MAX_DEPTH_LAYERS; + } else if (strcmp(argv[i], "--layer-near-density") == 0 && i + 1 < argc) { + S.layer_near_density = atof(argv[++i]); + } else if (strcmp(argv[i], "--layer-far-density") == 0 && i + 1 < argc) { + S.layer_far_density = atof(argv[++i]); + } else if (strcmp(argv[i], "--head-hold-frames") == 0 && i + 1 < argc) { + S.head_hold_frames = atoi(argv[++i]); + if (S.head_hold_frames < 0) S.head_hold_frames = 0; + if (S.head_hold_frames > 120) S.head_hold_frames = 120; + } else if (strcmp(argv[i], "--head-mutation-chance") == 0 && i + 1 < argc) { + S.head_mutation_chance = atof(argv[++i]); + if (S.head_mutation_chance < 0.0) S.head_mutation_chance = 0.0; + if (S.head_mutation_chance > 1.0) S.head_mutation_chance = 1.0; + } else if (strcmp(argv[i], "--head-white-min") == 0 && i + 1 < argc) { + S.head_white_min = atof(argv[++i]); + } else if (strcmp(argv[i], "--head-white-max") == 0 && i + 1 < argc) { + S.head_white_max = atof(argv[++i]); + } else if (strcmp(argv[i], "--fade-frames") == 0 && i + 1 < argc) { + S.fade_frames = atoi(argv[++i]); + if (S.fade_frames < 1) S.fade_frames = 1; + if (S.fade_frames > 300) S.fade_frames = 300; + } else if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) { + fprintf(stderr, + "Usage: %s --render --output <name> [--color <color>] " + "[--font-size <size>]\n" + " [--min-speed <val>] [--max-speed <val>] " + "[--min-trail <val>] [--max-trail <val>]\n" + " [--min-density <val>] [--max-density <val>]\n" + " [--head-hold-frames <frames>] " + "[--head-mutation-chance <0..1>]\n" + " [--head-white-min <0..1>] [--head-white-max <0..1>]\n" + " [--speed <multiplier>] [--depth-layers <N>]\n" + "\n" + "Colors: green, red, blue, white, yellow, cyan, magenta, random\n" + "--speed scales both min/max speed (e.g. --speed 2.0 = double speed)\n" + "--depth-layers: number of parallax layers (1-%d, default %d)\n" + "Default font-size: %d\n" + "Speed range: %.1f - %.1f Trail range: %d - %d " + "Density range: %.2f - %.2f\n", + argv[0], + MAX_DEPTH_LAYERS, DEFAULT_DEPTH_LAYERS, + DEFAULT_FONT_SIZE, + DEFAULT_MIN_SPEED, DEFAULT_MAX_SPEED, + DEFAULT_MIN_TRAIL, DEFAULT_MAX_TRAIL, + DEFAULT_MIN_DENSITY, DEFAULT_MAX_DENSITY); + return 0; + } else { + fprintf(stderr, "Unknown option: %s\n", argv[i]); + return 1; + } + } + + /* Clamp values */ + if (S.min_speed < 0.1) S.min_speed = 0.1; + if (S.max_speed < S.min_speed) S.max_speed = S.min_speed; + if (S.min_trail < 1) S.min_trail = 1; + if (S.max_trail < S.min_trail) S.max_trail = S.min_trail; + if (S.min_density < 0.01) S.min_density = 0.01; + if (S.min_density > 1.0) S.min_density = 1.0; + if (S.max_density < S.min_density) S.max_density = S.min_density; + if (S.max_density > 1.0) S.max_density = 1.0; + if (S.head_white_min < 0.0) S.head_white_min = 0.0; + if (S.head_white_min > 1.0) S.head_white_min = 1.0; + if (S.head_white_max < 0.0) S.head_white_max = 0.0; + if (S.head_white_max > 1.0) S.head_white_max = 1.0; + if (S.head_white_max < S.head_white_min) { + double tmp = S.head_white_min; + S.head_white_min = S.head_white_max; + S.head_white_max = tmp; + } + + if (S.target_name[0] == '\0') { + fprintf(stderr, "Error: --output is required in render mode\n"); + return 1; + } + + srand((unsigned)time(NULL) ^ (unsigned)getpid()); + + S.base_color = render_lookup_color(color_name); + if (strcasecmp(color_name, "random_trail_named") == 0) + S.color_mode = COLOR_RANDOM; + else if (strcasecmp(color_name, "random_trail_hex") == 0) + S.color_mode = COLOR_RANDOM_HEX; + else + S.color_mode = COLOR_FIXED; + + /* Signal handlers */ + struct sigaction sa; + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = render_sig_handler; + sigemptyset(&sa.sa_mask); + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + + struct sigaction sa_usr1; + memset(&sa_usr1, 0, sizeof(sa_usr1)); + sa_usr1.sa_handler = render_sigusr1_handler; + sigemptyset(&sa_usr1.sa_mask); + sigaction(SIGUSR1, &sa_usr1, NULL); + + signal(SIGPIPE, SIG_IGN); + + /* Connect to Wayland */ + ensure_wayland_display(); + S.display = wl_display_connect(NULL); + if (!S.display) { + fprintf(stderr, "Cannot connect to Wayland display\n"); + return 1; + } + + wl_list_init(&render_output_list); + + S.registry = wl_display_get_registry(S.display); + wl_registry_add_listener(S.registry, &render_registry_listener, NULL); + + wl_display_roundtrip(S.display); + + if (S.xdg_output_manager) { + struct render_output_info *info; + wl_list_for_each(info, &render_output_list, link) { + info->xdg_output = zxdg_output_manager_v1_get_xdg_output( + S.xdg_output_manager, info->output); + zxdg_output_v1_add_listener(info->xdg_output, + &render_xdg_output_listener, info); + } + } + + wl_display_roundtrip(S.display); + + if (!S.output_found || !S.target_output) { + fprintf(stderr, "Output '%s' not found. Available outputs:\n", S.target_name); + struct render_output_info *info; + wl_list_for_each(info, &render_output_list, link) { + fprintf(stderr, " %s (%dx%d)\n", info->name, info->width, info->height); + } + wl_display_disconnect(S.display); + return 1; + } + + if (!S.compositor || !S.layer_shell) { + fprintf(stderr, "Missing required Wayland interfaces " + "(compositor=%p layer_shell=%p)\n", + (void*)S.compositor, (void*)S.layer_shell); + wl_display_disconnect(S.display); + return 1; + } + + fprintf(stderr, "Target output: %s (%dx%d, scale=%d, depth_layers=%d, head_hold=%d, head_mutation=%.2f, head_white=%.2f-%.2f, speed=%.1f-%.1f, trail=%d-%d, density=%.2f-%.2f)\n", + S.target_name, S.output_width, S.output_height, S.output_scale, + S.num_depth_layers, S.head_hold_frames, S.head_mutation_chance, + S.head_white_min, S.head_white_max, + S.min_speed, S.max_speed, S.min_trail, S.max_trail, + S.min_density, S.max_density); + + /* Create surface */ + S.surface = wl_compositor_create_surface(S.compositor); + + S.layer_surface = zwlr_layer_shell_v1_get_layer_surface( + S.layer_shell, S.surface, S.target_output, + ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY, "oledsaver"); + + zwlr_layer_surface_v1_set_anchor(S.layer_surface, + ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP | + ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM | + ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | + ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT); + zwlr_layer_surface_v1_set_size(S.layer_surface, 0, 0); + zwlr_layer_surface_v1_set_exclusive_zone(S.layer_surface, -1); + zwlr_layer_surface_v1_set_keyboard_interactivity(S.layer_surface, 0); + + /* Keep the visual overlay from receiving pointer/touch input. */ + struct wl_region *empty_input = wl_compositor_create_region(S.compositor); + wl_surface_set_input_region(S.surface, empty_input); + wl_region_destroy(empty_input); + + zwlr_layer_surface_v1_add_listener(S.layer_surface, + &render_layer_surface_listener, NULL); + + wl_surface_commit(S.surface); + wl_display_roundtrip(S.display); + + if (!S.configured) { + fprintf(stderr, "Layer surface was not configured\n"); + wl_display_disconnect(S.display); + return 1; + } + + fprintf(stderr, "Surface configured: %dx%d\n", S.surface_width, S.surface_height); + + /* Initialize EGL */ + if (!render_init_egl()) { + fprintf(stderr, "Failed to initialize EGL\n"); + wl_display_disconnect(S.display); + return 1; + } + + /* Initialize shaders */ + if (!render_init_shaders()) { + fprintf(stderr, "Failed to initialize shaders\n"); + wl_display_disconnect(S.display); + return 1; + } + + render_set_projection(S.surface_width, S.surface_height); + + /* Initialize FreeType and build glyph atlas */ + int atlas_font_size = (int)(S.font_size * LAYER_NEAR_FONT_SCALE + 0.5); + if (atlas_font_size < S.font_size) atlas_font_size = S.font_size; + + if (!render_init_freetype(atlas_font_size)) { + fprintf(stderr, "Failed to initialize FreeType\n"); + wl_display_disconnect(S.display); + return 1; + } + + if (!render_build_atlas(atlas_font_size)) { + fprintf(stderr, "Failed to build glyph atlas\n"); + wl_display_disconnect(S.display); + return 1; + } + + fprintf(stderr, "Initializing %d depth layers (font_size=%d, atlas_size=%d)\n", + S.num_depth_layers, S.font_size, atlas_font_size); + + render_init_matrix(S.surface_width, S.surface_height); + + for (int l = 0; l < S.num_depth_layers; l++) { + depth_layer_t *dl = &S.layers[l]; + fprintf(stderr, "Layer %d: font_scale=%.2f cell=%dx%d grid=%dx%d opacity=%.2f speed=%.2fx density=%.0f%%\n", + l, dl->font_scale, dl->cell_w, dl->cell_h, + dl->cols, dl->rows, dl->opacity, dl->speed_scale, + dl->density * 100.0); + } + fprintf(stderr, "Starting matrix rain with depth layers (OpenGL ES 2.0)\n"); + + /* Initialize phase state (warmup already ran, now fade desktop to black) */ + S.phase = PHASE_FADE_TO_BLACK; + S.phase_frame = 0; + S.surface_alpha = 0.0f; + S.fade_opacity = 0.0f; + + /* Main render loop */ + struct timespec ts_start, ts_end; + while (!S.stop && !S.closed) { + clock_gettime(CLOCK_MONOTONIC, &ts_start); + + if (wl_display_prepare_read(S.display) == 0) { + wl_display_flush(S.display); + + struct pollfd pfd = { + .fd = wl_display_get_fd(S.display), + .events = POLLIN, + }; + if (poll(&pfd, 1, 0) > 0) { + wl_display_read_events(S.display); + } else { + wl_display_cancel_read(S.display); + } + } + wl_display_dispatch_pending(S.display); + + if (S.stop || S.closed) break; + + glViewport(0, 0, S.surface_width, S.surface_height); + + switch (S.phase) { + case PHASE_FADE_TO_BLACK: + S.phase_frame++; + S.surface_alpha = (float)S.phase_frame / S.fade_frames; + if (S.surface_alpha >= 1.0f) { + S.surface_alpha = 1.0f; + S.phase = PHASE_FADE_IN; + S.phase_frame = 0; + } + /* Clear with transitioning alpha, don't render rain */ + glClearColor(0.0f, 0.0f, 0.0f, S.surface_alpha); + glClear(GL_COLOR_BUFFER_BIT); + break; + + case PHASE_FADE_IN: + S.phase_frame++; + S.fade_opacity = (float)S.phase_frame / S.fade_frames; + if (S.fade_opacity >= 1.0f) { + S.fade_opacity = 1.0f; + S.phase = PHASE_RUNNING; + } + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + render_tick_matrix(); + render_frame(); + break; + + case PHASE_RUNNING: + if (S.fade_out_requested) { + S.phase = PHASE_FADE_OUT; + S.phase_frame = S.fade_frames; + S.fade_out_requested = 0; + } + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + render_tick_matrix(); + render_frame(); + break; + + case PHASE_FADE_OUT: + S.phase_frame--; + S.fade_opacity = (float)S.phase_frame / S.fade_frames; + if (S.fade_opacity <= 0.0f) { + S.fade_opacity = 0.0f; + S.phase = PHASE_FADE_TO_DESKTOP; + S.phase_frame = S.fade_frames; + } + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + render_tick_matrix(); + render_frame(); + break; + + case PHASE_FADE_TO_DESKTOP: + S.phase_frame--; + S.surface_alpha = (float)S.phase_frame / S.fade_frames; + if (S.surface_alpha <= 0.0f) { + S.surface_alpha = 0.0f; + S.stop = 1; /* exit */ + } + glClearColor(0.0f, 0.0f, 0.0f, S.surface_alpha); + glClear(GL_COLOR_BUFFER_BIT); + /* Don't render rain — just fading black overlay */ + break; + } + + eglSwapBuffers(S.egl_display, S.egl_surface); + + clock_gettime(CLOCK_MONOTONIC, &ts_end); + long elapsed_us = (ts_end.tv_sec - ts_start.tv_sec) * 1000000L + + (ts_end.tv_nsec - ts_start.tv_nsec) / 1000; + long sleep_us = FRAME_INTERVAL_US - elapsed_us; + if (sleep_us > 0) { + usleep((useconds_t)sleep_us); + } + } + + fprintf(stderr, "Shutting down\n"); + + /* Cleanup */ + free(S.vertex_buf); + if (S.vbo) glDeleteBuffers(1, &S.vbo); + if (S.shader_program) glDeleteProgram(S.shader_program); + if (S.atlas.texture) glDeleteTextures(1, &S.atlas.texture); + + if (S.egl_display != EGL_NO_DISPLAY) { + eglMakeCurrent(S.egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + if (S.egl_surface != EGL_NO_SURFACE) + eglDestroySurface(S.egl_display, S.egl_surface); + if (S.egl_context != EGL_NO_CONTEXT) + eglDestroyContext(S.egl_display, S.egl_context); + eglTerminate(S.egl_display); + } + if (S.egl_window) wl_egl_window_destroy(S.egl_window); + + if (S.ft_face) FT_Done_Face(S.ft_face); + if (S.ft_library) FT_Done_FreeType(S.ft_library); + + if (S.layer_surface) zwlr_layer_surface_v1_destroy(S.layer_surface); + if (S.surface) wl_surface_destroy(S.surface); + for (int l = 0; l < S.num_depth_layers; l++) { + free(S.layers[l].columns); + free(S.layers[l].cells); + } + + struct render_output_info *info, *tmp; + wl_list_for_each_safe(info, tmp, &render_output_list, link) { + if (info->xdg_output) zxdg_output_v1_destroy(info->xdg_output); + wl_output_release(info->output); + wl_list_remove(&info->link); + free(info); + } + + if (S.xdg_output_manager) zxdg_output_manager_v1_destroy(S.xdg_output_manager); + if (S.registry) wl_registry_destroy(S.registry); + wl_display_disconnect(S.display); + + return 0; +} + +/* =================================================================== + * MANAGER MODE (Wayfire IPC idle blanking) + * =================================================================== */ + +/* ── Constants ─────────────────────────────────────────────────────── */ + +#define MAX_OUTPUTS 8 +#define MAX_OUTPUT_NAME 64 +#define MAX_PATH_LEN 512 +#define MAX_CMD_LEN 1024 +#define MAX_PIDS 4 +#define WF_IPC_HEADER_LEN 4 +#define WF_IPC_MAX_PAYLOAD (16 * 1024 * 1024) +#define CURSOR_POLL_INTERVAL 0.25 + +static const char *MGR_COLORS[] = { + "green", "red", "blue", "white", "yellow", "cyan", "magenta" +}; +#define MGR_NUM_COLORS 7 + +/* ── Data structures ───────────────────────────────────────────────── */ + +typedef struct { + char name[MAX_OUTPUT_NAME]; + double last_input; + char state[8]; + pid_t pids[MAX_PIDS]; + int pid_count; + int timeout_override; + int video_inhibited; + char color[32]; + /* per-output overrides; negative = use global */ + double min_speed, max_speed; + int min_trail, max_trail; + double min_density, max_density; +} mgr_output_info_t; + +typedef struct { + /* Config values */ + int global_timeout; + int check_interval; + int focused_timeout; + int inhibit_video; + int inhibitor_warned; + int manual_activation; + char log_file[MAX_PATH_LEN]; + char matrix_cmd[MAX_CMD_LEN]; + char matrix_color[32]; + /* Global matrix tuning ranges */ + double matrix_min_speed, matrix_max_speed, matrix_avg_speed; + int matrix_min_trail, matrix_max_trail; + double matrix_min_density, matrix_max_density; + double matrix_layer_near_density, matrix_layer_far_density; + int matrix_font_size; + int matrix_head_hold_frames; + double matrix_head_mutation_chance; + double matrix_head_white_min; + double matrix_head_white_max; + int matrix_depth_layers; + int matrix_fade_frames; + char config_file[MAX_PATH_LEN]; + double config_mtime; + char lock_cmd[MAX_CMD_LEN]; /* command to run for screen lock */ + + /* State */ + mgr_output_info_t outputs[MAX_OUTPUTS]; + int output_count; + char focused_output[MAX_OUTPUT_NAME]; + double last_blank_time; + int seat_idle; + int wayfire_cursor_hidden; + int wayfire_cursor_warned; + volatile sig_atomic_t stop; + volatile sig_atomic_t activate_all; /* SIGUSR1: blank all outputs now */ + volatile sig_atomic_t lock_now; /* SIGUSR2: blank all + run lock cmd */ + + /* Sync */ + pthread_mutex_t lock; + + /* Logging */ + FILE *log_fp; +} mgr_state_t; + +static mgr_state_t G; + +/* ── Logging ───────────────────────────────────────────────────────── */ + +static void mgr_log_msg(const char *level, const char *fmt, ...) { + time_t now = time(NULL); + struct tm tm; + char tbuf[64]; + localtime_r(&now, &tm); + strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", &tm); + + va_list ap; + + va_start(ap, fmt); + fprintf(stdout, "%s %s ", tbuf, level); + vfprintf(stdout, fmt, ap); + fputc('\n', stdout); + fflush(stdout); + va_end(ap); + + if (G.log_fp) { + va_start(ap, fmt); + fprintf(G.log_fp, "%s %s ", tbuf, level); + vfprintf(G.log_fp, fmt, ap); + fputc('\n', G.log_fp); + fflush(G.log_fp); + va_end(ap); + } +} + +#define LOG_INFO(...) mgr_log_msg("INFO", __VA_ARGS__) +#define LOG_WARNING(...) mgr_log_msg("WARNING", __VA_ARGS__) +#define LOG_ERROR(...) mgr_log_msg("ERROR", __VA_ARGS__) + +/* ── Utility ───────────────────────────────────────────────────────── */ + +static double mgr_monotime(void) { + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return ts.tv_sec + ts.tv_nsec / 1e9; +} + +static int mgr_pid_alive(pid_t pid) { + if (pid <= 0) return 0; + return kill(pid, 0) == 0; +} + +static void mgr_mkdirs(const char *path) { + char tmp[MAX_PATH_LEN]; + snprintf(tmp, sizeof(tmp), "%s", path); + for (char *p = tmp + 1; *p; p++) { + if (*p == '/') { + *p = '\0'; + mkdir(tmp, 0755); + *p = '/'; + } + } + mkdir(tmp, 0755); +} + +static void mgr_runtime_path(char *dst, size_t dstsz, const char *name) { + const char *runtime_dir = getenv("XDG_RUNTIME_DIR"); + + if (runtime_dir && runtime_dir[0] != '\0') { + char dir[MAX_PATH_LEN]; + snprintf(dir, sizeof(dir), "%s/oledsaver", runtime_dir); + mgr_mkdirs(dir); + snprintf(dst, dstsz, "%s/%s", dir, name); + return; + } + + snprintf(dst, dstsz, "/tmp/%s", name); +} + +static void mgr_expand_tilde(const char *src, char *dst, size_t dstsz) { + if (src[0] == '~' && (src[1] == '/' || src[1] == '\0')) { + const char *home = getenv("HOME"); + if (home) + snprintf(dst, dstsz, "%s%s", home, src + 1); + else + snprintf(dst, dstsz, "%s", src); + } else { + snprintf(dst, dstsz, "%s", src); + } +} + +static const char *mgr_random_color(void) { + return MGR_COLORS[rand() % MGR_NUM_COLORS]; +} + +/* ── Wayfire IPC (direct socket) ──────────────────────────────────── */ + +static int mgr_wayfire_ipc_path(char *dst, size_t dstsz) { + const char *sock = getenv("WAYFIRE_SOCKET"); + if (!sock || sock[0] == '\0') + sock = getenv("_WAYFIRE_SOCKET"); + if (sock && sock[0] != '\0') { + snprintf(dst, dstsz, "%s", sock); + return 0; + } + + ensure_wayland_display(); + + const char *runtime_dir = getenv("XDG_RUNTIME_DIR"); + const char *display = getenv("WAYLAND_DISPLAY"); + if (runtime_dir && runtime_dir[0] != '\0' && + display && display[0] != '\0') { + snprintf(dst, dstsz, "%s/wayfire-%s-.socket", runtime_dir, display); + struct stat st; + if (stat(dst, &st) == 0 && S_ISSOCK(st.st_mode)) + return 0; + } + + if (!runtime_dir || runtime_dir[0] == '\0') + return -1; + + DIR *dir = opendir(runtime_dir); + if (!dir) + return -1; + + struct dirent *ent; + while ((ent = readdir(dir)) != NULL) { + const char *name = ent->d_name; + size_t len = strlen(name); + if (strncmp(name, "wayfire-", 8) != 0 || len < 15 || + strcmp(name + len - 7, ".socket") != 0) + continue; + + char candidate[MAX_PATH_LEN]; + struct stat st; + snprintf(candidate, sizeof(candidate), "%s/%s", runtime_dir, name); + if (stat(candidate, &st) == 0 && S_ISSOCK(st.st_mode)) { + snprintf(dst, dstsz, "%s", candidate); + closedir(dir); + return 0; + } + } + + closedir(dir); + return -1; +} + +static int mgr_ipc_connect(void) { + char sock[MAX_PATH_LEN]; + if (mgr_wayfire_ipc_path(sock, sizeof(sock)) < 0) { + LOG_ERROR("Wayfire IPC socket not found"); + return -1; + } + + if (strlen(sock) >= sizeof(((struct sockaddr_un *)0)->sun_path)) { + LOG_ERROR("Wayfire IPC socket path too long: %s", sock); + return -1; + } + + int fd = socket(AF_UNIX, SOCK_STREAM, 0); + if (fd < 0) return -1; + + struct sockaddr_un addr; + memset(&addr, 0, sizeof(addr)); + addr.sun_family = AF_UNIX; + snprintf(addr.sun_path, sizeof(addr.sun_path), "%s", sock); + + if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + close(fd); + return -1; + } + return fd; +} + +static int mgr_readn(int fd, void *buf, size_t n) { + size_t total = 0; + while (total < n) { + ssize_t r = read(fd, (char *)buf + total, n - total); + if (r < 0 && errno == EINTR) + continue; + if (r <= 0) return -1; + total += r; + } + return 0; +} + +static int mgr_writen(int fd, const void *buf, size_t n) { + size_t total = 0; + while (total < n) { + ssize_t w = write(fd, (const char *)buf + total, n - total); + if (w < 0 && errno == EINTR) + continue; + if (w <= 0) + return -1; + total += w; + } + return 0; +} + +static int mgr_ipc_send_payload(int fd, const char *payload) { + uint32_t len = payload ? (uint32_t)strlen(payload) : 0; + if (len > WF_IPC_MAX_PAYLOAD) + return -1; + + if (mgr_writen(fd, &len, WF_IPC_HEADER_LEN) < 0) + return -1; + if (len > 0 && mgr_writen(fd, payload, len) < 0) + return -1; + return 0; +} + +static int mgr_ipc_send_method(int fd, const char *method, + const char *data_json) { + struct json_object *root = json_object_new_object(); + struct json_object *data = NULL; + + if (!root) + return -1; + + if (data_json && data_json[0] != '\0') + data = json_tokener_parse(data_json); + if (!data) + data = json_object_new_object(); + + json_object_object_add(root, "method", json_object_new_string(method)); + json_object_object_add(root, "data", data); + + const char *payload = json_object_to_json_string_ext( + root, JSON_C_TO_STRING_PLAIN); + int rc = mgr_ipc_send_payload(fd, payload); + + json_object_put(root); + return rc; +} + +static int mgr_ipc_recv(int fd, char **out_payload) { + uint32_t len; + if (mgr_readn(fd, &len, WF_IPC_HEADER_LEN) < 0) + return -1; + if (len > WF_IPC_MAX_PAYLOAD) + return -1; + + char *payload = malloc(len + 1); + if (!payload) return -1; + if (len > 0 && mgr_readn(fd, payload, len) < 0) { + free(payload); + return -1; + } + payload[len] = '\0'; + + if (out_payload) *out_payload = payload; + else free(payload); + return 0; +} + +static struct json_object *mgr_ipc_request(const char *method, + const char *data_json) { + int fd = mgr_ipc_connect(); + if (fd < 0) return NULL; + + if (mgr_ipc_send_method(fd, method, data_json) < 0) { + close(fd); + return NULL; + } + + char *resp = NULL; + if (mgr_ipc_recv(fd, &resp) < 0) { + close(fd); + return NULL; + } + close(fd); + + struct json_object *j = json_tokener_parse(resp); + free(resp); + return j; +} + +/* ── Idle inhibitor detection ──────────────────────────────────────── */ + +static int mgr_response_inhibits_output(struct json_object *response, const char *name) { + struct json_object *outputs = NULL; + if (!response || !json_object_object_get_ex(response, "outputs", &outputs) || + !json_object_is_type(outputs, json_type_array)) + return 0; + for (size_t i = 0; i < json_object_array_length(outputs); i++) { + struct json_object *value = json_object_array_get_idx(outputs, i); + if (json_object_is_type(value, json_type_string) && + strcmp(json_object_get_string(value), name) == 0) + return 1; + } + return 0; +} + +static struct json_object *mgr_check_idle_inhibitors(void) { + if (!G.inhibit_video) return NULL; + struct json_object *response = mgr_ipc_request("oledsaver/idle_inhibitors", NULL); + struct json_object *outputs = NULL; + if (!response || !json_object_object_get_ex(response, "outputs", &outputs) || + !json_object_is_type(outputs, json_type_array)) { + if (!G.inhibitor_warned) + LOG_WARNING("Per-output video inhibition unavailable; enable Wayfire's oledsaver-idle plugin"); + G.inhibitor_warned = 1; + } else { + G.inhibitor_warned = 0; + } + return response; +} + +/* ── Config parsing ────────────────────────────────────────────────── */ + +static void mgr_trim(char *s) { + char *start = s; + while (*start == ' ' || *start == '\t') start++; + if (start != s) memmove(s, start, strlen(start) + 1); + char *end = s + strlen(s) - 1; + while (end >= s && (*end == ' ' || *end == '\t' || *end == '\n' || *end == '\r')) + *end-- = '\0'; +} + +static void mgr_set_defaults(void) { + const char *state_home = getenv("XDG_STATE_HOME"); + const char *home = getenv("HOME"); + + G.global_timeout = 300; + G.check_interval = 5; + G.focused_timeout = 30; + G.inhibit_video = 1; + G.matrix_cmd[0] = '\0'; + G.matrix_min_speed = DEFAULT_MIN_SPEED; + G.matrix_max_speed = DEFAULT_MAX_SPEED; + G.matrix_avg_speed = DEFAULT_AVG_SPEED; + G.matrix_min_trail = DEFAULT_MIN_TRAIL; + G.matrix_max_trail = DEFAULT_MAX_TRAIL; + G.matrix_min_density = DEFAULT_MIN_DENSITY; + G.matrix_max_density = DEFAULT_MAX_DENSITY; + G.matrix_layer_near_density = LAYER_NEAR_DENSITY; + G.matrix_layer_far_density = LAYER_FAR_DENSITY; + G.matrix_font_size = DEFAULT_FONT_SIZE; + G.matrix_head_hold_frames = DEFAULT_HEAD_HOLD_FRAMES; + G.matrix_head_mutation_chance = DEFAULT_HEAD_MUTATION_CHANCE; + G.matrix_head_white_min = DEFAULT_HEAD_WHITE_MIN; + G.matrix_head_white_max = DEFAULT_HEAD_WHITE_MAX; + G.matrix_depth_layers = DEFAULT_DEPTH_LAYERS; + G.matrix_fade_frames = S.fade_frames; + snprintf(G.matrix_color, sizeof(G.matrix_color), "green"); + + if (state_home && state_home[0] != '\0') + snprintf(G.log_file, sizeof(G.log_file), "%s/oledsaver/oledsaver.log", state_home); + else if (home && home[0] != '\0') + snprintf(G.log_file, sizeof(G.log_file), "%s/.local/state/oledsaver/oledsaver.log", home); + else + snprintf(G.log_file, sizeof(G.log_file), "/tmp/oledsaver.log"); + G.lock_cmd[0] = '\0'; +} + +static void mgr_load_config(void) { + if (G.config_file[0] == '\0') { + const char *config_file = getenv("OLEDSAVER_CONFIG"); + const char *config_home = getenv("XDG_CONFIG_HOME"); + const char *home = getenv("HOME"); + char candidate[MAX_PATH_LEN]; + + if (config_file && config_file[0] != '\0') { + mgr_expand_tilde(config_file, G.config_file, sizeof(G.config_file)); + } else if (config_home && config_home[0] != '\0') { + snprintf(candidate, sizeof(candidate), "%s/oledsaver.conf", config_home); + if (access(candidate, R_OK) == 0) + snprintf(G.config_file, sizeof(G.config_file), "%s", candidate); + } + if (G.config_file[0] == '\0' && home && home[0] != '\0') { + snprintf(candidate, sizeof(candidate), "%s/.config/oledsaver.conf", home); + if (access(candidate, R_OK) == 0) + snprintf(G.config_file, sizeof(G.config_file), "%s", candidate); + } + if (G.config_file[0] == '\0') + snprintf(G.config_file, sizeof(G.config_file), "/etc/oledsaver.conf"); + } + + struct stat st; + if (stat(G.config_file, &st) < 0) { + LOG_WARNING("Config not found: %s, using defaults", G.config_file); + mgr_set_defaults(); + return; + } + + double mtime = st.st_mtim.tv_sec + st.st_mtim.tv_nsec / 1e9; + if (mtime <= G.config_mtime) return; + + FILE *fp = fopen(G.config_file, "r"); + if (!fp) { + LOG_ERROR("Cannot open config: %s", G.config_file); + return; + } + + G.config_mtime = mtime; + + for (int i = 0; i < G.output_count; i++) { + G.outputs[i].timeout_override = -1; + G.outputs[i].color[0] = '\0'; + G.outputs[i].min_speed = -1.0; + G.outputs[i].max_speed = -1.0; + G.outputs[i].min_trail = -1; + G.outputs[i].max_trail = -1; + G.outputs[i].min_density = -1.0; + G.outputs[i].max_density = -1.0; + } + + char section[64] = ""; + char line[1024]; + while (fgets(line, sizeof(line), fp)) { + mgr_trim(line); + if (line[0] == '\0' || line[0] == '#' || line[0] == ';') continue; + if (line[0] == '[') { + char *end = strchr(line, ']'); + if (end) { + *end = '\0'; + snprintf(section, sizeof(section), "%s", line + 1); + } + continue; + } + + char *eq = strchr(line, '='); + if (!eq) continue; + *eq = '\0'; + char key[256], val[768]; + snprintf(key, sizeof(key), "%s", line); + snprintf(val, sizeof(val), "%s", eq + 1); + mgr_trim(key); + mgr_trim(val); + + if (strcmp(section, "global") == 0) { + if (strcmp(key, "TIMEOUT") == 0) + G.global_timeout = atoi(val); + else if (strcmp(key, "CHECK_INTERVAL") == 0) + G.check_interval = atoi(val); + else if (strcmp(key, "FOCUSED_TIMEOUT") == 0) + G.focused_timeout = atoi(val); + else if (strcmp(key, "INHIBIT_VIDEO") == 0) + G.inhibit_video = atoi(val) != 0; + else if (strcmp(key, "LOG_FILE") == 0) + mgr_expand_tilde(val, G.log_file, sizeof(G.log_file)); + else if (strcmp(key, "LOCK_CMD") == 0) + snprintf(G.lock_cmd, sizeof(G.lock_cmd), "%s", val); + } else if (strcmp(section, "matrix") == 0) { + if (strcmp(key, "CMD") == 0) + snprintf(G.matrix_cmd, sizeof(G.matrix_cmd), "%s", val); + else if (strcmp(key, "COLOR") == 0) + snprintf(G.matrix_color, sizeof(G.matrix_color), "%s", val); + else if (strcmp(key, "MIN_SPEED") == 0) + G.matrix_min_speed = atof(val); + else if (strcmp(key, "MAX_SPEED") == 0) + G.matrix_max_speed = atof(val); + else if (strcmp(key, "AVG_SPEED") == 0) + G.matrix_avg_speed = atof(val); + else if (strcmp(key, "MIN_TRAIL") == 0) + G.matrix_min_trail = atoi(val); + else if (strcmp(key, "MAX_TRAIL") == 0) + G.matrix_max_trail = atoi(val); + else if (strcmp(key, "MIN_DENSITY") == 0) + G.matrix_min_density = atof(val); + else if (strcmp(key, "MAX_DENSITY") == 0) + G.matrix_max_density = atof(val); + else if (strcmp(key, "FONT_SIZE") == 0) + G.matrix_font_size = atoi(val); + else if (strcmp(key, "HEAD_HOLD_FRAMES") == 0) + G.matrix_head_hold_frames = atoi(val); + else if (strcmp(key, "HEAD_MUTATION_CHANCE") == 0) + G.matrix_head_mutation_chance = atof(val); + else if (strcmp(key, "HEAD_WHITE_MIN") == 0) + G.matrix_head_white_min = atof(val); + else if (strcmp(key, "HEAD_WHITE_MAX") == 0) + G.matrix_head_white_max = atof(val); + else if (strcmp(key, "LAYER_NEAR_DENSITY") == 0) + G.matrix_layer_near_density = atof(val); + else if (strcmp(key, "LAYER_FAR_DENSITY") == 0) + G.matrix_layer_far_density = atof(val); + else if (strcmp(key, "DEPTH_LAYERS") == 0) { + G.matrix_depth_layers = atoi(val); + if (G.matrix_depth_layers < MIN_DEPTH_LAYERS) + G.matrix_depth_layers = MIN_DEPTH_LAYERS; + if (G.matrix_depth_layers > MAX_DEPTH_LAYERS) + G.matrix_depth_layers = MAX_DEPTH_LAYERS; + } else if (strcmp(key, "FADE_FRAMES") == 0) { + G.matrix_fade_frames = atoi(val); + if (G.matrix_fade_frames < 1) G.matrix_fade_frames = 1; + if (G.matrix_fade_frames > 300) G.matrix_fade_frames = 300; + } + } else if (strcmp(section, "output_timeouts") == 0) { + for (int i = 0; i < G.output_count; i++) { + if (strcmp(G.outputs[i].name, key) == 0) + G.outputs[i].timeout_override = atoi(val); + } + } else if (strcmp(section, "output_colors") == 0) { + for (int i = 0; i < G.output_count; i++) { + if (strcmp(G.outputs[i].name, key) == 0) + snprintf(G.outputs[i].color, sizeof(G.outputs[i].color), "%s", val); + } + } + } + fclose(fp); + + if (G.matrix_font_size < MIN_FONT_SIZE) G.matrix_font_size = MIN_FONT_SIZE; + if (G.matrix_font_size > MAX_FONT_SIZE) G.matrix_font_size = MAX_FONT_SIZE; + if (G.matrix_head_hold_frames < 0) G.matrix_head_hold_frames = 0; + if (G.matrix_head_hold_frames > 120) G.matrix_head_hold_frames = 120; + if (G.matrix_head_mutation_chance < 0.0) G.matrix_head_mutation_chance = 0.0; + if (G.matrix_head_mutation_chance > 1.0) G.matrix_head_mutation_chance = 1.0; + if (G.matrix_head_white_min < 0.0) G.matrix_head_white_min = 0.0; + if (G.matrix_head_white_min > 1.0) G.matrix_head_white_min = 1.0; + if (G.matrix_head_white_max < 0.0) G.matrix_head_white_max = 0.0; + if (G.matrix_head_white_max > 1.0) G.matrix_head_white_max = 1.0; + if (G.matrix_head_white_max < G.matrix_head_white_min) { + double tmp = G.matrix_head_white_min; + G.matrix_head_white_min = G.matrix_head_white_max; + G.matrix_head_white_max = tmp; + } + + LOG_INFO("Config loaded from %s: FOCUSED_TIMEOUT=%ds TIMEOUT=%ds CHECK_INTERVAL=%ds COLOR=%s FONT_SIZE=%d DEPTH_LAYERS=%d HEAD_HOLD_FRAMES=%d HEAD_MUTATION_CHANCE=%.2f HEAD_WHITE=%.2f-%.2f speed=%.1f-%.1f trail=%d-%d density=%.2f-%.2f", + G.config_file, G.focused_timeout, G.global_timeout, G.check_interval, + G.matrix_color, G.matrix_font_size, G.matrix_depth_layers, + G.matrix_head_hold_frames, G.matrix_head_mutation_chance, + G.matrix_head_white_min, G.matrix_head_white_max, + G.matrix_min_speed, G.matrix_max_speed, + G.matrix_min_trail, G.matrix_max_trail, + G.matrix_min_density, G.matrix_max_density); +} + +/* ── Output helpers ────────────────────────────────────────────────── */ + +static mgr_output_info_t *mgr_find_output(const char *name) { + for (int i = 0; i < G.output_count; i++) { + if (strcmp(G.outputs[i].name, name) == 0) + return &G.outputs[i]; + } + return NULL; +} + +static int mgr_ipc_response_has_error(struct json_object *resp) { + struct json_object *error; + if (json_object_object_get_ex(resp, "error", &error)) + return 1; + + struct json_object *result; + if (json_object_object_get_ex(resp, "result", &result)) { + const char *status = json_object_get_string(result); + if (status && strcmp(status, "ok") != 0) + return 1; + } + + return 0; +} + +static int mgr_get_cursor_status_from_ipc(char *output, size_t output_len, + int *hidden) { + if (output_len > 0) + output[0] = '\0'; + if (hidden) + *hidden = -1; + + struct json_object *resp = + mgr_ipc_request("oledsaver/cursor_status", "{}"); + if (!resp) + return 0; + + int ok = 0; + if (mgr_ipc_response_has_error(resp)) + goto out; + + struct json_object *valid; + if (json_object_object_get_ex(resp, "valid", &valid) && + !json_object_get_boolean(valid)) + goto out; + + struct json_object *hidden_obj; + if (hidden && json_object_object_get_ex(resp, "hidden", &hidden_obj)) + *hidden = json_object_get_boolean(hidden_obj) ? 1 : 0; + + struct json_object *name_obj; + if (json_object_object_get_ex(resp, "output", &name_obj)) { + const char *name = json_object_get_string(name_obj); + if (name && name[0] != '\0') { + snprintf(output, output_len, "%s", name); + ok = 1; + } + } + +out: + json_object_put(resp); + return ok; +} + +static int mgr_set_wayfire_cursor_hidden(int hidden) { + struct json_object *resp = mgr_ipc_request( + hidden ? "oledsaver/hide_cursor" : "oledsaver/unhide_cursor", "{}"); + if (!resp) + return 0; + + int ok = !mgr_ipc_response_has_error(resp); + json_object_put(resp); + return ok; +} + +static void mgr_release_wayfire_cursor(void) { + pthread_mutex_lock(&G.lock); + int was_hidden = G.wayfire_cursor_hidden; + pthread_mutex_unlock(&G.lock); + + if (!was_hidden) + return; + + int ok = mgr_set_wayfire_cursor_hidden(0); + + pthread_mutex_lock(&G.lock); + G.wayfire_cursor_hidden = 0; + pthread_mutex_unlock(&G.lock); + + if (ok) + LOG_INFO("Cursor unhidden"); + else + LOG_WARNING("Cursor unhide request failed"); +} + +static void mgr_update_wayfire_cursor(void) { + char cursor_output[MAX_OUTPUT_NAME]; + int actual_hidden = -1; + + if (!mgr_get_cursor_status_from_ipc(cursor_output, sizeof(cursor_output), + &actual_hidden)) { + pthread_mutex_lock(&G.lock); + int should_warn = !G.wayfire_cursor_warned; + G.wayfire_cursor_warned = 1; + pthread_mutex_unlock(&G.lock); + + if (should_warn) + LOG_WARNING("Cursor tracking unavailable; load Wayfire plugin oledsaver-cursor"); + + mgr_release_wayfire_cursor(); + return; + } + + pthread_mutex_lock(&G.lock); + G.wayfire_cursor_warned = 0; + if (actual_hidden >= 0) + G.wayfire_cursor_hidden = actual_hidden; + + mgr_output_info_t *o = mgr_find_output(cursor_output); + int should_hide = o && strcmp(o->state, "off") == 0; + int is_hidden = G.wayfire_cursor_hidden; + pthread_mutex_unlock(&G.lock); + + if (should_hide == is_hidden) + return; + + if (mgr_set_wayfire_cursor_hidden(should_hide)) { + pthread_mutex_lock(&G.lock); + G.wayfire_cursor_hidden = should_hide; + pthread_mutex_unlock(&G.lock); + + LOG_INFO("Cursor %s on %s", + should_hide ? "hidden" : "unhidden", cursor_output); + } else { + pthread_mutex_lock(&G.lock); + int should_warn = !G.wayfire_cursor_warned; + G.wayfire_cursor_warned = 1; + pthread_mutex_unlock(&G.lock); + + if (should_warn) + LOG_WARNING("Cursor %s request failed", + should_hide ? "hide" : "unhide"); + } +} + +static int mgr_get_output_timeout(mgr_output_info_t *o) { + if (o->timeout_override > 0) return o->timeout_override; + return G.global_timeout; +} + +static const char *mgr_get_output_color(mgr_output_info_t *o) { + static char hex_buf[8]; + const char *color = o->color[0] ? o->color : G.matrix_color; + /* Per-trail modes: pass through to renderer as-is */ + if (strcasecmp(color, "random_trail_named") == 0 || + strcasecmp(color, "random_trail_hex") == 0) + return color; + /* Per-output random: resolve here so each output gets a different color */ + if (strcasecmp(color, "random") == 0 || + strcasecmp(color, "random_named") == 0) + return mgr_random_color(); + if (strcasecmp(color, "random_hex") == 0) { + snprintf(hex_buf, sizeof(hex_buf), "#%02x%02x%02x", + rand() % 256, rand() % 256, rand() % 256); + return hex_buf; + } + return color; +} + +static double mgr_get_val_d(double per_output, double global) { + return per_output >= 0.0 ? per_output : global; +} +static int mgr_get_val_i(int per_output, int global) { + return per_output >= 0 ? per_output : global; +} + +static void mgr_init_output(mgr_output_info_t *out, const char *name, + double now) { + memset(out, 0, sizeof(*out)); + snprintf(out->name, sizeof(out->name), "%s", name); + out->last_input = now; + strcpy(out->state, "on"); + out->timeout_override = -1; + out->min_speed = -1.0; + out->max_speed = -1.0; + out->min_trail = -1; + out->max_trail = -1; + out->min_density = -1.0; + out->max_density = -1.0; +} + +typedef struct { + struct wl_display *display; + struct wl_registry *registry; + struct zxdg_output_manager_v1 *xdg_output_manager; + struct wl_list outputs; +} mgr_outputs_wayland_t; + +typedef struct { + struct wl_output *output; + struct zxdg_output_v1 *xdg_output; + char name[MAX_OUTPUT_NAME]; + int width; + int height; + int scale; + struct wl_list link; +} mgr_wayland_output_info_t; + +static void mgr_output_set_name(mgr_wayland_output_info_t *info, + const char *name) { + if (!name || name[0] == '\0') + return; + snprintf(info->name, sizeof(info->name), "%s", name); +} + +static void mgr_xdg_output_handle_logical_position(void *data, + struct zxdg_output_v1 *xdg_output, int32_t x, int32_t y) { + (void)data; (void)xdg_output; (void)x; (void)y; +} + +static void mgr_xdg_output_handle_logical_size(void *data, + struct zxdg_output_v1 *xdg_output, int32_t w, int32_t h) { + (void)xdg_output; + mgr_wayland_output_info_t *info = data; + info->width = w; + info->height = h; +} + +static void mgr_xdg_output_handle_done(void *data, + struct zxdg_output_v1 *xdg_output) { + (void)data; (void)xdg_output; +} + +static void mgr_xdg_output_handle_name(void *data, + struct zxdg_output_v1 *xdg_output, const char *name) { + (void)xdg_output; + mgr_output_set_name(data, name); +} + +static void mgr_xdg_output_handle_description(void *data, + struct zxdg_output_v1 *xdg_output, const char *desc) { + (void)data; (void)xdg_output; (void)desc; +} + +static const struct zxdg_output_v1_listener mgr_xdg_output_listener = { + .logical_position = mgr_xdg_output_handle_logical_position, + .logical_size = mgr_xdg_output_handle_logical_size, + .done = mgr_xdg_output_handle_done, + .name = mgr_xdg_output_handle_name, + .description = mgr_xdg_output_handle_description, +}; + +static void mgr_output_handle_geometry(void *data, struct wl_output *output, + int32_t x, int32_t y, int32_t pw, int32_t ph, int32_t subpixel, + const char *make, const char *model, int32_t transform) { + (void)data; (void)output; (void)x; (void)y; + (void)pw; (void)ph; (void)subpixel; + (void)make; (void)model; (void)transform; +} + +static void mgr_output_handle_mode(void *data, struct wl_output *output, + uint32_t flags, int32_t width, int32_t height, int32_t refresh) { + (void)output; (void)refresh; + mgr_wayland_output_info_t *info = data; + if (flags & WL_OUTPUT_MODE_CURRENT) { + info->width = width; + info->height = height; + } +} + +static void mgr_output_handle_done(void *data, struct wl_output *output) { + (void)data; (void)output; +} + +static void mgr_output_handle_scale(void *data, struct wl_output *output, + int32_t factor) { + (void)output; + mgr_wayland_output_info_t *info = data; + info->scale = factor; +} + +static void mgr_output_handle_name(void *data, struct wl_output *output, + const char *name) { + (void)output; + mgr_output_set_name(data, name); +} + +static void mgr_output_handle_description(void *data, struct wl_output *output, + const char *desc) { + (void)data; (void)output; (void)desc; +} + +static const struct wl_output_listener mgr_output_listener = { + .geometry = mgr_output_handle_geometry, + .mode = mgr_output_handle_mode, + .done = mgr_output_handle_done, + .scale = mgr_output_handle_scale, + .name = mgr_output_handle_name, + .description = mgr_output_handle_description, +}; + +static void mgr_outputs_registry_handle_global(void *data, + struct wl_registry *registry, uint32_t name, + const char *interface, uint32_t version) { + mgr_outputs_wayland_t *ctx = data; + + if (strcmp(interface, zxdg_output_manager_v1_interface.name) == 0 && + !ctx->xdg_output_manager) { + ctx->xdg_output_manager = wl_registry_bind(registry, name, + &zxdg_output_manager_v1_interface, version < 3 ? version : 3); + } else if (strcmp(interface, wl_output_interface.name) == 0) { + mgr_wayland_output_info_t *info = calloc(1, sizeof(*info)); + if (!info) + return; + info->output = wl_registry_bind(registry, name, + &wl_output_interface, version < 4 ? version : 4); + info->scale = 1; + wl_output_add_listener(info->output, &mgr_output_listener, info); + wl_list_insert(&ctx->outputs, &info->link); + } +} + +static void mgr_outputs_registry_handle_global_remove(void *data, + struct wl_registry *registry, uint32_t name) { + (void)data; (void)registry; (void)name; +} + +static const struct wl_registry_listener mgr_outputs_registry_listener = { + .global = mgr_outputs_registry_handle_global, + .global_remove = mgr_outputs_registry_handle_global_remove, +}; + +static void mgr_outputs_wayland_cleanup(mgr_outputs_wayland_t *ctx) { + mgr_wayland_output_info_t *info, *tmp; + wl_list_for_each_safe(info, tmp, &ctx->outputs, link) { + if (info->xdg_output) + zxdg_output_v1_destroy(info->xdg_output); + if (info->output) + wl_output_release(info->output); + wl_list_remove(&info->link); + free(info); + } + if (ctx->xdg_output_manager) + zxdg_output_manager_v1_destroy(ctx->xdg_output_manager); + if (ctx->registry) + wl_registry_destroy(ctx->registry); + if (ctx->display) + wl_display_disconnect(ctx->display); +} + +static void mgr_refresh_outputs(void) { + mgr_outputs_wayland_t ctx = {0}; + wl_list_init(&ctx.outputs); + + ensure_wayland_display(); + ctx.display = wl_display_connect(NULL); + if (!ctx.display) { + LOG_ERROR("Output refresh: cannot connect to Wayland display"); + return; + } + + double now = mgr_monotime(); + + ctx.registry = wl_display_get_registry(ctx.display); + wl_registry_add_listener(ctx.registry, &mgr_outputs_registry_listener, &ctx); + wl_display_roundtrip(ctx.display); + + if (ctx.xdg_output_manager) { + mgr_wayland_output_info_t *info; + wl_list_for_each(info, &ctx.outputs, link) { + info->xdg_output = zxdg_output_manager_v1_get_xdg_output( + ctx.xdg_output_manager, info->output); + zxdg_output_v1_add_listener(info->xdg_output, + &mgr_xdg_output_listener, info); + } + wl_display_roundtrip(ctx.display); + } + + pthread_mutex_lock(&G.lock); + mgr_wayland_output_info_t *info; + wl_list_for_each(info, &ctx.outputs, link) { + if (info->name[0] == '\0') + continue; + if (!mgr_find_output(info->name) && G.output_count < MAX_OUTPUTS) { + mgr_init_output(&G.outputs[G.output_count++], info->name, now); + LOG_INFO("Discovered output: %s", info->name); + } + } + pthread_mutex_unlock(&G.lock); + + mgr_outputs_wayland_cleanup(&ctx); +} + +static const char *mgr_get_focused_output_from_ipc(void) { + static char buf[MAX_OUTPUT_NAME]; + struct json_object *resp = + mgr_ipc_request("window-rules/get-focused-output", "{}"); + if (!resp) + return NULL; + + const char *result = NULL; + struct json_object *status; + if (json_object_object_get_ex(resp, "result", &status) && + strcmp(json_object_get_string(status), "ok") != 0) + goto out; + + struct json_object *info, *name; + if (json_object_object_get_ex(resp, "info", &info) && + json_object_object_get_ex(info, "name", &name)) { + snprintf(buf, sizeof(buf), "%s", json_object_get_string(name)); + result = buf; + } + +out: + json_object_put(resp); + return result; +} + +static void mgr_update_focused_output(const char *focused) { + if (!focused || focused[0] == '\0') + return; + + pthread_mutex_lock(&G.lock); + bool known = mgr_find_output(focused) != NULL; + pthread_mutex_unlock(&G.lock); + + if (!known) + mgr_refresh_outputs(); + + pthread_mutex_lock(&G.lock); + char old[MAX_OUTPUT_NAME]; + snprintf(old, sizeof(old), "%s", G.focused_output); + snprintf(G.focused_output, sizeof(G.focused_output), "%s", focused); + if (strcmp(old, focused) != 0) { + /* + * Focus shift counts as fresh attention on both monitors: the new one + * is being looked at, and the old one's unfocused timeout starts now. + */ + double now = mgr_monotime(); + mgr_output_info_t *new_o = mgr_find_output(focused); + mgr_output_info_t *old_o = mgr_find_output(old); + if (new_o) new_o->last_input = now; + if (old_o) old_o->last_input = now; + LOG_INFO("Focus moved: %s -> %s", old, focused); + } + pthread_mutex_unlock(&G.lock); +} + +/* ── Screensaver management ────────────────────────────────────────── */ + +static int mgr_pids_alive(mgr_output_info_t *o) { + if (o->pid_count == 0) return 0; + for (int i = 0; i < o->pid_count; i++) { + if (!mgr_pid_alive(o->pids[i])) return 0; + } + return 1; +} + +static void mgr_kill_pids(mgr_output_info_t *o) { + for (int i = 0; i < o->pid_count; i++) { + if (o->pids[i] > 0) + kill(o->pids[i], SIGTERM); + } + o->pid_count = 0; +} + +/* + * Get path to current binary via /proc/self/exe. + */ +static const char *mgr_get_self_exe(void) { + static char path[MAX_PATH_LEN]; + ssize_t n = readlink("/proc/self/exe", path, sizeof(path) - 1); + if (n > 0) { + path[n] = '\0'; + return path; + } + /* Fallback: hope "oledsaver" is in PATH */ + return "oledsaver"; +} + +static void mgr_blank_output(const char *output_name) { + pthread_mutex_lock(&G.lock); + + mgr_output_info_t *o = mgr_find_output(output_name); + if (!o) { + pthread_mutex_unlock(&G.lock); + return; + } + + if (strcmp(o->state, "off") == 0) { + if (mgr_pids_alive(o)) { + pthread_mutex_unlock(&G.lock); + return; + } + G.last_blank_time = mgr_monotime(); + LOG_INFO("[%s] saver died, restarting", output_name); + mgr_kill_pids(o); + } else { + G.last_blank_time = mgr_monotime(); + } + + const char *color = mgr_get_output_color(o); + double min_speed = mgr_get_val_d(o->min_speed, G.matrix_min_speed); + double max_speed = mgr_get_val_d(o->max_speed, G.matrix_max_speed); + int min_trail = mgr_get_val_i(o->min_trail, G.matrix_min_trail); + int max_trail = mgr_get_val_i(o->max_trail, G.matrix_max_trail); + double min_density = mgr_get_val_d(o->min_density, G.matrix_min_density); + double max_density = mgr_get_val_d(o->max_density, G.matrix_max_density); + int depth_layers = G.matrix_depth_layers; + pthread_mutex_unlock(&G.lock); + + const char *bin = mgr_get_self_exe(); + + char font_size_str[16], min_speed_str[16], max_speed_str[16], avg_speed_str[16]; + char min_trail_str[16], max_trail_str[16]; + char min_density_str[16], max_density_str[16]; + char depth_layers_str[16], fade_frames_str[16], head_hold_frames_str[16]; + char head_mutation_chance_str[16], head_white_min_str[16], head_white_max_str[16]; + char layer_near_density_str[16], layer_far_density_str[16]; + snprintf(font_size_str, sizeof(font_size_str), "%d", G.matrix_font_size); + snprintf(min_speed_str, sizeof(min_speed_str), "%.2f", min_speed); + snprintf(max_speed_str, sizeof(max_speed_str), "%.2f", max_speed); + snprintf(avg_speed_str, sizeof(avg_speed_str), "%.2f", G.matrix_avg_speed); + snprintf(min_trail_str, sizeof(min_trail_str), "%d", min_trail); + snprintf(max_trail_str, sizeof(max_trail_str), "%d", max_trail); + snprintf(min_density_str, sizeof(min_density_str), "%.2f", min_density); + snprintf(max_density_str, sizeof(max_density_str), "%.2f", max_density); + snprintf(depth_layers_str, sizeof(depth_layers_str), "%d", depth_layers); + snprintf(fade_frames_str, sizeof(fade_frames_str), "%d", G.matrix_fade_frames); + snprintf(head_hold_frames_str, sizeof(head_hold_frames_str), "%d", G.matrix_head_hold_frames); + snprintf(head_mutation_chance_str, sizeof(head_mutation_chance_str), "%.2f", G.matrix_head_mutation_chance); + snprintf(head_white_min_str, sizeof(head_white_min_str), "%.2f", G.matrix_head_white_min); + snprintf(head_white_max_str, sizeof(head_white_max_str), "%.2f", G.matrix_head_white_max); + snprintf(layer_near_density_str, sizeof(layer_near_density_str), "%.2f", G.matrix_layer_near_density); + snprintf(layer_far_density_str, sizeof(layer_far_density_str), "%.2f", G.matrix_layer_far_density); + + pid_t pid = fork(); + if (pid < 0) { + LOG_ERROR("[%s] fork failed: %s", output_name, strerror(errno)); + return; + } + + if (pid == 0) { + /* Child: exec self in render mode */ + int devnull = open("/dev/null", O_RDWR); + if (devnull >= 0) { + dup2(devnull, STDOUT_FILENO); + dup2(devnull, STDERR_FILENO); + close(devnull); + } + execl(bin, "oledsaver", + "--render", + "--output", output_name, + "--color", color, + "--font-size", font_size_str, + "--min-speed", min_speed_str, + "--max-speed", max_speed_str, + "--avg-speed", avg_speed_str, + "--min-trail", min_trail_str, + "--max-trail", max_trail_str, + "--min-density", min_density_str, + "--max-density", max_density_str, + "--depth-layers", depth_layers_str, + "--fade-frames", fade_frames_str, + "--head-hold-frames", head_hold_frames_str, + "--head-mutation-chance", head_mutation_chance_str, + "--head-white-min", head_white_min_str, + "--head-white-max", head_white_max_str, + "--layer-near-density", layer_near_density_str, + "--layer-far-density", layer_far_density_str, + (char *)NULL); + _exit(127); + } + + /* Parent: wait briefly to check if it exits immediately */ + usleep(500000); + int status; + pid_t w = waitpid(pid, &status, WNOHANG); + if (w > 0) { + LOG_WARNING("[%s] renderer exited immediately", output_name); + return; + } + + pthread_mutex_lock(&G.lock); + o = mgr_find_output(output_name); + if (o) { + o->pids[0] = pid; + o->pid_count = 1; + strcpy(o->state, "off"); + LOG_INFO("[%s] matrix screensaver active (PID %d, color=%s, speed=%.1f-%.1f, depth=%d)", + output_name, pid, color, min_speed, max_speed, depth_layers); + } + pthread_mutex_unlock(&G.lock); +} + +static void mgr_unblank_output(const char *output_name) { + pthread_mutex_lock(&G.lock); + + mgr_output_info_t *o = mgr_find_output(output_name); + if (!o || strcmp(o->state, "on") == 0) { + pthread_mutex_unlock(&G.lock); + return; + } + + /* Send SIGUSR1 to trigger fade-out in renderer processes */ + for (int i = 0; i < o->pid_count; i++) { + if (o->pids[i] > 0) + kill(o->pids[i], SIGUSR1); + } + + /* Save pids and count for waiting outside the lock */ + pid_t pids[MAX_PIDS]; + int pid_count = o->pid_count; + for (int i = 0; i < pid_count; i++) + pids[i] = o->pids[i]; + + pthread_mutex_unlock(&G.lock); + + /* Wait up to 3 seconds for renderers to exit (fade-out + fade-to-desktop) */ + int wait_ms = 3000; + int poll_interval_ms = 50; + bool all_exited = false; + + for (int elapsed = 0; elapsed < wait_ms; elapsed += poll_interval_ms) { + all_exited = true; + for (int i = 0; i < pid_count; i++) { + if (pids[i] <= 0) continue; + int status; + pid_t ret = waitpid(pids[i], &status, WNOHANG); + if (ret > 0) { + pids[i] = 0; /* mark as reaped */ + } else if (ret == 0) { + all_exited = false; /* still running */ + } else { + pids[i] = 0; /* error or already reaped */ + } + } + if (all_exited) break; + usleep((useconds_t)(poll_interval_ms * 1000)); + } + + /* Fallback: SIGTERM any remaining processes */ + pthread_mutex_lock(&G.lock); + if (!all_exited) { + for (int i = 0; i < pid_count; i++) { + if (pids[i] > 0) + kill(pids[i], SIGTERM); + } + } + /* Clear the pid list */ + o->pid_count = 0; + strcpy(o->state, "on"); + pthread_mutex_unlock(&G.lock); + + LOG_INFO("[%s] unblanked", output_name); +} + +/* ── Focus watcher thread ──────────────────────────────────────────── */ + +static const char *mgr_focus_name_from_event(struct json_object *event, + char *buf, size_t bufsz) { + struct json_object *event_name_obj; + const char *event_name = NULL; + + if (json_object_object_get_ex(event, "event", &event_name_obj)) + event_name = json_object_get_string(event_name_obj); + + if (!event_name) + return NULL; + + if (strcmp(event_name, "output-added") == 0 || + strcmp(event_name, "output-removed") == 0) { + mgr_refresh_outputs(); + return NULL; + } + + if (strcmp(event_name, "output-gain-focus") == 0) { + struct json_object *output, *name; + if (json_object_object_get_ex(event, "output", &output) && + json_object_object_get_ex(output, "name", &name)) { + snprintf(buf, bufsz, "%s", json_object_get_string(name)); + return buf; + } + return NULL; + } + + if (strcmp(event_name, "view-focused") == 0) { + struct json_object *view, *name; + if (json_object_object_get_ex(event, "view", &view) && + json_object_object_get_ex(view, "output-name", &name)) { + snprintf(buf, bufsz, "%s", json_object_get_string(name)); + return buf; + } + + return mgr_get_focused_output_from_ipc(); + } + + return NULL; +} + +static void *mgr_focus_watcher(void *arg) { + (void)arg; + + while (!G.stop) { + int fd = mgr_ipc_connect(); + if (fd < 0) { + LOG_ERROR("Focus watcher: cannot connect to Wayfire IPC"); + sleep(2); + continue; + } + + if (mgr_ipc_send_method(fd, "window-rules/events/watch", + "{\"events\":[\"view-focused\",\"output-gain-focus\"," + "\"output-added\",\"output-removed\"]}") < 0) { + close(fd); + sleep(2); + continue; + } + + char *resp = NULL; + if (mgr_ipc_recv(fd, &resp) < 0) { + free(resp); + close(fd); + sleep(2); + continue; + } + + struct json_object *ack = json_tokener_parse(resp); + free(resp); + if (ack) { + struct json_object *status; + if (json_object_object_get_ex(ack, "result", &status) && + strcmp(json_object_get_string(status), "ok") != 0) { + LOG_ERROR("Focus watcher: Wayfire event watch rejected: %s", + json_object_to_json_string_ext( + ack, JSON_C_TO_STRING_PLAIN)); + json_object_put(ack); + close(fd); + sleep(2); + continue; + } + json_object_put(ack); + } + + LOG_INFO("Focus watcher: using Wayfire IPC events"); + + while (!G.stop) { + char *payload = NULL; + if (mgr_ipc_recv(fd, &payload) < 0) { + free(payload); + break; + } + + struct json_object *event = json_tokener_parse(payload); + free(payload); + if (!event) + continue; + + char focused_buf[MAX_OUTPUT_NAME]; + const char *focused = + mgr_focus_name_from_event(event, focused_buf, sizeof(focused_buf)); + json_object_put(event); + if (focused) { + mgr_update_focused_output(focused); + } + } + + close(fd); + } + + return NULL; +} + +/* ── Idle watcher thread ───────────────────────────────────────────── */ + +typedef struct { + struct wl_display *display; + struct wl_registry *registry; + struct wl_seat *seat; + struct ext_idle_notifier_v1 *notifier; + struct ext_idle_notification_v1 *notification; + uint32_t notifier_version; + uint32_t seat_version; +} mgr_idle_wayland_t; + +static void mgr_idle_handle_idled(void *data, + struct ext_idle_notification_v1 *notification) { + (void)data; + (void)notification; + + pthread_mutex_lock(&G.lock); + G.seat_idle = 1; + pthread_mutex_unlock(&G.lock); +} + +static void mgr_idle_handle_resumed(void *data, + struct ext_idle_notification_v1 *notification) { + (void)data; + (void)notification; + + double now = mgr_monotime(); + + pthread_mutex_lock(&G.lock); + G.seat_idle = 0; + if ((now - G.last_blank_time) >= 3.0) { + G.manual_activation = 0; + for (int i = 0; i < G.output_count; i++) + G.outputs[i].last_input = now; + } + pthread_mutex_unlock(&G.lock); +} + +static const struct ext_idle_notification_v1_listener mgr_idle_listener = { + .idled = mgr_idle_handle_idled, + .resumed = mgr_idle_handle_resumed, +}; + +static void mgr_idle_registry_handle_global(void *data, + struct wl_registry *registry, uint32_t name, + const char *interface, uint32_t version) { + mgr_idle_wayland_t *idle = data; + + if (strcmp(interface, wl_seat_interface.name) == 0 && !idle->seat) { + idle->seat_version = version < 7 ? version : 7; + idle->seat = wl_registry_bind(registry, name, + &wl_seat_interface, idle->seat_version); + } else if (strcmp(interface, ext_idle_notifier_v1_interface.name) == 0 && + !idle->notifier) { + idle->notifier_version = version < 2 ? version : 2; + idle->notifier = wl_registry_bind(registry, name, + &ext_idle_notifier_v1_interface, idle->notifier_version); + } +} + +static void mgr_idle_registry_handle_global_remove(void *data, + struct wl_registry *registry, uint32_t name) { + (void)data; + (void)registry; + (void)name; +} + +static const struct wl_registry_listener mgr_idle_registry_listener = { + .global = mgr_idle_registry_handle_global, + .global_remove = mgr_idle_registry_handle_global_remove, +}; + +static void mgr_idle_wayland_cleanup(mgr_idle_wayland_t *idle) { + if (idle->notification) + ext_idle_notification_v1_destroy(idle->notification); + if (idle->notifier) + ext_idle_notifier_v1_destroy(idle->notifier); + if (idle->seat) { + if (idle->seat_version >= WL_SEAT_RELEASE_SINCE_VERSION) + wl_seat_release(idle->seat); + else + wl_seat_destroy(idle->seat); + } + if (idle->registry) + wl_registry_destroy(idle->registry); + if (idle->display) + wl_display_disconnect(idle->display); + memset(idle, 0, sizeof(*idle)); +} + +static void *mgr_idle_watcher(void *arg) { + (void)arg; + + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); + pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL); + + while (!G.stop) { + mgr_idle_wayland_t idle = {0}; + + idle.display = wl_display_connect(NULL); + if (!idle.display) { + LOG_ERROR("Idle watcher: cannot connect to Wayland display"); + sleep(2); + continue; + } + + idle.registry = wl_display_get_registry(idle.display); + wl_registry_add_listener(idle.registry, &mgr_idle_registry_listener, &idle); + wl_display_roundtrip(idle.display); + + if (!idle.notifier || !idle.seat) { + LOG_ERROR("Idle watcher: compositor lacks ext-idle-notify-v1 or wl_seat"); + mgr_idle_wayland_cleanup(&idle); + sleep(5); + continue; + } + + /* Observe physical input independently of application inhibitors, which + * are handled per-output by the manager rather than for the whole seat. */ + if (idle.notifier_version >= 2) { + idle.notification = ext_idle_notifier_v1_get_input_idle_notification( + idle.notifier, 2000, idle.seat); + } else { + idle.notification = ext_idle_notifier_v1_get_idle_notification( + idle.notifier, 2000, idle.seat); + LOG_WARNING("Idle notifier v1: focused output may also stay awake during playback"); + } + ext_idle_notification_v1_add_listener(idle.notification, + &mgr_idle_listener, NULL); + wl_display_flush(idle.display); + + LOG_INFO("Idle watcher: using ext-idle-notify-v1"); + + while (!G.stop) { + int rc = wl_display_dispatch(idle.display); + if (rc < 0) { + LOG_ERROR("Idle watcher: Wayland dispatch failed"); + break; + } + } + + mgr_idle_wayland_cleanup(&idle); + if (!G.stop) + sleep(2); + } + + return NULL; +} + +/* ── Manager signal handling ───────────────────────────────────────── */ + +static void mgr_signal_handler(int sig) { + if (sig == SIGUSR1) + G.activate_all = 1; + else if (sig == SIGUSR2) + G.lock_now = 1; + else + G.stop = 1; +} + +/* ── Lock command ──────────────────────────────────────────────────── */ + +static void mgr_run_lock_cmd(void) { + if (G.lock_cmd[0] == '\0') { + LOG_WARNING("Lock requested but no LOCK_CMD configured"); + return; + } + LOG_INFO("Running lock command: %s", G.lock_cmd); + pid_t pid = fork(); + if (pid == 0) { + setsid(); + execlp("/bin/sh", "sh", "-c", G.lock_cmd, (char *)NULL); + _exit(127); + } else if (pid > 0) { + LOG_INFO("Lock command started (PID %d)", pid); + } else { + LOG_ERROR("Failed to fork for lock command: %s", strerror(errno)); + } +} + +/* + * Blank all outputs immediately (for activate/lock triggers). + */ +static void mgr_activate_all_outputs(void) { + pthread_mutex_lock(&G.lock); + G.seat_idle = 1; + G.last_blank_time = mgr_monotime(); + G.manual_activation = 1; + int n = G.output_count; + char names[MAX_OUTPUTS][MAX_OUTPUT_NAME]; + for (int i = 0; i < n; i++) + snprintf(names[i], MAX_OUTPUT_NAME, "%s", G.outputs[i].name); + pthread_mutex_unlock(&G.lock); + + for (int i = 0; i < n; i++) + mgr_blank_output(names[i]); + + LOG_INFO("All outputs activated (screensaver forced on)"); +} + +/* ── PID file for signal delivery ──────────────────────────────────── */ + +static void mgr_write_pidfile(void) { + char path[MAX_PATH_LEN]; + mgr_runtime_path(path, sizeof(path), "pid"); + + FILE *f = fopen(path, "w"); + if (f) { + fprintf(f, "%d\n", getpid()); + fclose(f); + } +} + +static void mgr_remove_pidfile(void) { + char path[MAX_PATH_LEN]; + mgr_runtime_path(path, sizeof(path), "pid"); + unlink(path); +} + +static pid_t mgr_read_pidfile(void) { + char path[MAX_PATH_LEN]; + mgr_runtime_path(path, sizeof(path), "pid"); + + FILE *f = fopen(path, "r"); + if (!f) return -1; + int pid = 0; + if (fscanf(f, "%d", &pid) != 1) pid = -1; + fclose(f); + return (pid_t)pid; +} + +/* ── Zombie reaper ─────────────────────────────────────────────────── */ + +static void mgr_reap_children(void) { + int status; + while (waitpid(-1, &status, WNOHANG) > 0) + ; +} + +/* ── Manager main ──────────────────────────────────────────────────── */ + +static int manager_main(void) { + srand(time(NULL)); + + memset(&G, 0, sizeof(G)); + pthread_mutex_init(&G.lock, NULL); + ensure_wayland_display(); + + mgr_set_defaults(); + mgr_load_config(); + + /* Setup logging */ + { + char logdir[MAX_PATH_LEN]; + snprintf(logdir, sizeof(logdir), "%s", G.log_file); + char *slash = strrchr(logdir, '/'); + if (slash) { + *slash = '\0'; + mgr_mkdirs(logdir); + } + } + G.log_fp = fopen(G.log_file, "w"); + if (!G.log_fp) + fprintf(stderr, "Warning: cannot open log file %s: %s\n", G.log_file, strerror(errno)); + + /* Signal handlers */ + struct sigaction sa; + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = mgr_signal_handler; + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + sigaction(SIGUSR1, &sa, NULL); + sigaction(SIGUSR2, &sa, NULL); + + signal(SIGPIPE, SIG_IGN); + + mgr_write_pidfile(); + + /* Initialize outputs, then re-read config for per-output overrides */ + mgr_refresh_outputs(); + G.config_mtime = 0; + mgr_load_config(); + + const char *focused = mgr_get_focused_output_from_ipc(); + pthread_mutex_lock(&G.lock); + if (focused) + snprintf(G.focused_output, sizeof(G.focused_output), "%s", focused); + pthread_mutex_unlock(&G.lock); + + /* Log startup */ + { + char outlist[512] = ""; + for (int i = 0; i < G.output_count; i++) { + if (i > 0) strcat(outlist, ", "); + strcat(outlist, G.outputs[i].name); + } + LOG_INFO("Started — outputs: [%s], focused: %s", outlist, G.focused_output); + } + + /* Start threads */ + pthread_t focus_tid, idle_tid; + pthread_create(&focus_tid, NULL, mgr_focus_watcher, NULL); + pthread_create(&idle_tid, NULL, mgr_idle_watcher, NULL); + + double last_config_check = 0; + double last_cursor_check = 0; + + while (!G.stop) { + double now = mgr_monotime(); + + if (now - last_config_check > 10) { + mgr_load_config(); + last_config_check = now; + } + + mgr_reap_children(); + + /* Handle activate/lock signals */ + if (G.lock_now) { + G.lock_now = 0; + G.activate_all = 0; /* lock implies activate */ + mgr_activate_all_outputs(); + mgr_run_lock_cmd(); + } else if (G.activate_all) { + G.activate_all = 0; + mgr_activate_all_outputs(); + } + + struct json_object *inhibitors = mgr_check_idle_inhibitors(); + + pthread_mutex_lock(&G.lock); + char focused_buf[MAX_OUTPUT_NAME]; + snprintf(focused_buf, sizeof(focused_buf), "%s", G.focused_output); + int idle = G.seat_idle; + + if (!idle) { + mgr_output_info_t *fo = mgr_find_output(focused_buf); + if (fo) fo->last_input = now; + } + + int n = G.output_count; + char names[MAX_OUTPUTS][MAX_OUTPUT_NAME]; + double last_inputs[MAX_OUTPUTS]; + char states[MAX_OUTPUTS][8]; + int timeouts[MAX_OUTPUTS]; + int is_focused[MAX_OUTPUTS]; + int inhibited[MAX_OUTPUTS]; + + for (int i = 0; i < n; i++) { + snprintf(names[i], MAX_OUTPUT_NAME, "%s", G.outputs[i].name); + inhibited[i] = !G.manual_activation && + mgr_response_inhibits_output(inhibitors, names[i]); + if (inhibited[i] != G.outputs[i].video_inhibited) { + LOG_INFO("[%s] video inhibition %s", names[i], inhibited[i] ? "active" : "released"); + G.outputs[i].video_inhibited = inhibited[i]; + } + /* Restart this output's normal idle countdown when playback ends. */ + if (inhibited[i]) G.outputs[i].last_input = now; + last_inputs[i] = G.outputs[i].last_input; + snprintf(states[i], 8, "%s", G.outputs[i].state); + is_focused[i] = (strcmp(names[i], focused_buf) == 0); + if (is_focused[i]) + timeouts[i] = G.focused_timeout; + else + timeouts[i] = mgr_get_output_timeout(&G.outputs[i]); + } + pthread_mutex_unlock(&G.lock); + + if (inhibitors) json_object_put(inhibitors); + + for (int i = 0; i < n; i++) { + double idle_secs = now - last_inputs[i]; + + if (inhibited[i]) { + if (strcmp(states[i], "off") == 0) mgr_unblank_output(names[i]); + } else if (idle_secs >= timeouts[i]) { + mgr_blank_output(names[i]); + } else { + if (strcmp(states[i], "off") == 0 && is_focused[i]) { + mgr_unblank_output(names[i]); + } + } + } + + if (now - last_cursor_check >= CURSOR_POLL_INTERVAL) { + mgr_update_wayfire_cursor(); + last_cursor_check = now; + } + + for (int s = 0; s < G.check_interval * 10 && !G.stop; s++) { + usleep(100000); + + double wait_now = mgr_monotime(); + if (wait_now - last_cursor_check >= CURSOR_POLL_INTERVAL) { + mgr_update_wayfire_cursor(); + last_cursor_check = wait_now; + } + + pthread_mutex_lock(&G.lock); + int idle_now = G.seat_idle; + int any_blanked = 0; + if (!idle_now) { + for (int i = 0; i < G.output_count; i++) { + if (strcmp(G.outputs[i].state, "off") == 0) { + any_blanked = 1; + break; + } + } + } + pthread_mutex_unlock(&G.lock); + if (!idle_now && any_blanked) break; + } + } + + /* Clean shutdown */ + LOG_INFO("Shutting down..."); + for (int i = 0; i < G.output_count; i++) + mgr_unblank_output(G.outputs[i].name); + mgr_release_wayfire_cursor(); + + pthread_cancel(focus_tid); + pthread_cancel(idle_tid); + + mgr_remove_pidfile(); + if (G.log_fp) fclose(G.log_fp); + pthread_mutex_destroy(&G.lock); + + return 0; +} + +/* =================================================================== + * ENTRY POINT — dispatch to manager or renderer + * =================================================================== */ + +int main(int argc, char **argv) { + for (int i = 1; i < argc; i++) { + if (strcmp(argv[i], "--render") == 0) { + return renderer_main(argc, argv); + } + if (strcmp(argv[i], "--activate") == 0) { + pid_t pid = mgr_read_pidfile(); + if (pid <= 0 || kill(pid, 0) != 0) { + fprintf(stderr, "oledsaver: no running manager found\n"); + return 1; + } + kill(pid, SIGUSR1); + printf("Sent activate to oledsaver (PID %d)\n", pid); + return 0; + } + if (strcmp(argv[i], "--lock") == 0) { + pid_t pid = mgr_read_pidfile(); + if (pid <= 0 || kill(pid, 0) != 0) { + fprintf(stderr, "oledsaver: no running manager found\n"); + return 1; + } + kill(pid, SIGUSR2); + printf("Sent lock to oledsaver (PID %d)\n", pid); + return 0; + } + } + + /* No --render/--activate/--lock flag → manager mode */ + (void)argc; + return manager_main(); +} diff --git a/gui-apps/oledsaver/files/oledsaver.conf.default b/gui-apps/oledsaver/files/oledsaver.conf.default new file mode 100644 index 000000000000..bcd24646fa02 --- /dev/null +++ b/gui-apps/oledsaver/files/oledsaver.conf.default @@ -0,0 +1,65 @@ +[global] +# Honor video players' Wayland idle inhibitors on their own output only +INHIBIT_VIDEO = 1 +# Timeout in seconds for unfocused outputs +TIMEOUT = 300 +# Timeout in seconds for the focused output +FOCUSED_TIMEOUT = 30 +# How often to check output status (seconds) +CHECK_INTERVAL = 5 +# Log file location +LOG_FILE = ~/.local/state/oledsaver/oledsaver.log +# Your sway mouse_warping setting (container, output, or none) +# Used to restore after focus recovery — must match your sway config +MOUSE_WARPING = container +# Command to run for screen lock (leave empty to disable) +# Runs when triggered by: oledsaver --lock +#LOCK_CMD = swaylock -f -c 000000 + +[matrix] +# Unimatrix-style command (unused in C version, kept for reference) +# CMD = unimatrix -a -f -b -s 96 -o -i -l m +# Base color for matrix rain: +# <named> = fixed color (green, red, blue, cyan, yellow, magenta, white) +# <#RRGGBB> = fixed hex color +# random_named = one random named color per output +# random_hex = one random hex color per output +# random_trail_named = each trail gets a random named color +# random_trail_hex = each trail gets a random hex color +COLOR = green +# Font size in renderer pixels. +FONT_SIZE = 12 +# Minimum frames before the leading/head glyph can change while it stays in one row. +HEAD_HOLD_FRAMES = 5 +# Probability the leading/head glyph changes after HEAD_HOLD_FRAMES has elapsed. +HEAD_MUTATION_CHANCE = 0.15 +# White blend range for each leading/head glyph; 1.00 is pure white. +HEAD_WHITE_MIN = 0.75 +HEAD_WHITE_MAX = 1.00 +# Column fall speed (cells per frame): most columns cluster near AVG_SPEED +MIN_SPEED = 0.4 +MAX_SPEED = 2.0 +AVG_SPEED = 0.8 +# Trail length range (number of cells) +MIN_TRAIL = 4 +MAX_TRAIL = 28 +# Column density range (fraction of columns active) +MIN_DENSITY = 0.25 +MAX_DENSITY = 0.45 +# Number of parallax depth layers (1-8) +DEPTH_LAYERS = 4 +# Per-layer density: far (background) layers are denser, near (foreground) sparser +LAYER_FAR_DENSITY = 0.35 +LAYER_NEAR_DENSITY = 0.15 +# Fade transition duration in frames (1-300, at 30fps: 30=1s, 60=2s) +FADE_FRAMES = 30 + +# Per-output timeout overrides +#[output_timeouts] +#HDMI-A-1 = 600 +#DP-1 = 300 + +# Per-output color overrides (green, red, blue, white, yellow, cyan, magenta, random) +#[output_colors] +#HDMI-A-1 = blue +#DP-1 = random diff --git a/gui-apps/oledsaver/files/sts b/gui-apps/oledsaver/files/sts new file mode 100644 index 000000000000..94f97e6192a7 --- /dev/null +++ b/gui-apps/oledsaver/files/sts @@ -0,0 +1,3521 @@ +/* + * oledsaver -- combined OLED screensaver: manager + renderer in one binary. + * + * No flags → manager mode (idle detection, Wayfire focus IPC, Wayland outputs) + * --render → renderer mode (Wayland layer-shell Matrix rain) + * + * The manager fork/execs itself with --render --output <name> [--color ...] + * [--font-size ...] [--min-speed ...] [--max-speed ...] etc. using /proc/self/exe. + * + * Build: make -C ~/.local/src oledsaver + * Requires: json-c, pthreads, wayland-client, wayland-egl, EGL, GLESv2, freetype2 + */ + +#define _GNU_SOURCE +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdbool.h> +#include <unistd.h> +#include <errno.h> +#include <signal.h> +#include <time.h> +#include <math.h> +#include <fcntl.h> +#include <pthread.h> +#include <sys/socket.h> +#include <sys/stat.h> +#include <sys/un.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <sys/mman.h> +#include <stdarg.h> +#include <stdint.h> +#include <poll.h> +#include <dirent.h> + +#include <json-c/json.h> +#include <wayland-client.h> +#include <wayland-egl.h> +#include <EGL/egl.h> +#include <EGL/eglext.h> +#include <GLES2/gl2.h> +#include <ft2build.h> +#include FT_FREETYPE_H + +#include "wlr-layer-shell-unstable-v1-client-protocol.h" +#include "xdg-output-unstable-v1-client-protocol.h" +#include "ext-idle-notify-v1-client-protocol.h" + +/* =================================================================== + * RENDERER MODE (Wayland layer-shell Matrix rain) + * =================================================================== */ + +/* ── Tuning constants ─────────────────────────────────────────────── */ + +#define TARGET_FPS 30 +#define FRAME_INTERVAL_US (1000000 / TARGET_FPS) + +/* These are now defaults; actual values come from CLI flags */ +#define DEFAULT_MIN_DENSITY 0.25 +#define DEFAULT_MAX_DENSITY 0.45 +#define DEFAULT_MIN_TRAIL 4 +#define DEFAULT_MAX_TRAIL 28 +#define DEFAULT_MIN_SPEED 0.4 +#define DEFAULT_MAX_SPEED 2.0 +#define DEFAULT_AVG_SPEED 0.8 +#define MUTATION_CHANCE 0.07 +#define RESPAWN_DELAY_MAX 40 +#define FADE_LEVELS 6 +#define HEAD_GLOW_EXTRA 2 + +#define DEFAULT_DEPTH_LAYERS 4 +#define MIN_DEPTH_LAYERS 1 +#define MAX_DEPTH_LAYERS 8 + +/* Character sets */ +static const uint32_t KATAKANA_START = 0xFF66; +static const uint32_t KATAKANA_END = 0xFF9D; +#define NUM_KATAKANA (KATAKANA_END - KATAKANA_START + 1) + +static const char *LATIN_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; +static const char *DIGIT_CHARS = "0123456789"; +static const char *SYMBOL_CHARS = "!@#$%^&*()-=+[]{}|;:<>?/~"; + +/* ── Color presets ────────────────────────────────────────────────── */ + +typedef struct { float r, g, b; } rgb_t; + +static const struct { const char *name; rgb_t color; } RENDER_COLOR_TABLE[] = { + { "green", { 0.0f, 1.0f, 0.0f } }, + { "red", { 1.0f, 0.2f, 0.2f } }, + { "blue", { 0.3f, 0.5f, 1.0f } }, + { "white", { 1.0f, 1.0f, 1.0f } }, + { "yellow", { 1.0f, 1.0f, 0.0f } }, + { "cyan", { 0.0f, 1.0f, 1.0f } }, + { "magenta", { 1.0f, 0.0f, 1.0f } }, +}; +#define RENDER_NUM_COLORS (sizeof(RENDER_COLOR_TABLE) / sizeof(RENDER_COLOR_TABLE[0])) + +/* ── Glyph atlas types ────────────────────────────────────────────── */ + +#define ATLAS_MAX_GLYPHS 256 + +typedef struct { + uint32_t codepoint; + float u0, v0, u1, v1; /* UV coords in atlas */ + int width, height; /* glyph bitmap size */ + int bearing_x, bearing_y; + int advance; /* horizontal advance in pixels (26.6 fixed >> 6) */ +} glyph_info_t; + +typedef struct { + GLuint texture; + int tex_width, tex_height; + glyph_info_t glyphs[ATLAS_MAX_GLYPHS]; + int glyph_count; + int cell_w, cell_h; /* max advance and line height for grid calc */ +} glyph_atlas_t; + +/* ── Data types (renderer) ────────────────────────────────────────── */ + +typedef struct { + uint32_t codepoint; + int age; + bool mirrored; /* horizontally flip the glyph */ +} render_cell_t; + +typedef struct { + bool active; + double speed; + double head_pos; + int trail_len; + int respawn_timer; + float x_offset; /* horizontal jitter in pixels */ + bool skip; /* permanently inactive column for gaps */ + int flash_timer; /* when > 0, column is flashing */ + float flash_brightness; /* brightness boost during flash */ + rgb_t color; /* per-trail color */ +} render_column_t; + +typedef struct { + int cols, rows; + int cell_w, cell_h; + double opacity; + double speed_scale; + double density; + double font_scale; + render_column_t *columns; + render_cell_t *cells; +} depth_layer_t; + +/* Depth layer extreme values for interpolation */ +#define LAYER_FAR_FONT_SCALE 0.5 +#define LAYER_FAR_OPACITY 0.2 +#define LAYER_FAR_SPEED_SCALE 0.4 +#define LAYER_FAR_DENSITY 0.35 + +#define LAYER_NEAR_FONT_SCALE 1.25 +#define LAYER_NEAR_OPACITY 1.0 +#define LAYER_NEAR_SPEED_SCALE 1.4 +#define LAYER_NEAR_DENSITY 0.15 + +/* ── Vertex type for batched quad rendering ───────────────────────── */ + +typedef struct { + float x, y; + float u, v; + float r, g, b, a; +} vertex_t; + +/* Max quads per draw call (each quad = 6 vertices) */ +#define MAX_QUADS (256 * 256) +#define VERTS_PER_QUAD 6 + +/* ── Render phase lifecycle ────────────────────────────────────────── */ + +typedef enum { + PHASE_FADE_TO_BLACK, /* desktop fades to black overlay */ + PHASE_FADE_IN, /* matrix rain fades in on black */ + PHASE_RUNNING, /* normal matrix rain */ + PHASE_FADE_OUT, /* matrix rain fades out to black */ + PHASE_FADE_TO_DESKTOP /* black fades to reveal desktop */ +} render_phase_t; + +/* ── Renderer global state ────────────────────────────────────────── */ + +static struct { + /* Wayland globals */ + struct wl_display *display; + struct wl_registry *registry; + struct wl_compositor *compositor; + struct zwlr_layer_shell_v1 *layer_shell; + struct zxdg_output_manager_v1 *xdg_output_manager; + + /* Target output */ + struct wl_output *target_output; + char target_name[128]; + bool output_found; + int output_width; + int output_height; + int output_scale; + + /* Surface */ + struct wl_surface *surface; + struct zwlr_layer_surface_v1 *layer_surface; + uint32_t configure_serial; + bool configured; + int surface_width; + int surface_height; + + /* EGL */ + EGLDisplay egl_display; + EGLContext egl_context; + EGLSurface egl_surface; + struct wl_egl_window *egl_window; + + /* OpenGL */ + GLuint shader_program; + GLint u_projection; + GLint u_atlas; + GLint a_pos; + GLint a_uv; + GLint a_color; + GLuint vbo; + vertex_t *vertex_buf; + int vertex_count; + + /* FreeType */ + FT_Library ft_library; + FT_Face ft_face; + + /* Glyph atlas (one at largest font size) */ + glyph_atlas_t atlas; + + /* Matrix state */ + int num_depth_layers; + depth_layer_t layers[MAX_DEPTH_LAYERS]; + rgb_t base_color; + int color_mode; /* 0=fixed, 1=random_trail_named, 2=random_trail_hex */ + int font_size; + + /* Configurable ranges (set via CLI flags) */ + double min_speed; + double max_speed; + double avg_speed; + int min_trail; + int max_trail; + double min_density; + double max_density; + double layer_near_density; + double layer_far_density; + + /* Run control */ + volatile sig_atomic_t stop; + volatile sig_atomic_t fade_out_requested; + bool closed; + + /* Phase-based transition state */ + render_phase_t phase; + int phase_frame; + float surface_alpha; /* alpha for glClearColor (0=transparent, 1=opaque) */ + float fade_opacity; /* rain opacity multiplier (0=invisible, 1=full) */ + int fade_frames; /* configurable transition duration */ +} S; + +#define DEFAULT_FADE_FRAMES 30 /* 1 second at 30fps */ + +/* ── Renderer helpers ─────────────────────────────────────────────── */ + +static inline double render_randf(void) { return (double)rand() / RAND_MAX; } +static inline int render_randi(int lo, int hi) { return lo + rand() % (hi - lo + 1); } + +/* Generate a random speed biased toward avg, clamped to [lo, hi]. + Uses sum-of-3-uniforms (approx gaussian) for bell-curve distribution. */ +static inline double render_rand_speed(double lo, double hi, double avg) { + double r = (render_randf() + render_randf() + render_randf()) / 3.0; + /* r is ~gaussian centered on 0.5; map to [lo, hi] biased toward avg */ + double v = (r < 0.5) + ? lo + (avg - lo) * (r / 0.5) + : avg + (hi - avg) * ((r - 0.5) / 0.5); + if (v < lo) v = lo; + if (v > hi) v = hi; + return v; +} + +static render_cell_t *render_cell_at_layer(depth_layer_t *layer, int row, int col) { + return &layer->cells[row * layer->cols + col]; +} + +static uint32_t render_random_codepoint(void) { + int choice = rand() % 100; + if (choice < 40) { + return KATAKANA_START + (rand() % NUM_KATAKANA); + } else if (choice < 70) { + return (uint32_t)LATIN_CHARS[rand() % (int)strlen(LATIN_CHARS)]; + } else if (choice < 85) { + return (uint32_t)DIGIT_CHARS[rand() % (int)strlen(DIGIT_CHARS)]; + } else { + return (uint32_t)SYMBOL_CHARS[rand() % (int)strlen(SYMBOL_CHARS)]; + } +} + +static rgb_t render_parse_hex(const char *hex) { + rgb_t c = { 0.0f, 0.0f, 0.0f }; + const char *p = hex; + if (*p == '#') p++; + unsigned int val = 0; + if (sscanf(p, "%06x", &val) == 1) { + c.r = ((val >> 16) & 0xFF) / 255.0f; + c.g = ((val >> 8) & 0xFF) / 255.0f; + c.b = (val & 0xFF) / 255.0f; + } + return c; +} + +static rgb_t render_lookup_color(const char *name) { + /* Hex color: #RRGGBB or RRGGBB */ + if (name[0] == '#' || (strlen(name) == 6 && strspn(name, "0123456789abcdefABCDEF") == 6)) + return render_parse_hex(name); + for (size_t i = 0; i < RENDER_NUM_COLORS; i++) { + if (strcasecmp(name, RENDER_COLOR_TABLE[i].name) == 0) + return RENDER_COLOR_TABLE[i].color; + } + /* Per-output random: pick one color at startup */ + if (strcasecmp(name, "random_named") == 0) + return RENDER_COLOR_TABLE[rand() % RENDER_NUM_COLORS].color; + if (strcasecmp(name, "random_hex") == 0) + return (rgb_t){ + (float)(rand() % 256) / 255.0f, + (float)(rand() % 256) / 255.0f, + (float)(rand() % 256) / 255.0f + }; + /* Per-trail random modes: base_color is fallback, actual color set per-trail */ + if (strcasecmp(name, "random_trail_named") == 0 || + strcasecmp(name, "random_trail_hex") == 0) + return RENDER_COLOR_TABLE[0].color; + return RENDER_COLOR_TABLE[0].color; +} + +enum { COLOR_FIXED = 0, COLOR_RANDOM = 1, COLOR_RANDOM_HEX = 2 }; + +static rgb_t render_random_color(void) { + return RENDER_COLOR_TABLE[rand() % RENDER_NUM_COLORS].color; +} + +static rgb_t render_random_hex_color(void) { + return (rgb_t){ + (float)(rand() % 256) / 255.0f, + (float)(rand() % 256) / 255.0f, + (float)(rand() % 256) / 255.0f + }; +} + +static rgb_t render_trail_color(void) { + switch (S.color_mode) { + case COLOR_RANDOM: return render_random_color(); + case COLOR_RANDOM_HEX: return render_random_hex_color(); + default: return S.base_color; + } +} + +/* ── FreeType / Glyph Atlas ───────────────────────────────────────── */ + +/* Build list of all codepoints we need */ +static int render_build_codepoint_list(uint32_t *out, int max) { + int n = 0; + /* Katakana */ + for (uint32_t cp = KATAKANA_START; cp <= KATAKANA_END && n < max; cp++) + out[n++] = cp; + /* Latin */ + for (const char *p = LATIN_CHARS; *p && n < max; p++) + out[n++] = (uint32_t)*p; + /* Digits */ + for (const char *p = DIGIT_CHARS; *p && n < max; p++) + out[n++] = (uint32_t)*p; + /* Symbols */ + for (const char *p = SYMBOL_CHARS; *p && n < max; p++) + out[n++] = (uint32_t)*p; + return n; +} + +static bool render_init_freetype(int font_pixel_size) { + if (FT_Init_FreeType(&S.ft_library)) { + fprintf(stderr, "Failed to init FreeType\n"); + return false; + } + + /* Try fonts in order of preference */ + static const char *font_paths[] = { + "/usr/share/fonts/noto-cjk/NotoSansMonoCJKjp-Regular.otf", + "/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc", + "/usr/share/fonts/google-noto-sans-cjk-fonts/NotoSansCJK-Regular.ttc", + "/usr/share/fonts/google-noto-cjk/NotoSansMonoCJKjp-Regular.otf", + "/usr/share/fonts/noto/NotoSansMono-Regular.ttf", + "/usr/share/fonts/liberation-mono/LiberationMono-Regular.ttf", + "/usr/share/fonts/liberation/LiberationMono-Regular.ttf", + "/usr/share/fonts/TTF/LiberationMono-Regular.ttf", + "/usr/share/fonts/dejavu/DejaVuSansMono.ttf", + "/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf", + NULL + }; + + bool loaded = false; + for (int i = 0; font_paths[i]; i++) { + if (FT_New_Face(S.ft_library, font_paths[i], 0, &S.ft_face) == 0) { + fprintf(stderr, "Loaded font: %s\n", font_paths[i]); + loaded = true; + break; + } + } + + if (!loaded) { + fprintf(stderr, "No suitable font found, trying fc-match\n"); + /* Last resort: use fontconfig via popen */ + FILE *fp = popen("fc-match -f '%{file}' 'monospace'", "r"); + if (fp) { + char path[512]; + if (fgets(path, sizeof(path), fp)) { + char *nl = strchr(path, '\n'); + if (nl) *nl = '\0'; + if (FT_New_Face(S.ft_library, path, 0, &S.ft_face) == 0) { + fprintf(stderr, "Loaded font via fc-match: %s\n", path); + loaded = true; + } + } + pclose(fp); + } + } + + if (!loaded) { + fprintf(stderr, "Could not load any font\n"); + FT_Done_FreeType(S.ft_library); + return false; + } + + FT_Set_Pixel_Sizes(S.ft_face, 0, font_pixel_size); + return true; +} + +static bool render_build_atlas(int font_pixel_size) { + uint32_t codepoints[ATLAS_MAX_GLYPHS]; + int cp_count = render_build_codepoint_list(codepoints, ATLAS_MAX_GLYPHS); + + /* First pass: render all glyphs to measure total atlas size */ + FT_Set_Pixel_Sizes(S.ft_face, 0, font_pixel_size); + + /* Estimate atlas dimensions: pack in rows */ + int row_height = 0; + int atlas_w = 0, atlas_h = 0; + int padding = 2; + int max_row_w = 2048; /* max texture width */ + + /* Temporary storage for bitmaps */ + typedef struct { + uint32_t cp; + int w, h, bearing_x, bearing_y, advance; + unsigned char *bitmap; + } tmp_glyph_t; + + tmp_glyph_t *tmp_glyphs = calloc(cp_count, sizeof(tmp_glyph_t)); + int valid_count = 0; + int max_cell_w = 0, max_cell_h = 0; + + for (int i = 0; i < cp_count; i++) { + if (FT_Load_Char(S.ft_face, codepoints[i], FT_LOAD_RENDER)) { + continue; /* skip glyphs that fail to render */ + } + FT_GlyphSlot g = S.ft_face->glyph; + int gw = g->bitmap.width; + int gh = g->bitmap.rows; + + tmp_glyph_t *tg = &tmp_glyphs[valid_count]; + tg->cp = codepoints[i]; + tg->w = gw; + tg->h = gh; + tg->bearing_x = g->bitmap_left; + tg->bearing_y = g->bitmap_top; + tg->advance = (int)(g->advance.x >> 6); + + if (tg->advance > max_cell_w) max_cell_w = tg->advance; + if (gh > max_cell_h) max_cell_h = gh; + + /* Copy bitmap data */ + tg->bitmap = malloc(gw * gh); + if (tg->bitmap && gw > 0 && gh > 0) { + for (int r = 0; r < gh; r++) + memcpy(tg->bitmap + r * gw, + g->bitmap.buffer + r * g->bitmap.pitch, gw); + } + + valid_count++; + } + + /* Calculate atlas layout */ + int cx = 0, cy = 0; + row_height = 0; + for (int i = 0; i < valid_count; i++) { + tmp_glyph_t *tg = &tmp_glyphs[i]; + int gw = tg->w + padding; + int gh = tg->h + padding; + + if (cx + gw > max_row_w) { + cy += row_height; + cx = 0; + row_height = 0; + } + if (gh > row_height) row_height = gh; + cx += gw; + if (cx > atlas_w) atlas_w = cx; + } + atlas_h = cy + row_height; + + /* Round up to power of 2 */ + int pot_w = 1; while (pot_w < atlas_w) pot_w <<= 1; + int pot_h = 1; while (pot_h < atlas_h) pot_h <<= 1; + atlas_w = pot_w; + atlas_h = pot_h; + + /* Allocate atlas pixel data (single channel) */ + unsigned char *atlas_data = calloc(atlas_w * atlas_h, 1); + + /* Second pass: blit glyphs and record UVs */ + cx = 0; cy = 0; row_height = 0; + S.atlas.glyph_count = 0; + + for (int i = 0; i < valid_count; i++) { + tmp_glyph_t *tg = &tmp_glyphs[i]; + int gw = tg->w; + int gh = tg->h; + + if (cx + gw + padding > atlas_w) { + cy += row_height; + cx = 0; + row_height = 0; + } + if (gh + padding > row_height) row_height = gh + padding; + + /* Blit */ + if (tg->bitmap && gw > 0 && gh > 0) { + for (int r = 0; r < gh; r++) { + memcpy(atlas_data + (cy + r) * atlas_w + cx, + tg->bitmap + r * gw, gw); + } + } + + /* Record glyph info */ + glyph_info_t *gi = &S.atlas.glyphs[S.atlas.glyph_count++]; + gi->codepoint = tg->cp; + gi->u0 = (float)cx / atlas_w; + gi->v0 = (float)cy / atlas_h; + gi->u1 = (float)(cx + gw) / atlas_w; + gi->v1 = (float)(cy + gh) / atlas_h; + gi->width = gw; + gi->height = gh; + gi->bearing_x = tg->bearing_x; + gi->bearing_y = tg->bearing_y; + gi->advance = tg->advance; + + cx += gw + padding; + + free(tg->bitmap); + } + free(tmp_glyphs); + + S.atlas.tex_width = atlas_w; + S.atlas.tex_height = atlas_h; + /* Use font metrics for consistent cell size */ + S.atlas.cell_w = max_cell_w > 0 ? max_cell_w : font_pixel_size; + /* Use ascender + descender for proper line height */ + int line_height = (int)((S.ft_face->size->metrics.height + 63) >> 6); + S.atlas.cell_h = line_height > 0 ? line_height : (int)(font_pixel_size * 1.4); + if (max_cell_h > S.atlas.cell_h) S.atlas.cell_h = max_cell_h; + + /* Create GL texture */ + glGenTextures(1, &S.atlas.texture); + glBindTexture(GL_TEXTURE_2D, S.atlas.texture); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, atlas_w, atlas_h, + 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, atlas_data); + + free(atlas_data); + + fprintf(stderr, "Atlas: %dx%d, %d glyphs, cell=%dx%d\n", + atlas_w, atlas_h, S.atlas.glyph_count, + S.atlas.cell_w, S.atlas.cell_h); + + return true; +} + +static const glyph_info_t *render_find_glyph(uint32_t codepoint) { + for (int i = 0; i < S.atlas.glyph_count; i++) { + if (S.atlas.glyphs[i].codepoint == codepoint) + return &S.atlas.glyphs[i]; + } + /* Fallback to '?' or first glyph */ + for (int i = 0; i < S.atlas.glyph_count; i++) { + if (S.atlas.glyphs[i].codepoint == '?') + return &S.atlas.glyphs[i]; + } + return S.atlas.glyph_count > 0 ? &S.atlas.glyphs[0] : NULL; +} + +/* ── EGL setup ────────────────────────────────────────────────────── */ + +static bool render_init_egl(void) { + S.egl_display = eglGetDisplay((EGLNativeDisplayType)S.display); + if (S.egl_display == EGL_NO_DISPLAY) { + /* Try platform extension */ + PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT = + (PFNEGLGETPLATFORMDISPLAYEXTPROC)eglGetProcAddress("eglGetPlatformDisplayEXT"); + if (eglGetPlatformDisplayEXT) { + S.egl_display = eglGetPlatformDisplayEXT( + EGL_PLATFORM_WAYLAND_KHR, S.display, NULL); + } + } + if (S.egl_display == EGL_NO_DISPLAY) { + fprintf(stderr, "Failed to get EGL display\n"); + return false; + } + + EGLint major, minor; + if (!eglInitialize(S.egl_display, &major, &minor)) { + fprintf(stderr, "Failed to initialize EGL\n"); + return false; + } + fprintf(stderr, "EGL %d.%d initialized\n", major, minor); + + if (!eglBindAPI(EGL_OPENGL_ES_API)) { + fprintf(stderr, "Failed to bind OpenGL ES API\n"); + return false; + } + + EGLint config_attribs[] = { + EGL_SURFACE_TYPE, EGL_WINDOW_BIT, + EGL_RED_SIZE, 8, + EGL_GREEN_SIZE, 8, + EGL_BLUE_SIZE, 8, + EGL_ALPHA_SIZE, 8, + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, + EGL_NONE + }; + + EGLConfig config; + EGLint num_configs; + if (!eglChooseConfig(S.egl_display, config_attribs, &config, 1, &num_configs) || + num_configs == 0) { + fprintf(stderr, "Failed to choose EGL config\n"); + return false; + } + + EGLint context_attribs[] = { + EGL_CONTEXT_CLIENT_VERSION, 2, + EGL_NONE + }; + + S.egl_context = eglCreateContext(S.egl_display, config, EGL_NO_CONTEXT, + context_attribs); + if (S.egl_context == EGL_NO_CONTEXT) { + fprintf(stderr, "Failed to create EGL context\n"); + return false; + } + + /* Create EGL window surface */ + S.egl_window = wl_egl_window_create(S.surface, + S.surface_width, S.surface_height); + if (!S.egl_window) { + fprintf(stderr, "Failed to create wl_egl_window\n"); + return false; + } + + S.egl_surface = eglCreateWindowSurface(S.egl_display, config, + (EGLNativeWindowType)S.egl_window, NULL); + if (S.egl_surface == EGL_NO_SURFACE) { + fprintf(stderr, "Failed to create EGL surface\n"); + return false; + } + + if (!eglMakeCurrent(S.egl_display, S.egl_surface, S.egl_surface, S.egl_context)) { + fprintf(stderr, "eglMakeCurrent failed\n"); + return false; + } + + /* Set swap interval to 0 for manual frame pacing */ + eglSwapInterval(S.egl_display, 0); + + fprintf(stderr, "EGL surface created: %dx%d\n", S.surface_width, S.surface_height); + return true; +} + +/* ── Shader compilation ───────────────────────────────────────────── */ + +static const char *vertex_shader_src = + "attribute vec2 a_pos;\n" + "attribute vec2 a_uv;\n" + "attribute vec4 a_color;\n" + "varying vec2 v_uv;\n" + "varying vec4 v_color;\n" + "uniform mat4 u_projection;\n" + "void main() {\n" + " gl_Position = u_projection * vec4(a_pos, 0.0, 1.0);\n" + " v_uv = a_uv;\n" + " v_color = a_color;\n" + "}\n"; + +static const char *fragment_shader_src = + "precision mediump float;\n" + "varying vec2 v_uv;\n" + "varying vec4 v_color;\n" + "uniform sampler2D u_atlas;\n" + "void main() {\n" + " float a = texture2D(u_atlas, v_uv).r;\n" + " if (a < 0.01) discard;\n" + " float scanline = 1.0 - 0.08 * mod(gl_FragCoord.y, 2.0);\n" + " gl_FragColor = vec4(v_color.rgb * a * scanline, 1.0);\n" + "}\n"; + +static GLuint render_compile_shader(GLenum type, const char *src) { + GLuint shader = glCreateShader(type); + glShaderSource(shader, 1, &src, NULL); + glCompileShader(shader); + + GLint compiled; + glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled); + if (!compiled) { + char log[512]; + glGetShaderInfoLog(shader, sizeof(log), NULL, log); + fprintf(stderr, "Shader compile error: %s\n", log); + glDeleteShader(shader); + return 0; + } + return shader; +} + +static bool render_init_shaders(void) { + GLuint vs = render_compile_shader(GL_VERTEX_SHADER, vertex_shader_src); + GLuint fs = render_compile_shader(GL_FRAGMENT_SHADER, fragment_shader_src); + if (!vs || !fs) return false; + + S.shader_program = glCreateProgram(); + glAttachShader(S.shader_program, vs); + glAttachShader(S.shader_program, fs); + glLinkProgram(S.shader_program); + + GLint linked; + glGetProgramiv(S.shader_program, GL_LINK_STATUS, &linked); + if (!linked) { + char log[512]; + glGetProgramInfoLog(S.shader_program, sizeof(log), NULL, log); + fprintf(stderr, "Shader link error: %s\n", log); + return false; + } + + glDeleteShader(vs); + glDeleteShader(fs); + + S.u_projection = glGetUniformLocation(S.shader_program, "u_projection"); + S.u_atlas = glGetUniformLocation(S.shader_program, "u_atlas"); + S.a_pos = glGetAttribLocation(S.shader_program, "a_pos"); + S.a_uv = glGetAttribLocation(S.shader_program, "a_uv"); + S.a_color = glGetAttribLocation(S.shader_program, "a_color"); + + /* Create VBO */ + glGenBuffers(1, &S.vbo); + + /* Allocate CPU-side vertex buffer */ + S.vertex_buf = malloc(MAX_QUADS * VERTS_PER_QUAD * sizeof(vertex_t)); + S.vertex_count = 0; + + fprintf(stderr, "Shaders compiled and linked\n"); + return true; +} + +static void render_set_projection(int width, int height) { + /* Orthographic projection: (0,0) top-left, (w,h) bottom-right */ + float proj[16] = { + 2.0f / width, 0.0f, 0.0f, 0.0f, + 0.0f, -2.0f / height, 0.0f, 0.0f, + 0.0f, 0.0f, -1.0f, 0.0f, + -1.0f, 1.0f, 0.0f, 1.0f, + }; + glUseProgram(S.shader_program); + glUniformMatrix4fv(S.u_projection, 1, GL_FALSE, proj); +} + +/* ── Vertex buffer helpers ────────────────────────────────────────── */ + +static void render_push_quad(float x0, float y0, float x1, float y1, + float u0, float v0, float u1, float v1, + float r, float g, float b, float a) { + if (S.vertex_count + VERTS_PER_QUAD > MAX_QUADS * VERTS_PER_QUAD) + return; + + vertex_t *v = &S.vertex_buf[S.vertex_count]; + + /* Triangle 1: top-left, top-right, bottom-left */ + v[0] = (vertex_t){ x0, y0, u0, v0, r, g, b, a }; + v[1] = (vertex_t){ x1, y0, u1, v0, r, g, b, a }; + v[2] = (vertex_t){ x0, y1, u0, v1, r, g, b, a }; + + /* Triangle 2: top-right, bottom-right, bottom-left */ + v[3] = (vertex_t){ x1, y0, u1, v0, r, g, b, a }; + v[4] = (vertex_t){ x1, y1, u1, v1, r, g, b, a }; + v[5] = (vertex_t){ x0, y1, u0, v1, r, g, b, a }; + + S.vertex_count += VERTS_PER_QUAD; +} + +static void render_flush_quads(void) { + if (S.vertex_count == 0) return; + + glBindBuffer(GL_ARRAY_BUFFER, S.vbo); + glBufferData(GL_ARRAY_BUFFER, S.vertex_count * sizeof(vertex_t), + S.vertex_buf, GL_STREAM_DRAW); + + glEnableVertexAttribArray(S.a_pos); + glEnableVertexAttribArray(S.a_uv); + glEnableVertexAttribArray(S.a_color); + + glVertexAttribPointer(S.a_pos, 2, GL_FLOAT, GL_FALSE, sizeof(vertex_t), + (void *)offsetof(vertex_t, x)); + glVertexAttribPointer(S.a_uv, 2, GL_FLOAT, GL_FALSE, sizeof(vertex_t), + (void *)offsetof(vertex_t, u)); + glVertexAttribPointer(S.a_color, 4, GL_FLOAT, GL_FALSE, sizeof(vertex_t), + (void *)offsetof(vertex_t, r)); + + glDrawArrays(GL_TRIANGLES, 0, S.vertex_count); + + glDisableVertexAttribArray(S.a_pos); + glDisableVertexAttribArray(S.a_uv); + glDisableVertexAttribArray(S.a_color); + + S.vertex_count = 0; +} + +/* ── Matrix engine ────────────────────────────────────────────────── */ + +static void render_tick_layer(depth_layer_t *layer); + +static void render_get_layer_properties(int layer_idx, int num_layers, + double *font_scale, double *opacity, + double *speed_scale, double *density) { + if (num_layers == 1) { + *font_scale = 1.0; + *opacity = 1.0; + *speed_scale = 1.0; + /* density from config, use midpoint of min/max */ + *density = (S.min_density + S.max_density) * 0.5; + return; + } + + double t = (double)layer_idx / (num_layers - 1); + *font_scale = LAYER_FAR_FONT_SCALE + t * (LAYER_NEAR_FONT_SCALE - LAYER_FAR_FONT_SCALE); + *opacity = LAYER_FAR_OPACITY + t * (LAYER_NEAR_OPACITY - LAYER_FAR_OPACITY); + *speed_scale = LAYER_FAR_SPEED_SCALE + t * (LAYER_NEAR_SPEED_SCALE - LAYER_FAR_SPEED_SCALE); + *density = S.layer_far_density + t * (S.layer_near_density - S.layer_far_density); +} + +static void render_init_layer(depth_layer_t *layer, int width, int height, + int layer_idx) { + render_get_layer_properties(layer_idx, S.num_depth_layers, + &layer->font_scale, &layer->opacity, + &layer->speed_scale, &layer->density); + + /* Cell size: scale the atlas cell size by font_scale */ + layer->cell_w = (int)(S.atlas.cell_w * layer->font_scale + 0.5); + layer->cell_h = (int)(S.atlas.cell_h * layer->font_scale + 0.5); + if (layer->cell_w < 4) layer->cell_w = 4; + if (layer->cell_h < 6) layer->cell_h = 6; + + layer->cols = width / layer->cell_w; + layer->rows = height / layer->cell_h; + if (layer->cols < 1) layer->cols = 1; + if (layer->rows < 1) layer->rows = 1; + + free(layer->columns); + free(layer->cells); + layer->columns = calloc(layer->cols, sizeof(render_column_t)); + layer->cells = calloc(layer->rows * layer->cols, sizeof(render_cell_t)); + + double min_spd = S.min_speed * layer->speed_scale; + double max_spd = S.max_speed * layer->speed_scale; + double avg_spd = S.avg_speed * layer->speed_scale; + + for (int c = 0; c < layer->cols; c++) { + render_column_t *col = &layer->columns[c]; + col->x_offset = (render_randf() - 0.5f) * layer->cell_w * 0.5f; + col->skip = (render_randf() < 0.15); + if (render_randf() < layer->density) { + col->active = true; + col->color = render_trail_color(); + col->speed = render_rand_speed(min_spd, max_spd, avg_spd); + /* Spread start positions across the full screen height + so columns appear mid-fall from the start */ + col->head_pos = render_randf() * layer->rows * 2 - layer->rows; + col->trail_len = render_randi(S.min_trail, S.max_trail); + } else { + col->active = false; + col->respawn_timer = render_randi(1, RESPAWN_DELAY_MAX); + } + } + + /* Pre-populate cells for columns that are already mid-screen */ + for (int i = 0; i < layer->rows * layer->cols; i++) { + layer->cells[i].codepoint = render_random_codepoint(); + layer->cells[i].age = 9999; + layer->cells[i].mirrored = (render_randf() < 0.20); + } + for (int c = 0; c < layer->cols; c++) { + render_column_t *col = &layer->columns[c]; + if (!col->active || col->skip) continue; + int head = (int)col->head_pos; + /* Fill trail behind the head with aged characters */ + for (int t = 0; t < col->trail_len && head - t >= 0; t++) { + int r = head - t; + if (r < layer->rows) { + render_cell_t *cell = render_cell_at_layer(layer, r, c); + cell->codepoint = render_random_codepoint(); + cell->age = t; + cell->mirrored = (render_randf() < 0.20); + } + } + } +} + +static void render_init_matrix(int width, int height) { + S.surface_width = width; + S.surface_height = height; + + for (int l = 0; l < S.num_depth_layers; l++) { + render_init_layer(&S.layers[l], width, height, l); + } + + /* Pre-run the simulation so first frame looks like it's been + running for a while — no visible startup sweep */ + int warmup = 60 + rand() % 120; /* 2-6 seconds at 30fps */ + for (int f = 0; f < warmup; f++) { + for (int l = 0; l < S.num_depth_layers; l++) { + render_tick_layer(&S.layers[l]); + } + } +} + +static void render_tick_layer(depth_layer_t *layer) { + double min_spd = S.min_speed * layer->speed_scale; + double max_spd = S.max_speed * layer->speed_scale; + double avg_spd = S.avg_speed * layer->speed_scale; + + for (int c = 0; c < layer->cols; c++) { + render_column_t *col = &layer->columns[c]; + if (col->skip) continue; + + if (!col->active) { + if (--col->respawn_timer <= 0) { + col->active = true; + col->color = render_trail_color(); + col->speed = render_rand_speed(min_spd, max_spd, avg_spd); + col->head_pos = -1.0; + col->trail_len = render_randi(S.min_trail, S.max_trail); + } + continue; + } + + col->head_pos += col->speed; + int head_row = (int)col->head_pos; + + if (head_row >= 0 && head_row < layer->rows) { + render_cell_t *cell = render_cell_at_layer(layer, head_row, c); + cell->codepoint = render_random_codepoint(); + cell->age = 0; + cell->mirrored = (render_randf() < 0.20); + } + + /* Flash columns: ~0.3% chance per frame of starting a flash */ + if (col->flash_timer > 0) { + col->flash_timer--; + } else if (render_randf() < 0.003) { + col->flash_timer = 6 + rand() % 5; /* 6-10 frames */ + col->flash_brightness = 1.8f; + } + + for (int r = 0; r < layer->rows; r++) { + render_cell_t *cell = render_cell_at_layer(layer, r, c); + if (cell->age < 9999) { + cell->age++; + } + if (cell->age > 0 && cell->age < col->trail_len && render_randf() < MUTATION_CHANCE) { + cell->codepoint = render_random_codepoint(); + } + } + + if (head_row > layer->rows + col->trail_len) { + col->active = false; + col->respawn_timer = render_randi(1, RESPAWN_DELAY_MAX); + for (int r = 0; r < layer->rows; r++) { + render_cell_at_layer(layer, r, c)->age = 9999; + } + } + } +} + +static void render_tick_matrix(void) { + for (int l = 0; l < S.num_depth_layers; l++) { + render_tick_layer(&S.layers[l]); + } +} + +/* ── Rendering ────────────────────────────────────────────────────── */ + +static void render_frame(void) { + int w = S.surface_width; + int h = S.surface_height; + + glViewport(0, 0, w, h); + /* glClearColor/glClear is handled by the phase logic in the main loop */ + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glUseProgram(S.shader_program); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, S.atlas.texture); + glUniform1i(S.u_atlas, 0); + + float fade = S.fade_opacity; + + /* Render layers back-to-front (0=far, N-1=near) */ + for (int l = 0; l < S.num_depth_layers; l++) { + depth_layer_t *layer = &S.layers[l]; + float alpha = (float)layer->opacity * fade; + float scale = (float)layer->font_scale; + + S.vertex_count = 0; + + for (int c = 0; c < layer->cols; c++) { + render_column_t *col = &layer->columns[c]; + if (col->skip) continue; + + for (int r = 0; r < layer->rows; r++) { + render_cell_t *cell = render_cell_at_layer(layer, r, c); + + if (cell->age >= 9999) continue; + + float brightness; + bool is_head = false; + + if (cell->age == 0 && col->active) { + is_head = true; + brightness = 1.0f; + } else if (cell->age < col->trail_len) { + float t = 1.0f - (float)cell->age / col->trail_len; + brightness = t * t; + if (brightness < 0.05f) continue; + } else { + continue; + } + + /* Flash column boost */ + if (col->flash_timer > 0) { + float flash_t = (float)col->flash_timer / 10.0f; + float boost = 1.0f + (col->flash_brightness - 1.0f) * flash_t; + brightness *= boost; + if (brightness > 1.0f && !is_head) brightness = 1.0f; + } + + const glyph_info_t *gi = render_find_glyph(cell->codepoint); + if (!gi) continue; + + /* Position the glyph within the cell */ + float cell_x = (float)(c * layer->cell_w) + layer->columns[c].x_offset; + float cell_y = (float)(r * layer->cell_h); + + /* Scale glyph dimensions by layer font_scale relative to atlas */ + float gw = gi->width * scale; + float gh = gi->height * scale; + float bx = gi->bearing_x * scale; + float by = gi->bearing_y * scale; + + /* Center glyph in cell: x based on bearing, y based on bearing */ + float x0 = cell_x + bx; + float y0 = cell_y + (layer->cell_h - by); + float x1 = x0 + gw; + float y1 = y0 + gh; + + /* UV coordinates — possibly mirrored horizontally */ + float qu0 = cell->mirrored ? gi->u1 : gi->u0; + float qu1 = cell->mirrored ? gi->u0 : gi->u1; + + /* Determine color: white-to-trail gradient for head and near-head */ + rgb_t tc = col->color; + float cr, cg, cb; + if (is_head) { + /* age==0: pure white */ + cr = 1.0f; cg = 1.0f; cb = 1.0f; + } else if (cell->age == 1) { + /* 70% white + 30% trail color */ + cr = 0.7f + 0.3f * tc.r; + cg = 0.7f + 0.3f * tc.g; + cb = 0.7f + 0.3f * tc.b; + } else if (cell->age == 2) { + /* 40% white + 60% trail color */ + cr = 0.4f + 0.6f * tc.r; + cg = 0.4f + 0.6f * tc.g; + cb = 0.4f + 0.6f * tc.b; + } else { + /* pure trail color */ + cr = tc.r; cg = tc.g; cb = tc.b; + } + + if (is_head) { + /* Enhanced "type-in" glow: 50% larger pad, stronger alpha */ + float glow_pad = HEAD_GLOW_EXTRA * scale * 1.5f; + if (glow_pad < 1.5f) glow_pad = 1.5f; + float ga = 0.6f * alpha; + render_push_quad(x0 - glow_pad, y0 - glow_pad, + x1 + glow_pad, y1 + glow_pad, + qu0, gi->v0, qu1, gi->v1, + cr * ga, cg * ga, cb * ga, 1.0f); + + /* Head character: full brightness white */ + render_push_quad(x0, y0, x1, y1, + qu0, gi->v0, qu1, gi->v1, + cr * alpha, cg * alpha, cb * alpha, 1.0f); + } else { + float b = brightness * alpha; + render_push_quad(x0, y0, x1, y1, + qu0, gi->v0, qu1, gi->v1, + cr * b, cg * b, cb * b, 1.0f); + } + } + } + + render_flush_quads(); + } +} + +/* ── Wayland output tracking ──────────────────────────────────────── */ + +struct render_output_info { + struct wl_output *output; + struct zxdg_output_v1 *xdg_output; + char name[128]; + int width, height; + int scale; + struct wl_list link; +}; + +static struct wl_list render_output_list; + +static void render_xdg_output_handle_name(void *data, + struct zxdg_output_v1 *xdg_output, const char *name) { + (void)xdg_output; + struct render_output_info *info = data; + snprintf(info->name, sizeof(info->name), "%s", name); + + if (strcmp(name, S.target_name) == 0) { + S.target_output = info->output; + S.output_found = true; + S.output_width = info->width; + S.output_height = info->height; + S.output_scale = info->scale > 0 ? info->scale : 1; + } +} + +static void render_xdg_output_handle_logical_position(void *data, + struct zxdg_output_v1 *xdg_output, int32_t x, int32_t y) { + (void)data; (void)xdg_output; (void)x; (void)y; +} + +static void render_xdg_output_handle_logical_size(void *data, + struct zxdg_output_v1 *xdg_output, int32_t w, int32_t h) { + (void)xdg_output; + struct render_output_info *info = data; + info->width = w; + info->height = h; + if (strcmp(info->name, S.target_name) == 0) { + S.output_width = w; + S.output_height = h; + } +} + +static void render_xdg_output_handle_done(void *data, + struct zxdg_output_v1 *xdg_output) { + (void)data; (void)xdg_output; +} + +static void render_xdg_output_handle_description(void *data, + struct zxdg_output_v1 *xdg_output, const char *desc) { + (void)data; (void)xdg_output; (void)desc; +} + +static const struct zxdg_output_v1_listener render_xdg_output_listener = { + .logical_position = render_xdg_output_handle_logical_position, + .logical_size = render_xdg_output_handle_logical_size, + .done = render_xdg_output_handle_done, + .name = render_xdg_output_handle_name, + .description = render_xdg_output_handle_description, +}; + +static void render_output_handle_geometry(void *data, struct wl_output *output, + int32_t x, int32_t y, int32_t pw, int32_t ph, int32_t subpixel, + const char *make, const char *model, int32_t transform) { + (void)data; (void)output; (void)x; (void)y; + (void)pw; (void)ph; (void)subpixel; + (void)make; (void)model; (void)transform; +} + +static void render_output_handle_mode(void *data, struct wl_output *output, + uint32_t flags, int32_t width, int32_t height, int32_t refresh) { + (void)output; (void)refresh; + struct render_output_info *info = data; + if (flags & WL_OUTPUT_MODE_CURRENT) { + info->width = width; + info->height = height; + } +} + +static void render_output_handle_scale(void *data, struct wl_output *output, + int32_t factor) { + (void)output; + struct render_output_info *info = data; + info->scale = factor; +} + +static void render_output_handle_done(void *data, struct wl_output *output) { + (void)data; (void)output; +} + +static void render_output_handle_name(void *data, struct wl_output *output, + const char *name) { + (void)output; + struct render_output_info *info = data; + snprintf(info->name, sizeof(info->name), "%s", name); + + if (strcmp(name, S.target_name) == 0) { + S.target_output = info->output; + S.output_found = true; + S.output_width = info->width; + S.output_height = info->height; + S.output_scale = info->scale > 0 ? info->scale : 1; + } +} + +static void render_output_handle_description(void *data, struct wl_output *output, + const char *desc) { + (void)data; (void)output; (void)desc; +} + +static const struct wl_output_listener render_output_listener = { + .geometry = render_output_handle_geometry, + .mode = render_output_handle_mode, + .done = render_output_handle_done, + .scale = render_output_handle_scale, + .name = render_output_handle_name, + .description = render_output_handle_description, +}; + +/* ── Layer surface events ─────────────────────────────────────────── */ + +static void render_layer_surface_configure(void *data, + struct zwlr_layer_surface_v1 *surface, + uint32_t serial, uint32_t width, uint32_t height) { + (void)data; + S.configure_serial = serial; + S.surface_width = width ? (int)width : S.output_width; + S.surface_height = height ? (int)height : S.output_height; + S.configured = true; + + zwlr_layer_surface_v1_ack_configure(surface, serial); +} + +static void render_layer_surface_closed(void *data, + struct zwlr_layer_surface_v1 *surface) { + (void)data; (void)surface; + S.closed = true; +} + +static const struct zwlr_layer_surface_v1_listener render_layer_surface_listener = { + .configure = render_layer_surface_configure, + .closed = render_layer_surface_closed, +}; + +/* ── Registry ─────────────────────────────────────────────────────── */ + +static void render_registry_handle_global(void *data, struct wl_registry *registry, + uint32_t name, const char *interface, uint32_t version) { + (void)data; + + if (strcmp(interface, wl_compositor_interface.name) == 0) { + S.compositor = wl_registry_bind(registry, name, + &wl_compositor_interface, 4); + } else if (strcmp(interface, zwlr_layer_shell_v1_interface.name) == 0) { + S.layer_shell = wl_registry_bind(registry, name, + &zwlr_layer_shell_v1_interface, version < 3 ? version : 3); + } else if (strcmp(interface, zxdg_output_manager_v1_interface.name) == 0) { + S.xdg_output_manager = wl_registry_bind(registry, name, + &zxdg_output_manager_v1_interface, version < 3 ? version : 3); + } else if (strcmp(interface, wl_output_interface.name) == 0) { + struct render_output_info *info = calloc(1, sizeof(*info)); + info->output = wl_registry_bind(registry, name, + &wl_output_interface, version < 4 ? version : 4); + info->scale = 1; + wl_output_add_listener(info->output, &render_output_listener, info); + wl_list_insert(&render_output_list, &info->link); + } +} + +static void render_registry_handle_global_remove(void *data, + struct wl_registry *registry, uint32_t name) { + (void)data; (void)registry; (void)name; +} + +static const struct wl_registry_listener render_registry_listener = { + .global = render_registry_handle_global, + .global_remove = render_registry_handle_global_remove, +}; + +/* ── Renderer signal handling ─────────────────────────────────────── */ + +static void render_sig_handler(int sig) { + (void)sig; + S.stop = 1; +} + +static void render_sigusr1_handler(int sig) { + (void)sig; + S.fade_out_requested = 1; +} + +static void ensure_wayland_display(void) { + const char *display = getenv("WAYLAND_DISPLAY"); + const char *runtime_dir = getenv("XDG_RUNTIME_DIR"); + + if ((display && display[0] != '\0') || !runtime_dir || runtime_dir[0] == '\0') + return; + + DIR *dir = opendir(runtime_dir); + if (!dir) + return; + + struct dirent *ent; + while ((ent = readdir(dir)) != NULL) { + if (strncmp(ent->d_name, "wayland-", 8) != 0) + continue; + + char path[512]; + struct stat st; + snprintf(path, sizeof(path), "%s/%s", runtime_dir, ent->d_name); + if (stat(path, &st) == 0 && S_ISSOCK(st.st_mode)) { + setenv("WAYLAND_DISPLAY", ent->d_name, 0); + break; + } + } + + closedir(dir); +} + +/* ── Renderer main ────────────────────────────────────────────────── */ + +static int renderer_main(int argc, char **argv) { + /* Defaults */ + S.target_name[0] = '\0'; + S.font_size = 14; + S.base_color = (rgb_t){ 0.0f, 1.0f, 0.0f }; + S.output_scale = 1; + S.min_speed = DEFAULT_MIN_SPEED; + S.max_speed = DEFAULT_MAX_SPEED; + S.avg_speed = DEFAULT_AVG_SPEED; + S.min_trail = DEFAULT_MIN_TRAIL; + S.max_trail = DEFAULT_MAX_TRAIL; + S.min_density = DEFAULT_MIN_DENSITY; + S.max_density = DEFAULT_MAX_DENSITY; + S.layer_near_density = LAYER_NEAR_DENSITY; + S.layer_far_density = LAYER_FAR_DENSITY; + S.num_depth_layers = DEFAULT_DEPTH_LAYERS; + S.fade_frames = DEFAULT_FADE_FRAMES; + + const char *color_name = "green"; + + /* Parse args (skip --render which was already consumed) */ + for (int i = 1; i < argc; i++) { + if (strcmp(argv[i], "--render") == 0) { + continue; /* already handled */ + } else if (strcmp(argv[i], "--output") == 0 && i + 1 < argc) { + snprintf(S.target_name, sizeof(S.target_name), "%s", argv[++i]); + } else if (strcmp(argv[i], "--color") == 0 && i + 1 < argc) { + color_name = argv[++i]; + } else if (strcmp(argv[i], "--font-size") == 0 && i + 1 < argc) { + S.font_size = atoi(argv[++i]); + if (S.font_size < 6) S.font_size = 6; + if (S.font_size > 72) S.font_size = 72; + } else if (strcmp(argv[i], "--min-speed") == 0 && i + 1 < argc) { + S.min_speed = atof(argv[++i]); + } else if (strcmp(argv[i], "--max-speed") == 0 && i + 1 < argc) { + S.max_speed = atof(argv[++i]); + } else if (strcmp(argv[i], "--avg-speed") == 0 && i + 1 < argc) { + S.avg_speed = atof(argv[++i]); + } else if (strcmp(argv[i], "--min-trail") == 0 && i + 1 < argc) { + S.min_trail = atoi(argv[++i]); + } else if (strcmp(argv[i], "--max-trail") == 0 && i + 1 < argc) { + S.max_trail = atoi(argv[++i]); + } else if (strcmp(argv[i], "--min-density") == 0 && i + 1 < argc) { + S.min_density = atof(argv[++i]); + } else if (strcmp(argv[i], "--max-density") == 0 && i + 1 < argc) { + S.max_density = atof(argv[++i]); + } else if (strcmp(argv[i], "--speed") == 0 && i + 1 < argc) { + double mult = atof(argv[++i]); + if (mult < 0.1) mult = 0.1; + if (mult > 5.0) mult = 5.0; + S.min_speed *= mult; + S.max_speed *= mult; + } else if (strcmp(argv[i], "--depth-layers") == 0 && i + 1 < argc) { + S.num_depth_layers = atoi(argv[++i]); + if (S.num_depth_layers < MIN_DEPTH_LAYERS) + S.num_depth_layers = MIN_DEPTH_LAYERS; + if (S.num_depth_layers > MAX_DEPTH_LAYERS) + S.num_depth_layers = MAX_DEPTH_LAYERS; + } else if (strcmp(argv[i], "--layer-near-density") == 0 && i + 1 < argc) { + S.layer_near_density = atof(argv[++i]); + } else if (strcmp(argv[i], "--layer-far-density") == 0 && i + 1 < argc) { + S.layer_far_density = atof(argv[++i]); + } else if (strcmp(argv[i], "--fade-frames") == 0 && i + 1 < argc) { + S.fade_frames = atoi(argv[++i]); + if (S.fade_frames < 1) S.fade_frames = 1; + if (S.fade_frames > 300) S.fade_frames = 300; + } else if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) { + fprintf(stderr, + "Usage: %s --render --output <name> [--color <color>] " + "[--font-size <size>]\n" + " [--min-speed <val>] [--max-speed <val>] " + "[--min-trail <val>] [--max-trail <val>]\n" + " [--min-density <val>] [--max-density <val>]\n" + " [--speed <multiplier>] [--depth-layers <N>]\n" + "\n" + "Colors: green, red, blue, white, yellow, cyan, magenta, random\n" + "--speed scales both min/max speed (e.g. --speed 2.0 = double speed)\n" + "--depth-layers: number of parallax layers (1-%d, default %d)\n" + "Default font-size: 14\n" + "Speed range: %.1f - %.1f Trail range: %d - %d " + "Density range: %.2f - %.2f\n", + argv[0], + MAX_DEPTH_LAYERS, DEFAULT_DEPTH_LAYERS, + DEFAULT_MIN_SPEED, DEFAULT_MAX_SPEED, + DEFAULT_MIN_TRAIL, DEFAULT_MAX_TRAIL, + DEFAULT_MIN_DENSITY, DEFAULT_MAX_DENSITY); + return 0; + } else { + fprintf(stderr, "Unknown option: %s\n", argv[i]); + return 1; + } + } + + /* Clamp values */ + if (S.min_speed < 0.1) S.min_speed = 0.1; + if (S.max_speed < S.min_speed) S.max_speed = S.min_speed; + if (S.min_trail < 1) S.min_trail = 1; + if (S.max_trail < S.min_trail) S.max_trail = S.min_trail; + if (S.min_density < 0.01) S.min_density = 0.01; + if (S.min_density > 1.0) S.min_density = 1.0; + if (S.max_density < S.min_density) S.max_density = S.min_density; + if (S.max_density > 1.0) S.max_density = 1.0; + + if (S.target_name[0] == '\0') { + fprintf(stderr, "Error: --output is required in render mode\n"); + return 1; + } + + srand((unsigned)time(NULL) ^ (unsigned)getpid()); + + S.base_color = render_lookup_color(color_name); + if (strcasecmp(color_name, "random_trail_named") == 0) + S.color_mode = COLOR_RANDOM; + else if (strcasecmp(color_name, "random_trail_hex") == 0) + S.color_mode = COLOR_RANDOM_HEX; + else + S.color_mode = COLOR_FIXED; + + /* Signal handlers */ + struct sigaction sa; + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = render_sig_handler; + sigemptyset(&sa.sa_mask); + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + + struct sigaction sa_usr1; + memset(&sa_usr1, 0, sizeof(sa_usr1)); + sa_usr1.sa_handler = render_sigusr1_handler; + sigemptyset(&sa_usr1.sa_mask); + sigaction(SIGUSR1, &sa_usr1, NULL); + + signal(SIGPIPE, SIG_IGN); + + /* Connect to Wayland */ + ensure_wayland_display(); + S.display = wl_display_connect(NULL); + if (!S.display) { + fprintf(stderr, "Cannot connect to Wayland display\n"); + return 1; + } + + wl_list_init(&render_output_list); + + S.registry = wl_display_get_registry(S.display); + wl_registry_add_listener(S.registry, &render_registry_listener, NULL); + + wl_display_roundtrip(S.display); + + if (S.xdg_output_manager) { + struct render_output_info *info; + wl_list_for_each(info, &render_output_list, link) { + info->xdg_output = zxdg_output_manager_v1_get_xdg_output( + S.xdg_output_manager, info->output); + zxdg_output_v1_add_listener(info->xdg_output, + &render_xdg_output_listener, info); + } + } + + wl_display_roundtrip(S.display); + + if (!S.output_found || !S.target_output) { + fprintf(stderr, "Output '%s' not found. Available outputs:\n", S.target_name); + struct render_output_info *info; + wl_list_for_each(info, &render_output_list, link) { + fprintf(stderr, " %s (%dx%d)\n", info->name, info->width, info->height); + } + wl_display_disconnect(S.display); + return 1; + } + + if (!S.compositor || !S.layer_shell) { + fprintf(stderr, "Missing required Wayland interfaces " + "(compositor=%p layer_shell=%p)\n", + (void*)S.compositor, (void*)S.layer_shell); + wl_display_disconnect(S.display); + return 1; + } + + fprintf(stderr, "Target output: %s (%dx%d, scale=%d, depth_layers=%d, speed=%.1f-%.1f, trail=%d-%d, density=%.2f-%.2f)\n", + S.target_name, S.output_width, S.output_height, S.output_scale, + S.num_depth_layers, + S.min_speed, S.max_speed, S.min_trail, S.max_trail, + S.min_density, S.max_density); + + /* Create surface */ + S.surface = wl_compositor_create_surface(S.compositor); + + S.layer_surface = zwlr_layer_shell_v1_get_layer_surface( + S.layer_shell, S.surface, S.target_output, + ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY, "oledsaver"); + + zwlr_layer_surface_v1_set_anchor(S.layer_surface, + ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP | + ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM | + ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | + ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT); + zwlr_layer_surface_v1_set_size(S.layer_surface, 0, 0); + zwlr_layer_surface_v1_set_exclusive_zone(S.layer_surface, -1); + zwlr_layer_surface_v1_set_keyboard_interactivity(S.layer_surface, 0); + + /* Keep the visual overlay from receiving pointer/touch input. */ + struct wl_region *empty_input = wl_compositor_create_region(S.compositor); + wl_surface_set_input_region(S.surface, empty_input); + wl_region_destroy(empty_input); + + zwlr_layer_surface_v1_add_listener(S.layer_surface, + &render_layer_surface_listener, NULL); + + wl_surface_commit(S.surface); + wl_display_roundtrip(S.display); + + if (!S.configured) { + fprintf(stderr, "Layer surface was not configured\n"); + wl_display_disconnect(S.display); + return 1; + } + + fprintf(stderr, "Surface configured: %dx%d\n", S.surface_width, S.surface_height); + + /* Initialize EGL */ + if (!render_init_egl()) { + fprintf(stderr, "Failed to initialize EGL\n"); + wl_display_disconnect(S.display); + return 1; + } + + /* Initialize shaders */ + if (!render_init_shaders()) { + fprintf(stderr, "Failed to initialize shaders\n"); + wl_display_disconnect(S.display); + return 1; + } + + render_set_projection(S.surface_width, S.surface_height); + + /* Initialize FreeType and build glyph atlas */ + int atlas_font_size = (int)(S.font_size * LAYER_NEAR_FONT_SCALE + 0.5); + if (atlas_font_size < S.font_size) atlas_font_size = S.font_size; + + if (!render_init_freetype(atlas_font_size)) { + fprintf(stderr, "Failed to initialize FreeType\n"); + wl_display_disconnect(S.display); + return 1; + } + + if (!render_build_atlas(atlas_font_size)) { + fprintf(stderr, "Failed to build glyph atlas\n"); + wl_display_disconnect(S.display); + return 1; + } + + fprintf(stderr, "Initializing %d depth layers (font_size=%d, atlas_size=%d)\n", + S.num_depth_layers, S.font_size, atlas_font_size); + + render_init_matrix(S.surface_width, S.surface_height); + + for (int l = 0; l < S.num_depth_layers; l++) { + depth_layer_t *dl = &S.layers[l]; + fprintf(stderr, "Layer %d: font_scale=%.2f cell=%dx%d grid=%dx%d opacity=%.2f speed=%.2fx density=%.0f%%\n", + l, dl->font_scale, dl->cell_w, dl->cell_h, + dl->cols, dl->rows, dl->opacity, dl->speed_scale, + dl->density * 100.0); + } + fprintf(stderr, "Starting matrix rain with depth layers (OpenGL ES 2.0)\n"); + + /* Initialize phase state (warmup already ran, now fade desktop to black) */ + S.phase = PHASE_FADE_TO_BLACK; + S.phase_frame = 0; + S.surface_alpha = 0.0f; + S.fade_opacity = 0.0f; + + /* Main render loop */ + struct timespec ts_start, ts_end; + while (!S.stop && !S.closed) { + clock_gettime(CLOCK_MONOTONIC, &ts_start); + + if (wl_display_prepare_read(S.display) == 0) { + wl_display_flush(S.display); + + struct pollfd pfd = { + .fd = wl_display_get_fd(S.display), + .events = POLLIN, + }; + if (poll(&pfd, 1, 0) > 0) { + wl_display_read_events(S.display); + } else { + wl_display_cancel_read(S.display); + } + } + wl_display_dispatch_pending(S.display); + + if (S.stop || S.closed) break; + + glViewport(0, 0, S.surface_width, S.surface_height); + + switch (S.phase) { + case PHASE_FADE_TO_BLACK: + S.phase_frame++; + S.surface_alpha = (float)S.phase_frame / S.fade_frames; + if (S.surface_alpha >= 1.0f) { + S.surface_alpha = 1.0f; + S.phase = PHASE_FADE_IN; + S.phase_frame = 0; + } + /* Clear with transitioning alpha, don't render rain */ + glClearColor(0.0f, 0.0f, 0.0f, S.surface_alpha); + glClear(GL_COLOR_BUFFER_BIT); + break; + + case PHASE_FADE_IN: + S.phase_frame++; + S.fade_opacity = (float)S.phase_frame / S.fade_frames; + if (S.fade_opacity >= 1.0f) { + S.fade_opacity = 1.0f; + S.phase = PHASE_RUNNING; + } + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + render_tick_matrix(); + render_frame(); + break; + + case PHASE_RUNNING: + if (S.fade_out_requested) { + S.phase = PHASE_FADE_OUT; + S.phase_frame = S.fade_frames; + S.fade_out_requested = 0; + } + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + render_tick_matrix(); + render_frame(); + break; + + case PHASE_FADE_OUT: + S.phase_frame--; + S.fade_opacity = (float)S.phase_frame / S.fade_frames; + if (S.fade_opacity <= 0.0f) { + S.fade_opacity = 0.0f; + S.phase = PHASE_FADE_TO_DESKTOP; + S.phase_frame = S.fade_frames; + } + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + render_tick_matrix(); + render_frame(); + break; + + case PHASE_FADE_TO_DESKTOP: + S.phase_frame--; + S.surface_alpha = (float)S.phase_frame / S.fade_frames; + if (S.surface_alpha <= 0.0f) { + S.surface_alpha = 0.0f; + S.stop = 1; /* exit */ + } + glClearColor(0.0f, 0.0f, 0.0f, S.surface_alpha); + glClear(GL_COLOR_BUFFER_BIT); + /* Don't render rain — just fading black overlay */ + break; + } + + eglSwapBuffers(S.egl_display, S.egl_surface); + + clock_gettime(CLOCK_MONOTONIC, &ts_end); + long elapsed_us = (ts_end.tv_sec - ts_start.tv_sec) * 1000000L + + (ts_end.tv_nsec - ts_start.tv_nsec) / 1000; + long sleep_us = FRAME_INTERVAL_US - elapsed_us; + if (sleep_us > 0) { + usleep((useconds_t)sleep_us); + } + } + + fprintf(stderr, "Shutting down\n"); + + /* Cleanup */ + free(S.vertex_buf); + if (S.vbo) glDeleteBuffers(1, &S.vbo); + if (S.shader_program) glDeleteProgram(S.shader_program); + if (S.atlas.texture) glDeleteTextures(1, &S.atlas.texture); + + if (S.egl_display != EGL_NO_DISPLAY) { + eglMakeCurrent(S.egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + if (S.egl_surface != EGL_NO_SURFACE) + eglDestroySurface(S.egl_display, S.egl_surface); + if (S.egl_context != EGL_NO_CONTEXT) + eglDestroyContext(S.egl_display, S.egl_context); + eglTerminate(S.egl_display); + } + if (S.egl_window) wl_egl_window_destroy(S.egl_window); + + if (S.ft_face) FT_Done_Face(S.ft_face); + if (S.ft_library) FT_Done_FreeType(S.ft_library); + + if (S.layer_surface) zwlr_layer_surface_v1_destroy(S.layer_surface); + if (S.surface) wl_surface_destroy(S.surface); + for (int l = 0; l < S.num_depth_layers; l++) { + free(S.layers[l].columns); + free(S.layers[l].cells); + } + + struct render_output_info *info, *tmp; + wl_list_for_each_safe(info, tmp, &render_output_list, link) { + if (info->xdg_output) zxdg_output_v1_destroy(info->xdg_output); + wl_output_release(info->output); + wl_list_remove(&info->link); + free(info); + } + + if (S.xdg_output_manager) zxdg_output_manager_v1_destroy(S.xdg_output_manager); + if (S.registry) wl_registry_destroy(S.registry); + wl_display_disconnect(S.display); + + return 0; +} + +/* =================================================================== + * MANAGER MODE (Wayfire IPC idle blanking) + * =================================================================== */ + +/* ── Constants ─────────────────────────────────────────────────────── */ + +#define MAX_OUTPUTS 8 +#define MAX_OUTPUT_NAME 64 +#define MAX_PATH_LEN 512 +#define MAX_CMD_LEN 1024 +#define MAX_PIDS 4 +#define WF_IPC_HEADER_LEN 4 +#define WF_IPC_MAX_PAYLOAD (16 * 1024 * 1024) +#define CURSOR_POLL_INTERVAL 0.25 + +static const char *MGR_COLORS[] = { + "green", "red", "blue", "white", "yellow", "cyan", "magenta" +}; +#define MGR_NUM_COLORS 7 + +/* ── Data structures ───────────────────────────────────────────────── */ + +typedef struct { + char name[MAX_OUTPUT_NAME]; + double last_input; + char state[8]; + pid_t pids[MAX_PIDS]; + int pid_count; + int timeout_override; + char color[32]; + /* per-output overrides; negative = use global */ + double min_speed, max_speed; + int min_trail, max_trail; + double min_density, max_density; +} mgr_output_info_t; + +typedef struct { + /* Config values */ + int global_timeout; + int check_interval; + int focused_timeout; + char log_file[MAX_PATH_LEN]; + char matrix_cmd[MAX_CMD_LEN]; + char matrix_color[32]; + /* Global matrix tuning ranges */ + double matrix_min_speed, matrix_max_speed, matrix_avg_speed; + int matrix_min_trail, matrix_max_trail; + double matrix_min_density, matrix_max_density; + double matrix_layer_near_density, matrix_layer_far_density; + int matrix_font_size; + int matrix_depth_layers; + int matrix_fade_frames; + char config_file[MAX_PATH_LEN]; + double config_mtime; + char lock_cmd[MAX_CMD_LEN]; /* command to run for screen lock */ + + /* State */ + mgr_output_info_t outputs[MAX_OUTPUTS]; + int output_count; + char focused_output[MAX_OUTPUT_NAME]; + double last_blank_time; + int seat_idle; + int wayfire_cursor_hidden; + int wayfire_cursor_warned; + volatile sig_atomic_t stop; + volatile sig_atomic_t activate_all; /* SIGUSR1: blank all outputs now */ + volatile sig_atomic_t lock_now; /* SIGUSR2: blank all + run lock cmd */ + + /* Sync */ + pthread_mutex_t lock; + + /* Logging */ + FILE *log_fp; +} mgr_state_t; + +static mgr_state_t G; + +/* ── Logging ───────────────────────────────────────────────────────── */ + +static void mgr_log_msg(const char *level, const char *fmt, ...) { + time_t now = time(NULL); + struct tm tm; + char tbuf[64]; + localtime_r(&now, &tm); + strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", &tm); + + va_list ap; + + va_start(ap, fmt); + fprintf(stdout, "%s %s ", tbuf, level); + vfprintf(stdout, fmt, ap); + fputc('\n', stdout); + fflush(stdout); + va_end(ap); + + if (G.log_fp) { + va_start(ap, fmt); + fprintf(G.log_fp, "%s %s ", tbuf, level); + vfprintf(G.log_fp, fmt, ap); + fputc('\n', G.log_fp); + fflush(G.log_fp); + va_end(ap); + } +} + +#define LOG_INFO(...) mgr_log_msg("INFO", __VA_ARGS__) +#define LOG_WARNING(...) mgr_log_msg("WARNING", __VA_ARGS__) +#define LOG_ERROR(...) mgr_log_msg("ERROR", __VA_ARGS__) + +/* ── Utility ───────────────────────────────────────────────────────── */ + +static double mgr_monotime(void) { + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return ts.tv_sec + ts.tv_nsec / 1e9; +} + +static int mgr_pid_alive(pid_t pid) { + if (pid <= 0) return 0; + return kill(pid, 0) == 0; +} + +static void mgr_mkdirs(const char *path) { + char tmp[MAX_PATH_LEN]; + snprintf(tmp, sizeof(tmp), "%s", path); + for (char *p = tmp + 1; *p; p++) { + if (*p == '/') { + *p = '\0'; + mkdir(tmp, 0755); + *p = '/'; + } + } + mkdir(tmp, 0755); +} + +static void mgr_runtime_path(char *dst, size_t dstsz, const char *name) { + const char *runtime_dir = getenv("XDG_RUNTIME_DIR"); + + if (runtime_dir && runtime_dir[0] != '\0') { + char dir[MAX_PATH_LEN]; + snprintf(dir, sizeof(dir), "%s/oledsaver", runtime_dir); + mgr_mkdirs(dir); + snprintf(dst, dstsz, "%s/%s", dir, name); + return; + } + + snprintf(dst, dstsz, "/tmp/%s", name); +} + +static void mgr_expand_tilde(const char *src, char *dst, size_t dstsz) { + if (src[0] == '~' && (src[1] == '/' || src[1] == '\0')) { + const char *home = getenv("HOME"); + if (home) + snprintf(dst, dstsz, "%s%s", home, src + 1); + else + snprintf(dst, dstsz, "%s", src); + } else { + snprintf(dst, dstsz, "%s", src); + } +} + +static const char *mgr_random_color(void) { + return MGR_COLORS[rand() % MGR_NUM_COLORS]; +} + +/* ── Wayfire IPC (direct socket) ──────────────────────────────────── */ + +static int mgr_wayfire_ipc_path(char *dst, size_t dstsz) { + const char *sock = getenv("WAYFIRE_SOCKET"); + if (!sock || sock[0] == '\0') + sock = getenv("_WAYFIRE_SOCKET"); + if (sock && sock[0] != '\0') { + snprintf(dst, dstsz, "%s", sock); + return 0; + } + + ensure_wayland_display(); + + const char *runtime_dir = getenv("XDG_RUNTIME_DIR"); + const char *display = getenv("WAYLAND_DISPLAY"); + if (runtime_dir && runtime_dir[0] != '\0' && + display && display[0] != '\0') { + snprintf(dst, dstsz, "%s/wayfire-%s-.socket", runtime_dir, display); + struct stat st; + if (stat(dst, &st) == 0 && S_ISSOCK(st.st_mode)) + return 0; + } + + if (!runtime_dir || runtime_dir[0] == '\0') + return -1; + + DIR *dir = opendir(runtime_dir); + if (!dir) + return -1; + + struct dirent *ent; + while ((ent = readdir(dir)) != NULL) { + const char *name = ent->d_name; + size_t len = strlen(name); + if (strncmp(name, "wayfire-", 8) != 0 || len < 15 || + strcmp(name + len - 7, ".socket") != 0) + continue; + + char candidate[MAX_PATH_LEN]; + struct stat st; + snprintf(candidate, sizeof(candidate), "%s/%s", runtime_dir, name); + if (stat(candidate, &st) == 0 && S_ISSOCK(st.st_mode)) { + snprintf(dst, dstsz, "%s", candidate); + closedir(dir); + return 0; + } + } + + closedir(dir); + return -1; +} + +static int mgr_ipc_connect(void) { + char sock[MAX_PATH_LEN]; + if (mgr_wayfire_ipc_path(sock, sizeof(sock)) < 0) { + LOG_ERROR("Wayfire IPC socket not found"); + return -1; + } + + if (strlen(sock) >= sizeof(((struct sockaddr_un *)0)->sun_path)) { + LOG_ERROR("Wayfire IPC socket path too long: %s", sock); + return -1; + } + + int fd = socket(AF_UNIX, SOCK_STREAM, 0); + if (fd < 0) return -1; + + struct sockaddr_un addr; + memset(&addr, 0, sizeof(addr)); + addr.sun_family = AF_UNIX; + snprintf(addr.sun_path, sizeof(addr.sun_path), "%s", sock); + + if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + close(fd); + return -1; + } + return fd; +} + +static int mgr_readn(int fd, void *buf, size_t n) { + size_t total = 0; + while (total < n) { + ssize_t r = read(fd, (char *)buf + total, n - total); + if (r < 0 && errno == EINTR) + continue; + if (r <= 0) return -1; + total += r; + } + return 0; +} + +static int mgr_writen(int fd, const void *buf, size_t n) { + size_t total = 0; + while (total < n) { + ssize_t w = write(fd, (const char *)buf + total, n - total); + if (w < 0 && errno == EINTR) + continue; + if (w <= 0) + return -1; + total += w; + } + return 0; +} + +static int mgr_ipc_send_payload(int fd, const char *payload) { + uint32_t len = payload ? (uint32_t)strlen(payload) : 0; + if (len > WF_IPC_MAX_PAYLOAD) + return -1; + + if (mgr_writen(fd, &len, WF_IPC_HEADER_LEN) < 0) + return -1; + if (len > 0 && mgr_writen(fd, payload, len) < 0) + return -1; + return 0; +} + +static int mgr_ipc_send_method(int fd, const char *method, + const char *data_json) { + struct json_object *root = json_object_new_object(); + struct json_object *data = NULL; + + if (!root) + return -1; + + if (data_json && data_json[0] != '\0') + data = json_tokener_parse(data_json); + if (!data) + data = json_object_new_object(); + + json_object_object_add(root, "method", json_object_new_string(method)); + json_object_object_add(root, "data", data); + + const char *payload = json_object_to_json_string_ext( + root, JSON_C_TO_STRING_PLAIN); + int rc = mgr_ipc_send_payload(fd, payload); + + json_object_put(root); + return rc; +} + +static int mgr_ipc_recv(int fd, char **out_payload) { + uint32_t len; + if (mgr_readn(fd, &len, WF_IPC_HEADER_LEN) < 0) + return -1; + if (len > WF_IPC_MAX_PAYLOAD) + return -1; + + char *payload = malloc(len + 1); + if (!payload) return -1; + if (len > 0 && mgr_readn(fd, payload, len) < 0) { + free(payload); + return -1; + } + payload[len] = '\0'; + + if (out_payload) *out_payload = payload; + else free(payload); + return 0; +} + +static struct json_object *mgr_ipc_request(const char *method, + const char *data_json) { + int fd = mgr_ipc_connect(); + if (fd < 0) return NULL; + + if (mgr_ipc_send_method(fd, method, data_json) < 0) { + close(fd); + return NULL; + } + + char *resp = NULL; + if (mgr_ipc_recv(fd, &resp) < 0) { + close(fd); + return NULL; + } + close(fd); + + struct json_object *j = json_tokener_parse(resp); + free(resp); + return j; +} + +/* ── Idle inhibitor detection ──────────────────────────────────────── */ + +static int mgr_check_idle_inhibitors(void) { + return 0; +} + +/* ── Config parsing ────────────────────────────────────────────────── */ + +static void mgr_trim(char *s) { + char *start = s; + while (*start == ' ' || *start == '\t') start++; + if (start != s) memmove(s, start, strlen(start) + 1); + char *end = s + strlen(s) - 1; + while (end >= s && (*end == ' ' || *end == '\t' || *end == '\n' || *end == '\r')) + *end-- = '\0'; +} + +static void mgr_set_defaults(void) { + const char *state_home = getenv("XDG_STATE_HOME"); + const char *home = getenv("HOME"); + + G.global_timeout = 300; + G.check_interval = 5; + G.focused_timeout = 30; + G.matrix_cmd[0] = '\0'; + G.matrix_min_speed = DEFAULT_MIN_SPEED; + G.matrix_max_speed = DEFAULT_MAX_SPEED; + G.matrix_avg_speed = DEFAULT_AVG_SPEED; + G.matrix_min_trail = DEFAULT_MIN_TRAIL; + G.matrix_max_trail = DEFAULT_MAX_TRAIL; + G.matrix_min_density = DEFAULT_MIN_DENSITY; + G.matrix_max_density = DEFAULT_MAX_DENSITY; + G.matrix_layer_near_density = LAYER_NEAR_DENSITY; + G.matrix_layer_far_density = LAYER_FAR_DENSITY; + G.matrix_font_size = 14; + G.matrix_depth_layers = DEFAULT_DEPTH_LAYERS; + G.matrix_fade_frames = S.fade_frames; + snprintf(G.matrix_color, sizeof(G.matrix_color), "green"); + + if (state_home && state_home[0] != '\0') + snprintf(G.log_file, sizeof(G.log_file), "%s/oledsaver/oledsaver.log", state_home); + else if (home && home[0] != '\0') + snprintf(G.log_file, sizeof(G.log_file), "%s/.local/state/oledsaver/oledsaver.log", home); + else + snprintf(G.log_file, sizeof(G.log_file), "/tmp/oledsaver.log"); + G.lock_cmd[0] = '\0'; +} + +static void mgr_load_config(void) { + if (G.config_file[0] == '\0') { + const char *config_home = getenv("XDG_CONFIG_HOME"); + const char *home = getenv("HOME"); + char candidate[MAX_PATH_LEN]; + + if (config_home && config_home[0] != '\0') { + snprintf(candidate, sizeof(candidate), "%s/oledsaver.conf", config_home); + if (access(candidate, R_OK) == 0) + snprintf(G.config_file, sizeof(G.config_file), "%s", candidate); + } + if (G.config_file[0] == '\0' && home && home[0] != '\0') { + snprintf(candidate, sizeof(candidate), "%s/.config/oledsaver.conf", home); + if (access(candidate, R_OK) == 0) + snprintf(G.config_file, sizeof(G.config_file), "%s", candidate); + } + if (G.config_file[0] == '\0') + snprintf(G.config_file, sizeof(G.config_file), "/etc/oledsaver.conf"); + } + + struct stat st; + if (stat(G.config_file, &st) < 0) { + LOG_WARNING("Config not found: %s, using defaults", G.config_file); + mgr_set_defaults(); + return; + } + + double mtime = st.st_mtim.tv_sec + st.st_mtim.tv_nsec / 1e9; + if (mtime <= G.config_mtime) return; + + FILE *fp = fopen(G.config_file, "r"); + if (!fp) { + LOG_ERROR("Cannot open config: %s", G.config_file); + return; + } + + G.config_mtime = mtime; + + for (int i = 0; i < G.output_count; i++) { + G.outputs[i].timeout_override = -1; + G.outputs[i].color[0] = '\0'; + G.outputs[i].min_speed = -1.0; + G.outputs[i].max_speed = -1.0; + G.outputs[i].min_trail = -1; + G.outputs[i].max_trail = -1; + G.outputs[i].min_density = -1.0; + G.outputs[i].max_density = -1.0; + } + + char section[64] = ""; + char line[1024]; + while (fgets(line, sizeof(line), fp)) { + mgr_trim(line); + if (line[0] == '\0' || line[0] == '#' || line[0] == ';') continue; + if (line[0] == '[') { + char *end = strchr(line, ']'); + if (end) { + *end = '\0'; + snprintf(section, sizeof(section), "%s", line + 1); + } + continue; + } + + char *eq = strchr(line, '='); + if (!eq) continue; + *eq = '\0'; + char key[256], val[768]; + snprintf(key, sizeof(key), "%s", line); + snprintf(val, sizeof(val), "%s", eq + 1); + mgr_trim(key); + mgr_trim(val); + + if (strcmp(section, "global") == 0) { + if (strcmp(key, "TIMEOUT") == 0) + G.global_timeout = atoi(val); + else if (strcmp(key, "CHECK_INTERVAL") == 0) + G.check_interval = atoi(val); + else if (strcmp(key, "FOCUSED_TIMEOUT") == 0) + G.focused_timeout = atoi(val); + else if (strcmp(key, "LOG_FILE") == 0) + mgr_expand_tilde(val, G.log_file, sizeof(G.log_file)); + else if (strcmp(key, "LOCK_CMD") == 0) + snprintf(G.lock_cmd, sizeof(G.lock_cmd), "%s", val); + } else if (strcmp(section, "matrix") == 0) { + if (strcmp(key, "CMD") == 0) + snprintf(G.matrix_cmd, sizeof(G.matrix_cmd), "%s", val); + else if (strcmp(key, "COLOR") == 0) + snprintf(G.matrix_color, sizeof(G.matrix_color), "%s", val); + else if (strcmp(key, "MIN_SPEED") == 0) + G.matrix_min_speed = atof(val); + else if (strcmp(key, "MAX_SPEED") == 0) + G.matrix_max_speed = atof(val); + else if (strcmp(key, "AVG_SPEED") == 0) + G.matrix_avg_speed = atof(val); + else if (strcmp(key, "MIN_TRAIL") == 0) + G.matrix_min_trail = atoi(val); + else if (strcmp(key, "MAX_TRAIL") == 0) + G.matrix_max_trail = atoi(val); + else if (strcmp(key, "MIN_DENSITY") == 0) + G.matrix_min_density = atof(val); + else if (strcmp(key, "MAX_DENSITY") == 0) + G.matrix_max_density = atof(val); + else if (strcmp(key, "FONT_SIZE") == 0) + G.matrix_font_size = atoi(val); + else if (strcmp(key, "LAYER_NEAR_DENSITY") == 0) + G.matrix_layer_near_density = atof(val); + else if (strcmp(key, "LAYER_FAR_DENSITY") == 0) + G.matrix_layer_far_density = atof(val); + else if (strcmp(key, "DEPTH_LAYERS") == 0) { + G.matrix_depth_layers = atoi(val); + if (G.matrix_depth_layers < MIN_DEPTH_LAYERS) + G.matrix_depth_layers = MIN_DEPTH_LAYERS; + if (G.matrix_depth_layers > MAX_DEPTH_LAYERS) + G.matrix_depth_layers = MAX_DEPTH_LAYERS; + } else if (strcmp(key, "FADE_FRAMES") == 0) { + G.matrix_fade_frames = atoi(val); + if (G.matrix_fade_frames < 1) G.matrix_fade_frames = 1; + if (G.matrix_fade_frames > 300) G.matrix_fade_frames = 300; + } + } else if (strcmp(section, "output_timeouts") == 0) { + for (int i = 0; i < G.output_count; i++) { + if (strcmp(G.outputs[i].name, key) == 0) + G.outputs[i].timeout_override = atoi(val); + } + } else if (strcmp(section, "output_colors") == 0) { + for (int i = 0; i < G.output_count; i++) { + if (strcmp(G.outputs[i].name, key) == 0) + snprintf(G.outputs[i].color, sizeof(G.outputs[i].color), "%s", val); + } + } + } + fclose(fp); + + LOG_INFO("Config loaded: FOCUSED_TIMEOUT=%ds TIMEOUT=%ds CHECK_INTERVAL=%ds COLOR=%s FONT_SIZE=%d DEPTH_LAYERS=%d speed=%.1f-%.1f trail=%d-%d density=%.2f-%.2f", + G.focused_timeout, G.global_timeout, G.check_interval, G.matrix_color, + G.matrix_font_size, G.matrix_depth_layers, + G.matrix_min_speed, G.matrix_max_speed, + G.matrix_min_trail, G.matrix_max_trail, + G.matrix_min_density, G.matrix_max_density); +} + +/* ── Output helpers ────────────────────────────────────────────────── */ + +static mgr_output_info_t *mgr_find_output(const char *name) { + for (int i = 0; i < G.output_count; i++) { + if (strcmp(G.outputs[i].name, name) == 0) + return &G.outputs[i]; + } + return NULL; +} + +static int mgr_ipc_response_has_error(struct json_object *resp) { + struct json_object *error; + if (json_object_object_get_ex(resp, "error", &error)) + return 1; + + struct json_object *result; + if (json_object_object_get_ex(resp, "result", &result)) { + const char *status = json_object_get_string(result); + if (status && strcmp(status, "ok") != 0) + return 1; + } + + return 0; +} + +static int mgr_get_cursor_status_from_ipc(char *output, size_t output_len, + int *hidden) { + if (output_len > 0) + output[0] = '\0'; + if (hidden) + *hidden = -1; + + struct json_object *resp = + mgr_ipc_request("oledsaver/cursor_status", "{}"); + if (!resp) + return 0; + + int ok = 0; + if (mgr_ipc_response_has_error(resp)) + goto out; + + struct json_object *valid; + if (json_object_object_get_ex(resp, "valid", &valid) && + !json_object_get_boolean(valid)) + goto out; + + struct json_object *hidden_obj; + if (hidden && json_object_object_get_ex(resp, "hidden", &hidden_obj)) + *hidden = json_object_get_boolean(hidden_obj) ? 1 : 0; + + struct json_object *name_obj; + if (json_object_object_get_ex(resp, "output", &name_obj)) { + const char *name = json_object_get_string(name_obj); + if (name && name[0] != '\0') { + snprintf(output, output_len, "%s", name); + ok = 1; + } + } + +out: + json_object_put(resp); + return ok; +} + +static int mgr_set_wayfire_cursor_hidden(int hidden) { + struct json_object *resp = mgr_ipc_request( + hidden ? "oledsaver/hide_cursor" : "oledsaver/unhide_cursor", "{}"); + if (!resp) + return 0; + + int ok = !mgr_ipc_response_has_error(resp); + json_object_put(resp); + return ok; +} + +static void mgr_release_wayfire_cursor(void) { + pthread_mutex_lock(&G.lock); + int was_hidden = G.wayfire_cursor_hidden; + pthread_mutex_unlock(&G.lock); + + if (!was_hidden) + return; + + int ok = mgr_set_wayfire_cursor_hidden(0); + + pthread_mutex_lock(&G.lock); + G.wayfire_cursor_hidden = 0; + pthread_mutex_unlock(&G.lock); + + if (ok) + LOG_INFO("Cursor unhidden"); + else + LOG_WARNING("Cursor unhide request failed"); +} + +static void mgr_update_wayfire_cursor(void) { + char cursor_output[MAX_OUTPUT_NAME]; + int actual_hidden = -1; + + if (!mgr_get_cursor_status_from_ipc(cursor_output, sizeof(cursor_output), + &actual_hidden)) { + pthread_mutex_lock(&G.lock); + int should_warn = !G.wayfire_cursor_warned; + G.wayfire_cursor_warned = 1; + pthread_mutex_unlock(&G.lock); + + if (should_warn) + LOG_WARNING("Cursor tracking unavailable; load Wayfire plugin oledsaver-cursor"); + + mgr_release_wayfire_cursor(); + return; + } + + pthread_mutex_lock(&G.lock); + G.wayfire_cursor_warned = 0; + if (actual_hidden >= 0) + G.wayfire_cursor_hidden = actual_hidden; + + mgr_output_info_t *o = mgr_find_output(cursor_output); + int should_hide = o && strcmp(o->state, "off") == 0; + int is_hidden = G.wayfire_cursor_hidden; + pthread_mutex_unlock(&G.lock); + + if (should_hide == is_hidden) + return; + + if (mgr_set_wayfire_cursor_hidden(should_hide)) { + pthread_mutex_lock(&G.lock); + G.wayfire_cursor_hidden = should_hide; + pthread_mutex_unlock(&G.lock); + + LOG_INFO("Cursor %s on %s", + should_hide ? "hidden" : "unhidden", cursor_output); + } else { + pthread_mutex_lock(&G.lock); + int should_warn = !G.wayfire_cursor_warned; + G.wayfire_cursor_warned = 1; + pthread_mutex_unlock(&G.lock); + + if (should_warn) + LOG_WARNING("Cursor %s request failed", + should_hide ? "hide" : "unhide"); + } +} + +static int mgr_get_output_timeout(mgr_output_info_t *o) { + if (o->timeout_override > 0) return o->timeout_override; + return G.global_timeout; +} + +static const char *mgr_get_output_color(mgr_output_info_t *o) { + static char hex_buf[8]; + const char *color = o->color[0] ? o->color : G.matrix_color; + /* Per-trail modes: pass through to renderer as-is */ + if (strcasecmp(color, "random_trail_named") == 0 || + strcasecmp(color, "random_trail_hex") == 0) + return color; + /* Per-output random: resolve here so each output gets a different color */ + if (strcasecmp(color, "random") == 0 || + strcasecmp(color, "random_named") == 0) + return mgr_random_color(); + if (strcasecmp(color, "random_hex") == 0) { + snprintf(hex_buf, sizeof(hex_buf), "#%02x%02x%02x", + rand() % 256, rand() % 256, rand() % 256); + return hex_buf; + } + return color; +} + +static double mgr_get_val_d(double per_output, double global) { + return per_output >= 0.0 ? per_output : global; +} +static int mgr_get_val_i(int per_output, int global) { + return per_output >= 0 ? per_output : global; +} + +static void mgr_init_output(mgr_output_info_t *out, const char *name, + double now) { + memset(out, 0, sizeof(*out)); + snprintf(out->name, sizeof(out->name), "%s", name); + out->last_input = now; + strcpy(out->state, "on"); + out->timeout_override = -1; + out->min_speed = -1.0; + out->max_speed = -1.0; + out->min_trail = -1; + out->max_trail = -1; + out->min_density = -1.0; + out->max_density = -1.0; +} + +typedef struct { + struct wl_display *display; + struct wl_registry *registry; + struct zxdg_output_manager_v1 *xdg_output_manager; + struct wl_list outputs; +} mgr_outputs_wayland_t; + +typedef struct { + struct wl_output *output; + struct zxdg_output_v1 *xdg_output; + char name[MAX_OUTPUT_NAME]; + int width; + int height; + int scale; + struct wl_list link; +} mgr_wayland_output_info_t; + +static void mgr_output_set_name(mgr_wayland_output_info_t *info, + const char *name) { + if (!name || name[0] == '\0') + return; + snprintf(info->name, sizeof(info->name), "%s", name); +} + +static void mgr_xdg_output_handle_logical_position(void *data, + struct zxdg_output_v1 *xdg_output, int32_t x, int32_t y) { + (void)data; (void)xdg_output; (void)x; (void)y; +} + +static void mgr_xdg_output_handle_logical_size(void *data, + struct zxdg_output_v1 *xdg_output, int32_t w, int32_t h) { + (void)xdg_output; + mgr_wayland_output_info_t *info = data; + info->width = w; + info->height = h; +} + +static void mgr_xdg_output_handle_done(void *data, + struct zxdg_output_v1 *xdg_output) { + (void)data; (void)xdg_output; +} + +static void mgr_xdg_output_handle_name(void *data, + struct zxdg_output_v1 *xdg_output, const char *name) { + (void)xdg_output; + mgr_output_set_name(data, name); +} + +static void mgr_xdg_output_handle_description(void *data, + struct zxdg_output_v1 *xdg_output, const char *desc) { + (void)data; (void)xdg_output; (void)desc; +} + +static const struct zxdg_output_v1_listener mgr_xdg_output_listener = { + .logical_position = mgr_xdg_output_handle_logical_position, + .logical_size = mgr_xdg_output_handle_logical_size, + .done = mgr_xdg_output_handle_done, + .name = mgr_xdg_output_handle_name, + .description = mgr_xdg_output_handle_description, +}; + +static void mgr_output_handle_geometry(void *data, struct wl_output *output, + int32_t x, int32_t y, int32_t pw, int32_t ph, int32_t subpixel, + const char *make, const char *model, int32_t transform) { + (void)data; (void)output; (void)x; (void)y; + (void)pw; (void)ph; (void)subpixel; + (void)make; (void)model; (void)transform; +} + +static void mgr_output_handle_mode(void *data, struct wl_output *output, + uint32_t flags, int32_t width, int32_t height, int32_t refresh) { + (void)output; (void)refresh; + mgr_wayland_output_info_t *info = data; + if (flags & WL_OUTPUT_MODE_CURRENT) { + info->width = width; + info->height = height; + } +} + +static void mgr_output_handle_done(void *data, struct wl_output *output) { + (void)data; (void)output; +} + +static void mgr_output_handle_scale(void *data, struct wl_output *output, + int32_t factor) { + (void)output; + mgr_wayland_output_info_t *info = data; + info->scale = factor; +} + +static void mgr_output_handle_name(void *data, struct wl_output *output, + const char *name) { + (void)output; + mgr_output_set_name(data, name); +} + +static void mgr_output_handle_description(void *data, struct wl_output *output, + const char *desc) { + (void)data; (void)output; (void)desc; +} + +static const struct wl_output_listener mgr_output_listener = { + .geometry = mgr_output_handle_geometry, + .mode = mgr_output_handle_mode, + .done = mgr_output_handle_done, + .scale = mgr_output_handle_scale, + .name = mgr_output_handle_name, + .description = mgr_output_handle_description, +}; + +static void mgr_outputs_registry_handle_global(void *data, + struct wl_registry *registry, uint32_t name, + const char *interface, uint32_t version) { + mgr_outputs_wayland_t *ctx = data; + + if (strcmp(interface, zxdg_output_manager_v1_interface.name) == 0 && + !ctx->xdg_output_manager) { + ctx->xdg_output_manager = wl_registry_bind(registry, name, + &zxdg_output_manager_v1_interface, version < 3 ? version : 3); + } else if (strcmp(interface, wl_output_interface.name) == 0) { + mgr_wayland_output_info_t *info = calloc(1, sizeof(*info)); + if (!info) + return; + info->output = wl_registry_bind(registry, name, + &wl_output_interface, version < 4 ? version : 4); + info->scale = 1; + wl_output_add_listener(info->output, &mgr_output_listener, info); + wl_list_insert(&ctx->outputs, &info->link); + } +} + +static void mgr_outputs_registry_handle_global_remove(void *data, + struct wl_registry *registry, uint32_t name) { + (void)data; (void)registry; (void)name; +} + +static const struct wl_registry_listener mgr_outputs_registry_listener = { + .global = mgr_outputs_registry_handle_global, + .global_remove = mgr_outputs_registry_handle_global_remove, +}; + +static void mgr_outputs_wayland_cleanup(mgr_outputs_wayland_t *ctx) { + mgr_wayland_output_info_t *info, *tmp; + wl_list_for_each_safe(info, tmp, &ctx->outputs, link) { + if (info->xdg_output) + zxdg_output_v1_destroy(info->xdg_output); + if (info->output) + wl_output_release(info->output); + wl_list_remove(&info->link); + free(info); + } + if (ctx->xdg_output_manager) + zxdg_output_manager_v1_destroy(ctx->xdg_output_manager); + if (ctx->registry) + wl_registry_destroy(ctx->registry); + if (ctx->display) + wl_display_disconnect(ctx->display); +} + +static void mgr_refresh_outputs(void) { + mgr_outputs_wayland_t ctx = {0}; + wl_list_init(&ctx.outputs); + + ensure_wayland_display(); + ctx.display = wl_display_connect(NULL); + if (!ctx.display) { + LOG_ERROR("Output refresh: cannot connect to Wayland display"); + return; + } + + double now = mgr_monotime(); + + ctx.registry = wl_display_get_registry(ctx.display); + wl_registry_add_listener(ctx.registry, &mgr_outputs_registry_listener, &ctx); + wl_display_roundtrip(ctx.display); + + if (ctx.xdg_output_manager) { + mgr_wayland_output_info_t *info; + wl_list_for_each(info, &ctx.outputs, link) { + info->xdg_output = zxdg_output_manager_v1_get_xdg_output( + ctx.xdg_output_manager, info->output); + zxdg_output_v1_add_listener(info->xdg_output, + &mgr_xdg_output_listener, info); + } + wl_display_roundtrip(ctx.display); + } + + pthread_mutex_lock(&G.lock); + mgr_wayland_output_info_t *info; + wl_list_for_each(info, &ctx.outputs, link) { + if (info->name[0] == '\0') + continue; + if (!mgr_find_output(info->name) && G.output_count < MAX_OUTPUTS) { + mgr_init_output(&G.outputs[G.output_count++], info->name, now); + LOG_INFO("Discovered output: %s", info->name); + } + } + pthread_mutex_unlock(&G.lock); + + mgr_outputs_wayland_cleanup(&ctx); +} + +static const char *mgr_get_focused_output_from_ipc(void) { + static char buf[MAX_OUTPUT_NAME]; + struct json_object *resp = + mgr_ipc_request("window-rules/get-focused-output", "{}"); + if (!resp) + return NULL; + + const char *result = NULL; + struct json_object *status; + if (json_object_object_get_ex(resp, "result", &status) && + strcmp(json_object_get_string(status), "ok") != 0) + goto out; + + struct json_object *info, *name; + if (json_object_object_get_ex(resp, "info", &info) && + json_object_object_get_ex(info, "name", &name)) { + snprintf(buf, sizeof(buf), "%s", json_object_get_string(name)); + result = buf; + } + +out: + json_object_put(resp); + return result; +} + +static void mgr_update_focused_output(const char *focused) { + if (!focused || focused[0] == '\0') + return; + + pthread_mutex_lock(&G.lock); + bool known = mgr_find_output(focused) != NULL; + pthread_mutex_unlock(&G.lock); + + if (!known) + mgr_refresh_outputs(); + + pthread_mutex_lock(&G.lock); + char old[MAX_OUTPUT_NAME]; + snprintf(old, sizeof(old), "%s", G.focused_output); + snprintf(G.focused_output, sizeof(G.focused_output), "%s", focused); + if (strcmp(old, focused) != 0) { + /* + * Focus shift counts as fresh attention on both monitors: the new one + * is being looked at, and the old one's unfocused timeout starts now. + */ + double now = mgr_monotime(); + mgr_output_info_t *new_o = mgr_find_output(focused); + mgr_output_info_t *old_o = mgr_find_output(old); + if (new_o) new_o->last_input = now; + if (old_o) old_o->last_input = now; + LOG_INFO("Focus moved: %s -> %s", old, focused); + } + pthread_mutex_unlock(&G.lock); +} + +/* ── Screensaver management ────────────────────────────────────────── */ + +static int mgr_pids_alive(mgr_output_info_t *o) { + if (o->pid_count == 0) return 0; + for (int i = 0; i < o->pid_count; i++) { + if (!mgr_pid_alive(o->pids[i])) return 0; + } + return 1; +} + +static void mgr_kill_pids(mgr_output_info_t *o) { + for (int i = 0; i < o->pid_count; i++) { + if (o->pids[i] > 0) + kill(o->pids[i], SIGTERM); + } + o->pid_count = 0; +} + +/* + * Get path to current binary via /proc/self/exe. + */ +static const char *mgr_get_self_exe(void) { + static char path[MAX_PATH_LEN]; + ssize_t n = readlink("/proc/self/exe", path, sizeof(path) - 1); + if (n > 0) { + path[n] = '\0'; + return path; + } + /* Fallback: hope "oledsaver" is in PATH */ + return "oledsaver"; +} + +static void mgr_blank_output(const char *output_name) { + pthread_mutex_lock(&G.lock); + + mgr_output_info_t *o = mgr_find_output(output_name); + if (!o) { + pthread_mutex_unlock(&G.lock); + return; + } + + if (strcmp(o->state, "off") == 0) { + if (mgr_pids_alive(o)) { + pthread_mutex_unlock(&G.lock); + return; + } + G.last_blank_time = mgr_monotime(); + LOG_INFO("[%s] saver died, restarting", output_name); + mgr_kill_pids(o); + } else { + G.last_blank_time = mgr_monotime(); + } + + const char *color = mgr_get_output_color(o); + double min_speed = mgr_get_val_d(o->min_speed, G.matrix_min_speed); + double max_speed = mgr_get_val_d(o->max_speed, G.matrix_max_speed); + int min_trail = mgr_get_val_i(o->min_trail, G.matrix_min_trail); + int max_trail = mgr_get_val_i(o->max_trail, G.matrix_max_trail); + double min_density = mgr_get_val_d(o->min_density, G.matrix_min_density); + double max_density = mgr_get_val_d(o->max_density, G.matrix_max_density); + int depth_layers = G.matrix_depth_layers; + pthread_mutex_unlock(&G.lock); + + const char *bin = mgr_get_self_exe(); + + char font_size_str[16], min_speed_str[16], max_speed_str[16], avg_speed_str[16]; + char min_trail_str[16], max_trail_str[16]; + char min_density_str[16], max_density_str[16]; + char depth_layers_str[16], fade_frames_str[16]; + char layer_near_density_str[16], layer_far_density_str[16]; + snprintf(font_size_str, sizeof(font_size_str), "%d", G.matrix_font_size); + snprintf(min_speed_str, sizeof(min_speed_str), "%.2f", min_speed); + snprintf(max_speed_str, sizeof(max_speed_str), "%.2f", max_speed); + snprintf(avg_speed_str, sizeof(avg_speed_str), "%.2f", G.matrix_avg_speed); + snprintf(min_trail_str, sizeof(min_trail_str), "%d", min_trail); + snprintf(max_trail_str, sizeof(max_trail_str), "%d", max_trail); + snprintf(min_density_str, sizeof(min_density_str), "%.2f", min_density); + snprintf(max_density_str, sizeof(max_density_str), "%.2f", max_density); + snprintf(depth_layers_str, sizeof(depth_layers_str), "%d", depth_layers); + snprintf(fade_frames_str, sizeof(fade_frames_str), "%d", G.matrix_fade_frames); + snprintf(layer_near_density_str, sizeof(layer_near_density_str), "%.2f", G.matrix_layer_near_density); + snprintf(layer_far_density_str, sizeof(layer_far_density_str), "%.2f", G.matrix_layer_far_density); + + pid_t pid = fork(); + if (pid < 0) { + LOG_ERROR("[%s] fork failed: %s", output_name, strerror(errno)); + return; + } + + if (pid == 0) { + /* Child: exec self in render mode */ + int devnull = open("/dev/null", O_RDWR); + if (devnull >= 0) { + dup2(devnull, STDOUT_FILENO); + dup2(devnull, STDERR_FILENO); + close(devnull); + } + execl(bin, "oledsaver", + "--render", + "--output", output_name, + "--color", color, + "--font-size", font_size_str, + "--min-speed", min_speed_str, + "--max-speed", max_speed_str, + "--avg-speed", avg_speed_str, + "--min-trail", min_trail_str, + "--max-trail", max_trail_str, + "--min-density", min_density_str, + "--max-density", max_density_str, + "--depth-layers", depth_layers_str, + "--fade-frames", fade_frames_str, + "--layer-near-density", layer_near_density_str, + "--layer-far-density", layer_far_density_str, + (char *)NULL); + _exit(127); + } + + /* Parent: wait briefly to check if it exits immediately */ + usleep(500000); + int status; + pid_t w = waitpid(pid, &status, WNOHANG); + if (w > 0) { + LOG_WARNING("[%s] renderer exited immediately", output_name); + return; + } + + pthread_mutex_lock(&G.lock); + o = mgr_find_output(output_name); + if (o) { + o->pids[0] = pid; + o->pid_count = 1; + strcpy(o->state, "off"); + LOG_INFO("[%s] matrix screensaver active (PID %d, color=%s, speed=%.1f-%.1f, depth=%d)", + output_name, pid, color, min_speed, max_speed, depth_layers); + } + pthread_mutex_unlock(&G.lock); +} + +static void mgr_unblank_output(const char *output_name) { + pthread_mutex_lock(&G.lock); + + mgr_output_info_t *o = mgr_find_output(output_name); + if (!o || strcmp(o->state, "on") == 0) { + pthread_mutex_unlock(&G.lock); + return; + } + + /* Send SIGUSR1 to trigger fade-out in renderer processes */ + for (int i = 0; i < o->pid_count; i++) { + if (o->pids[i] > 0) + kill(o->pids[i], SIGUSR1); + } + + /* Save pids and count for waiting outside the lock */ + pid_t pids[MAX_PIDS]; + int pid_count = o->pid_count; + for (int i = 0; i < pid_count; i++) + pids[i] = o->pids[i]; + + pthread_mutex_unlock(&G.lock); + + /* Wait up to 3 seconds for renderers to exit (fade-out + fade-to-desktop) */ + int wait_ms = 3000; + int poll_interval_ms = 50; + bool all_exited = false; + + for (int elapsed = 0; elapsed < wait_ms; elapsed += poll_interval_ms) { + all_exited = true; + for (int i = 0; i < pid_count; i++) { + if (pids[i] <= 0) continue; + int status; + pid_t ret = waitpid(pids[i], &status, WNOHANG); + if (ret > 0) { + pids[i] = 0; /* mark as reaped */ + } else if (ret == 0) { + all_exited = false; /* still running */ + } else { + pids[i] = 0; /* error or already reaped */ + } + } + if (all_exited) break; + usleep((useconds_t)(poll_interval_ms * 1000)); + } + + /* Fallback: SIGTERM any remaining processes */ + pthread_mutex_lock(&G.lock); + if (!all_exited) { + for (int i = 0; i < pid_count; i++) { + if (pids[i] > 0) + kill(pids[i], SIGTERM); + } + } + /* Clear the pid list */ + o->pid_count = 0; + strcpy(o->state, "on"); + pthread_mutex_unlock(&G.lock); + + LOG_INFO("[%s] unblanked", output_name); +} + +/* ── Focus watcher thread ──────────────────────────────────────────── */ + +static const char *mgr_focus_name_from_event(struct json_object *event, + char *buf, size_t bufsz) { + struct json_object *event_name_obj; + const char *event_name = NULL; + + if (json_object_object_get_ex(event, "event", &event_name_obj)) + event_name = json_object_get_string(event_name_obj); + + if (!event_name) + return NULL; + + if (strcmp(event_name, "output-added") == 0 || + strcmp(event_name, "output-removed") == 0) { + mgr_refresh_outputs(); + return NULL; + } + + if (strcmp(event_name, "output-gain-focus") == 0) { + struct json_object *output, *name; + if (json_object_object_get_ex(event, "output", &output) && + json_object_object_get_ex(output, "name", &name)) { + snprintf(buf, bufsz, "%s", json_object_get_string(name)); + return buf; + } + return NULL; + } + + if (strcmp(event_name, "view-focused") == 0) { + struct json_object *view, *name; + if (json_object_object_get_ex(event, "view", &view) && + json_object_object_get_ex(view, "output-name", &name)) { + snprintf(buf, bufsz, "%s", json_object_get_string(name)); + return buf; + } + + return mgr_get_focused_output_from_ipc(); + } + + return NULL; +} + +static void *mgr_focus_watcher(void *arg) { + (void)arg; + + while (!G.stop) { + int fd = mgr_ipc_connect(); + if (fd < 0) { + LOG_ERROR("Focus watcher: cannot connect to Wayfire IPC"); + sleep(2); + continue; + } + + if (mgr_ipc_send_method(fd, "window-rules/events/watch", + "{\"events\":[\"view-focused\",\"output-gain-focus\"," + "\"output-added\",\"output-removed\"]}") < 0) { + close(fd); + sleep(2); + continue; + } + + char *resp = NULL; + if (mgr_ipc_recv(fd, &resp) < 0) { + free(resp); + close(fd); + sleep(2); + continue; + } + + struct json_object *ack = json_tokener_parse(resp); + free(resp); + if (ack) { + struct json_object *status; + if (json_object_object_get_ex(ack, "result", &status) && + strcmp(json_object_get_string(status), "ok") != 0) { + LOG_ERROR("Focus watcher: Wayfire event watch rejected: %s", + json_object_to_json_string_ext( + ack, JSON_C_TO_STRING_PLAIN)); + json_object_put(ack); + close(fd); + sleep(2); + continue; + } + json_object_put(ack); + } + + LOG_INFO("Focus watcher: using Wayfire IPC events"); + + while (!G.stop) { + char *payload = NULL; + if (mgr_ipc_recv(fd, &payload) < 0) { + free(payload); + break; + } + + struct json_object *event = json_tokener_parse(payload); + free(payload); + if (!event) + continue; + + char focused_buf[MAX_OUTPUT_NAME]; + const char *focused = + mgr_focus_name_from_event(event, focused_buf, sizeof(focused_buf)); + json_object_put(event); + if (focused) { + mgr_update_focused_output(focused); + } + } + + close(fd); + } + + return NULL; +} + +/* ── Idle watcher thread ───────────────────────────────────────────── */ + +typedef struct { + struct wl_display *display; + struct wl_registry *registry; + struct wl_seat *seat; + struct ext_idle_notifier_v1 *notifier; + struct ext_idle_notification_v1 *notification; + uint32_t notifier_version; + uint32_t seat_version; +} mgr_idle_wayland_t; + +static void mgr_idle_handle_idled(void *data, + struct ext_idle_notification_v1 *notification) { + (void)data; + (void)notification; + + pthread_mutex_lock(&G.lock); + G.seat_idle = 1; + pthread_mutex_unlock(&G.lock); +} + +static void mgr_idle_handle_resumed(void *data, + struct ext_idle_notification_v1 *notification) { + (void)data; + (void)notification; + + double now = mgr_monotime(); + + pthread_mutex_lock(&G.lock); + G.seat_idle = 0; + if ((now - G.last_blank_time) >= 3.0) { + for (int i = 0; i < G.output_count; i++) + G.outputs[i].last_input = now; + } + pthread_mutex_unlock(&G.lock); +} + +static const struct ext_idle_notification_v1_listener mgr_idle_listener = { + .idled = mgr_idle_handle_idled, + .resumed = mgr_idle_handle_resumed, +}; + +static void mgr_idle_registry_handle_global(void *data, + struct wl_registry *registry, uint32_t name, + const char *interface, uint32_t version) { + mgr_idle_wayland_t *idle = data; + + if (strcmp(interface, wl_seat_interface.name) == 0 && !idle->seat) { + idle->seat_version = version < 7 ? version : 7; + idle->seat = wl_registry_bind(registry, name, + &wl_seat_interface, idle->seat_version); + } else if (strcmp(interface, ext_idle_notifier_v1_interface.name) == 0 && + !idle->notifier) { + idle->notifier_version = version < 2 ? version : 2; + idle->notifier = wl_registry_bind(registry, name, + &ext_idle_notifier_v1_interface, idle->notifier_version); + } +} + +static void mgr_idle_registry_handle_global_remove(void *data, + struct wl_registry *registry, uint32_t name) { + (void)data; + (void)registry; + (void)name; +} + +static const struct wl_registry_listener mgr_idle_registry_listener = { + .global = mgr_idle_registry_handle_global, + .global_remove = mgr_idle_registry_handle_global_remove, +}; + +static void mgr_idle_wayland_cleanup(mgr_idle_wayland_t *idle) { + if (idle->notification) + ext_idle_notification_v1_destroy(idle->notification); + if (idle->notifier) + ext_idle_notifier_v1_destroy(idle->notifier); + if (idle->seat) { + if (idle->seat_version >= WL_SEAT_RELEASE_SINCE_VERSION) + wl_seat_release(idle->seat); + else + wl_seat_destroy(idle->seat); + } + if (idle->registry) + wl_registry_destroy(idle->registry); + if (idle->display) + wl_display_disconnect(idle->display); + memset(idle, 0, sizeof(*idle)); +} + +static void *mgr_idle_watcher(void *arg) { + (void)arg; + + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); + pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL); + + while (!G.stop) { + mgr_idle_wayland_t idle = {0}; + + idle.display = wl_display_connect(NULL); + if (!idle.display) { + LOG_ERROR("Idle watcher: cannot connect to Wayland display"); + sleep(2); + continue; + } + + idle.registry = wl_display_get_registry(idle.display); + wl_registry_add_listener(idle.registry, &mgr_idle_registry_listener, &idle); + wl_display_roundtrip(idle.display); + + if (!idle.notifier || !idle.seat) { + LOG_ERROR("Idle watcher: compositor lacks ext-idle-notify-v1 or wl_seat"); + mgr_idle_wayland_cleanup(&idle); + sleep(5); + continue; + } + + idle.notification = ext_idle_notifier_v1_get_idle_notification( + idle.notifier, 2000, idle.seat); + ext_idle_notification_v1_add_listener(idle.notification, + &mgr_idle_listener, NULL); + wl_display_flush(idle.display); + + LOG_INFO("Idle watcher: using ext-idle-notify-v1"); + + while (!G.stop) { + int rc = wl_display_dispatch(idle.display); + if (rc < 0) { + LOG_ERROR("Idle watcher: Wayland dispatch failed"); + break; + } + } + + mgr_idle_wayland_cleanup(&idle); + if (!G.stop) + sleep(2); + } + + return NULL; +} + +/* ── Manager signal handling ───────────────────────────────────────── */ + +static void mgr_signal_handler(int sig) { + if (sig == SIGUSR1) + G.activate_all = 1; + else if (sig == SIGUSR2) + G.lock_now = 1; + else + G.stop = 1; +} + +/* ── Lock command ──────────────────────────────────────────────────── */ + +static void mgr_run_lock_cmd(void) { + if (G.lock_cmd[0] == '\0') { + LOG_WARNING("Lock requested but no LOCK_CMD configured"); + return; + } + LOG_INFO("Running lock command: %s", G.lock_cmd); + pid_t pid = fork(); + if (pid == 0) { + setsid(); + execlp("/bin/sh", "sh", "-c", G.lock_cmd, (char *)NULL); + _exit(127); + } else if (pid > 0) { + LOG_INFO("Lock command started (PID %d)", pid); + } else { + LOG_ERROR("Failed to fork for lock command: %s", strerror(errno)); + } +} + +/* + * Blank all outputs immediately (for activate/lock triggers). + */ +static void mgr_activate_all_outputs(void) { + pthread_mutex_lock(&G.lock); + G.seat_idle = 1; + G.last_blank_time = mgr_monotime(); + int n = G.output_count; + char names[MAX_OUTPUTS][MAX_OUTPUT_NAME]; + for (int i = 0; i < n; i++) + snprintf(names[i], MAX_OUTPUT_NAME, "%s", G.outputs[i].name); + pthread_mutex_unlock(&G.lock); + + for (int i = 0; i < n; i++) + mgr_blank_output(names[i]); + + LOG_INFO("All outputs activated (screensaver forced on)"); +} + +/* ── PID file for signal delivery ──────────────────────────────────── */ + +static void mgr_write_pidfile(void) { + char path[MAX_PATH_LEN]; + mgr_runtime_path(path, sizeof(path), "pid"); + + FILE *f = fopen(path, "w"); + if (f) { + fprintf(f, "%d\n", getpid()); + fclose(f); + } +} + +static void mgr_remove_pidfile(void) { + char path[MAX_PATH_LEN]; + mgr_runtime_path(path, sizeof(path), "pid"); + unlink(path); +} + +static pid_t mgr_read_pidfile(void) { + char path[MAX_PATH_LEN]; + mgr_runtime_path(path, sizeof(path), "pid"); + + FILE *f = fopen(path, "r"); + if (!f) return -1; + int pid = 0; + if (fscanf(f, "%d", &pid) != 1) pid = -1; + fclose(f); + return (pid_t)pid; +} + +/* ── Zombie reaper ─────────────────────────────────────────────────── */ + +static void mgr_reap_children(void) { + int status; + while (waitpid(-1, &status, WNOHANG) > 0) + ; +} + +/* ── Manager main ──────────────────────────────────────────────────── */ + +static int manager_main(void) { + srand(time(NULL)); + + memset(&G, 0, sizeof(G)); + pthread_mutex_init(&G.lock, NULL); + ensure_wayland_display(); + + mgr_set_defaults(); + mgr_load_config(); + + /* Setup logging */ + { + char logdir[MAX_PATH_LEN]; + snprintf(logdir, sizeof(logdir), "%s", G.log_file); + char *slash = strrchr(logdir, '/'); + if (slash) { + *slash = '\0'; + mgr_mkdirs(logdir); + } + } + G.log_fp = fopen(G.log_file, "w"); + if (!G.log_fp) + fprintf(stderr, "Warning: cannot open log file %s: %s\n", G.log_file, strerror(errno)); + + /* Signal handlers */ + struct sigaction sa; + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = mgr_signal_handler; + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + sigaction(SIGUSR1, &sa, NULL); + sigaction(SIGUSR2, &sa, NULL); + + signal(SIGPIPE, SIG_IGN); + + mgr_write_pidfile(); + + /* Initialize outputs, then re-read config for per-output overrides */ + mgr_refresh_outputs(); + G.config_mtime = 0; + mgr_load_config(); + + const char *focused = mgr_get_focused_output_from_ipc(); + pthread_mutex_lock(&G.lock); + if (focused) + snprintf(G.focused_output, sizeof(G.focused_output), "%s", focused); + pthread_mutex_unlock(&G.lock); + + /* Log startup */ + { + char outlist[512] = ""; + for (int i = 0; i < G.output_count; i++) { + if (i > 0) strcat(outlist, ", "); + strcat(outlist, G.outputs[i].name); + } + LOG_INFO("Started — outputs: [%s], focused: %s", outlist, G.focused_output); + } + + /* Start threads */ + pthread_t focus_tid, idle_tid; + pthread_create(&focus_tid, NULL, mgr_focus_watcher, NULL); + pthread_create(&idle_tid, NULL, mgr_idle_watcher, NULL); + + double last_config_check = 0; + double last_cursor_check = 0; + + while (!G.stop) { + double now = mgr_monotime(); + + if (now - last_config_check > 10) { + mgr_load_config(); + last_config_check = now; + } + + mgr_reap_children(); + + /* Handle activate/lock signals */ + if (G.lock_now) { + G.lock_now = 0; + G.activate_all = 0; /* lock implies activate */ + mgr_activate_all_outputs(); + mgr_run_lock_cmd(); + } else if (G.activate_all) { + G.activate_all = 0; + mgr_activate_all_outputs(); + } + + int inhibited = mgr_check_idle_inhibitors(); + + pthread_mutex_lock(&G.lock); + char focused_buf[MAX_OUTPUT_NAME]; + snprintf(focused_buf, sizeof(focused_buf), "%s", G.focused_output); + int idle = G.seat_idle; + + if (!idle) { + mgr_output_info_t *fo = mgr_find_output(focused_buf); + if (fo) fo->last_input = now; + } + + int n = G.output_count; + char names[MAX_OUTPUTS][MAX_OUTPUT_NAME]; + double last_inputs[MAX_OUTPUTS]; + char states[MAX_OUTPUTS][8]; + int timeouts[MAX_OUTPUTS]; + int is_focused[MAX_OUTPUTS]; + + for (int i = 0; i < n; i++) { + snprintf(names[i], MAX_OUTPUT_NAME, "%s", G.outputs[i].name); + last_inputs[i] = G.outputs[i].last_input; + snprintf(states[i], 8, "%s", G.outputs[i].state); + is_focused[i] = (strcmp(names[i], focused_buf) == 0); + if (is_focused[i]) + timeouts[i] = G.focused_timeout; + else + timeouts[i] = mgr_get_output_timeout(&G.outputs[i]); + } + pthread_mutex_unlock(&G.lock); + + for (int i = 0; i < n; i++) { + double idle_secs = now - last_inputs[i]; + + if (idle_secs >= timeouts[i] && !inhibited) { + mgr_blank_output(names[i]); + } else { + if (strcmp(states[i], "off") == 0 && is_focused[i]) { + mgr_unblank_output(names[i]); + } + } + } + + if (now - last_cursor_check >= CURSOR_POLL_INTERVAL) { + mgr_update_wayfire_cursor(); + last_cursor_check = now; + } + + for (int s = 0; s < G.check_interval * 10 && !G.stop; s++) { + usleep(100000); + + double wait_now = mgr_monotime(); + if (wait_now - last_cursor_check >= CURSOR_POLL_INTERVAL) { + mgr_update_wayfire_cursor(); + last_cursor_check = wait_now; + } + + pthread_mutex_lock(&G.lock); + int idle_now = G.seat_idle; + int any_blanked = 0; + if (!idle_now) { + for (int i = 0; i < G.output_count; i++) { + if (strcmp(G.outputs[i].state, "off") == 0) { + any_blanked = 1; + break; + } + } + } + pthread_mutex_unlock(&G.lock); + if (!idle_now && any_blanked) break; + } + } + + /* Clean shutdown */ + LOG_INFO("Shutting down..."); + for (int i = 0; i < G.output_count; i++) + mgr_unblank_output(G.outputs[i].name); + mgr_release_wayfire_cursor(); + + pthread_cancel(focus_tid); + pthread_cancel(idle_tid); + + mgr_remove_pidfile(); + if (G.log_fp) fclose(G.log_fp); + pthread_mutex_destroy(&G.lock); + + return 0; +} + +/* =================================================================== + * ENTRY POINT — dispatch to manager or renderer + * =================================================================== */ + +int main(int argc, char **argv) { + for (int i = 1; i < argc; i++) { + if (strcmp(argv[i], "--render") == 0) { + return renderer_main(argc, argv); + } + if (strcmp(argv[i], "--activate") == 0) { + pid_t pid = mgr_read_pidfile(); + if (pid <= 0 || kill(pid, 0) != 0) { + fprintf(stderr, "oledsaver: no running manager found\n"); + return 1; + } + kill(pid, SIGUSR1); + printf("Sent activate to oledsaver (PID %d)\n", pid); + return 0; + } + if (strcmp(argv[i], "--lock") == 0) { + pid_t pid = mgr_read_pidfile(); + if (pid <= 0 || kill(pid, 0) != 0) { + fprintf(stderr, "oledsaver: no running manager found\n"); + return 1; + } + kill(pid, SIGUSR2); + printf("Sent lock to oledsaver (PID %d)\n", pid); + return 0; + } + } + + /* No --render/--activate/--lock flag → manager mode */ + (void)argc; + return manager_main(); +} diff --git a/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-client-protocol.h b/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-client-protocol.h new file mode 100644 index 000000000000..a47b9b35cab4 --- /dev/null +++ b/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-client-protocol.h @@ -0,0 +1,599 @@ +/* Generated by wayland-scanner 1.25.0 */ + +#ifndef WLR_LAYER_SHELL_UNSTABLE_V1_CLIENT_PROTOCOL_H +#define WLR_LAYER_SHELL_UNSTABLE_V1_CLIENT_PROTOCOL_H + +#include <stdint.h> +#include <stddef.h> +#include "wayland-client.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @page page_wlr_layer_shell_unstable_v1 The wlr_layer_shell_unstable_v1 protocol + * @section page_ifaces_wlr_layer_shell_unstable_v1 Interfaces + * - @subpage page_iface_zwlr_layer_shell_v1 - create surfaces that are layers of the desktop + * - @subpage page_iface_zwlr_layer_surface_v1 - layer metadata interface + * @section page_copyright_wlr_layer_shell_unstable_v1 Copyright + * <pre> + * + * Copyright © 2017 Drew DeVault + * + * Permission to use, copy, modify, distribute, and sell this + * software and its documentation for any purpose is hereby granted + * without fee, provided that the above copyright notice appear in + * all copies and that both that copyright notice and this permission + * notice appear in supporting documentation, and that the name of + * the copyright holders not be used in advertising or publicity + * pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied + * warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF + * THIS SOFTWARE. + * </pre> + */ +struct wl_output; +struct wl_surface; +struct xdg_popup; +struct zwlr_layer_shell_v1; +struct zwlr_layer_surface_v1; + +#ifndef ZWLR_LAYER_SHELL_V1_INTERFACE +#define ZWLR_LAYER_SHELL_V1_INTERFACE +/** + * @page page_iface_zwlr_layer_shell_v1 zwlr_layer_shell_v1 + * @section page_iface_zwlr_layer_shell_v1_desc Description + * + * Clients can use this interface to assign the surface_layer role to + * wl_surfaces. Such surfaces are assigned to a "layer" of the output and + * rendered with a defined z-depth respective to each other. They may also be + * anchored to the edges and corners of a screen and specify input handling + * semantics. This interface should be suitable for the implementation of + * many desktop shell components, and a broad number of other applications + * that interact with the desktop. + * @section page_iface_zwlr_layer_shell_v1_api API + * See @ref iface_zwlr_layer_shell_v1. + */ +/** + * @defgroup iface_zwlr_layer_shell_v1 The zwlr_layer_shell_v1 interface + * + * Clients can use this interface to assign the surface_layer role to + * wl_surfaces. Such surfaces are assigned to a "layer" of the output and + * rendered with a defined z-depth respective to each other. They may also be + * anchored to the edges and corners of a screen and specify input handling + * semantics. This interface should be suitable for the implementation of + * many desktop shell components, and a broad number of other applications + * that interact with the desktop. + */ +extern const struct wl_interface zwlr_layer_shell_v1_interface; +#endif +#ifndef ZWLR_LAYER_SURFACE_V1_INTERFACE +#define ZWLR_LAYER_SURFACE_V1_INTERFACE +/** + * @page page_iface_zwlr_layer_surface_v1 zwlr_layer_surface_v1 + * @section page_iface_zwlr_layer_surface_v1_desc Description + * + * An interface that may be implemented by a wl_surface, for surfaces that + * are designed to be rendered as a layer of a stacked desktop-like + * environment. + * + * Layer surface state (layer, size, anchor, exclusive zone, + * margin, interactivity) is double-buffered, and will be applied at the + * time wl_surface.commit of the corresponding wl_surface is called. + * @section page_iface_zwlr_layer_surface_v1_api API + * See @ref iface_zwlr_layer_surface_v1. + */ +/** + * @defgroup iface_zwlr_layer_surface_v1 The zwlr_layer_surface_v1 interface + * + * An interface that may be implemented by a wl_surface, for surfaces that + * are designed to be rendered as a layer of a stacked desktop-like + * environment. + * + * Layer surface state (layer, size, anchor, exclusive zone, + * margin, interactivity) is double-buffered, and will be applied at the + * time wl_surface.commit of the corresponding wl_surface is called. + */ +extern const struct wl_interface zwlr_layer_surface_v1_interface; +#endif + +#ifndef ZWLR_LAYER_SHELL_V1_ERROR_ENUM +#define ZWLR_LAYER_SHELL_V1_ERROR_ENUM +enum zwlr_layer_shell_v1_error { + /** + * wl_surface has another role + */ + ZWLR_LAYER_SHELL_V1_ERROR_ROLE = 0, + /** + * layer value is invalid + */ + ZWLR_LAYER_SHELL_V1_ERROR_INVALID_LAYER = 1, + /** + * wl_surface has a buffer attached or committed + */ + ZWLR_LAYER_SHELL_V1_ERROR_ALREADY_CONSTRUCTED = 2, +}; +#endif /* ZWLR_LAYER_SHELL_V1_ERROR_ENUM */ + +#ifndef ZWLR_LAYER_SHELL_V1_LAYER_ENUM +#define ZWLR_LAYER_SHELL_V1_LAYER_ENUM +/** + * @ingroup iface_zwlr_layer_shell_v1 + * available layers for surfaces + * + * These values indicate which layers a surface can be rendered in. They + * are ordered by z depth, bottom-most first. Traditional shell surfaces + * will typically be rendered between the bottom and top layers. + * Fullscreen shell surfaces are typically rendered at the top layer. + * Multiple surfaces can share a single layer, and ordering within a + * single layer is undefined. + */ +enum zwlr_layer_shell_v1_layer { + ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND = 0, + ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM = 1, + ZWLR_LAYER_SHELL_V1_LAYER_TOP = 2, + ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY = 3, +}; +#endif /* ZWLR_LAYER_SHELL_V1_LAYER_ENUM */ + +#define ZWLR_LAYER_SHELL_V1_GET_LAYER_SURFACE 0 +#define ZWLR_LAYER_SHELL_V1_DESTROY 1 + + +/** + * @ingroup iface_zwlr_layer_shell_v1 + */ +#define ZWLR_LAYER_SHELL_V1_GET_LAYER_SURFACE_SINCE_VERSION 1 +/** + * @ingroup iface_zwlr_layer_shell_v1 + */ +#define ZWLR_LAYER_SHELL_V1_DESTROY_SINCE_VERSION 3 + +/** @ingroup iface_zwlr_layer_shell_v1 */ +static inline void +zwlr_layer_shell_v1_set_user_data(struct zwlr_layer_shell_v1 *zwlr_layer_shell_v1, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zwlr_layer_shell_v1, user_data); +} + +/** @ingroup iface_zwlr_layer_shell_v1 */ +static inline void * +zwlr_layer_shell_v1_get_user_data(struct zwlr_layer_shell_v1 *zwlr_layer_shell_v1) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zwlr_layer_shell_v1); +} + +static inline uint32_t +zwlr_layer_shell_v1_get_version(struct zwlr_layer_shell_v1 *zwlr_layer_shell_v1) +{ + return wl_proxy_get_version((struct wl_proxy *) zwlr_layer_shell_v1); +} + +/** + * @ingroup iface_zwlr_layer_shell_v1 + * + * Create a layer surface for an existing surface. This assigns the role of + * layer_surface, or raises a protocol error if another role is already + * assigned. + * + * Creating a layer surface from a wl_surface which has a buffer attached + * or committed is a client error, and any attempts by a client to attach + * or manipulate a buffer prior to the first layer_surface.configure call + * must also be treated as errors. + * + * You may pass NULL for output to allow the compositor to decide which + * output to use. Generally this will be the one that the user most + * recently interacted with. + * + * Clients can specify a namespace that defines the purpose of the layer + * surface. + */ +static inline struct zwlr_layer_surface_v1 * +zwlr_layer_shell_v1_get_layer_surface(struct zwlr_layer_shell_v1 *zwlr_layer_shell_v1, struct wl_surface *surface, struct wl_output *output, uint32_t layer, const char *namespace) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_flags((struct wl_proxy *) zwlr_layer_shell_v1, + ZWLR_LAYER_SHELL_V1_GET_LAYER_SURFACE, &zwlr_layer_surface_v1_interface, wl_proxy_get_version((struct wl_proxy *) zwlr_layer_shell_v1), 0, NULL, surface, output, layer, namespace); + + return (struct zwlr_layer_surface_v1 *) id; +} + +/** + * @ingroup iface_zwlr_layer_shell_v1 + * + * This request indicates that the client will not use the layer_shell + * object any more. Objects that have been created through this instance + * are not affected. + */ +static inline void +zwlr_layer_shell_v1_destroy(struct zwlr_layer_shell_v1 *zwlr_layer_shell_v1) +{ + wl_proxy_marshal_flags((struct wl_proxy *) zwlr_layer_shell_v1, + ZWLR_LAYER_SHELL_V1_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) zwlr_layer_shell_v1), WL_MARSHAL_FLAG_DESTROY); +} + +#ifndef ZWLR_LAYER_SURFACE_V1_ERROR_ENUM +#define ZWLR_LAYER_SURFACE_V1_ERROR_ENUM +enum zwlr_layer_surface_v1_error { + /** + * provided surface state is invalid + */ + ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_SURFACE_STATE = 0, + /** + * size is invalid + */ + ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_SIZE = 1, + /** + * anchor bitfield is invalid + */ + ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_ANCHOR = 2, +}; +#endif /* ZWLR_LAYER_SURFACE_V1_ERROR_ENUM */ + +#ifndef ZWLR_LAYER_SURFACE_V1_ANCHOR_ENUM +#define ZWLR_LAYER_SURFACE_V1_ANCHOR_ENUM +enum zwlr_layer_surface_v1_anchor { + /** + * the top edge of the anchor rectangle + */ + ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP = 1, + /** + * the bottom edge of the anchor rectangle + */ + ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM = 2, + /** + * the left edge of the anchor rectangle + */ + ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT = 4, + /** + * the right edge of the anchor rectangle + */ + ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT = 8, +}; +#endif /* ZWLR_LAYER_SURFACE_V1_ANCHOR_ENUM */ + +/** + * @ingroup iface_zwlr_layer_surface_v1 + * @struct zwlr_layer_surface_v1_listener + */ +struct zwlr_layer_surface_v1_listener { + /** + * suggest a surface change + * + * The configure event asks the client to resize its surface. + * + * Clients should arrange their surface for the new states, and + * then send an ack_configure request with the serial sent in this + * configure event at some point before committing the new surface. + * + * The client is free to dismiss all but the last configure event + * it received. + * + * The width and height arguments specify the size of the window in + * surface-local coordinates. + * + * The size is a hint, in the sense that the client is free to + * ignore it if it doesn't resize, pick a smaller size (to satisfy + * aspect ratio or resize in steps of NxM pixels). If the client + * picks a smaller size and is anchored to two opposite anchors + * (e.g. 'top' and 'bottom'), the surface will be centered on this + * axis. + * + * If the width or height arguments are zero, it means the client + * should decide its own window dimension. + */ + void (*configure)(void *data, + struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, + uint32_t serial, + uint32_t width, + uint32_t height); + /** + * surface should be closed + * + * The closed event is sent by the compositor when the surface + * will no longer be shown. The output may have been destroyed or + * the user may have asked for it to be removed. Further changes to + * the surface will be ignored. The client should destroy the + * resource after receiving this event, and create a new surface if + * they so choose. + */ + void (*closed)(void *data, + struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1); +}; + +/** + * @ingroup iface_zwlr_layer_surface_v1 + */ +static inline int +zwlr_layer_surface_v1_add_listener(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, + const struct zwlr_layer_surface_v1_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) zwlr_layer_surface_v1, + (void (**)(void)) listener, data); +} + +#define ZWLR_LAYER_SURFACE_V1_SET_SIZE 0 +#define ZWLR_LAYER_SURFACE_V1_SET_ANCHOR 1 +#define ZWLR_LAYER_SURFACE_V1_SET_EXCLUSIVE_ZONE 2 +#define ZWLR_LAYER_SURFACE_V1_SET_MARGIN 3 +#define ZWLR_LAYER_SURFACE_V1_SET_KEYBOARD_INTERACTIVITY 4 +#define ZWLR_LAYER_SURFACE_V1_GET_POPUP 5 +#define ZWLR_LAYER_SURFACE_V1_ACK_CONFIGURE 6 +#define ZWLR_LAYER_SURFACE_V1_DESTROY 7 +#define ZWLR_LAYER_SURFACE_V1_SET_LAYER 8 + +/** + * @ingroup iface_zwlr_layer_surface_v1 + */ +#define ZWLR_LAYER_SURFACE_V1_CONFIGURE_SINCE_VERSION 1 +/** + * @ingroup iface_zwlr_layer_surface_v1 + */ +#define ZWLR_LAYER_SURFACE_V1_CLOSED_SINCE_VERSION 1 + +/** + * @ingroup iface_zwlr_layer_surface_v1 + */ +#define ZWLR_LAYER_SURFACE_V1_SET_SIZE_SINCE_VERSION 1 +/** + * @ingroup iface_zwlr_layer_surface_v1 + */ +#define ZWLR_LAYER_SURFACE_V1_SET_ANCHOR_SINCE_VERSION 1 +/** + * @ingroup iface_zwlr_layer_surface_v1 + */ +#define ZWLR_LAYER_SURFACE_V1_SET_EXCLUSIVE_ZONE_SINCE_VERSION 1 +/** + * @ingroup iface_zwlr_layer_surface_v1 + */ +#define ZWLR_LAYER_SURFACE_V1_SET_MARGIN_SINCE_VERSION 1 +/** + * @ingroup iface_zwlr_layer_surface_v1 + */ +#define ZWLR_LAYER_SURFACE_V1_SET_KEYBOARD_INTERACTIVITY_SINCE_VERSION 1 +/** + * @ingroup iface_zwlr_layer_surface_v1 + */ +#define ZWLR_LAYER_SURFACE_V1_GET_POPUP_SINCE_VERSION 1 +/** + * @ingroup iface_zwlr_layer_surface_v1 + */ +#define ZWLR_LAYER_SURFACE_V1_ACK_CONFIGURE_SINCE_VERSION 1 +/** + * @ingroup iface_zwlr_layer_surface_v1 + */ +#define ZWLR_LAYER_SURFACE_V1_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_zwlr_layer_surface_v1 + */ +#define ZWLR_LAYER_SURFACE_V1_SET_LAYER_SINCE_VERSION 2 + +/** @ingroup iface_zwlr_layer_surface_v1 */ +static inline void +zwlr_layer_surface_v1_set_user_data(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zwlr_layer_surface_v1, user_data); +} + +/** @ingroup iface_zwlr_layer_surface_v1 */ +static inline void * +zwlr_layer_surface_v1_get_user_data(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zwlr_layer_surface_v1); +} + +static inline uint32_t +zwlr_layer_surface_v1_get_version(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1) +{ + return wl_proxy_get_version((struct wl_proxy *) zwlr_layer_surface_v1); +} + +/** + * @ingroup iface_zwlr_layer_surface_v1 + * + * Sets the size of the surface in surface-local coordinates. The + * compositor will display the surface centered with respect to its + * anchors. + * + * If you pass 0 for either value, the compositor will assign it and + * inform you of the assignment in the configure event. You must set your + * anchor to opposite edges in the dimensions you omit; not doing so is a + * protocol error. Both values are 0 by default. + * + * Size is double-buffered, see wl_surface.commit. + */ +static inline void +zwlr_layer_surface_v1_set_size(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, uint32_t width, uint32_t height) +{ + wl_proxy_marshal_flags((struct wl_proxy *) zwlr_layer_surface_v1, + ZWLR_LAYER_SURFACE_V1_SET_SIZE, NULL, wl_proxy_get_version((struct wl_proxy *) zwlr_layer_surface_v1), 0, width, height); +} + +/** + * @ingroup iface_zwlr_layer_surface_v1 + * + * Requests that the compositor anchor the surface to the specified edges + * and corners. If two orthogonal edges are specified (e.g. 'top' and + * 'left'), then the anchor point will be the intersection of the edges + * (e.g. the top left corner of the output); otherwise the anchor point + * will be centered on that edge, or in the center if none is specified. + * + * Anchor is double-buffered, see wl_surface.commit. + */ +static inline void +zwlr_layer_surface_v1_set_anchor(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, uint32_t anchor) +{ + wl_proxy_marshal_flags((struct wl_proxy *) zwlr_layer_surface_v1, + ZWLR_LAYER_SURFACE_V1_SET_ANCHOR, NULL, wl_proxy_get_version((struct wl_proxy *) zwlr_layer_surface_v1), 0, anchor); +} + +/** + * @ingroup iface_zwlr_layer_surface_v1 + * + * Requests that the compositor avoids occluding an area with other + * surfaces. The compositor's use of this information is + * implementation-dependent - do not assume that this region will not + * actually be occluded. + * + * A positive value is only meaningful if the surface is anchored to one + * edge or an edge and both perpendicular edges. If the surface is not + * anchored, anchored to only two perpendicular edges (a corner), anchored + * to only two parallel edges or anchored to all edges, a positive value + * will be treated the same as zero. + * + * A positive zone is the distance from the edge in surface-local + * coordinates to consider exclusive. + * + * Surfaces that do not wish to have an exclusive zone may instead specify + * how they should interact with surfaces that do. If set to zero, the + * surface indicates that it would like to be moved to avoid occluding + * surfaces with a positive exclusive zone. If set to -1, the surface + * indicates that it would not like to be moved to accommodate for other + * surfaces, and the compositor should extend it all the way to the edges + * it is anchored to. + * + * For example, a panel might set its exclusive zone to 10, so that + * maximized shell surfaces are not shown on top of it. A notification + * might set its exclusive zone to 0, so that it is moved to avoid + * occluding the panel, but shell surfaces are shown underneath it. A + * wallpaper or lock screen might set their exclusive zone to -1, so that + * they stretch below or over the panel. + * + * The default value is 0. + * + * Exclusive zone is double-buffered, see wl_surface.commit. + */ +static inline void +zwlr_layer_surface_v1_set_exclusive_zone(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, int32_t zone) +{ + wl_proxy_marshal_flags((struct wl_proxy *) zwlr_layer_surface_v1, + ZWLR_LAYER_SURFACE_V1_SET_EXCLUSIVE_ZONE, NULL, wl_proxy_get_version((struct wl_proxy *) zwlr_layer_surface_v1), 0, zone); +} + +/** + * @ingroup iface_zwlr_layer_surface_v1 + * + * Requests that the surface be placed some distance away from the anchor + * point on the output, in surface-local coordinates. Setting this value + * for edges you are not anchored to has no effect. + * + * The exclusive zone includes the margin. + * + * Margin is double-buffered, see wl_surface.commit. + */ +static inline void +zwlr_layer_surface_v1_set_margin(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, int32_t top, int32_t right, int32_t bottom, int32_t left) +{ + wl_proxy_marshal_flags((struct wl_proxy *) zwlr_layer_surface_v1, + ZWLR_LAYER_SURFACE_V1_SET_MARGIN, NULL, wl_proxy_get_version((struct wl_proxy *) zwlr_layer_surface_v1), 0, top, right, bottom, left); +} + +/** + * @ingroup iface_zwlr_layer_surface_v1 + * + * Set to 1 to request that the seat send keyboard events to this layer + * surface. For layers below the shell surface layer, the seat will use + * normal focus semantics. For layers above the shell surface layers, the + * seat will always give exclusive keyboard focus to the top-most layer + * which has keyboard interactivity set to true. + * + * Layer surfaces receive pointer, touch, and tablet events normally. If + * you do not want to receive them, set the input region on your surface + * to an empty region. + * + * Events is double-buffered, see wl_surface.commit. + */ +static inline void +zwlr_layer_surface_v1_set_keyboard_interactivity(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, uint32_t keyboard_interactivity) +{ + wl_proxy_marshal_flags((struct wl_proxy *) zwlr_layer_surface_v1, + ZWLR_LAYER_SURFACE_V1_SET_KEYBOARD_INTERACTIVITY, NULL, wl_proxy_get_version((struct wl_proxy *) zwlr_layer_surface_v1), 0, keyboard_interactivity); +} + +/** + * @ingroup iface_zwlr_layer_surface_v1 + * + * This assigns an xdg_popup's parent to this layer_surface. This popup + * should have been created via xdg_surface::get_popup with the parent set + * to NULL, and this request must be invoked before committing the popup's + * initial state. + * + * See the documentation of xdg_popup for more details about what an + * xdg_popup is and how it is used. + */ +static inline void +zwlr_layer_surface_v1_get_popup(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, struct xdg_popup *popup) +{ + wl_proxy_marshal_flags((struct wl_proxy *) zwlr_layer_surface_v1, + ZWLR_LAYER_SURFACE_V1_GET_POPUP, NULL, wl_proxy_get_version((struct wl_proxy *) zwlr_layer_surface_v1), 0, popup); +} + +/** + * @ingroup iface_zwlr_layer_surface_v1 + * + * When a configure event is received, if a client commits the + * surface in response to the configure event, then the client + * must make an ack_configure request sometime before the commit + * request, passing along the serial of the configure event. + * + * If the client receives multiple configure events before it + * can respond to one, it only has to ack the last configure event. + * + * A client is not required to commit immediately after sending + * an ack_configure request - it may even ack_configure several times + * before its next surface commit. + * + * A client may send multiple ack_configure requests before committing, but + * only the last request sent before a commit indicates which configure + * event the client really is responding to. + */ +static inline void +zwlr_layer_surface_v1_ack_configure(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, uint32_t serial) +{ + wl_proxy_marshal_flags((struct wl_proxy *) zwlr_layer_surface_v1, + ZWLR_LAYER_SURFACE_V1_ACK_CONFIGURE, NULL, wl_proxy_get_version((struct wl_proxy *) zwlr_layer_surface_v1), 0, serial); +} + +/** + * @ingroup iface_zwlr_layer_surface_v1 + * + * This request destroys the layer surface. + */ +static inline void +zwlr_layer_surface_v1_destroy(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1) +{ + wl_proxy_marshal_flags((struct wl_proxy *) zwlr_layer_surface_v1, + ZWLR_LAYER_SURFACE_V1_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) zwlr_layer_surface_v1), WL_MARSHAL_FLAG_DESTROY); +} + +/** + * @ingroup iface_zwlr_layer_surface_v1 + * + * Change the layer that the surface is rendered on. + * + * Layer is double-buffered, see wl_surface.commit. + */ +static inline void +zwlr_layer_surface_v1_set_layer(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, uint32_t layer) +{ + wl_proxy_marshal_flags((struct wl_proxy *) zwlr_layer_surface_v1, + ZWLR_LAYER_SURFACE_V1_SET_LAYER, NULL, wl_proxy_get_version((struct wl_proxy *) zwlr_layer_surface_v1), 0, layer); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-protocol.c b/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-protocol.c new file mode 100644 index 000000000000..b7fadf99402f --- /dev/null +++ b/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-protocol.c @@ -0,0 +1,94 @@ +/* Generated by wayland-scanner 1.25.0 */ + +/* + * Copyright © 2017 Drew DeVault + * + * Permission to use, copy, modify, distribute, and sell this + * software and its documentation for any purpose is hereby granted + * without fee, provided that the above copyright notice appear in + * all copies and that both that copyright notice and this permission + * notice appear in supporting documentation, and that the name of + * the copyright holders not be used in advertising or publicity + * pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied + * warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF + * THIS SOFTWARE. + */ + +#include <stdbool.h> +#include <stdlib.h> +#include <stdint.h> +#include "wayland-util.h" + +#ifndef __has_attribute +# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */ +#endif + +#if (__has_attribute(visibility) || defined(__GNUC__) && __GNUC__ >= 4) +#define WL_PRIVATE __attribute__ ((visibility("hidden"))) +#else +#define WL_PRIVATE +#endif + +extern const struct wl_interface wl_output_interface; +extern const struct wl_interface wl_surface_interface; +extern const struct wl_interface xdg_popup_interface; +extern const struct wl_interface zwlr_layer_surface_v1_interface; + +static const struct wl_interface *wlr_layer_shell_unstable_v1_types[] = { + NULL, + NULL, + NULL, + NULL, + &zwlr_layer_surface_v1_interface, + &wl_surface_interface, + &wl_output_interface, + NULL, + NULL, + &xdg_popup_interface, +}; + +static const struct wl_message zwlr_layer_shell_v1_requests[] = { + { "get_layer_surface", "no?ous", wlr_layer_shell_unstable_v1_types + 4 }, + { "destroy", "3", wlr_layer_shell_unstable_v1_types + 0 }, +}; + +WL_PRIVATE const struct wl_interface zwlr_layer_shell_v1_interface = { + "zwlr_layer_shell_v1", 3, + 2, zwlr_layer_shell_v1_requests, + 0, NULL, +}; + +static const struct wl_message zwlr_layer_surface_v1_requests[] = { + { "set_size", "uu", wlr_layer_shell_unstable_v1_types + 0 }, + { "set_anchor", "u", wlr_layer_shell_unstable_v1_types + 0 }, + { "set_exclusive_zone", "i", wlr_layer_shell_unstable_v1_types + 0 }, + { "set_margin", "iiii", wlr_layer_shell_unstable_v1_types + 0 }, + { "set_keyboard_interactivity", "u", wlr_layer_shell_unstable_v1_types + 0 }, + { "get_popup", "o", wlr_layer_shell_unstable_v1_types + 9 }, + { "ack_configure", "u", wlr_layer_shell_unstable_v1_types + 0 }, + { "destroy", "", wlr_layer_shell_unstable_v1_types + 0 }, + { "set_layer", "2u", wlr_layer_shell_unstable_v1_types + 0 }, +}; + +static const struct wl_message zwlr_layer_surface_v1_events[] = { + { "configure", "uuu", wlr_layer_shell_unstable_v1_types + 0 }, + { "closed", "", wlr_layer_shell_unstable_v1_types + 0 }, +}; + +WL_PRIVATE const struct wl_interface zwlr_layer_surface_v1_interface = { + "zwlr_layer_surface_v1", 3, + 9, zwlr_layer_surface_v1_requests, + 2, zwlr_layer_surface_v1_events, +}; + diff --git a/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1.xml b/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1.xml new file mode 100644 index 000000000000..fa67001dfeb1 --- /dev/null +++ b/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1.xml @@ -0,0 +1,311 @@ +<?xml version="1.0" encoding="UTF-8"?> +<protocol name="wlr_layer_shell_unstable_v1"> + <copyright> + Copyright © 2017 Drew DeVault + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that copyright notice and this permission + notice appear in supporting documentation, and that the name of + the copyright holders not be used in advertising or publicity + pertaining to distribution of the software without specific, + written prior permission. The copyright holders make no + representations about the suitability of this software for any + purpose. It is provided "as is" without express or implied + warranty. + + THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS + SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF + THIS SOFTWARE. + </copyright> + + <interface name="zwlr_layer_shell_v1" version="3"> + <description summary="create surfaces that are layers of the desktop"> + Clients can use this interface to assign the surface_layer role to + wl_surfaces. Such surfaces are assigned to a "layer" of the output and + rendered with a defined z-depth respective to each other. They may also be + anchored to the edges and corners of a screen and specify input handling + semantics. This interface should be suitable for the implementation of + many desktop shell components, and a broad number of other applications + that interact with the desktop. + </description> + + <request name="get_layer_surface"> + <description summary="create a layer_surface from a surface"> + Create a layer surface for an existing surface. This assigns the role of + layer_surface, or raises a protocol error if another role is already + assigned. + + Creating a layer surface from a wl_surface which has a buffer attached + or committed is a client error, and any attempts by a client to attach + or manipulate a buffer prior to the first layer_surface.configure call + must also be treated as errors. + + You may pass NULL for output to allow the compositor to decide which + output to use. Generally this will be the one that the user most + recently interacted with. + + Clients can specify a namespace that defines the purpose of the layer + surface. + </description> + <arg name="id" type="new_id" interface="zwlr_layer_surface_v1"/> + <arg name="surface" type="object" interface="wl_surface"/> + <arg name="output" type="object" interface="wl_output" allow-null="true"/> + <arg name="layer" type="uint" enum="layer" summary="layer to add this surface to"/> + <arg name="namespace" type="string" summary="namespace for the layer surface"/> + </request> + + <enum name="error"> + <entry name="role" value="0" summary="wl_surface has another role"/> + <entry name="invalid_layer" value="1" summary="layer value is invalid"/> + <entry name="already_constructed" value="2" summary="wl_surface has a buffer attached or committed"/> + </enum> + + <enum name="layer"> + <description summary="available layers for surfaces"> + These values indicate which layers a surface can be rendered in. They + are ordered by z depth, bottom-most first. Traditional shell surfaces + will typically be rendered between the bottom and top layers. + Fullscreen shell surfaces are typically rendered at the top layer. + Multiple surfaces can share a single layer, and ordering within a + single layer is undefined. + </description> + + <entry name="background" value="0"/> + <entry name="bottom" value="1"/> + <entry name="top" value="2"/> + <entry name="overlay" value="3"/> + </enum> + + <!-- Version 3 additions --> + + <request name="destroy" type="destructor" since="3"> + <description summary="destroy the layer_shell object"> + This request indicates that the client will not use the layer_shell + object any more. Objects that have been created through this instance + are not affected. + </description> + </request> + </interface> + + <interface name="zwlr_layer_surface_v1" version="3"> + <description summary="layer metadata interface"> + An interface that may be implemented by a wl_surface, for surfaces that + are designed to be rendered as a layer of a stacked desktop-like + environment. + + Layer surface state (layer, size, anchor, exclusive zone, + margin, interactivity) is double-buffered, and will be applied at the + time wl_surface.commit of the corresponding wl_surface is called. + </description> + + <request name="set_size"> + <description summary="sets the size of the surface"> + Sets the size of the surface in surface-local coordinates. The + compositor will display the surface centered with respect to its + anchors. + + If you pass 0 for either value, the compositor will assign it and + inform you of the assignment in the configure event. You must set your + anchor to opposite edges in the dimensions you omit; not doing so is a + protocol error. Both values are 0 by default. + + Size is double-buffered, see wl_surface.commit. + </description> + <arg name="width" type="uint"/> + <arg name="height" type="uint"/> + </request> + + <request name="set_anchor"> + <description summary="configures the anchor point of the surface"> + Requests that the compositor anchor the surface to the specified edges + and corners. If two orthogonal edges are specified (e.g. 'top' and + 'left'), then the anchor point will be the intersection of the edges + (e.g. the top left corner of the output); otherwise the anchor point + will be centered on that edge, or in the center if none is specified. + + Anchor is double-buffered, see wl_surface.commit. + </description> + <arg name="anchor" type="uint" enum="anchor"/> + </request> + + <request name="set_exclusive_zone"> + <description summary="configures the exclusive geometry of this surface"> + Requests that the compositor avoids occluding an area with other + surfaces. The compositor's use of this information is + implementation-dependent - do not assume that this region will not + actually be occluded. + + A positive value is only meaningful if the surface is anchored to one + edge or an edge and both perpendicular edges. If the surface is not + anchored, anchored to only two perpendicular edges (a corner), anchored + to only two parallel edges or anchored to all edges, a positive value + will be treated the same as zero. + + A positive zone is the distance from the edge in surface-local + coordinates to consider exclusive. + + Surfaces that do not wish to have an exclusive zone may instead specify + how they should interact with surfaces that do. If set to zero, the + surface indicates that it would like to be moved to avoid occluding + surfaces with a positive exclusive zone. If set to -1, the surface + indicates that it would not like to be moved to accommodate for other + surfaces, and the compositor should extend it all the way to the edges + it is anchored to. + + For example, a panel might set its exclusive zone to 10, so that + maximized shell surfaces are not shown on top of it. A notification + might set its exclusive zone to 0, so that it is moved to avoid + occluding the panel, but shell surfaces are shown underneath it. A + wallpaper or lock screen might set their exclusive zone to -1, so that + they stretch below or over the panel. + + The default value is 0. + + Exclusive zone is double-buffered, see wl_surface.commit. + </description> + <arg name="zone" type="int"/> + </request> + + <request name="set_margin"> + <description summary="sets a margin from the anchor point"> + Requests that the surface be placed some distance away from the anchor + point on the output, in surface-local coordinates. Setting this value + for edges you are not anchored to has no effect. + + The exclusive zone includes the margin. + + Margin is double-buffered, see wl_surface.commit. + </description> + <arg name="top" type="int"/> + <arg name="right" type="int"/> + <arg name="bottom" type="int"/> + <arg name="left" type="int"/> + </request> + + <request name="set_keyboard_interactivity"> + <description summary="requests keyboard events"> + Set to 1 to request that the seat send keyboard events to this layer + surface. For layers below the shell surface layer, the seat will use + normal focus semantics. For layers above the shell surface layers, the + seat will always give exclusive keyboard focus to the top-most layer + which has keyboard interactivity set to true. + + Layer surfaces receive pointer, touch, and tablet events normally. If + you do not want to receive them, set the input region on your surface + to an empty region. + + Events is double-buffered, see wl_surface.commit. + </description> + <arg name="keyboard_interactivity" type="uint"/> + </request> + + <request name="get_popup"> + <description summary="assign this layer_surface as an xdg_popup parent"> + This assigns an xdg_popup's parent to this layer_surface. This popup + should have been created via xdg_surface::get_popup with the parent set + to NULL, and this request must be invoked before committing the popup's + initial state. + + See the documentation of xdg_popup for more details about what an + xdg_popup is and how it is used. + </description> + <arg name="popup" type="object" interface="xdg_popup"/> + </request> + + <request name="ack_configure"> + <description summary="ack a configure event"> + When a configure event is received, if a client commits the + surface in response to the configure event, then the client + must make an ack_configure request sometime before the commit + request, passing along the serial of the configure event. + + If the client receives multiple configure events before it + can respond to one, it only has to ack the last configure event. + + A client is not required to commit immediately after sending + an ack_configure request - it may even ack_configure several times + before its next surface commit. + + A client may send multiple ack_configure requests before committing, but + only the last request sent before a commit indicates which configure + event the client really is responding to. + </description> + <arg name="serial" type="uint" summary="the serial from the configure event"/> + </request> + + <request name="destroy" type="destructor"> + <description summary="destroy the layer_surface"> + This request destroys the layer surface. + </description> + </request> + + <event name="configure"> + <description summary="suggest a surface change"> + The configure event asks the client to resize its surface. + + Clients should arrange their surface for the new states, and then send + an ack_configure request with the serial sent in this configure event at + some point before committing the new surface. + + The client is free to dismiss all but the last configure event it + received. + + The width and height arguments specify the size of the window in + surface-local coordinates. + + The size is a hint, in the sense that the client is free to ignore it if + it doesn't resize, pick a smaller size (to satisfy aspect ratio or + resize in steps of NxM pixels). If the client picks a smaller size and + is anchored to two opposite anchors (e.g. 'top' and 'bottom'), the + surface will be centered on this axis. + + If the width or height arguments are zero, it means the client should + decide its own window dimension. + </description> + <arg name="serial" type="uint"/> + <arg name="width" type="uint"/> + <arg name="height" type="uint"/> + </event> + + <event name="closed"> + <description summary="surface should be closed"> + The closed event is sent by the compositor when the surface will no + longer be shown. The output may have been destroyed or the user may + have asked for it to be removed. Further changes to the surface will be + ignored. The client should destroy the resource after receiving this + event, and create a new surface if they so choose. + </description> + </event> + + <enum name="error"> + <entry name="invalid_surface_state" value="0" summary="provided surface state is invalid"/> + <entry name="invalid_size" value="1" summary="size is invalid"/> + <entry name="invalid_anchor" value="2" summary="anchor bitfield is invalid"/> + </enum> + + <enum name="anchor" bitfield="true"> + <entry name="top" value="1" summary="the top edge of the anchor rectangle"/> + <entry name="bottom" value="2" summary="the bottom edge of the anchor rectangle"/> + <entry name="left" value="4" summary="the left edge of the anchor rectangle"/> + <entry name="right" value="8" summary="the right edge of the anchor rectangle"/> + </enum> + + <!-- Version 2 additions --> + + <request name="set_layer" since="2"> + <description summary="change the layer of the surface"> + Change the layer that the surface is rendered on. + + Layer is double-buffered, see wl_surface.commit. + </description> + <arg name="layer" type="uint" enum="zwlr_layer_shell_v1.layer" summary="layer to move this surface to"/> + </request> + </interface> +</protocol> diff --git a/gui-apps/oledsaver/files/xdg-output-unstable-v1-client-protocol.h b/gui-apps/oledsaver/files/xdg-output-unstable-v1-client-protocol.h new file mode 100644 index 000000000000..3a183717d072 --- /dev/null +++ b/gui-apps/oledsaver/files/xdg-output-unstable-v1-client-protocol.h @@ -0,0 +1,415 @@ +/* Generated by wayland-scanner 1.25.0 */ + +#ifndef XDG_OUTPUT_UNSTABLE_V1_CLIENT_PROTOCOL_H +#define XDG_OUTPUT_UNSTABLE_V1_CLIENT_PROTOCOL_H + +#include <stdint.h> +#include <stddef.h> +#include "wayland-client.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @page page_xdg_output_unstable_v1 The xdg_output_unstable_v1 protocol + * Protocol to describe output regions + * + * @section page_desc_xdg_output_unstable_v1 Description + * + * This protocol aims at describing outputs in a way which is more in line + * with the concept of an output on desktop oriented systems. + * + * Some information are more specific to the concept of an output for + * a desktop oriented system and may not make sense in other applications, + * such as IVI systems for example. + * + * Typically, the global compositor space on a desktop system is made of + * a contiguous or overlapping set of rectangular regions. + * + * The logical_position and logical_size events defined in this protocol + * might provide information identical to their counterparts already + * available from wl_output, in which case the information provided by this + * protocol should be preferred to their equivalent in wl_output. The goal is + * to move the desktop specific concepts (such as output location within the + * global compositor space, etc.) out of the core wl_output protocol. + * + * Warning! The protocol described in this file is experimental and + * backward incompatible changes may be made. Backward compatible + * changes may be added together with the corresponding interface + * version bump. + * Backward incompatible changes are done by bumping the version + * number in the protocol and interface names and resetting the + * interface version. Once the protocol is to be declared stable, + * the 'z' prefix and the version number in the protocol and + * interface names are removed and the interface version number is + * reset. + * + * @section page_ifaces_xdg_output_unstable_v1 Interfaces + * - @subpage page_iface_zxdg_output_manager_v1 - manage xdg_output objects + * - @subpage page_iface_zxdg_output_v1 - compositor logical output region + * @section page_copyright_xdg_output_unstable_v1 Copyright + * <pre> + * + * Copyright © 2017 Red Hat Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * </pre> + */ +struct wl_output; +struct zxdg_output_manager_v1; +struct zxdg_output_v1; + +#ifndef ZXDG_OUTPUT_MANAGER_V1_INTERFACE +#define ZXDG_OUTPUT_MANAGER_V1_INTERFACE +/** + * @page page_iface_zxdg_output_manager_v1 zxdg_output_manager_v1 + * @section page_iface_zxdg_output_manager_v1_desc Description + * + * A global factory interface for xdg_output objects. + * @section page_iface_zxdg_output_manager_v1_api API + * See @ref iface_zxdg_output_manager_v1. + */ +/** + * @defgroup iface_zxdg_output_manager_v1 The zxdg_output_manager_v1 interface + * + * A global factory interface for xdg_output objects. + */ +extern const struct wl_interface zxdg_output_manager_v1_interface; +#endif +#ifndef ZXDG_OUTPUT_V1_INTERFACE +#define ZXDG_OUTPUT_V1_INTERFACE +/** + * @page page_iface_zxdg_output_v1 zxdg_output_v1 + * @section page_iface_zxdg_output_v1_desc Description + * + * An xdg_output describes part of the compositor geometry. + * + * This typically corresponds to a monitor that displays part of the + * compositor space. + * + * For objects version 3 onwards, after all xdg_output properties have been + * sent (when the object is created and when properties are updated), a + * wl_output.done event is sent. This allows changes to the output + * properties to be seen as atomic, even if they happen via multiple events. + * @section page_iface_zxdg_output_v1_api API + * See @ref iface_zxdg_output_v1. + */ +/** + * @defgroup iface_zxdg_output_v1 The zxdg_output_v1 interface + * + * An xdg_output describes part of the compositor geometry. + * + * This typically corresponds to a monitor that displays part of the + * compositor space. + * + * For objects version 3 onwards, after all xdg_output properties have been + * sent (when the object is created and when properties are updated), a + * wl_output.done event is sent. This allows changes to the output + * properties to be seen as atomic, even if they happen via multiple events. + */ +extern const struct wl_interface zxdg_output_v1_interface; +#endif + +#define ZXDG_OUTPUT_MANAGER_V1_DESTROY 0 +#define ZXDG_OUTPUT_MANAGER_V1_GET_XDG_OUTPUT 1 + + +/** + * @ingroup iface_zxdg_output_manager_v1 + */ +#define ZXDG_OUTPUT_MANAGER_V1_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_output_manager_v1 + */ +#define ZXDG_OUTPUT_MANAGER_V1_GET_XDG_OUTPUT_SINCE_VERSION 1 + +/** @ingroup iface_zxdg_output_manager_v1 */ +static inline void +zxdg_output_manager_v1_set_user_data(struct zxdg_output_manager_v1 *zxdg_output_manager_v1, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zxdg_output_manager_v1, user_data); +} + +/** @ingroup iface_zxdg_output_manager_v1 */ +static inline void * +zxdg_output_manager_v1_get_user_data(struct zxdg_output_manager_v1 *zxdg_output_manager_v1) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zxdg_output_manager_v1); +} + +static inline uint32_t +zxdg_output_manager_v1_get_version(struct zxdg_output_manager_v1 *zxdg_output_manager_v1) +{ + return wl_proxy_get_version((struct wl_proxy *) zxdg_output_manager_v1); +} + +/** + * @ingroup iface_zxdg_output_manager_v1 + * + * Using this request a client can tell the server that it is not + * going to use the xdg_output_manager object anymore. + * + * Any objects already created through this instance are not affected. + */ +static inline void +zxdg_output_manager_v1_destroy(struct zxdg_output_manager_v1 *zxdg_output_manager_v1) +{ + wl_proxy_marshal_flags((struct wl_proxy *) zxdg_output_manager_v1, + ZXDG_OUTPUT_MANAGER_V1_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) zxdg_output_manager_v1), WL_MARSHAL_FLAG_DESTROY); +} + +/** + * @ingroup iface_zxdg_output_manager_v1 + * + * This creates a new xdg_output object for the given wl_output. + */ +static inline struct zxdg_output_v1 * +zxdg_output_manager_v1_get_xdg_output(struct zxdg_output_manager_v1 *zxdg_output_manager_v1, struct wl_output *output) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_flags((struct wl_proxy *) zxdg_output_manager_v1, + ZXDG_OUTPUT_MANAGER_V1_GET_XDG_OUTPUT, &zxdg_output_v1_interface, wl_proxy_get_version((struct wl_proxy *) zxdg_output_manager_v1), 0, NULL, output); + + return (struct zxdg_output_v1 *) id; +} + +/** + * @ingroup iface_zxdg_output_v1 + * @struct zxdg_output_v1_listener + */ +struct zxdg_output_v1_listener { + /** + * position of the output within the global compositor space + * + * The position event describes the location of the wl_output + * within the global compositor space. + * + * The logical_position event is sent after creating an xdg_output + * (see xdg_output_manager.get_xdg_output) and whenever the + * location of the output changes within the global compositor + * space. + * @param x x position within the global compositor space + * @param y y position within the global compositor space + */ + void (*logical_position)(void *data, + struct zxdg_output_v1 *zxdg_output_v1, + int32_t x, + int32_t y); + /** + * size of the output in the global compositor space + * + * The logical_size event describes the size of the output in the + * global compositor space. + * + * Most regular Wayland clients should not pay attention to the + * logical size and would rather rely on xdg_shell interfaces. + * + * Some clients such as Xwayland, however, need this to configure + * their surfaces in the global compositor space as the compositor + * may apply a different scale from what is advertised by the + * output scaling property (to achieve fractional scaling, for + * example). + * + * For example, for a wl_output mode 3840×2160 and a scale factor + * 2: + * + * - A compositor not scaling the monitor viewport in its + * compositing space will advertise a logical size of 3840×2160, + * + * - A compositor scaling the monitor viewport with scale factor 2 + * will advertise a logical size of 1920×1080, + * + * - A compositor scaling the monitor viewport using a fractional + * scale of 1.5 will advertise a logical size of 2560×1440. + * + * For example, for a wl_output mode 1920×1080 and a 90 degree + * rotation, the compositor will advertise a logical size of + * 1080x1920. + * + * The logical_size event is sent after creating an xdg_output (see + * xdg_output_manager.get_xdg_output) and whenever the logical size + * of the output changes, either as a result of a change in the + * applied scale or because of a change in the corresponding output + * mode(see wl_output.mode) or transform (see wl_output.transform). + * @param width width in global compositor space + * @param height height in global compositor space + */ + void (*logical_size)(void *data, + struct zxdg_output_v1 *zxdg_output_v1, + int32_t width, + int32_t height); + /** + * all information about the output have been sent + * + * This event is sent after all other properties of an xdg_output + * have been sent. + * + * This allows changes to the xdg_output properties to be seen as + * atomic, even if they happen via multiple events. + * + * For objects version 3 onwards, this event is deprecated. + * Compositors are not required to send it anymore and must send + * wl_output.done instead. + * @deprecated Deprecated since version 3 + */ + void (*done)(void *data, + struct zxdg_output_v1 *zxdg_output_v1); + /** + * name of this output + * + * Many compositors will assign names to their outputs, show them + * to the user, allow them to be configured by name, etc. The + * client may wish to know this name as well to offer the user + * similar behaviors. + * + * The naming convention is compositor defined, but limited to + * alphanumeric characters and dashes (-). Each name is unique + * among all wl_output globals, but if a wl_output global is + * destroyed the same name may be reused later. The names will also + * remain consistent across sessions with the same hardware and + * software configuration. + * + * Examples of names include 'HDMI-A-1', 'WL-1', 'X11-1', etc. + * However, do not assume that the name is a reflection of an + * underlying DRM connector, X11 connection, etc. + * + * The name event is sent after creating an xdg_output (see + * xdg_output_manager.get_xdg_output). This event is only sent once + * per xdg_output, and the name does not change over the lifetime + * of the wl_output global. + * + * This event is deprecated, instead clients should use + * wl_output.name. Compositors must still support this event. + * @param name output name + * @since 2 + */ + void (*name)(void *data, + struct zxdg_output_v1 *zxdg_output_v1, + const char *name); + /** + * human-readable description of this output + * + * Many compositors can produce human-readable descriptions of + * their outputs. The client may wish to know this description as + * well, to communicate the user for various purposes. + * + * The description is a UTF-8 string with no convention defined for + * its contents. Examples might include 'Foocorp 11" Display' or + * 'Virtual X11 output via :1'. + * + * The description event is sent after creating an xdg_output (see + * xdg_output_manager.get_xdg_output) and whenever the description + * changes. The description is optional, and may not be sent at + * all. + * + * For objects of version 2 and lower, this event is only sent once + * per xdg_output, and the description does not change over the + * lifetime of the wl_output global. + * + * This event is deprecated, instead clients should use + * wl_output.description. Compositors must still support this + * event. + * @param description output description + * @since 2 + */ + void (*description)(void *data, + struct zxdg_output_v1 *zxdg_output_v1, + const char *description); +}; + +/** + * @ingroup iface_zxdg_output_v1 + */ +static inline int +zxdg_output_v1_add_listener(struct zxdg_output_v1 *zxdg_output_v1, + const struct zxdg_output_v1_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) zxdg_output_v1, + (void (**)(void)) listener, data); +} + +#define ZXDG_OUTPUT_V1_DESTROY 0 + +/** + * @ingroup iface_zxdg_output_v1 + */ +#define ZXDG_OUTPUT_V1_LOGICAL_POSITION_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_output_v1 + */ +#define ZXDG_OUTPUT_V1_LOGICAL_SIZE_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_output_v1 + */ +#define ZXDG_OUTPUT_V1_DONE_SINCE_VERSION 1 +/** + * @ingroup iface_zxdg_output_v1 + */ +#define ZXDG_OUTPUT_V1_NAME_SINCE_VERSION 2 +/** + * @ingroup iface_zxdg_output_v1 + */ +#define ZXDG_OUTPUT_V1_DESCRIPTION_SINCE_VERSION 2 + +/** + * @ingroup iface_zxdg_output_v1 + */ +#define ZXDG_OUTPUT_V1_DESTROY_SINCE_VERSION 1 + +/** @ingroup iface_zxdg_output_v1 */ +static inline void +zxdg_output_v1_set_user_data(struct zxdg_output_v1 *zxdg_output_v1, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zxdg_output_v1, user_data); +} + +/** @ingroup iface_zxdg_output_v1 */ +static inline void * +zxdg_output_v1_get_user_data(struct zxdg_output_v1 *zxdg_output_v1) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zxdg_output_v1); +} + +static inline uint32_t +zxdg_output_v1_get_version(struct zxdg_output_v1 *zxdg_output_v1) +{ + return wl_proxy_get_version((struct wl_proxy *) zxdg_output_v1); +} + +/** + * @ingroup iface_zxdg_output_v1 + * + * Using this request a client can tell the server that it is not + * going to use the xdg_output object anymore. + */ +static inline void +zxdg_output_v1_destroy(struct zxdg_output_v1 *zxdg_output_v1) +{ + wl_proxy_marshal_flags((struct wl_proxy *) zxdg_output_v1, + ZXDG_OUTPUT_V1_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) zxdg_output_v1), WL_MARSHAL_FLAG_DESTROY); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/gui-apps/oledsaver/files/xdg-output-unstable-v1-protocol.c b/gui-apps/oledsaver/files/xdg-output-unstable-v1-protocol.c new file mode 100644 index 000000000000..070d893f0fbf --- /dev/null +++ b/gui-apps/oledsaver/files/xdg-output-unstable-v1-protocol.c @@ -0,0 +1,79 @@ +/* Generated by wayland-scanner 1.25.0 */ + +/* + * Copyright © 2017 Red Hat Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include <stdbool.h> +#include <stdlib.h> +#include <stdint.h> +#include "wayland-util.h" + +#ifndef __has_attribute +# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */ +#endif + +#if (__has_attribute(visibility) || defined(__GNUC__) && __GNUC__ >= 4) +#define WL_PRIVATE __attribute__ ((visibility("hidden"))) +#else +#define WL_PRIVATE +#endif + +extern const struct wl_interface wl_output_interface; +extern const struct wl_interface zxdg_output_v1_interface; + +static const struct wl_interface *xdg_output_unstable_v1_types[] = { + NULL, + NULL, + &zxdg_output_v1_interface, + &wl_output_interface, +}; + +static const struct wl_message zxdg_output_manager_v1_requests[] = { + { "destroy", "", xdg_output_unstable_v1_types + 0 }, + { "get_xdg_output", "no", xdg_output_unstable_v1_types + 2 }, +}; + +WL_PRIVATE const struct wl_interface zxdg_output_manager_v1_interface = { + "zxdg_output_manager_v1", 3, + 2, zxdg_output_manager_v1_requests, + 0, NULL, +}; + +static const struct wl_message zxdg_output_v1_requests[] = { + { "destroy", "", xdg_output_unstable_v1_types + 0 }, +}; + +static const struct wl_message zxdg_output_v1_events[] = { + { "logical_position", "ii", xdg_output_unstable_v1_types + 0 }, + { "logical_size", "ii", xdg_output_unstable_v1_types + 0 }, + { "done", "", xdg_output_unstable_v1_types + 0 }, + { "name", "2s", xdg_output_unstable_v1_types + 0 }, + { "description", "2s", xdg_output_unstable_v1_types + 0 }, +}; + +WL_PRIVATE const struct wl_interface zxdg_output_v1_interface = { + "zxdg_output_v1", 3, + 1, zxdg_output_v1_requests, + 5, zxdg_output_v1_events, +}; + diff --git a/gui-apps/oledsaver/files/xdg-shell-client-protocol.h b/gui-apps/oledsaver/files/xdg-shell-client-protocol.h new file mode 100644 index 000000000000..9d538accdfdb --- /dev/null +++ b/gui-apps/oledsaver/files/xdg-shell-client-protocol.h @@ -0,0 +1,2384 @@ +/* Generated by wayland-scanner 1.25.0 */ + +#ifndef XDG_SHELL_CLIENT_PROTOCOL_H +#define XDG_SHELL_CLIENT_PROTOCOL_H + +#include <stdint.h> +#include <stddef.h> +#include "wayland-client.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @page page_xdg_shell The xdg_shell protocol + * @section page_ifaces_xdg_shell Interfaces + * - @subpage page_iface_xdg_wm_base - create desktop-style surfaces + * - @subpage page_iface_xdg_positioner - child surface positioner + * - @subpage page_iface_xdg_surface - desktop user interface surface base interface + * - @subpage page_iface_xdg_toplevel - toplevel surface + * - @subpage page_iface_xdg_popup - short-lived, popup surfaces for menus + * @section page_copyright_xdg_shell Copyright + * <pre> + * + * Copyright © 2008-2013 Kristian Høgsberg + * Copyright © 2013 Rafael Antognolli + * Copyright © 2013 Jasper St. Pierre + * Copyright © 2010-2013 Intel Corporation + * Copyright © 2015-2017 Samsung Electronics Co., Ltd + * Copyright © 2015-2017 Red Hat Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * </pre> + */ +struct wl_output; +struct wl_seat; +struct wl_surface; +struct xdg_popup; +struct xdg_positioner; +struct xdg_surface; +struct xdg_toplevel; +struct xdg_wm_base; + +#ifndef XDG_WM_BASE_INTERFACE +#define XDG_WM_BASE_INTERFACE +/** + * @page page_iface_xdg_wm_base xdg_wm_base + * @section page_iface_xdg_wm_base_desc Description + * + * The xdg_wm_base interface is exposed as a global object enabling clients + * to turn their wl_surfaces into windows in a desktop environment. It + * defines the basic functionality needed for clients and the compositor to + * create windows that can be dragged, resized, maximized, etc, as well as + * creating transient windows such as popup menus. + * @section page_iface_xdg_wm_base_api API + * See @ref iface_xdg_wm_base. + */ +/** + * @defgroup iface_xdg_wm_base The xdg_wm_base interface + * + * The xdg_wm_base interface is exposed as a global object enabling clients + * to turn their wl_surfaces into windows in a desktop environment. It + * defines the basic functionality needed for clients and the compositor to + * create windows that can be dragged, resized, maximized, etc, as well as + * creating transient windows such as popup menus. + */ +extern const struct wl_interface xdg_wm_base_interface; +#endif +#ifndef XDG_POSITIONER_INTERFACE +#define XDG_POSITIONER_INTERFACE +/** + * @page page_iface_xdg_positioner xdg_positioner + * @section page_iface_xdg_positioner_desc Description + * + * The xdg_positioner provides a collection of rules for the placement of a + * child surface relative to a parent surface. Rules can be defined to ensure + * the child surface remains within the visible area's borders, and to + * specify how the child surface changes its position, such as sliding along + * an axis, or flipping around a rectangle. These positioner-created rules are + * constrained by the requirement that a child surface must intersect with or + * be at least partially adjacent to its parent surface. + * + * See the various requests for details about possible rules. + * + * At the time of the request, the compositor makes a copy of the rules + * specified by the xdg_positioner. Thus, after the request is complete the + * xdg_positioner object can be destroyed or reused; further changes to the + * object will have no effect on previous usages. + * + * For an xdg_positioner object to be considered complete, it must have a + * non-zero size set by set_size, and a non-zero anchor rectangle set by + * set_anchor_rect. Passing an incomplete xdg_positioner object when + * positioning a surface raises an invalid_positioner error. + * @section page_iface_xdg_positioner_api API + * See @ref iface_xdg_positioner. + */ +/** + * @defgroup iface_xdg_positioner The xdg_positioner interface + * + * The xdg_positioner provides a collection of rules for the placement of a + * child surface relative to a parent surface. Rules can be defined to ensure + * the child surface remains within the visible area's borders, and to + * specify how the child surface changes its position, such as sliding along + * an axis, or flipping around a rectangle. These positioner-created rules are + * constrained by the requirement that a child surface must intersect with or + * be at least partially adjacent to its parent surface. + * + * See the various requests for details about possible rules. + * + * At the time of the request, the compositor makes a copy of the rules + * specified by the xdg_positioner. Thus, after the request is complete the + * xdg_positioner object can be destroyed or reused; further changes to the + * object will have no effect on previous usages. + * + * For an xdg_positioner object to be considered complete, it must have a + * non-zero size set by set_size, and a non-zero anchor rectangle set by + * set_anchor_rect. Passing an incomplete xdg_positioner object when + * positioning a surface raises an invalid_positioner error. + */ +extern const struct wl_interface xdg_positioner_interface; +#endif +#ifndef XDG_SURFACE_INTERFACE +#define XDG_SURFACE_INTERFACE +/** + * @page page_iface_xdg_surface xdg_surface + * @section page_iface_xdg_surface_desc Description + * + * An interface that may be implemented by a wl_surface, for + * implementations that provide a desktop-style user interface. + * + * It provides a base set of functionality required to construct user + * interface elements requiring management by the compositor, such as + * toplevel windows, menus, etc. The types of functionality are split into + * xdg_surface roles. + * + * Creating an xdg_surface does not set the role for a wl_surface. In order + * to map an xdg_surface, the client must create a role-specific object + * using, e.g., get_toplevel, get_popup. The wl_surface for any given + * xdg_surface can have at most one role, and may not be assigned any role + * not based on xdg_surface. + * + * A role must be assigned before any other requests are made to the + * xdg_surface object. + * + * The client must call wl_surface.commit on the corresponding wl_surface + * for the xdg_surface state to take effect. + * + * Creating an xdg_surface from a wl_surface which has a buffer attached or + * committed is a client error, and any attempts by a client to attach or + * manipulate a buffer prior to the first xdg_surface.configure call must + * also be treated as errors. + * + * After creating a role-specific object and setting it up (e.g. by sending + * the title, app ID, size constraints, parent, etc), the client must + * perform an initial commit without any buffer attached. The compositor + * will reply with initial wl_surface state such as + * wl_surface.preferred_buffer_scale followed by an xdg_surface.configure + * event. The client must acknowledge it and is then allowed to attach a + * buffer to map the surface. + * + * Mapping an xdg_surface-based role surface is defined as making it + * possible for the surface to be shown by the compositor. Note that + * a mapped surface is not guaranteed to be visible once it is mapped. + * + * For an xdg_surface to be mapped by the compositor, the following + * conditions must be met: + * (1) the client has assigned an xdg_surface-based role to the surface + * (2) the client has set and committed the xdg_surface state and the + * role-dependent state to the surface + * (3) the client has committed a buffer to the surface + * + * A newly-unmapped surface is considered to have met condition (1) out + * of the 3 required conditions for mapping a surface if its role surface + * has not been destroyed, i.e. the client must perform the initial commit + * again before attaching a buffer. + * @section page_iface_xdg_surface_api API + * See @ref iface_xdg_surface. + */ +/** + * @defgroup iface_xdg_surface The xdg_surface interface + * + * An interface that may be implemented by a wl_surface, for + * implementations that provide a desktop-style user interface. + * + * It provides a base set of functionality required to construct user + * interface elements requiring management by the compositor, such as + * toplevel windows, menus, etc. The types of functionality are split into + * xdg_surface roles. + * + * Creating an xdg_surface does not set the role for a wl_surface. In order + * to map an xdg_surface, the client must create a role-specific object + * using, e.g., get_toplevel, get_popup. The wl_surface for any given + * xdg_surface can have at most one role, and may not be assigned any role + * not based on xdg_surface. + * + * A role must be assigned before any other requests are made to the + * xdg_surface object. + * + * The client must call wl_surface.commit on the corresponding wl_surface + * for the xdg_surface state to take effect. + * + * Creating an xdg_surface from a wl_surface which has a buffer attached or + * committed is a client error, and any attempts by a client to attach or + * manipulate a buffer prior to the first xdg_surface.configure call must + * also be treated as errors. + * + * After creating a role-specific object and setting it up (e.g. by sending + * the title, app ID, size constraints, parent, etc), the client must + * perform an initial commit without any buffer attached. The compositor + * will reply with initial wl_surface state such as + * wl_surface.preferred_buffer_scale followed by an xdg_surface.configure + * event. The client must acknowledge it and is then allowed to attach a + * buffer to map the surface. + * + * Mapping an xdg_surface-based role surface is defined as making it + * possible for the surface to be shown by the compositor. Note that + * a mapped surface is not guaranteed to be visible once it is mapped. + * + * For an xdg_surface to be mapped by the compositor, the following + * conditions must be met: + * (1) the client has assigned an xdg_surface-based role to the surface + * (2) the client has set and committed the xdg_surface state and the + * role-dependent state to the surface + * (3) the client has committed a buffer to the surface + * + * A newly-unmapped surface is considered to have met condition (1) out + * of the 3 required conditions for mapping a surface if its role surface + * has not been destroyed, i.e. the client must perform the initial commit + * again before attaching a buffer. + */ +extern const struct wl_interface xdg_surface_interface; +#endif +#ifndef XDG_TOPLEVEL_INTERFACE +#define XDG_TOPLEVEL_INTERFACE +/** + * @page page_iface_xdg_toplevel xdg_toplevel + * @section page_iface_xdg_toplevel_desc Description + * + * This interface defines an xdg_surface role which allows a surface to, + * among other things, set window-like properties such as maximize, + * fullscreen, and minimize, set application-specific metadata like title and + * id, and well as trigger user interactive operations such as interactive + * resize and move. + * + * A xdg_toplevel by default is responsible for providing the full intended + * visual representation of the toplevel, which depending on the window + * state, may mean things like a title bar, window controls and drop shadow. + * + * Unmapping an xdg_toplevel means that the surface cannot be shown + * by the compositor until it is explicitly mapped again. + * All active operations (e.g., move, resize) are canceled and all + * attributes (e.g. title, state, stacking, ...) are discarded for + * an xdg_toplevel surface when it is unmapped. The xdg_toplevel returns to + * the state it had right after xdg_surface.get_toplevel. The client + * can re-map the toplevel by performing a commit without any buffer + * attached, waiting for a configure event and handling it as usual (see + * xdg_surface description). + * + * Attaching a null buffer to a toplevel unmaps the surface. + * @section page_iface_xdg_toplevel_api API + * See @ref iface_xdg_toplevel. + */ +/** + * @defgroup iface_xdg_toplevel The xdg_toplevel interface + * + * This interface defines an xdg_surface role which allows a surface to, + * among other things, set window-like properties such as maximize, + * fullscreen, and minimize, set application-specific metadata like title and + * id, and well as trigger user interactive operations such as interactive + * resize and move. + * + * A xdg_toplevel by default is responsible for providing the full intended + * visual representation of the toplevel, which depending on the window + * state, may mean things like a title bar, window controls and drop shadow. + * + * Unmapping an xdg_toplevel means that the surface cannot be shown + * by the compositor until it is explicitly mapped again. + * All active operations (e.g., move, resize) are canceled and all + * attributes (e.g. title, state, stacking, ...) are discarded for + * an xdg_toplevel surface when it is unmapped. The xdg_toplevel returns to + * the state it had right after xdg_surface.get_toplevel. The client + * can re-map the toplevel by performing a commit without any buffer + * attached, waiting for a configure event and handling it as usual (see + * xdg_surface description). + * + * Attaching a null buffer to a toplevel unmaps the surface. + */ +extern const struct wl_interface xdg_toplevel_interface; +#endif +#ifndef XDG_POPUP_INTERFACE +#define XDG_POPUP_INTERFACE +/** + * @page page_iface_xdg_popup xdg_popup + * @section page_iface_xdg_popup_desc Description + * + * A popup surface is a short-lived, temporary surface. It can be used to + * implement for example menus, popovers, tooltips and other similar user + * interface concepts. + * + * A popup can be made to take an explicit grab. See xdg_popup.grab for + * details. + * + * When the popup is dismissed, a popup_done event will be sent out, and at + * the same time the surface will be unmapped. See the xdg_popup.popup_done + * event for details. + * + * Explicitly destroying the xdg_popup object will also dismiss the popup and + * unmap the surface. Clients that want to dismiss the popup when another + * surface of their own is clicked should dismiss the popup using the destroy + * request. + * + * A newly created xdg_popup will be stacked on top of all previously created + * xdg_popup surfaces associated with the same xdg_toplevel. + * + * The parent of an xdg_popup must be mapped (see the xdg_surface + * description) before the xdg_popup itself. + * + * The client must call wl_surface.commit on the corresponding wl_surface + * for the xdg_popup state to take effect. + * @section page_iface_xdg_popup_api API + * See @ref iface_xdg_popup. + */ +/** + * @defgroup iface_xdg_popup The xdg_popup interface + * + * A popup surface is a short-lived, temporary surface. It can be used to + * implement for example menus, popovers, tooltips and other similar user + * interface concepts. + * + * A popup can be made to take an explicit grab. See xdg_popup.grab for + * details. + * + * When the popup is dismissed, a popup_done event will be sent out, and at + * the same time the surface will be unmapped. See the xdg_popup.popup_done + * event for details. + * + * Explicitly destroying the xdg_popup object will also dismiss the popup and + * unmap the surface. Clients that want to dismiss the popup when another + * surface of their own is clicked should dismiss the popup using the destroy + * request. + * + * A newly created xdg_popup will be stacked on top of all previously created + * xdg_popup surfaces associated with the same xdg_toplevel. + * + * The parent of an xdg_popup must be mapped (see the xdg_surface + * description) before the xdg_popup itself. + * + * The client must call wl_surface.commit on the corresponding wl_surface + * for the xdg_popup state to take effect. + */ +extern const struct wl_interface xdg_popup_interface; +#endif + +#ifndef XDG_WM_BASE_ERROR_ENUM +#define XDG_WM_BASE_ERROR_ENUM +enum xdg_wm_base_error { + /** + * given wl_surface has another role + */ + XDG_WM_BASE_ERROR_ROLE = 0, + /** + * xdg_wm_base was destroyed before children + */ + XDG_WM_BASE_ERROR_DEFUNCT_SURFACES = 1, + /** + * the client tried to map or destroy a non-topmost popup + */ + XDG_WM_BASE_ERROR_NOT_THE_TOPMOST_POPUP = 2, + /** + * the client specified an invalid popup parent surface + */ + XDG_WM_BASE_ERROR_INVALID_POPUP_PARENT = 3, + /** + * the client provided an invalid surface state + */ + XDG_WM_BASE_ERROR_INVALID_SURFACE_STATE = 4, + /** + * the client provided an invalid positioner + */ + XDG_WM_BASE_ERROR_INVALID_POSITIONER = 5, + /** + * the client didn’t respond to a ping event in time + */ + XDG_WM_BASE_ERROR_UNRESPONSIVE = 6, +}; +#endif /* XDG_WM_BASE_ERROR_ENUM */ + +/** + * @ingroup iface_xdg_wm_base + * @struct xdg_wm_base_listener + */ +struct xdg_wm_base_listener { + /** + * check if the client is alive + * + * The ping event asks the client if it's still alive. Pass the + * serial specified in the event back to the compositor by sending + * a "pong" request back with the specified serial. See + * xdg_wm_base.pong. + * + * Compositors can use this to determine if the client is still + * alive. It's unspecified what will happen if the client doesn't + * respond to the ping request, or in what timeframe. Clients + * should try to respond in a reasonable amount of time. The + * “unresponsive” error is provided for compositors that wish + * to disconnect unresponsive clients. + * + * A compositor is free to ping in any way it wants, but a client + * must always respond to any xdg_wm_base object it created. + * @param serial pass this to the pong request + */ + void (*ping)(void *data, + struct xdg_wm_base *xdg_wm_base, + uint32_t serial); +}; + +/** + * @ingroup iface_xdg_wm_base + */ +static inline int +xdg_wm_base_add_listener(struct xdg_wm_base *xdg_wm_base, + const struct xdg_wm_base_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) xdg_wm_base, + (void (**)(void)) listener, data); +} + +#define XDG_WM_BASE_DESTROY 0 +#define XDG_WM_BASE_CREATE_POSITIONER 1 +#define XDG_WM_BASE_GET_XDG_SURFACE 2 +#define XDG_WM_BASE_PONG 3 + +/** + * @ingroup iface_xdg_wm_base + */ +#define XDG_WM_BASE_PING_SINCE_VERSION 1 + +/** + * @ingroup iface_xdg_wm_base + */ +#define XDG_WM_BASE_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_wm_base + */ +#define XDG_WM_BASE_CREATE_POSITIONER_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_wm_base + */ +#define XDG_WM_BASE_GET_XDG_SURFACE_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_wm_base + */ +#define XDG_WM_BASE_PONG_SINCE_VERSION 1 + +/** @ingroup iface_xdg_wm_base */ +static inline void +xdg_wm_base_set_user_data(struct xdg_wm_base *xdg_wm_base, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) xdg_wm_base, user_data); +} + +/** @ingroup iface_xdg_wm_base */ +static inline void * +xdg_wm_base_get_user_data(struct xdg_wm_base *xdg_wm_base) +{ + return wl_proxy_get_user_data((struct wl_proxy *) xdg_wm_base); +} + +static inline uint32_t +xdg_wm_base_get_version(struct xdg_wm_base *xdg_wm_base) +{ + return wl_proxy_get_version((struct wl_proxy *) xdg_wm_base); +} + +/** + * @ingroup iface_xdg_wm_base + * + * Destroy this xdg_wm_base object. + * + * Destroying a bound xdg_wm_base object while there are surfaces + * still alive created by this xdg_wm_base object instance is illegal + * and will result in a defunct_surfaces error. + */ +static inline void +xdg_wm_base_destroy(struct xdg_wm_base *xdg_wm_base) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_wm_base, + XDG_WM_BASE_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_wm_base), WL_MARSHAL_FLAG_DESTROY); +} + +/** + * @ingroup iface_xdg_wm_base + * + * Create a positioner object. A positioner object is used to position + * surfaces relative to some parent surface. See the interface description + * and xdg_surface.get_popup for details. + */ +static inline struct xdg_positioner * +xdg_wm_base_create_positioner(struct xdg_wm_base *xdg_wm_base) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_flags((struct wl_proxy *) xdg_wm_base, + XDG_WM_BASE_CREATE_POSITIONER, &xdg_positioner_interface, wl_proxy_get_version((struct wl_proxy *) xdg_wm_base), 0, NULL); + + return (struct xdg_positioner *) id; +} + +/** + * @ingroup iface_xdg_wm_base + * + * This creates an xdg_surface for the given surface. While xdg_surface + * itself is not a role, the corresponding surface may only be assigned + * a role extending xdg_surface, such as xdg_toplevel or xdg_popup. It is + * illegal to create an xdg_surface for a wl_surface which already has an + * assigned role and this will result in a role error. + * + * This creates an xdg_surface for the given surface. An xdg_surface is + * used as basis to define a role to a given surface, such as xdg_toplevel + * or xdg_popup. It also manages functionality shared between xdg_surface + * based surface roles. + * + * See the documentation of xdg_surface for more details about what an + * xdg_surface is and how it is used. + */ +static inline struct xdg_surface * +xdg_wm_base_get_xdg_surface(struct xdg_wm_base *xdg_wm_base, struct wl_surface *surface) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_flags((struct wl_proxy *) xdg_wm_base, + XDG_WM_BASE_GET_XDG_SURFACE, &xdg_surface_interface, wl_proxy_get_version((struct wl_proxy *) xdg_wm_base), 0, NULL, surface); + + return (struct xdg_surface *) id; +} + +/** + * @ingroup iface_xdg_wm_base + * + * A client must respond to a ping event with a pong request or + * the client may be deemed unresponsive. See xdg_wm_base.ping + * and xdg_wm_base.error.unresponsive. + */ +static inline void +xdg_wm_base_pong(struct xdg_wm_base *xdg_wm_base, uint32_t serial) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_wm_base, + XDG_WM_BASE_PONG, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_wm_base), 0, serial); +} + +#ifndef XDG_POSITIONER_ERROR_ENUM +#define XDG_POSITIONER_ERROR_ENUM +enum xdg_positioner_error { + /** + * invalid input provided + */ + XDG_POSITIONER_ERROR_INVALID_INPUT = 0, +}; +#endif /* XDG_POSITIONER_ERROR_ENUM */ + +#ifndef XDG_POSITIONER_ANCHOR_ENUM +#define XDG_POSITIONER_ANCHOR_ENUM +enum xdg_positioner_anchor { + XDG_POSITIONER_ANCHOR_NONE = 0, + XDG_POSITIONER_ANCHOR_TOP = 1, + XDG_POSITIONER_ANCHOR_BOTTOM = 2, + XDG_POSITIONER_ANCHOR_LEFT = 3, + XDG_POSITIONER_ANCHOR_RIGHT = 4, + XDG_POSITIONER_ANCHOR_TOP_LEFT = 5, + XDG_POSITIONER_ANCHOR_BOTTOM_LEFT = 6, + XDG_POSITIONER_ANCHOR_TOP_RIGHT = 7, + XDG_POSITIONER_ANCHOR_BOTTOM_RIGHT = 8, +}; +#endif /* XDG_POSITIONER_ANCHOR_ENUM */ + +#ifndef XDG_POSITIONER_GRAVITY_ENUM +#define XDG_POSITIONER_GRAVITY_ENUM +enum xdg_positioner_gravity { + XDG_POSITIONER_GRAVITY_NONE = 0, + XDG_POSITIONER_GRAVITY_TOP = 1, + XDG_POSITIONER_GRAVITY_BOTTOM = 2, + XDG_POSITIONER_GRAVITY_LEFT = 3, + XDG_POSITIONER_GRAVITY_RIGHT = 4, + XDG_POSITIONER_GRAVITY_TOP_LEFT = 5, + XDG_POSITIONER_GRAVITY_BOTTOM_LEFT = 6, + XDG_POSITIONER_GRAVITY_TOP_RIGHT = 7, + XDG_POSITIONER_GRAVITY_BOTTOM_RIGHT = 8, +}; +#endif /* XDG_POSITIONER_GRAVITY_ENUM */ + +#ifndef XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_ENUM +#define XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_ENUM +/** + * @ingroup iface_xdg_positioner + * constraint adjustments + * + * The constraint adjustment value define ways the compositor will adjust + * the position of the surface, if the unadjusted position would result + * in the surface being partly constrained. + * + * Whether a surface is considered 'constrained' is left to the compositor + * to determine. For example, the surface may be partly outside the + * compositor's defined 'work area', thus necessitating the child surface's + * position be adjusted until it is entirely inside the work area. + * + * The adjustments can be combined, according to a defined precedence: 1) + * Flip, 2) Slide, 3) Resize. + */ +enum xdg_positioner_constraint_adjustment { + /** + * don't move the child surface when constrained + * + * Don't alter the surface position even if it is constrained on + * some axis, for example partially outside the edge of an output. + */ + XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_NONE = 0, + /** + * move along the x axis until unconstrained + * + * Slide the surface along the x axis until it is no longer + * constrained. + * + * First try to slide towards the direction of the gravity on the x + * axis until either the edge in the opposite direction of the + * gravity is unconstrained or the edge in the direction of the + * gravity is constrained. + * + * Then try to slide towards the opposite direction of the gravity + * on the x axis until either the edge in the direction of the + * gravity is unconstrained or the edge in the opposite direction + * of the gravity is constrained. + */ + XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_SLIDE_X = 1, + /** + * move along the y axis until unconstrained + * + * Slide the surface along the y axis until it is no longer + * constrained. + * + * First try to slide towards the direction of the gravity on the y + * axis until either the edge in the opposite direction of the + * gravity is unconstrained or the edge in the direction of the + * gravity is constrained. + * + * Then try to slide towards the opposite direction of the gravity + * on the y axis until either the edge in the direction of the + * gravity is unconstrained or the edge in the opposite direction + * of the gravity is constrained. + */ + XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_SLIDE_Y = 2, + /** + * invert the anchor and gravity on the x axis + * + * Invert the anchor and gravity on the x axis if the surface is + * constrained on the x axis. For example, if the left edge of the + * surface is constrained, the gravity is 'left' and the anchor is + * 'left', change the gravity to 'right' and the anchor to 'right'. + * + * If the adjusted position also ends up being constrained, the + * resulting position of the flip_x adjustment will be the one + * before the adjustment. + */ + XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_FLIP_X = 4, + /** + * invert the anchor and gravity on the y axis + * + * Invert the anchor and gravity on the y axis if the surface is + * constrained on the y axis. For example, if the bottom edge of + * the surface is constrained, the gravity is 'bottom' and the + * anchor is 'bottom', change the gravity to 'top' and the anchor + * to 'top'. + * + * The adjusted position is calculated given the original anchor + * rectangle and offset, but with the new flipped anchor and + * gravity values. + * + * If the adjusted position also ends up being constrained, the + * resulting position of the flip_y adjustment will be the one + * before the adjustment. + */ + XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_FLIP_Y = 8, + /** + * horizontally resize the surface + * + * Resize the surface horizontally so that it is completely + * unconstrained. + */ + XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_RESIZE_X = 16, + /** + * vertically resize the surface + * + * Resize the surface vertically so that it is completely + * unconstrained. + */ + XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_RESIZE_Y = 32, +}; +#endif /* XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_ENUM */ + +#define XDG_POSITIONER_DESTROY 0 +#define XDG_POSITIONER_SET_SIZE 1 +#define XDG_POSITIONER_SET_ANCHOR_RECT 2 +#define XDG_POSITIONER_SET_ANCHOR 3 +#define XDG_POSITIONER_SET_GRAVITY 4 +#define XDG_POSITIONER_SET_CONSTRAINT_ADJUSTMENT 5 +#define XDG_POSITIONER_SET_OFFSET 6 +#define XDG_POSITIONER_SET_REACTIVE 7 +#define XDG_POSITIONER_SET_PARENT_SIZE 8 +#define XDG_POSITIONER_SET_PARENT_CONFIGURE 9 + + +/** + * @ingroup iface_xdg_positioner + */ +#define XDG_POSITIONER_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_positioner + */ +#define XDG_POSITIONER_SET_SIZE_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_positioner + */ +#define XDG_POSITIONER_SET_ANCHOR_RECT_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_positioner + */ +#define XDG_POSITIONER_SET_ANCHOR_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_positioner + */ +#define XDG_POSITIONER_SET_GRAVITY_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_positioner + */ +#define XDG_POSITIONER_SET_CONSTRAINT_ADJUSTMENT_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_positioner + */ +#define XDG_POSITIONER_SET_OFFSET_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_positioner + */ +#define XDG_POSITIONER_SET_REACTIVE_SINCE_VERSION 3 +/** + * @ingroup iface_xdg_positioner + */ +#define XDG_POSITIONER_SET_PARENT_SIZE_SINCE_VERSION 3 +/** + * @ingroup iface_xdg_positioner + */ +#define XDG_POSITIONER_SET_PARENT_CONFIGURE_SINCE_VERSION 3 + +/** @ingroup iface_xdg_positioner */ +static inline void +xdg_positioner_set_user_data(struct xdg_positioner *xdg_positioner, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) xdg_positioner, user_data); +} + +/** @ingroup iface_xdg_positioner */ +static inline void * +xdg_positioner_get_user_data(struct xdg_positioner *xdg_positioner) +{ + return wl_proxy_get_user_data((struct wl_proxy *) xdg_positioner); +} + +static inline uint32_t +xdg_positioner_get_version(struct xdg_positioner *xdg_positioner) +{ + return wl_proxy_get_version((struct wl_proxy *) xdg_positioner); +} + +/** + * @ingroup iface_xdg_positioner + * + * Notify the compositor that the xdg_positioner will no longer be used. + */ +static inline void +xdg_positioner_destroy(struct xdg_positioner *xdg_positioner) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_positioner, + XDG_POSITIONER_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_positioner), WL_MARSHAL_FLAG_DESTROY); +} + +/** + * @ingroup iface_xdg_positioner + * + * Set the size of the surface that is to be positioned with the positioner + * object. The size is in surface-local coordinates and corresponds to the + * window geometry. See xdg_surface.set_window_geometry. + * + * If a zero or negative size is set the invalid_input error is raised. + */ +static inline void +xdg_positioner_set_size(struct xdg_positioner *xdg_positioner, int32_t width, int32_t height) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_positioner, + XDG_POSITIONER_SET_SIZE, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_positioner), 0, width, height); +} + +/** + * @ingroup iface_xdg_positioner + * + * Specify the anchor rectangle within the parent surface that the child + * surface will be placed relative to. The rectangle is relative to the + * window geometry as defined by xdg_surface.set_window_geometry of the + * parent surface. + * + * When the xdg_positioner object is used to position a child surface, the + * anchor rectangle may not extend outside the window geometry of the + * positioned child's parent surface. + * + * If a negative size is set the invalid_input error is raised. + */ +static inline void +xdg_positioner_set_anchor_rect(struct xdg_positioner *xdg_positioner, int32_t x, int32_t y, int32_t width, int32_t height) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_positioner, + XDG_POSITIONER_SET_ANCHOR_RECT, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_positioner), 0, x, y, width, height); +} + +/** + * @ingroup iface_xdg_positioner + * + * Defines the anchor point for the anchor rectangle. The specified anchor + * is used derive an anchor point that the child surface will be + * positioned relative to. If a corner anchor is set (e.g. 'top_left' or + * 'bottom_right'), the anchor point will be at the specified corner; + * otherwise, the derived anchor point will be centered on the specified + * edge, or in the center of the anchor rectangle if no edge is specified. + */ +static inline void +xdg_positioner_set_anchor(struct xdg_positioner *xdg_positioner, uint32_t anchor) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_positioner, + XDG_POSITIONER_SET_ANCHOR, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_positioner), 0, anchor); +} + +/** + * @ingroup iface_xdg_positioner + * + * Defines in what direction a surface should be positioned, relative to + * the anchor point of the parent surface. If a corner gravity is + * specified (e.g. 'bottom_right' or 'top_left'), then the child surface + * will be placed towards the specified gravity; otherwise, the child + * surface will be centered over the anchor point on any axis that had no + * gravity specified. If the gravity is not in the ‘gravity’ enum, an + * invalid_input error is raised. + */ +static inline void +xdg_positioner_set_gravity(struct xdg_positioner *xdg_positioner, uint32_t gravity) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_positioner, + XDG_POSITIONER_SET_GRAVITY, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_positioner), 0, gravity); +} + +/** + * @ingroup iface_xdg_positioner + * + * Specify how the window should be positioned if the originally intended + * position caused the surface to be constrained, meaning at least + * partially outside positioning boundaries set by the compositor. The + * adjustment is set by constructing a bitmask describing the adjustment to + * be made when the surface is constrained on that axis. + * + * If no bit for one axis is set, the compositor will assume that the child + * surface should not change its position on that axis when constrained. + * + * If more than one bit for one axis is set, the order of how adjustments + * are applied is specified in the corresponding adjustment descriptions. + * + * The default adjustment is none. + */ +static inline void +xdg_positioner_set_constraint_adjustment(struct xdg_positioner *xdg_positioner, uint32_t constraint_adjustment) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_positioner, + XDG_POSITIONER_SET_CONSTRAINT_ADJUSTMENT, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_positioner), 0, constraint_adjustment); +} + +/** + * @ingroup iface_xdg_positioner + * + * Specify the surface position offset relative to the position of the + * anchor on the anchor rectangle and the anchor on the surface. For + * example if the anchor of the anchor rectangle is at (x, y), the surface + * has the gravity bottom|right, and the offset is (ox, oy), the calculated + * surface position will be (x + ox, y + oy). The offset position of the + * surface is the one used for constraint testing. See + * set_constraint_adjustment. + * + * An example use case is placing a popup menu on top of a user interface + * element, while aligning the user interface element of the parent surface + * with some user interface element placed somewhere in the popup surface. + */ +static inline void +xdg_positioner_set_offset(struct xdg_positioner *xdg_positioner, int32_t x, int32_t y) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_positioner, + XDG_POSITIONER_SET_OFFSET, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_positioner), 0, x, y); +} + +/** + * @ingroup iface_xdg_positioner + * + * When set reactive, the surface is reconstrained if the conditions used + * for constraining changed, e.g. the parent window moved. + * + * If the conditions changed and the popup was reconstrained, an + * xdg_popup.configure event is sent with updated geometry, followed by an + * xdg_surface.configure event. + */ +static inline void +xdg_positioner_set_reactive(struct xdg_positioner *xdg_positioner) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_positioner, + XDG_POSITIONER_SET_REACTIVE, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_positioner), 0); +} + +/** + * @ingroup iface_xdg_positioner + * + * Set the parent window geometry the compositor should use when + * positioning the popup. The compositor may use this information to + * determine the future state the popup should be constrained using. If + * this doesn't match the dimension of the parent the popup is eventually + * positioned against, the behavior is undefined. + * + * The arguments are given in the surface-local coordinate space. + */ +static inline void +xdg_positioner_set_parent_size(struct xdg_positioner *xdg_positioner, int32_t parent_width, int32_t parent_height) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_positioner, + XDG_POSITIONER_SET_PARENT_SIZE, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_positioner), 0, parent_width, parent_height); +} + +/** + * @ingroup iface_xdg_positioner + * + * Set the serial of an xdg_surface.configure event this positioner will be + * used in response to. The compositor may use this information together + * with set_parent_size to determine what future state the popup should be + * constrained using. + */ +static inline void +xdg_positioner_set_parent_configure(struct xdg_positioner *xdg_positioner, uint32_t serial) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_positioner, + XDG_POSITIONER_SET_PARENT_CONFIGURE, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_positioner), 0, serial); +} + +#ifndef XDG_SURFACE_ERROR_ENUM +#define XDG_SURFACE_ERROR_ENUM +enum xdg_surface_error { + /** + * Surface was not fully constructed + */ + XDG_SURFACE_ERROR_NOT_CONSTRUCTED = 1, + /** + * Surface was already constructed + */ + XDG_SURFACE_ERROR_ALREADY_CONSTRUCTED = 2, + /** + * Attaching a buffer to an unconfigured surface + */ + XDG_SURFACE_ERROR_UNCONFIGURED_BUFFER = 3, + /** + * Invalid serial number when acking a configure event + */ + XDG_SURFACE_ERROR_INVALID_SERIAL = 4, + /** + * Width or height was zero or negative + */ + XDG_SURFACE_ERROR_INVALID_SIZE = 5, + /** + * Surface was destroyed before its role object + */ + XDG_SURFACE_ERROR_DEFUNCT_ROLE_OBJECT = 6, +}; +#endif /* XDG_SURFACE_ERROR_ENUM */ + +/** + * @ingroup iface_xdg_surface + * @struct xdg_surface_listener + */ +struct xdg_surface_listener { + /** + * suggest a surface change + * + * The configure event marks the end of a configure sequence. A + * configure sequence is a set of one or more events configuring + * the state of the xdg_surface, including the final + * xdg_surface.configure event. + * + * Where applicable, xdg_surface surface roles will during a + * configure sequence extend this event as a latched state sent as + * events before the xdg_surface.configure event. Such events + * should be considered to make up a set of atomically applied + * configuration states, where the xdg_surface.configure commits + * the accumulated state. + * + * Clients should arrange their surface for the new states, and + * then send an ack_configure request with the serial sent in this + * configure event at some point before committing the new surface. + * + * If the client receives multiple configure events before it can + * respond to one, it is free to discard all but the last event it + * received. + * @param serial serial of the configure event + */ + void (*configure)(void *data, + struct xdg_surface *xdg_surface, + uint32_t serial); +}; + +/** + * @ingroup iface_xdg_surface + */ +static inline int +xdg_surface_add_listener(struct xdg_surface *xdg_surface, + const struct xdg_surface_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) xdg_surface, + (void (**)(void)) listener, data); +} + +#define XDG_SURFACE_DESTROY 0 +#define XDG_SURFACE_GET_TOPLEVEL 1 +#define XDG_SURFACE_GET_POPUP 2 +#define XDG_SURFACE_SET_WINDOW_GEOMETRY 3 +#define XDG_SURFACE_ACK_CONFIGURE 4 + +/** + * @ingroup iface_xdg_surface + */ +#define XDG_SURFACE_CONFIGURE_SINCE_VERSION 1 + +/** + * @ingroup iface_xdg_surface + */ +#define XDG_SURFACE_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_surface + */ +#define XDG_SURFACE_GET_TOPLEVEL_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_surface + */ +#define XDG_SURFACE_GET_POPUP_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_surface + */ +#define XDG_SURFACE_SET_WINDOW_GEOMETRY_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_surface + */ +#define XDG_SURFACE_ACK_CONFIGURE_SINCE_VERSION 1 + +/** @ingroup iface_xdg_surface */ +static inline void +xdg_surface_set_user_data(struct xdg_surface *xdg_surface, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) xdg_surface, user_data); +} + +/** @ingroup iface_xdg_surface */ +static inline void * +xdg_surface_get_user_data(struct xdg_surface *xdg_surface) +{ + return wl_proxy_get_user_data((struct wl_proxy *) xdg_surface); +} + +static inline uint32_t +xdg_surface_get_version(struct xdg_surface *xdg_surface) +{ + return wl_proxy_get_version((struct wl_proxy *) xdg_surface); +} + +/** + * @ingroup iface_xdg_surface + * + * Destroy the xdg_surface object. An xdg_surface must only be destroyed + * after its role object has been destroyed, otherwise + * a defunct_role_object error is raised. + */ +static inline void +xdg_surface_destroy(struct xdg_surface *xdg_surface) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_surface, + XDG_SURFACE_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_surface), WL_MARSHAL_FLAG_DESTROY); +} + +/** + * @ingroup iface_xdg_surface + * + * This creates an xdg_toplevel object for the given xdg_surface and gives + * the associated wl_surface the xdg_toplevel role. + * + * See the documentation of xdg_toplevel for more details about what an + * xdg_toplevel is and how it is used. + */ +static inline struct xdg_toplevel * +xdg_surface_get_toplevel(struct xdg_surface *xdg_surface) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_flags((struct wl_proxy *) xdg_surface, + XDG_SURFACE_GET_TOPLEVEL, &xdg_toplevel_interface, wl_proxy_get_version((struct wl_proxy *) xdg_surface), 0, NULL); + + return (struct xdg_toplevel *) id; +} + +/** + * @ingroup iface_xdg_surface + * + * This creates an xdg_popup object for the given xdg_surface and gives + * the associated wl_surface the xdg_popup role. + * + * If null is passed as a parent, a parent surface must be specified using + * some other protocol, before committing the initial state. + * + * See the documentation of xdg_popup for more details about what an + * xdg_popup is and how it is used. + */ +static inline struct xdg_popup * +xdg_surface_get_popup(struct xdg_surface *xdg_surface, struct xdg_surface *parent, struct xdg_positioner *positioner) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_flags((struct wl_proxy *) xdg_surface, + XDG_SURFACE_GET_POPUP, &xdg_popup_interface, wl_proxy_get_version((struct wl_proxy *) xdg_surface), 0, NULL, parent, positioner); + + return (struct xdg_popup *) id; +} + +/** + * @ingroup iface_xdg_surface + * + * The window geometry of a surface is its "visible bounds" from the + * user's perspective. Client-side decorations often have invisible + * portions like drop-shadows which should be ignored for the + * purposes of aligning, placing and constraining windows. Note that + * in some situations, compositors may clip rendering to the window + * geometry, so the client should avoid putting functional elements + * outside of it. + * + * The window geometry is double-buffered state, see wl_surface.commit. + * + * When maintaining a position, the compositor should treat the (x, y) + * coordinate of the window geometry as the top left corner of the window. + * A client changing the (x, y) window geometry coordinate should in + * general not alter the position of the window. + * + * Once the window geometry of the surface is set, it is not possible to + * unset it, and it will remain the same until set_window_geometry is + * called again, even if a new subsurface or buffer is attached. + * + * If never set, the value is the full bounds of the surface, + * including any subsurfaces. This updates dynamically on every + * commit. This unset is meant for extremely simple clients. + * + * The arguments are given in the surface-local coordinate space of + * the wl_surface associated with this xdg_surface, and may extend outside + * of the wl_surface itself to mark parts of the subsurface tree as part of + * the window geometry. + * + * When applied, the effective window geometry will be the set window + * geometry clamped to the bounding rectangle of the combined + * geometry of the surface of the xdg_surface and the associated + * subsurfaces. + * + * The effective geometry will not be recalculated unless a new call to + * set_window_geometry is done and the new pending surface state is + * subsequently applied. + * + * The width and height of the effective window geometry must be + * greater than zero. Setting an invalid size will raise an + * invalid_size error. + */ +static inline void +xdg_surface_set_window_geometry(struct xdg_surface *xdg_surface, int32_t x, int32_t y, int32_t width, int32_t height) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_surface, + XDG_SURFACE_SET_WINDOW_GEOMETRY, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_surface), 0, x, y, width, height); +} + +/** + * @ingroup iface_xdg_surface + * + * When a configure event is received, if a client commits the + * surface in response to the configure event, then the client + * must make an ack_configure request sometime before the commit + * request, passing along the serial of the configure event. + * + * For instance, for toplevel surfaces the compositor might use this + * information to move a surface to the top left only when the client has + * drawn itself for the maximized or fullscreen state. + * + * If the client receives multiple configure events before it + * can respond to one, it only has to ack the last configure event. + * Acking a configure event that was never sent raises an invalid_serial + * error. + * + * A client is not required to commit immediately after sending + * an ack_configure request - it may even ack_configure several times + * before its next surface commit. + * + * A client may send multiple ack_configure requests before committing, but + * only the last request sent before a commit indicates which configure + * event the client really is responding to. + * + * Sending an ack_configure request consumes the serial number sent with + * the request, as well as serial numbers sent by all configure events + * sent on this xdg_surface prior to the configure event referenced by + * the committed serial. + * + * It is an error to issue multiple ack_configure requests referencing a + * serial from the same configure event, or to issue an ack_configure + * request referencing a serial from a configure event issued before the + * event identified by the last ack_configure request for the same + * xdg_surface. Doing so will raise an invalid_serial error. + */ +static inline void +xdg_surface_ack_configure(struct xdg_surface *xdg_surface, uint32_t serial) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_surface, + XDG_SURFACE_ACK_CONFIGURE, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_surface), 0, serial); +} + +#ifndef XDG_TOPLEVEL_ERROR_ENUM +#define XDG_TOPLEVEL_ERROR_ENUM +enum xdg_toplevel_error { + /** + * provided value is not a valid variant of the resize_edge enum + */ + XDG_TOPLEVEL_ERROR_INVALID_RESIZE_EDGE = 0, + /** + * invalid parent toplevel + */ + XDG_TOPLEVEL_ERROR_INVALID_PARENT = 1, + /** + * client provided an invalid min or max size + */ + XDG_TOPLEVEL_ERROR_INVALID_SIZE = 2, +}; +#endif /* XDG_TOPLEVEL_ERROR_ENUM */ + +#ifndef XDG_TOPLEVEL_RESIZE_EDGE_ENUM +#define XDG_TOPLEVEL_RESIZE_EDGE_ENUM +/** + * @ingroup iface_xdg_toplevel + * edge values for resizing + * + * These values are used to indicate which edge of a surface + * is being dragged in a resize operation. + */ +enum xdg_toplevel_resize_edge { + XDG_TOPLEVEL_RESIZE_EDGE_NONE = 0, + XDG_TOPLEVEL_RESIZE_EDGE_TOP = 1, + XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM = 2, + XDG_TOPLEVEL_RESIZE_EDGE_LEFT = 4, + XDG_TOPLEVEL_RESIZE_EDGE_TOP_LEFT = 5, + XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM_LEFT = 6, + XDG_TOPLEVEL_RESIZE_EDGE_RIGHT = 8, + XDG_TOPLEVEL_RESIZE_EDGE_TOP_RIGHT = 9, + XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM_RIGHT = 10, +}; +#endif /* XDG_TOPLEVEL_RESIZE_EDGE_ENUM */ + +#ifndef XDG_TOPLEVEL_STATE_ENUM +#define XDG_TOPLEVEL_STATE_ENUM +/** + * @ingroup iface_xdg_toplevel + * types of state on the surface + * + * The different state values used on the surface. This is designed for + * state values like maximized, fullscreen. It is paired with the + * configure event to ensure that both the client and the compositor + * setting the state can be synchronized. + * + * States set in this way are double-buffered, see wl_surface.commit. + */ +enum xdg_toplevel_state { + /** + * the surface is maximized + * the surface is maximized + * + * The surface is maximized. The window geometry specified in the + * configure event must be obeyed by the client, or the + * xdg_wm_base.invalid_surface_state error is raised. + * + * The client should draw without shadow or other decoration + * outside of the window geometry. + */ + XDG_TOPLEVEL_STATE_MAXIMIZED = 1, + /** + * the surface is fullscreen + * the surface is fullscreen + * + * The surface is fullscreen. The window geometry specified in + * the configure event is a maximum; the client cannot resize + * beyond it. For a surface to cover the whole fullscreened area, + * the geometry dimensions must be obeyed by the client. For more + * details, see xdg_toplevel.set_fullscreen. + */ + XDG_TOPLEVEL_STATE_FULLSCREEN = 2, + /** + * the surface is being resized + * the surface is being resized + * + * The surface is being resized. The window geometry specified in + * the configure event is a maximum; the client cannot resize + * beyond it. Clients that have aspect ratio or cell sizing + * configuration can use a smaller size, however. + */ + XDG_TOPLEVEL_STATE_RESIZING = 3, + /** + * the surface is now activated + * the surface is now activated + * + * Client window decorations should be painted as if the window + * is active. Do not assume this means that the window actually has + * keyboard or pointer focus. + */ + XDG_TOPLEVEL_STATE_ACTIVATED = 4, + /** + * the surface’s left edge is tiled + * + * The window is currently in a tiled layout and the left edge is + * considered to be adjacent to another part of the tiling grid. + * + * The client should draw without shadow or other decoration + * outside of the window geometry on the left edge. + * @since 2 + */ + XDG_TOPLEVEL_STATE_TILED_LEFT = 5, + /** + * the surface’s right edge is tiled + * + * The window is currently in a tiled layout and the right edge + * is considered to be adjacent to another part of the tiling grid. + * + * The client should draw without shadow or other decoration + * outside of the window geometry on the right edge. + * @since 2 + */ + XDG_TOPLEVEL_STATE_TILED_RIGHT = 6, + /** + * the surface’s top edge is tiled + * + * The window is currently in a tiled layout and the top edge is + * considered to be adjacent to another part of the tiling grid. + * + * The client should draw without shadow or other decoration + * outside of the window geometry on the top edge. + * @since 2 + */ + XDG_TOPLEVEL_STATE_TILED_TOP = 7, + /** + * the surface’s bottom edge is tiled + * + * The window is currently in a tiled layout and the bottom edge + * is considered to be adjacent to another part of the tiling grid. + * + * The client should draw without shadow or other decoration + * outside of the window geometry on the bottom edge. + * @since 2 + */ + XDG_TOPLEVEL_STATE_TILED_BOTTOM = 8, + /** + * surface repaint is suspended + * + * The surface is currently not ordinarily being repainted; for + * example because its content is occluded by another window, or + * its outputs are switched off due to screen locking. + * @since 6 + */ + XDG_TOPLEVEL_STATE_SUSPENDED = 9, + /** + * the surface’s left edge is constrained + * + * The left edge of the window is currently constrained, meaning + * it shouldn't attempt to resize from that edge. It can for + * example mean it's tiled next to a monitor edge on the + * constrained side of the window. + * @since 7 + */ + XDG_TOPLEVEL_STATE_CONSTRAINED_LEFT = 10, + /** + * the surface’s right edge is constrained + * + * The right edge of the window is currently constrained, meaning + * it shouldn't attempt to resize from that edge. It can for + * example mean it's tiled next to a monitor edge on the + * constrained side of the window. + * @since 7 + */ + XDG_TOPLEVEL_STATE_CONSTRAINED_RIGHT = 11, + /** + * the surface’s top edge is constrained + * + * The top edge of the window is currently constrained, meaning + * it shouldn't attempt to resize from that edge. It can for + * example mean it's tiled next to a monitor edge on the + * constrained side of the window. + * @since 7 + */ + XDG_TOPLEVEL_STATE_CONSTRAINED_TOP = 12, + /** + * the surface’s bottom edge is constrained + * + * The bottom edge of the window is currently constrained, + * meaning it shouldn't attempt to resize from that edge. It can + * for example mean it's tiled next to a monitor edge on the + * constrained side of the window. + * @since 7 + */ + XDG_TOPLEVEL_STATE_CONSTRAINED_BOTTOM = 13, +}; +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_STATE_TILED_LEFT_SINCE_VERSION 2 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_STATE_TILED_RIGHT_SINCE_VERSION 2 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_STATE_TILED_TOP_SINCE_VERSION 2 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_STATE_TILED_BOTTOM_SINCE_VERSION 2 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_STATE_SUSPENDED_SINCE_VERSION 6 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_STATE_CONSTRAINED_LEFT_SINCE_VERSION 7 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_STATE_CONSTRAINED_RIGHT_SINCE_VERSION 7 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_STATE_CONSTRAINED_TOP_SINCE_VERSION 7 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_STATE_CONSTRAINED_BOTTOM_SINCE_VERSION 7 +#endif /* XDG_TOPLEVEL_STATE_ENUM */ + +#ifndef XDG_TOPLEVEL_WM_CAPABILITIES_ENUM +#define XDG_TOPLEVEL_WM_CAPABILITIES_ENUM +enum xdg_toplevel_wm_capabilities { + /** + * show_window_menu is available + */ + XDG_TOPLEVEL_WM_CAPABILITIES_WINDOW_MENU = 1, + /** + * set_maximized and unset_maximized are available + */ + XDG_TOPLEVEL_WM_CAPABILITIES_MAXIMIZE = 2, + /** + * set_fullscreen and unset_fullscreen are available + */ + XDG_TOPLEVEL_WM_CAPABILITIES_FULLSCREEN = 3, + /** + * set_minimized is available + */ + XDG_TOPLEVEL_WM_CAPABILITIES_MINIMIZE = 4, +}; +#endif /* XDG_TOPLEVEL_WM_CAPABILITIES_ENUM */ + +/** + * @ingroup iface_xdg_toplevel + * @struct xdg_toplevel_listener + */ +struct xdg_toplevel_listener { + /** + * suggest a surface change + * + * This configure event asks the client to resize its toplevel + * surface or to change its state. The configured state should not + * be applied immediately. See xdg_surface.configure for details. + * + * The width and height arguments specify a hint to the window + * about how its surface should be resized in window geometry + * coordinates. See set_window_geometry. + * + * If the width or height arguments are zero, it means the client + * should decide its own window dimension. This may happen when the + * compositor needs to configure the state of the surface but + * doesn't have any information about any previous or expected + * dimension. + * + * The states listed in the event specify how the width/height + * arguments should be interpreted, and possibly how it should be + * drawn. + * + * Clients must send an ack_configure in response to this event. + * See xdg_surface.configure and xdg_surface.ack_configure for + * details. + */ + void (*configure)(void *data, + struct xdg_toplevel *xdg_toplevel, + int32_t width, + int32_t height, + struct wl_array *states); + /** + * surface wants to be closed + * + * The close event is sent by the compositor when the user wants + * the surface to be closed. This should be equivalent to the user + * clicking the close button in client-side decorations, if your + * application has any. + * + * This is only a request that the user intends to close the + * window. The client may choose to ignore this request, or show a + * dialog to ask the user to save their data, etc. + */ + void (*close)(void *data, + struct xdg_toplevel *xdg_toplevel); + /** + * recommended window geometry bounds + * + * The configure_bounds event may be sent prior to a + * xdg_toplevel.configure event to communicate the bounds a window + * geometry size is recommended to constrain to. + * + * The passed width and height are in surface coordinate space. If + * width and height are 0, it means bounds is unknown and + * equivalent to as if no configure_bounds event was ever sent for + * this surface. + * + * The bounds can for example correspond to the size of a monitor + * excluding any panels or other shell components, so that a + * surface isn't created in a way that it cannot fit. + * + * The bounds may change at any point, and in such a case, a new + * xdg_toplevel.configure_bounds will be sent, followed by + * xdg_toplevel.configure and xdg_surface.configure. + * @since 4 + */ + void (*configure_bounds)(void *data, + struct xdg_toplevel *xdg_toplevel, + int32_t width, + int32_t height); + /** + * compositor capabilities + * + * This event advertises the capabilities supported by the + * compositor. If a capability isn't supported, clients should hide + * or disable the UI elements that expose this functionality. For + * instance, if the compositor doesn't advertise support for + * minimized toplevels, a button triggering the set_minimized + * request should not be displayed. + * + * The compositor will ignore requests it doesn't support. For + * instance, a compositor which doesn't advertise support for + * minimized will ignore set_minimized requests. + * + * Compositors must send this event once before the first + * xdg_surface.configure event. When the capabilities change, + * compositors must send this event again and then send an + * xdg_surface.configure event. + * + * The configured state should not be applied immediately. See + * xdg_surface.configure for details. + * + * The capabilities are sent as an array of 32-bit unsigned + * integers in native endianness. + * @param capabilities array of 32-bit capabilities + * @since 5 + */ + void (*wm_capabilities)(void *data, + struct xdg_toplevel *xdg_toplevel, + struct wl_array *capabilities); +}; + +/** + * @ingroup iface_xdg_toplevel + */ +static inline int +xdg_toplevel_add_listener(struct xdg_toplevel *xdg_toplevel, + const struct xdg_toplevel_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) xdg_toplevel, + (void (**)(void)) listener, data); +} + +#define XDG_TOPLEVEL_DESTROY 0 +#define XDG_TOPLEVEL_SET_PARENT 1 +#define XDG_TOPLEVEL_SET_TITLE 2 +#define XDG_TOPLEVEL_SET_APP_ID 3 +#define XDG_TOPLEVEL_SHOW_WINDOW_MENU 4 +#define XDG_TOPLEVEL_MOVE 5 +#define XDG_TOPLEVEL_RESIZE 6 +#define XDG_TOPLEVEL_SET_MAX_SIZE 7 +#define XDG_TOPLEVEL_SET_MIN_SIZE 8 +#define XDG_TOPLEVEL_SET_MAXIMIZED 9 +#define XDG_TOPLEVEL_UNSET_MAXIMIZED 10 +#define XDG_TOPLEVEL_SET_FULLSCREEN 11 +#define XDG_TOPLEVEL_UNSET_FULLSCREEN 12 +#define XDG_TOPLEVEL_SET_MINIMIZED 13 + +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_CONFIGURE_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_CLOSE_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_CONFIGURE_BOUNDS_SINCE_VERSION 4 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_WM_CAPABILITIES_SINCE_VERSION 5 + +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_SET_PARENT_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_SET_TITLE_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_SET_APP_ID_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_SHOW_WINDOW_MENU_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_MOVE_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_RESIZE_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_SET_MAX_SIZE_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_SET_MIN_SIZE_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_SET_MAXIMIZED_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_UNSET_MAXIMIZED_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_SET_FULLSCREEN_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_UNSET_FULLSCREEN_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_toplevel + */ +#define XDG_TOPLEVEL_SET_MINIMIZED_SINCE_VERSION 1 + +/** @ingroup iface_xdg_toplevel */ +static inline void +xdg_toplevel_set_user_data(struct xdg_toplevel *xdg_toplevel, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) xdg_toplevel, user_data); +} + +/** @ingroup iface_xdg_toplevel */ +static inline void * +xdg_toplevel_get_user_data(struct xdg_toplevel *xdg_toplevel) +{ + return wl_proxy_get_user_data((struct wl_proxy *) xdg_toplevel); +} + +static inline uint32_t +xdg_toplevel_get_version(struct xdg_toplevel *xdg_toplevel) +{ + return wl_proxy_get_version((struct wl_proxy *) xdg_toplevel); +} + +/** + * @ingroup iface_xdg_toplevel + * + * This request destroys the role surface and unmaps the surface; + * see "Unmapping" behavior in interface section for details. + */ +static inline void +xdg_toplevel_destroy(struct xdg_toplevel *xdg_toplevel) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), WL_MARSHAL_FLAG_DESTROY); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Set the "parent" of this surface. This surface should be stacked + * above the parent surface and all other ancestor surfaces. + * + * Parent surfaces should be set on dialogs, toolboxes, or other + * "auxiliary" surfaces, so that the parent is raised when the dialog + * is raised. + * + * Setting a null parent for a child surface unsets its parent. Setting + * a null parent for a surface which currently has no parent is a no-op. + * + * Only mapped surfaces can have child surfaces. Setting a parent which + * is not mapped is equivalent to setting a null parent. If a surface + * becomes unmapped, its children's parent is set to the parent of + * the now-unmapped surface. If the now-unmapped surface has no parent, + * its children's parent is unset. If the now-unmapped surface becomes + * mapped again, its parent-child relationship is not restored. + * + * The parent toplevel must not be one of the child toplevel's + * descendants, and the parent must be different from the child toplevel, + * otherwise the invalid_parent protocol error is raised. + */ +static inline void +xdg_toplevel_set_parent(struct xdg_toplevel *xdg_toplevel, struct xdg_toplevel *parent) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_SET_PARENT, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0, parent); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Set a short title for the surface. + * + * This string may be used to identify the surface in a task bar, + * window list, or other user interface elements provided by the + * compositor. + * + * The string must be encoded in UTF-8. + */ +static inline void +xdg_toplevel_set_title(struct xdg_toplevel *xdg_toplevel, const char *title) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_SET_TITLE, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0, title); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Set an application identifier for the surface. + * + * The app ID identifies the general class of applications to which + * the surface belongs. The compositor can use this to group multiple + * surfaces together, or to determine how to launch a new application. + * + * For D-Bus activatable applications, the app ID is used as the D-Bus + * service name. + * + * The compositor shell will try to group application surfaces together + * by their app ID. As a best practice, it is suggested to select app + * ID's that match the basename of the application's .desktop file. + * For example, "org.freedesktop.FooViewer" where the .desktop file is + * "org.freedesktop.FooViewer.desktop". + * + * Like other properties, a set_app_id request can be sent after the + * xdg_toplevel has been mapped to update the property. + * + * See the desktop-entry specification [0] for more details on + * application identifiers and how they relate to well-known D-Bus + * names and .desktop files. + * + * [0] https://standards.freedesktop.org/desktop-entry-spec/ + */ +static inline void +xdg_toplevel_set_app_id(struct xdg_toplevel *xdg_toplevel, const char *app_id) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_SET_APP_ID, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0, app_id); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Clients implementing client-side decorations might want to show + * a context menu when right-clicking on the decorations, giving the + * user a menu that they can use to maximize or minimize the window. + * + * This request asks the compositor to pop up such a window menu at + * the given position, relative to the local surface coordinates of + * the parent surface. There are no guarantees as to what menu items + * the window menu contains, or even if a window menu will be drawn + * at all. + * + * This request must be used in response to some sort of user action + * like a button press, key press, or touch down event. + */ +static inline void +xdg_toplevel_show_window_menu(struct xdg_toplevel *xdg_toplevel, struct wl_seat *seat, uint32_t serial, int32_t x, int32_t y) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_SHOW_WINDOW_MENU, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0, seat, serial, x, y); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Start an interactive, user-driven move of the surface. + * + * This request must be used in response to some sort of user action + * like a button press, key press, or touch down event. The passed + * serial is used to determine the type of interactive move (touch, + * pointer, etc). + * + * The server may ignore move requests depending on the state of + * the surface (e.g. fullscreen or maximized), or if the passed serial + * is no longer valid. + * + * If triggered, the surface will lose the focus of the device + * (wl_pointer, wl_touch, etc) used for the move. It is up to the + * compositor to visually indicate that the move is taking place, such as + * updating a pointer cursor, during the move. There is no guarantee + * that the device focus will return when the move is completed. + */ +static inline void +xdg_toplevel_move(struct xdg_toplevel *xdg_toplevel, struct wl_seat *seat, uint32_t serial) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_MOVE, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0, seat, serial); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Start a user-driven, interactive resize of the surface. + * + * This request must be used in response to some sort of user action + * like a button press, key press, or touch down event. The passed + * serial is used to determine the type of interactive resize (touch, + * pointer, etc). + * + * The server may ignore resize requests depending on the state of + * the surface (e.g. fullscreen or maximized). + * + * If triggered, the client will receive configure events with the + * "resize" state enum value and the expected sizes. See the "resize" + * enum value for more details about what is required. The client + * must also acknowledge configure events using "ack_configure". After + * the resize is completed, the client will receive another "configure" + * event without the resize state. + * + * If triggered, the surface also will lose the focus of the device + * (wl_pointer, wl_touch, etc) used for the resize. It is up to the + * compositor to visually indicate that the resize is taking place, + * such as updating a pointer cursor, during the resize. There is no + * guarantee that the device focus will return when the resize is + * completed. + * + * The edges parameter specifies how the surface should be resized, and + * is one of the values of the resize_edge enum. Values not matching + * a variant of the enum will cause the invalid_resize_edge protocol error. + * The compositor may use this information to update the surface position + * for example when dragging the top left corner. The compositor may also + * use this information to adapt its behavior, e.g. choose an appropriate + * cursor image. + */ +static inline void +xdg_toplevel_resize(struct xdg_toplevel *xdg_toplevel, struct wl_seat *seat, uint32_t serial, uint32_t edges) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_RESIZE, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0, seat, serial, edges); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Set a maximum size for the window. + * + * The client can specify a maximum size so that the compositor does + * not try to configure the window beyond this size. + * + * The width and height arguments are in window geometry coordinates. + * See xdg_surface.set_window_geometry. + * + * Values set in this way are double-buffered, see wl_surface.commit. + * + * The compositor can use this information to allow or disallow + * different states like maximize or fullscreen and draw accurate + * animations. + * + * Similarly, a tiling window manager may use this information to + * place and resize client windows in a more effective way. + * + * The client should not rely on the compositor to obey the maximum + * size. The compositor may decide to ignore the values set by the + * client and request a larger size. + * + * If never set, or a value of zero in the request, means that the + * client has no expected maximum size in the given dimension. + * As a result, a client wishing to reset the maximum size + * to an unspecified state can use zero for width and height in the + * request. + * + * Requesting a maximum size to be smaller than the minimum size of + * a surface is illegal and will result in an invalid_size error. + * + * The width and height must be greater than or equal to zero. Using + * strictly negative values for width or height will result in a + * invalid_size error. + */ +static inline void +xdg_toplevel_set_max_size(struct xdg_toplevel *xdg_toplevel, int32_t width, int32_t height) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_SET_MAX_SIZE, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0, width, height); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Set a minimum size for the window. + * + * The client can specify a minimum size so that the compositor does + * not try to configure the window below this size. + * + * The width and height arguments are in window geometry coordinates. + * See xdg_surface.set_window_geometry. + * + * Values set in this way are double-buffered, see wl_surface.commit. + * + * The compositor can use this information to allow or disallow + * different states like maximize or fullscreen and draw accurate + * animations. + * + * Similarly, a tiling window manager may use this information to + * place and resize client windows in a more effective way. + * + * The client should not rely on the compositor to obey the minimum + * size. The compositor may decide to ignore the values set by the + * client and request a smaller size. + * + * If never set, or a value of zero in the request, means that the + * client has no expected minimum size in the given dimension. + * As a result, a client wishing to reset the minimum size + * to an unspecified state can use zero for width and height in the + * request. + * + * Requesting a minimum size to be larger than the maximum size of + * a surface is illegal and will result in an invalid_size error. + * + * The width and height must be greater than or equal to zero. Using + * strictly negative values for width and height will result in a + * invalid_size error. + */ +static inline void +xdg_toplevel_set_min_size(struct xdg_toplevel *xdg_toplevel, int32_t width, int32_t height) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_SET_MIN_SIZE, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0, width, height); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Maximize the surface. + * + * After requesting that the surface should be maximized, the compositor + * will respond by emitting a configure event. Whether this configure + * actually sets the window maximized is subject to compositor policies. + * The client must then update its content, drawing in the configured + * state. The client must also acknowledge the configure when committing + * the new content (see ack_configure). + * + * It is up to the compositor to decide how and where to maximize the + * surface, for example which output and what region of the screen should + * be used. + * + * If the surface was already maximized, the compositor will still emit + * a configure event with the "maximized" state. + * + * If the surface is in a fullscreen state, this request has no direct + * effect. It may alter the state the surface is returned to when + * unmaximized unless overridden by the compositor. + */ +static inline void +xdg_toplevel_set_maximized(struct xdg_toplevel *xdg_toplevel) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_SET_MAXIMIZED, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Unmaximize the surface. + * + * After requesting that the surface should be unmaximized, the compositor + * will respond by emitting a configure event. Whether this actually + * un-maximizes the window is subject to compositor policies. + * If available and applicable, the compositor will include the window + * geometry dimensions the window had prior to being maximized in the + * configure event. The client must then update its content, drawing it in + * the configured state. The client must also acknowledge the configure + * when committing the new content (see ack_configure). + * + * It is up to the compositor to position the surface after it was + * unmaximized; usually the position the surface had before maximizing, if + * applicable. + * + * If the surface was already not maximized, the compositor will still + * emit a configure event without the "maximized" state. + * + * If the surface is in a fullscreen state, this request has no direct + * effect. It may alter the state the surface is returned to when + * unmaximized unless overridden by the compositor. + */ +static inline void +xdg_toplevel_unset_maximized(struct xdg_toplevel *xdg_toplevel) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_UNSET_MAXIMIZED, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Make the surface fullscreen. + * + * After requesting that the surface should be fullscreened, the + * compositor will respond by emitting a configure event. Whether the + * client is actually put into a fullscreen state is subject to compositor + * policies. The client must also acknowledge the configure when + * committing the new content (see ack_configure). + * + * The output passed by the request indicates the client's preference as + * to which display it should be set fullscreen on. If this value is NULL, + * it's up to the compositor to choose which display will be used to map + * this surface. + * + * If the surface doesn't cover the whole output, the compositor will + * position the surface in the center of the output and compensate with + * with border fill covering the rest of the output. The content of the + * border fill is undefined, but should be assumed to be in some way that + * attempts to blend into the surrounding area (e.g. solid black). + * + * If the fullscreened surface is not opaque, the compositor must make + * sure that other screen content not part of the same surface tree (made + * up of subsurfaces, popups or similarly coupled surfaces) are not + * visible below the fullscreened surface. + */ +static inline void +xdg_toplevel_set_fullscreen(struct xdg_toplevel *xdg_toplevel, struct wl_output *output) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_SET_FULLSCREEN, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0, output); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Make the surface no longer fullscreen. + * + * After requesting that the surface should be unfullscreened, the + * compositor will respond by emitting a configure event. + * Whether this actually removes the fullscreen state of the client is + * subject to compositor policies. + * + * Making a surface unfullscreen sets states for the surface based on the following: + * * the state(s) it may have had before becoming fullscreen + * * any state(s) decided by the compositor + * * any state(s) requested by the client while the surface was fullscreen + * + * The compositor may include the previous window geometry dimensions in + * the configure event, if applicable. + * + * The client must also acknowledge the configure when committing the new + * content (see ack_configure). + */ +static inline void +xdg_toplevel_unset_fullscreen(struct xdg_toplevel *xdg_toplevel) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_UNSET_FULLSCREEN, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0); +} + +/** + * @ingroup iface_xdg_toplevel + * + * Request that the compositor minimize your surface. There is no + * way to know if the surface is currently minimized, nor is there + * any way to unset minimization on this surface. + * + * If you are looking to throttle redrawing when minimized, please + * instead use the wl_surface.frame event for this, as this will + * also work with live previews on windows in Alt-Tab, Expose or + * similar compositor features. + */ +static inline void +xdg_toplevel_set_minimized(struct xdg_toplevel *xdg_toplevel) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_toplevel, + XDG_TOPLEVEL_SET_MINIMIZED, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_toplevel), 0); +} + +#ifndef XDG_POPUP_ERROR_ENUM +#define XDG_POPUP_ERROR_ENUM +enum xdg_popup_error { + /** + * tried to grab after being mapped + */ + XDG_POPUP_ERROR_INVALID_GRAB = 0, +}; +#endif /* XDG_POPUP_ERROR_ENUM */ + +/** + * @ingroup iface_xdg_popup + * @struct xdg_popup_listener + */ +struct xdg_popup_listener { + /** + * configure the popup surface + * + * This event asks the popup surface to configure itself given + * the configuration. The configured state should not be applied + * immediately. See xdg_surface.configure for details. + * + * The x and y arguments represent the position the popup was + * placed at given the xdg_positioner rule, relative to the upper + * left corner of the window geometry of the parent surface. + * + * For version 2 or older, the configure event for an xdg_popup is + * only ever sent once for the initial configuration. Starting with + * version 3, it may be sent again if the popup is setup with an + * xdg_positioner with set_reactive requested, or in response to + * xdg_popup.reposition requests. + * @param x x position relative to parent surface window geometry + * @param y y position relative to parent surface window geometry + * @param width window geometry width + * @param height window geometry height + */ + void (*configure)(void *data, + struct xdg_popup *xdg_popup, + int32_t x, + int32_t y, + int32_t width, + int32_t height); + /** + * popup interaction is done + * + * The popup_done event is sent out when a popup is dismissed by + * the compositor. The client should destroy the xdg_popup object + * at this point. + */ + void (*popup_done)(void *data, + struct xdg_popup *xdg_popup); + /** + * signal the completion of a repositioned request + * + * The repositioned event is sent as part of a popup + * configuration sequence, together with xdg_popup.configure and + * lastly xdg_surface.configure to notify the completion of a + * reposition request. + * + * The repositioned event is to notify about the completion of a + * xdg_popup.reposition request. The token argument is the token + * passed in the xdg_popup.reposition request. + * + * Immediately after this event is emitted, xdg_popup.configure and + * xdg_surface.configure will be sent with the updated size and + * position, as well as a new configure serial. + * + * The client should optionally update the content of the popup, + * but must acknowledge the new popup configuration for the new + * position to take effect. See xdg_surface.ack_configure for + * details. + * @param token reposition request token + * @since 3 + */ + void (*repositioned)(void *data, + struct xdg_popup *xdg_popup, + uint32_t token); +}; + +/** + * @ingroup iface_xdg_popup + */ +static inline int +xdg_popup_add_listener(struct xdg_popup *xdg_popup, + const struct xdg_popup_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) xdg_popup, + (void (**)(void)) listener, data); +} + +#define XDG_POPUP_DESTROY 0 +#define XDG_POPUP_GRAB 1 +#define XDG_POPUP_REPOSITION 2 + +/** + * @ingroup iface_xdg_popup + */ +#define XDG_POPUP_CONFIGURE_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_popup + */ +#define XDG_POPUP_POPUP_DONE_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_popup + */ +#define XDG_POPUP_REPOSITIONED_SINCE_VERSION 3 + +/** + * @ingroup iface_xdg_popup + */ +#define XDG_POPUP_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_popup + */ +#define XDG_POPUP_GRAB_SINCE_VERSION 1 +/** + * @ingroup iface_xdg_popup + */ +#define XDG_POPUP_REPOSITION_SINCE_VERSION 3 + +/** @ingroup iface_xdg_popup */ +static inline void +xdg_popup_set_user_data(struct xdg_popup *xdg_popup, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) xdg_popup, user_data); +} + +/** @ingroup iface_xdg_popup */ +static inline void * +xdg_popup_get_user_data(struct xdg_popup *xdg_popup) +{ + return wl_proxy_get_user_data((struct wl_proxy *) xdg_popup); +} + +static inline uint32_t +xdg_popup_get_version(struct xdg_popup *xdg_popup) +{ + return wl_proxy_get_version((struct wl_proxy *) xdg_popup); +} + +/** + * @ingroup iface_xdg_popup + * + * This destroys the popup. Explicitly destroying the xdg_popup + * object will also dismiss the popup, and unmap the surface. + * + * If this xdg_popup is not the "topmost" popup, the + * xdg_wm_base.not_the_topmost_popup protocol error will be sent. + */ +static inline void +xdg_popup_destroy(struct xdg_popup *xdg_popup) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_popup, + XDG_POPUP_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_popup), WL_MARSHAL_FLAG_DESTROY); +} + +/** + * @ingroup iface_xdg_popup + * + * This request makes the created popup take an explicit grab. An explicit + * grab will be dismissed when the user dismisses the popup, or when the + * client destroys the xdg_popup. This can be done by the user clicking + * outside the surface, using the keyboard, or even locking the screen + * through closing the lid or a timeout. + * + * If the compositor denies the grab, the popup will be immediately + * dismissed. + * + * This request must be used in response to some sort of user action like a + * button press, key press, or touch down event. The serial number of the + * event should be passed as 'serial'. + * + * The parent of a grabbing popup must either be an xdg_toplevel surface or + * another xdg_popup with an explicit grab. If the parent is another + * xdg_popup it means that the popups are nested, with this popup now being + * the topmost popup. + * + * Nested popups must be destroyed in the reverse order they were created + * in, e.g. the only popup you are allowed to destroy at all times is the + * topmost one. + * + * When compositors choose to dismiss a popup, they may dismiss every + * nested grabbing popup as well. When a compositor dismisses popups, it + * will follow the same dismissing order as required from the client. + * + * If the topmost grabbing popup is destroyed, the grab will be returned to + * the parent of the popup, if that parent previously had an explicit grab. + * + * If the parent is a grabbing popup which has already been dismissed, this + * popup will be immediately dismissed. If the parent is a popup that did + * not take an explicit grab, an error will be raised. + * + * During a popup grab, the client owning the grab will receive pointer + * and touch events for all their surfaces as normal (similar to an + * "owner-events" grab in X11 parlance), while the top most grabbing popup + * will always have keyboard focus. + */ +static inline void +xdg_popup_grab(struct xdg_popup *xdg_popup, struct wl_seat *seat, uint32_t serial) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_popup, + XDG_POPUP_GRAB, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_popup), 0, seat, serial); +} + +/** + * @ingroup iface_xdg_popup + * + * Reposition an already-mapped popup. The popup will be placed given the + * details in the passed xdg_positioner object, and a + * xdg_popup.repositioned followed by xdg_popup.configure and + * xdg_surface.configure will be emitted in response. Any parameters set + * by the previous positioner will be discarded. + * + * The passed token will be sent in the corresponding + * xdg_popup.repositioned event. The new popup position will not take + * effect until the corresponding configure event is acknowledged by the + * client. See xdg_popup.repositioned for details. The token itself is + * opaque, and has no other special meaning. + * + * If multiple reposition requests are sent, the compositor may skip all + * but the last one. + * + * If the popup is repositioned in response to a configure event for its + * parent, the client should send an xdg_positioner.set_parent_configure + * and possibly an xdg_positioner.set_parent_size request to allow the + * compositor to properly constrain the popup. + * + * If the popup is repositioned together with a parent that is being + * resized, but not in response to a configure event, the client should + * send an xdg_positioner.set_parent_size request. + */ +static inline void +xdg_popup_reposition(struct xdg_popup *xdg_popup, struct xdg_positioner *positioner, uint32_t token) +{ + wl_proxy_marshal_flags((struct wl_proxy *) xdg_popup, + XDG_POPUP_REPOSITION, NULL, wl_proxy_get_version((struct wl_proxy *) xdg_popup), 0, positioner, token); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/gui-apps/oledsaver/files/xdg-shell-protocol.c b/gui-apps/oledsaver/files/xdg-shell-protocol.c new file mode 100644 index 000000000000..102e36fb3210 --- /dev/null +++ b/gui-apps/oledsaver/files/xdg-shell-protocol.c @@ -0,0 +1,184 @@ +/* Generated by wayland-scanner 1.25.0 */ + +/* + * Copyright © 2008-2013 Kristian Høgsberg + * Copyright © 2013 Rafael Antognolli + * Copyright © 2013 Jasper St. Pierre + * Copyright © 2010-2013 Intel Corporation + * Copyright © 2015-2017 Samsung Electronics Co., Ltd + * Copyright © 2015-2017 Red Hat Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include <stdbool.h> +#include <stdlib.h> +#include <stdint.h> +#include "wayland-util.h" + +#ifndef __has_attribute +# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */ +#endif + +#if (__has_attribute(visibility) || defined(__GNUC__) && __GNUC__ >= 4) +#define WL_PRIVATE __attribute__ ((visibility("hidden"))) +#else +#define WL_PRIVATE +#endif + +extern const struct wl_interface wl_output_interface; +extern const struct wl_interface wl_seat_interface; +extern const struct wl_interface wl_surface_interface; +extern const struct wl_interface xdg_popup_interface; +extern const struct wl_interface xdg_positioner_interface; +extern const struct wl_interface xdg_surface_interface; +extern const struct wl_interface xdg_toplevel_interface; + +static const struct wl_interface *xdg_shell_types[] = { + NULL, + NULL, + NULL, + NULL, + &xdg_positioner_interface, + &xdg_surface_interface, + &wl_surface_interface, + &xdg_toplevel_interface, + &xdg_popup_interface, + &xdg_surface_interface, + &xdg_positioner_interface, + &xdg_toplevel_interface, + &wl_seat_interface, + NULL, + NULL, + NULL, + &wl_seat_interface, + NULL, + &wl_seat_interface, + NULL, + NULL, + &wl_output_interface, + &wl_seat_interface, + NULL, + &xdg_positioner_interface, + NULL, +}; + +static const struct wl_message xdg_wm_base_requests[] = { + { "destroy", "", xdg_shell_types + 0 }, + { "create_positioner", "n", xdg_shell_types + 4 }, + { "get_xdg_surface", "no", xdg_shell_types + 5 }, + { "pong", "u", xdg_shell_types + 0 }, +}; + +static const struct wl_message xdg_wm_base_events[] = { + { "ping", "u", xdg_shell_types + 0 }, +}; + +WL_PRIVATE const struct wl_interface xdg_wm_base_interface = { + "xdg_wm_base", 7, + 4, xdg_wm_base_requests, + 1, xdg_wm_base_events, +}; + +static const struct wl_message xdg_positioner_requests[] = { + { "destroy", "", xdg_shell_types + 0 }, + { "set_size", "ii", xdg_shell_types + 0 }, + { "set_anchor_rect", "iiii", xdg_shell_types + 0 }, + { "set_anchor", "u", xdg_shell_types + 0 }, + { "set_gravity", "u", xdg_shell_types + 0 }, + { "set_constraint_adjustment", "u", xdg_shell_types + 0 }, + { "set_offset", "ii", xdg_shell_types + 0 }, + { "set_reactive", "3", xdg_shell_types + 0 }, + { "set_parent_size", "3ii", xdg_shell_types + 0 }, + { "set_parent_configure", "3u", xdg_shell_types + 0 }, +}; + +WL_PRIVATE const struct wl_interface xdg_positioner_interface = { + "xdg_positioner", 7, + 10, xdg_positioner_requests, + 0, NULL, +}; + +static const struct wl_message xdg_surface_requests[] = { + { "destroy", "", xdg_shell_types + 0 }, + { "get_toplevel", "n", xdg_shell_types + 7 }, + { "get_popup", "n?oo", xdg_shell_types + 8 }, + { "set_window_geometry", "iiii", xdg_shell_types + 0 }, + { "ack_configure", "u", xdg_shell_types + 0 }, +}; + +static const struct wl_message xdg_surface_events[] = { + { "configure", "u", xdg_shell_types + 0 }, +}; + +WL_PRIVATE const struct wl_interface xdg_surface_interface = { + "xdg_surface", 7, + 5, xdg_surface_requests, + 1, xdg_surface_events, +}; + +static const struct wl_message xdg_toplevel_requests[] = { + { "destroy", "", xdg_shell_types + 0 }, + { "set_parent", "?o", xdg_shell_types + 11 }, + { "set_title", "s", xdg_shell_types + 0 }, + { "set_app_id", "s", xdg_shell_types + 0 }, + { "show_window_menu", "ouii", xdg_shell_types + 12 }, + { "move", "ou", xdg_shell_types + 16 }, + { "resize", "ouu", xdg_shell_types + 18 }, + { "set_max_size", "ii", xdg_shell_types + 0 }, + { "set_min_size", "ii", xdg_shell_types + 0 }, + { "set_maximized", "", xdg_shell_types + 0 }, + { "unset_maximized", "", xdg_shell_types + 0 }, + { "set_fullscreen", "?o", xdg_shell_types + 21 }, + { "unset_fullscreen", "", xdg_shell_types + 0 }, + { "set_minimized", "", xdg_shell_types + 0 }, +}; + +static const struct wl_message xdg_toplevel_events[] = { + { "configure", "iia", xdg_shell_types + 0 }, + { "close", "", xdg_shell_types + 0 }, + { "configure_bounds", "4ii", xdg_shell_types + 0 }, + { "wm_capabilities", "5a", xdg_shell_types + 0 }, +}; + +WL_PRIVATE const struct wl_interface xdg_toplevel_interface = { + "xdg_toplevel", 7, + 14, xdg_toplevel_requests, + 4, xdg_toplevel_events, +}; + +static const struct wl_message xdg_popup_requests[] = { + { "destroy", "", xdg_shell_types + 0 }, + { "grab", "ou", xdg_shell_types + 22 }, + { "reposition", "3ou", xdg_shell_types + 24 }, +}; + +static const struct wl_message xdg_popup_events[] = { + { "configure", "iiii", xdg_shell_types + 0 }, + { "popup_done", "", xdg_shell_types + 0 }, + { "repositioned", "3u", xdg_shell_types + 0 }, +}; + +WL_PRIVATE const struct wl_interface xdg_popup_interface = { + "xdg_popup", 7, + 3, xdg_popup_requests, + 3, xdg_popup_events, +}; + diff --git a/gui-apps/oledsaver/graphify-out/.graphify_labels.json b/gui-apps/oledsaver/graphify-out/.graphify_labels.json new file mode 100644 index 000000000000..87fc121fa27f --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/.graphify_labels.json @@ -0,0 +1,21 @@ +{ + "0": "xdg-shell-client-protocol.h", + "1": "oledsaver.c", + "2": "wlr-layer-shell-unstable-v1-client-protocol.h", + "3": "mgr_ipc_request", + "4": "render_init_layer", + "5": "ext-idle-notify-v1-client-protocol.h", + "6": "render_frame", + "7": "ext-idle-notify-v1-protocol.c", + "8": "wlr-layer-shell-unstable-v1-protocol.c", + "9": "xdg-output-unstable-v1-protocol.c", + "10": "xdg-shell-protocol.c", + "11": "mgr_blank_output", + "12": "mgr_refresh_outputs", + "13": "mgr_output_set_name", + "14": "oledsaver_cursor_plugin_t", + "15": "mgr_load_config", + "16": "mgr_update_wayfire_cursor", + "17": "manager_main", + "18": "oledsaver_idle_plugin_t" +} diff --git a/gui-apps/oledsaver/graphify-out/.graphify_labels.json.sig b/gui-apps/oledsaver/graphify-out/.graphify_labels.json.sig new file mode 100644 index 000000000000..b3902dbf8f25 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/.graphify_labels.json.sig @@ -0,0 +1 @@ +{"0": "2e04c607a442705f", "1": "c973320502c0f41e", "2": "93a9a9d8cd40ea85", "3": "96ef16adc43d1aad", "4": "3e051441b0babd32", "5": "f8095bf1f4fd1f85", "6": "8c94723c3177ef96", "7": "ad2a602a17b03454", "8": "bf73e8dcbadea38c", "9": "460c015c7e58ff42", "10": "fbc3fed6a5343138", "11": "88e13175d568f518", "12": "b926243b17592d6a", "13": "18d77be39f0f2b28", "14": "6e5b04a84fd9d45c", "15": "7de307b9dcc309e8", "16": "a53f69758e5d43ad", "17": "6593504aa447b59d", "18": "a4ab6881096b7aa9"}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/.graphify_root b/gui-apps/oledsaver/graphify-out/.graphify_root new file mode 100644 index 000000000000..945c9b46d684 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/.graphify_root @@ -0,0 +1 @@ +.
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/2026-09-11/.graphify_labels.json b/gui-apps/oledsaver/graphify-out/2026-09-11/.graphify_labels.json new file mode 100644 index 000000000000..070e7e833c98 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/2026-09-11/.graphify_labels.json @@ -0,0 +1,20 @@ +{ + "0": "xdg-shell-client-protocol.h", + "1": "oledsaver.c", + "2": "wlr-layer-shell-unstable-v1-client-protocol.h", + "3": "mgr_ipc_request", + "4": "render_init_layer", + "5": "ext-idle-notify-v1-client-protocol.h", + "6": "render_frame", + "7": "ext-idle-notify-v1-protocol.c", + "8": "wlr-layer-shell-unstable-v1-protocol.c", + "9": "xdg-output-unstable-v1-protocol.c", + "10": "xdg-shell-protocol.c", + "11": "manager_main", + "12": "xdg-output-unstable-v1-client-protocol.h", + "13": "mgr_output_set_name", + "14": "oledsaver_cursor_plugin_t", + "15": "mgr_load_config", + "16": "mgr_update_wayfire_cursor", + "17": "render_build_atlas" +} diff --git a/gui-apps/oledsaver/graphify-out/2026-09-11/GRAPH_REPORT.md b/gui-apps/oledsaver/graphify-out/2026-09-11/GRAPH_REPORT.md new file mode 100644 index 000000000000..adbbf71c0c7d --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/2026-09-11/GRAPH_REPORT.md @@ -0,0 +1,125 @@ +# Graph Report - oledsaver (2026-08-16) + +## Corpus Check +- 10 files · ~32,537 words +- Verdict: corpus is large enough that graph structure adds value. + +## Summary +- 268 nodes · 420 edges · 18 communities (17 shown, 1 thin omitted) +- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 20 edges (avg confidence: 0.8) +- Token cost: 0 input · 0 output + +## Community Hubs (Navigation) +- xdg-shell-client-protocol.h +- wlr-layer-shell-unstable-v1-client-protocol.h +- mgr_ipc_request +- render_init_layer +- ext-idle-notify-v1-client-protocol.h +- render_frame +- manager_main +- xdg-output-unstable-v1-client-protocol.h +- mgr_output_set_name +- oledsaver_cursor_plugin_t +- mgr_load_config +- mgr_update_wayfire_cursor +- render_build_atlas + +## God Nodes (most connected - your core abstractions) +1. `renderer_main()` - 23 edges +2. `manager_main()` - 21 edges +3. `oledsaver_cursor_plugin_t` - 14 edges +4. `render_init_layer()` - 11 edges +5. `render_tick_layer()` - 11 edges +6. `mgr_refresh_outputs()` - 11 edges +7. `mgr_blank_output()` - 11 edges +8. `mgr_find_output()` - 8 edges +9. `mgr_monotime()` - 7 edges +10. `mgr_ipc_request()` - 7 edges + +## Surprising Connections (you probably didn't know these) +- `mgr_idle_wayland_cleanup()` --calls--> `ext_idle_notifier_v1_destroy()` [INFERRED] + files/oledsaver.c → files/ext-idle-notify-v1-client-protocol.h +- `mgr_idle_wayland_cleanup()` --calls--> `ext_idle_notification_v1_destroy()` [INFERRED] + files/oledsaver.c → files/ext-idle-notify-v1-client-protocol.h +- `renderer_main()` --calls--> `zwlr_layer_shell_v1_get_layer_surface()` [INFERRED] + files/oledsaver.c → files/wlr-layer-shell-unstable-v1-client-protocol.h +- `renderer_main()` --calls--> `zwlr_layer_surface_v1_add_listener()` [INFERRED] + files/oledsaver.c → files/wlr-layer-shell-unstable-v1-client-protocol.h +- `renderer_main()` --calls--> `zwlr_layer_surface_v1_destroy()` [INFERRED] + files/oledsaver.c → files/wlr-layer-shell-unstable-v1-client-protocol.h + +## Import Cycles +- None detected. + +## Communities (18 total, 1 thin omitted) + +### Community 0 - "xdg-shell-client-protocol.h" +Cohesion: 0.03 +Nodes (13): wl_interface, wl_output, wl_seat, wl_surface, xdg_popup, xdg_popup_listener, xdg_positioner, xdg_surface (+5 more) + +### Community 2 - "wlr-layer-shell-unstable-v1-client-protocol.h" +Cohesion: 0.07 +Nodes (24): render_compile_shader(), render_init_egl(), render_init_freetype(), render_init_shaders(), render_layer_surface_configure(), render_set_projection(), renderer_main(), wl_interface (+16 more) + +### Community 3 - "mgr_ipc_request" +Cohesion: 0.24 +Nodes (11): mgr_focus_name_from_event(), mgr_focus_watcher(), mgr_get_focused_output_from_ipc(), mgr_ipc_connect(), mgr_ipc_recv(), mgr_ipc_request(), mgr_ipc_send_method(), mgr_ipc_send_payload() (+3 more) + +### Community 4 - "render_init_layer" +Cohesion: 0.19 +Nodes (19): depth_layer_t, render_cell_at_layer(), render_get_layer_properties(), render_head_white_mix(), render_init_layer(), render_init_matrix(), render_lookup_color(), render_parse_hex() (+11 more) + +### Community 5 - "ext-idle-notify-v1-client-protocol.h" +Cohesion: 0.16 +Nodes (7): ext_idle_notification_v1_add_listener(), ext_idle_notification_v1_destroy(), ext_idle_notifier_v1_destroy(), ext_idle_notifier_v1_get_idle_notification(), mgr_idle_watcher(), mgr_idle_wayland_cleanup(), mgr_idle_wayland_t + +### Community 6 - "render_frame" +Cohesion: 0.40 +Nodes (5): render_find_glyph(), render_flush_quads(), render_frame(), render_push_quad(), glyph_info_t + +### Community 11 - "manager_main" +Cohesion: 0.11 +Nodes (31): ensure_wayland_display(), main(), manager_main(), mgr_activate_all_outputs(), mgr_blank_output(), mgr_check_idle_inhibitors(), mgr_find_output(), mgr_get_output_color() (+23 more) + +### Community 12 - "xdg-output-unstable-v1-client-protocol.h" +Cohesion: 0.17 +Nodes (6): mgr_outputs_wayland_cleanup(), zxdg_output_manager_v1_destroy(), zxdg_output_manager_v1_get_xdg_output(), zxdg_output_v1_add_listener(), zxdg_output_v1_destroy(), mgr_outputs_wayland_t + +### Community 13 - "mgr_output_set_name" +Cohesion: 0.50 +Nodes (4): mgr_output_handle_name(), mgr_output_set_name(), mgr_xdg_output_handle_name(), mgr_wayland_output_info_t + +### Community 14 - "oledsaver_cursor_plugin_t" +Cohesion: 0.17 +Nodes (9): oledsaver_cursor_plugin_t, cursor_hidden, repo, json_t, method_repository_t, output_t, plugin_interface_t, pointf_t (+1 more) + +### Community 15 - "mgr_load_config" +Cohesion: 0.50 +Nodes (4): mgr_expand_tilde(), mgr_load_config(), mgr_set_defaults(), mgr_trim() + +### Community 16 - "mgr_update_wayfire_cursor" +Cohesion: 0.60 +Nodes (5): mgr_get_cursor_status_from_ipc(), mgr_ipc_response_has_error(), mgr_release_wayfire_cursor(), mgr_set_wayfire_cursor_hidden(), mgr_update_wayfire_cursor() + +## Knowledge Gaps +- **22 isolated node(s):** `repo`, `cursor_hidden`, `wl_output`, `wl_surface`, `xdg_popup` (+17 more) + These have ≤1 connection - possible missing edges or undocumented components. +- **1 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. + +## Suggested Questions +_Questions this graph is uniquely positioned to answer:_ + +- **Why does `renderer_main()` connect `wlr-layer-shell-unstable-v1-client-protocol.h` to `oledsaver.c`, `render_init_layer`, `render_frame`, `manager_main`, `xdg-output-unstable-v1-client-protocol.h`, `render_build_atlas`?** + _High betweenness centrality (0.026) - this node is a cross-community bridge._ +- **Why does `render_compile_shader()` connect `wlr-layer-shell-unstable-v1-client-protocol.h` to `oledsaver.c`?** + _High betweenness centrality (0.010) - this node is a cross-community bridge._ +- **Why does `mgr_idle_wayland_cleanup()` connect `ext-idle-notify-v1-client-protocol.h` to `oledsaver.c`?** + _High betweenness centrality (0.010) - this node is a cross-community bridge._ +- **Are the 11 inferred relationships involving `renderer_main()` (e.g. with `zwlr_layer_shell_v1_get_layer_surface()` and `zwlr_layer_surface_v1_add_listener()`) actually correct?** + _`renderer_main()` has 11 INFERRED edges - model-reasoned connections that need verification._ +- **What connects `repo`, `cursor_hidden`, `wl_output` to the rest of the system?** + _22 weakly-connected nodes found - possible documentation gaps or missing edges._ +- **Should `xdg-shell-client-protocol.h` be split into smaller, more focused modules?** + _Cohesion score 0.028985507246376812 - nodes in this community are weakly interconnected._ +- **Should `oledsaver.c` be split into smaller, more focused modules?** + _Cohesion score 0.06060606060606061 - nodes in this community are weakly interconnected._
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/2026-09-11/graph.json b/gui-apps/oledsaver/graphify-out/2026-09-11/graph.json new file mode 100644 index 000000000000..9313b6044a48 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/2026-09-11/graph.json @@ -0,0 +1,8018 @@ +{ + "directed": false, + "multigraph": false, + "graph": {}, + "nodes": [ + { + "label": "wl_interface", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L84", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_wl_interface", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "wl_interface" + }, + { + "label": "wl_output", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L52", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_wl_output", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "wl_output" + }, + { + "label": "wl_seat", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L53", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_wl_seat", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "wl_seat" + }, + { + "label": "wl_surface", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L54", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_wl_surface", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "wl_surface" + }, + { + "label": "xdg_popup", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L55", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_popup", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_popup" + }, + { + "label": "xdg_popup_listener", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2156", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_popup_listener", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_popup_listener" + }, + { + "label": "xdg_positioner", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L56", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner" + }, + { + "label": "xdg_surface", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L57", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_surface", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_surface" + }, + { + "label": "xdg_surface_listener", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1003", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_surface_listener", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_surface_listener" + }, + { + "label": "xdg_toplevel", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L58", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel" + }, + { + "label": "xdg_toplevel_listener", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1501", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_listener", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_listener" + }, + { + "label": "xdg_wm_base", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L59", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_wm_base", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_wm_base" + }, + { + "label": "xdg_wm_base_listener", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L409", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_wm_base_listener", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_wm_base_listener" + }, + { + "label": "oledsaver_cursor_plugin_t", + "file_type": "code", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L13", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": "oledsaver_cursor_plugin_t" + }, + { + "label": "wl_interface", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L79", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "wl_interface" + }, + { + "label": "wl_output", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L46", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "wl_output" + }, + { + "label": "wl_surface", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L47", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "wl_surface" + }, + { + "label": "xdg_popup", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L48", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "xdg_popup" + }, + { + "label": "zwlr_layer_shell_v1", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L49", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_shell_v1" + }, + { + "label": "zwlr_layer_surface_v1", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L50", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1" + }, + { + "label": "zwlr_layer_surface_v1_listener", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L271", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_listener" + }, + { + "label": "xdg_popup_add_listener()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2224", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_popup_add_listener", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_popup_add_listener()" + }, + { + "label": "xdg_popup_destroy()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2291", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_popup_destroy", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_popup_destroy()" + }, + { + "label": "xdg_popup_get_user_data()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2270", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_popup_get_user_data", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_popup_get_user_data()" + }, + { + "label": "xdg_popup_get_version()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2276", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_popup_get_version", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_popup_get_version()" + }, + { + "label": "xdg_popup_grab()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2339", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_popup_grab", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_popup_grab()" + }, + { + "label": "xdg_popup_reposition()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2373", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_popup_reposition", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_popup_reposition()" + }, + { + "label": "xdg_popup_set_user_data()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2263", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_popup_set_user_data", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_popup_set_user_data()" + }, + { + "label": "xdg_positioner_destroy()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L794", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_destroy", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_destroy()" + }, + { + "label": "xdg_positioner_get_user_data()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L777", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_get_user_data()" + }, + { + "label": "xdg_positioner_get_version()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L783", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_get_version", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_get_version()" + }, + { + "label": "xdg_positioner_set_anchor()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L848", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_set_anchor()" + }, + { + "label": "xdg_positioner_set_anchor_rect()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L831", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_set_anchor_rect()" + }, + { + "label": "xdg_positioner_set_constraint_adjustment()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L890", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_set_constraint_adjustment()" + }, + { + "label": "xdg_positioner_set_gravity()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L866", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_set_gravity()" + }, + { + "label": "xdg_positioner_set_offset()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L912", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_offset", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_set_offset()" + }, + { + "label": "xdg_positioner_set_parent_configure()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L962", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_set_parent_configure()" + }, + { + "label": "xdg_positioner_set_parent_size()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L947", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_set_parent_size()" + }, + { + "label": "xdg_positioner_set_reactive()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L929", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_set_reactive()" + }, + { + "label": "xdg_positioner_set_size()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L810", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_size", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_set_size()" + }, + { + "label": "xdg_positioner_set_user_data()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L770", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_positioner_set_user_data()" + }, + { + "label": "xdg_surface_ack_configure()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1240", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_surface_ack_configure", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_surface_ack_configure()" + }, + { + "label": "xdg_surface_add_listener()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1036", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_surface_add_listener", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_surface_add_listener()" + }, + { + "label": "xdg_surface_destroy()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1103", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_surface_destroy", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_surface_destroy()" + }, + { + "label": "xdg_surface_get_popup()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1142", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_surface_get_popup", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_surface_get_popup()" + }, + { + "label": "xdg_surface_get_toplevel()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1119", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_surface_get_toplevel()" + }, + { + "label": "xdg_surface_get_user_data()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1084", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_surface_get_user_data", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_surface_get_user_data()" + }, + { + "label": "xdg_surface_get_version()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1090", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_surface_get_version", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_surface_get_version()" + }, + { + "label": "xdg_surface_set_user_data()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1077", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_surface_set_user_data", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_surface_set_user_data()" + }, + { + "label": "xdg_surface_set_window_geometry()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1197", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_surface_set_window_geometry()" + }, + { + "label": "xdg_toplevel_add_listener()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1606", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_add_listener()" + }, + { + "label": "xdg_toplevel_destroy()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1729", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_destroy", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_destroy()" + }, + { + "label": "xdg_toplevel_get_user_data()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1711", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_get_user_data()" + }, + { + "label": "xdg_toplevel_get_version()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1717", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_get_version", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_get_version()" + }, + { + "label": "xdg_toplevel_move()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1862", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_move", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_move()" + }, + { + "label": "xdg_toplevel_resize()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1904", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_resize", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_resize()" + }, + { + "label": "xdg_toplevel_set_app_id()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1812", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_set_app_id()" + }, + { + "label": "xdg_toplevel_set_fullscreen()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2088", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_set_fullscreen()" + }, + { + "label": "xdg_toplevel_set_max_size()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1948", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_set_max_size()" + }, + { + "label": "xdg_toplevel_set_maximized()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2022", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_set_maximized()" + }, + { + "label": "xdg_toplevel_set_min_size()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1992", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_set_min_size()" + }, + { + "label": "xdg_toplevel_set_minimized()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2135", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_set_minimized()" + }, + { + "label": "xdg_toplevel_set_parent()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1760", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_set_parent()" + }, + { + "label": "xdg_toplevel_set_title()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1778", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_title", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_set_title()" + }, + { + "label": "xdg_toplevel_set_user_data()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1704", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_set_user_data()" + }, + { + "label": "xdg_toplevel_show_window_menu()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1835", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_show_window_menu()" + }, + { + "label": "xdg_toplevel_unset_fullscreen()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2116", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_unset_fullscreen()" + }, + { + "label": "xdg_toplevel_unset_maximized()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2054", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_toplevel_unset_maximized()" + }, + { + "label": "xdg_wm_base_add_listener()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L437", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_wm_base_add_listener()" + }, + { + "label": "xdg_wm_base_create_positioner()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L515", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_wm_base_create_positioner()" + }, + { + "label": "xdg_wm_base_destroy()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L501", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_wm_base_destroy", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_wm_base_destroy()" + }, + { + "label": "xdg_wm_base_get_user_data()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L480", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_wm_base_get_user_data()" + }, + { + "label": "xdg_wm_base_get_version()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L486", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_wm_base_get_version", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_wm_base_get_version()" + }, + { + "label": "xdg_wm_base_get_xdg_surface()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L543", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_wm_base_get_xdg_surface()" + }, + { + "label": "xdg_wm_base_pong()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L561", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_wm_base_pong", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_wm_base_pong()" + }, + { + "label": "xdg_wm_base_set_user_data()", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L473", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg_wm_base_set_user_data()" + }, + { + "label": "mgr_idle_handle_idled()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3215", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_idle_handle_idled", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_idle_handle_idled()" + }, + { + "label": "mgr_idle_registry_handle_global()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3246", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_idle_registry_handle_global", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_idle_registry_handle_global()" + }, + { + "label": "mgr_idle_registry_handle_global_remove()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3263", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_idle_registry_handle_global_remove", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_idle_registry_handle_global_remove()" + }, + { + "label": "mgr_log_msg()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1940", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_log_msg", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_log_msg()" + }, + { + "label": "mgr_output_handle_description()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2717", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_output_handle_description", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_output_handle_description()" + }, + { + "label": "mgr_output_handle_done()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2700", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_output_handle_done", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_output_handle_done()" + }, + { + "label": "mgr_output_handle_geometry()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2682", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_output_handle_geometry", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_output_handle_geometry()" + }, + { + "label": "mgr_output_handle_mode()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2690", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_output_handle_mode", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_output_handle_mode()" + }, + { + "label": "mgr_output_handle_scale()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2704", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_output_handle_scale", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_output_handle_scale()" + }, + { + "label": "mgr_outputs_registry_handle_global()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2731", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_outputs_registry_handle_global", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_outputs_registry_handle_global()" + }, + { + "label": "mgr_outputs_registry_handle_global_remove()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2752", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_outputs_registry_handle_global_remove", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_outputs_registry_handle_global_remove()" + }, + { + "label": "mgr_signal_handler()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3346", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_signal_handler", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_signal_handler()" + }, + { + "label": "mgr_xdg_output_handle_description()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2669", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_xdg_output_handle_description", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_xdg_output_handle_description()" + }, + { + "label": "mgr_xdg_output_handle_done()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2658", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_xdg_output_handle_done", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_xdg_output_handle_done()" + }, + { + "label": "mgr_xdg_output_handle_logical_position()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2645", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_xdg_output_handle_logical_position", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_xdg_output_handle_logical_position()" + }, + { + "label": "mgr_xdg_output_handle_logical_size()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2650", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_xdg_output_handle_logical_size", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "mgr_xdg_output_handle_logical_size()" + }, + { + "label": "render_layer_surface_closed()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1323", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_layer_surface_closed", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_layer_surface_closed()" + }, + { + "label": "render_output_handle_description()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1295", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_output_handle_description", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_output_handle_description()" + }, + { + "label": "render_output_handle_done()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1276", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_output_handle_done", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_output_handle_done()" + }, + { + "label": "render_output_handle_geometry()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1251", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_output_handle_geometry", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_output_handle_geometry()" + }, + { + "label": "render_output_handle_mode()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1259", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_output_handle_mode", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_output_handle_mode()" + }, + { + "label": "render_output_handle_name()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1280", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_output_handle_name", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_output_handle_name()" + }, + { + "label": "render_output_handle_scale()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1269", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_output_handle_scale", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_output_handle_scale()" + }, + { + "label": "render_registry_handle_global()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1336", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_registry_handle_global", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_registry_handle_global()" + }, + { + "label": "render_registry_handle_global_remove()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1359", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_registry_handle_global_remove", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_registry_handle_global_remove()" + }, + { + "label": "render_sig_handler()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1371", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_sig_handler", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_sig_handler()" + }, + { + "label": "render_sigusr1_handler()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1376", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_sigusr1_handler", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_sigusr1_handler()" + }, + { + "label": "render_xdg_output_handle_description()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1238", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_xdg_output_handle_description", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_xdg_output_handle_description()" + }, + { + "label": "render_xdg_output_handle_done()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1233", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_xdg_output_handle_done", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_xdg_output_handle_done()" + }, + { + "label": "render_xdg_output_handle_logical_position()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1216", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_xdg_output_handle_logical_position", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_xdg_output_handle_logical_position()" + }, + { + "label": "render_xdg_output_handle_logical_size()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1221", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_xdg_output_handle_logical_size", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_xdg_output_handle_logical_size()" + }, + { + "label": "render_xdg_output_handle_name()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1201", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_xdg_output_handle_name", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "render_xdg_output_handle_name()" + }, + { + "label": "ensure_wayland_display()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1381", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_ensure_wayland_display", + "community": 11, + "community_name": "manager_main", + "norm_label": "ensure_wayland_display()" + }, + { + "label": "main()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3615", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_main", + "community": 11, + "community_name": "manager_main", + "norm_label": "main()" + }, + { + "label": "manager_main()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3435", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_manager_main", + "community": 11, + "community_name": "manager_main", + "norm_label": "manager_main()" + }, + { + "label": "mgr_activate_all_outputs()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3378", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_activate_all_outputs", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_activate_all_outputs()" + }, + { + "label": "mgr_blank_output()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2910", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_blank_output", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_blank_output()" + }, + { + "label": "mgr_check_idle_inhibitors()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2210", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_check_idle_inhibitors", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_check_idle_inhibitors()" + }, + { + "label": "mgr_find_output()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2432", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_find_output", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_find_output()" + }, + { + "label": "mgr_get_output_color()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2580", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_get_output_color", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_get_output_color()" + }, + { + "label": "mgr_get_output_timeout()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2575", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_get_output_timeout", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_get_output_timeout()" + }, + { + "label": "mgr_get_self_exe()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2899", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_get_self_exe", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_get_self_exe()" + }, + { + "label": "mgr_get_val_d()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2599", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_get_val_d", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_get_val_d()" + }, + { + "label": "mgr_get_val_i()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2602", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_get_val_i", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_get_val_i()" + }, + { + "label": "mgr_idle_handle_resumed()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3225", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_idle_handle_resumed", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_idle_handle_resumed()" + }, + { + "label": "mgr_init_output()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2606", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_init_output", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_init_output()" + }, + { + "label": "mgr_kill_pids()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2888", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_kill_pids", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_kill_pids()" + }, + { + "label": "mgr_mkdirs()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1983", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_mkdirs", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_mkdirs()" + }, + { + "label": "mgr_monotime()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1972", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_monotime", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_monotime()" + }, + { + "label": "mgr_pid_alive()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1978", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_pid_alive", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_pid_alive()" + }, + { + "label": "mgr_pids_alive()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2880", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_pids_alive", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_pids_alive()" + }, + { + "label": "mgr_random_color()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2022", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_random_color", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_random_color()" + }, + { + "label": "mgr_read_pidfile()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3413", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_read_pidfile", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_read_pidfile()" + }, + { + "label": "mgr_reap_children()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3427", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_reap_children", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_reap_children()" + }, + { + "label": "mgr_refresh_outputs()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2780", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_refresh_outputs", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_refresh_outputs()" + }, + { + "label": "mgr_remove_pidfile()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3407", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_remove_pidfile", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_remove_pidfile()" + }, + { + "label": "mgr_run_lock_cmd()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3357", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_run_lock_cmd", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_run_lock_cmd()" + }, + { + "label": "mgr_runtime_path()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1996", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_runtime_path", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_runtime_path()" + }, + { + "label": "mgr_unblank_output()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3025", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_unblank_output", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_unblank_output()" + }, + { + "label": "mgr_update_focused_output()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2848", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_update_focused_output", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_update_focused_output()" + }, + { + "label": "mgr_write_pidfile()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3396", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_write_pidfile", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_write_pidfile()" + }, + { + "label": "mgr_outputs_wayland_cleanup()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2762", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_outputs_wayland_cleanup", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "mgr_outputs_wayland_cleanup()" + }, + { + "label": "zxdg_output_manager_v1_destroy()", + "file_type": "code", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L172", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "zxdg_output_manager_v1_destroy()" + }, + { + "label": "zxdg_output_manager_v1_get_user_data()", + "file_type": "code", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L152", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "zxdg_output_manager_v1_get_user_data()" + }, + { + "label": "zxdg_output_manager_v1_get_version()", + "file_type": "code", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L158", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "zxdg_output_manager_v1_get_version()" + }, + { + "label": "zxdg_output_manager_v1_get_xdg_output()", + "file_type": "code", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L184", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "zxdg_output_manager_v1_get_xdg_output()" + }, + { + "label": "zxdg_output_manager_v1_set_user_data()", + "file_type": "code", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L145", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "zxdg_output_manager_v1_set_user_data()" + }, + { + "label": "zxdg_output_v1_add_listener()", + "file_type": "code", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L342", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "zxdg_output_v1_add_listener()" + }, + { + "label": "zxdg_output_v1_destroy()", + "file_type": "code", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L404", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "zxdg_output_v1_destroy()" + }, + { + "label": "zxdg_output_v1_get_user_data()", + "file_type": "code", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L386", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "zxdg_output_v1_get_user_data()" + }, + { + "label": "zxdg_output_v1_get_version()", + "file_type": "code", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L392", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "zxdg_output_v1_get_version()" + }, + { + "label": "zxdg_output_v1_set_user_data()", + "file_type": "code", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L379", + "_callable": true, + "_origin": "ast", + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "zxdg_output_v1_set_user_data()" + }, + { + "label": "mgr_output_handle_name()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2711", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_output_handle_name", + "community": 13, + "community_name": "mgr_output_set_name", + "norm_label": "mgr_output_handle_name()" + }, + { + "label": "mgr_output_set_name()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2638", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_output_set_name", + "community": 13, + "community_name": "mgr_output_set_name", + "norm_label": "mgr_output_set_name()" + }, + { + "label": "mgr_xdg_output_handle_name()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2663", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_xdg_output_handle_name", + "community": 13, + "community_name": "mgr_output_set_name", + "norm_label": "mgr_xdg_output_handle_name()" + }, + { + "label": ".cursor_status()", + "file_type": "code", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L74", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": ".cursor_status()" + }, + { + "label": ".fini()", + "file_type": "code", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L26", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": ".fini()" + }, + { + "label": ".get_output_at()", + "file_type": "code", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L43", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": ".get_output_at()" + }, + { + "label": ".hide_cursor()", + "file_type": "code", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L90", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": ".hide_cursor()" + }, + { + "label": ".init()", + "file_type": "code", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L16", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": ".init()" + }, + { + "label": ".is_unloadable()", + "file_type": "code", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L34", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": ".is_unloadable()" + }, + { + "label": ".set_cursor_hidden()", + "file_type": "code", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L56", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": ".set_cursor_hidden()" + }, + { + "label": ".unhide_cursor()", + "file_type": "code", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L96", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": ".unhide_cursor()" + }, + { + "label": "mgr_expand_tilde()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2010", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_expand_tilde", + "community": 15, + "community_name": "mgr_load_config", + "norm_label": "mgr_expand_tilde()" + }, + { + "label": "mgr_load_config()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2260", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_load_config", + "community": 15, + "community_name": "mgr_load_config", + "norm_label": "mgr_load_config()" + }, + { + "label": "mgr_set_defaults()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2225", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_set_defaults", + "community": 15, + "community_name": "mgr_load_config", + "norm_label": "mgr_set_defaults()" + }, + { + "label": "mgr_trim()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2216", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_trim", + "community": 15, + "community_name": "mgr_load_config", + "norm_label": "mgr_trim()" + }, + { + "label": "mgr_get_cursor_status_from_ipc()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2455", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_get_cursor_status_from_ipc", + "community": 16, + "community_name": "mgr_update_wayfire_cursor", + "norm_label": "mgr_get_cursor_status_from_ipc()" + }, + { + "label": "mgr_ipc_response_has_error()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2440", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_ipc_response_has_error", + "community": 16, + "community_name": "mgr_update_wayfire_cursor", + "norm_label": "mgr_ipc_response_has_error()" + }, + { + "label": "mgr_release_wayfire_cursor()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2505", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_release_wayfire_cursor", + "community": 16, + "community_name": "mgr_update_wayfire_cursor", + "norm_label": "mgr_release_wayfire_cursor()" + }, + { + "label": "mgr_set_wayfire_cursor_hidden()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2494", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_set_wayfire_cursor_hidden", + "community": 16, + "community_name": "mgr_update_wayfire_cursor", + "norm_label": "mgr_set_wayfire_cursor_hidden()" + }, + { + "label": "mgr_update_wayfire_cursor()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2525", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_update_wayfire_cursor", + "community": 16, + "community_name": "mgr_update_wayfire_cursor", + "norm_label": "mgr_update_wayfire_cursor()" + }, + { + "label": "render_build_atlas()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L459", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_build_atlas", + "community": 17, + "community_name": "render_build_atlas", + "norm_label": "render_build_atlas()" + }, + { + "label": "render_build_codepoint_list()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L384", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_build_codepoint_list", + "community": 17, + "community_name": "render_build_atlas", + "norm_label": "render_build_codepoint_list()" + }, + { + "label": "render_compile_shader()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L740", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_compile_shader", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "render_compile_shader()" + }, + { + "label": "render_init_egl()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L628", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_init_egl", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "render_init_egl()" + }, + { + "label": "render_init_freetype()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L401", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_init_freetype", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "render_init_freetype()" + }, + { + "label": "render_init_shaders()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L757", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_init_shaders", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "render_init_shaders()" + }, + { + "label": "render_layer_surface_configure()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1311", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_layer_surface_configure", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "render_layer_surface_configure()" + }, + { + "label": "render_set_projection()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L796", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_set_projection", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "render_set_projection()" + }, + { + "label": "renderer_main()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1411", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_renderer_main", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "renderer_main()" + }, + { + "label": "zwlr_layer_shell_v1_destroy()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L220", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_shell_v1_destroy()" + }, + { + "label": "zwlr_layer_shell_v1_get_layer_surface()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L202", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_shell_v1_get_layer_surface()" + }, + { + "label": "zwlr_layer_shell_v1_get_user_data()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L171", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_shell_v1_get_user_data()" + }, + { + "label": "zwlr_layer_shell_v1_get_version()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L177", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_shell_v1_get_version()" + }, + { + "label": "zwlr_layer_shell_v1_set_user_data()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L164", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_shell_v1_set_user_data()" + }, + { + "label": "zwlr_layer_surface_v1_ack_configure()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L562", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_ack_configure()" + }, + { + "label": "zwlr_layer_surface_v1_add_listener()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L319", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_add_listener()" + }, + { + "label": "zwlr_layer_surface_v1_destroy()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L574", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_destroy()" + }, + { + "label": "zwlr_layer_surface_v1_get_popup()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L536", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_get_popup()" + }, + { + "label": "zwlr_layer_surface_v1_get_user_data()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L391", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_get_user_data()" + }, + { + "label": "zwlr_layer_surface_v1_get_version()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L397", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_get_version()" + }, + { + "label": "zwlr_layer_surface_v1_set_anchor()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L435", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_set_anchor()" + }, + { + "label": "zwlr_layer_surface_v1_set_exclusive_zone()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L478", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_set_exclusive_zone()" + }, + { + "label": "zwlr_layer_surface_v1_set_keyboard_interactivity()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L518", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_set_keyboard_interactivity()" + }, + { + "label": "zwlr_layer_surface_v1_set_layer()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L588", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_set_layer()" + }, + { + "label": "zwlr_layer_surface_v1_set_margin()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L496", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_set_margin()" + }, + { + "label": "zwlr_layer_surface_v1_set_size()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L417", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_set_size()" + }, + { + "label": "zwlr_layer_surface_v1_set_user_data()", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L384", + "_callable": true, + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "zwlr_layer_surface_v1_set_user_data()" + }, + { + "label": "mgr_focus_name_from_event()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3089", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_focus_name_from_event", + "community": 3, + "community_name": "mgr_ipc_request", + "norm_label": "mgr_focus_name_from_event()" + }, + { + "label": "mgr_focus_watcher()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3130", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_focus_watcher", + "community": 3, + "community_name": "mgr_ipc_request", + "norm_label": "mgr_focus_watcher()" + }, + { + "label": "mgr_get_focused_output_from_ipc()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2823", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_get_focused_output_from_ipc", + "community": 3, + "community_name": "mgr_ipc_request", + "norm_label": "mgr_get_focused_output_from_ipc()" + }, + { + "label": "mgr_ipc_connect()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2078", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_ipc_connect", + "community": 3, + "community_name": "mgr_ipc_request", + "norm_label": "mgr_ipc_connect()" + }, + { + "label": "mgr_ipc_recv()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2166", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_ipc_recv", + "community": 3, + "community_name": "mgr_ipc_request", + "norm_label": "mgr_ipc_recv()" + }, + { + "label": "mgr_ipc_request()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2186", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_ipc_request", + "community": 3, + "community_name": "mgr_ipc_request", + "norm_label": "mgr_ipc_request()" + }, + { + "label": "mgr_ipc_send_method()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2142", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_ipc_send_method", + "community": 3, + "community_name": "mgr_ipc_request", + "norm_label": "mgr_ipc_send_method()" + }, + { + "label": "mgr_ipc_send_payload()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2130", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_ipc_send_payload", + "community": 3, + "community_name": "mgr_ipc_request", + "norm_label": "mgr_ipc_send_payload()" + }, + { + "label": "mgr_readn()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2105", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_readn", + "community": 3, + "community_name": "mgr_ipc_request", + "norm_label": "mgr_readn()" + }, + { + "label": "mgr_wayfire_ipc_path()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2028", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_wayfire_ipc_path", + "community": 3, + "community_name": "mgr_ipc_request", + "norm_label": "mgr_wayfire_ipc_path()" + }, + { + "label": "mgr_writen()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L2117", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_writen", + "community": 3, + "community_name": "mgr_ipc_request", + "norm_label": "mgr_writen()" + }, + { + "label": "render_cell_at_layer()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L305", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_cell_at_layer", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_cell_at_layer()" + }, + { + "label": "render_get_layer_properties()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L862", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_get_layer_properties", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_get_layer_properties()" + }, + { + "label": "render_head_white_mix()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L287", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_head_white_mix", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_head_white_mix()" + }, + { + "label": "render_init_layer()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L881", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_init_layer", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_init_layer()" + }, + { + "label": "render_init_matrix()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L952", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_init_matrix", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_init_matrix()" + }, + { + "label": "render_lookup_color()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L335", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_lookup_color", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_lookup_color()" + }, + { + "label": "render_parse_hex()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L322", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_parse_hex", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_parse_hex()" + }, + { + "label": "render_rand_speed()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L294", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_rand_speed", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_rand_speed()" + }, + { + "label": "render_randf()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L284", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_randf", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_randf()" + }, + { + "label": "render_randi()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L285", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_randi", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_randi()" + }, + { + "label": "render_random_codepoint()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L309", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_random_codepoint", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_random_codepoint()" + }, + { + "label": "render_random_color()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L361", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_random_color", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_random_color()" + }, + { + "label": "render_random_hex_color()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L365", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_random_hex_color", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_random_hex_color()" + }, + { + "label": "render_tick_layer()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L970", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_tick_layer", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_tick_layer()" + }, + { + "label": "render_tick_matrix()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1049", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_tick_matrix", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_tick_matrix()" + }, + { + "label": "render_trail_color()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L373", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_trail_color", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_trail_color()" + }, + { + "label": "ext_idle_notification_v1_add_listener()", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L263", + "_callable": true, + "_origin": "ast", + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "ext_idle_notification_v1_add_listener()" + }, + { + "label": "ext_idle_notification_v1_destroy()", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L312", + "_callable": true, + "_origin": "ast", + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "ext_idle_notification_v1_destroy()" + }, + { + "label": "ext_idle_notification_v1_get_user_data()", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L295", + "_callable": true, + "_origin": "ast", + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "ext_idle_notification_v1_get_user_data()" + }, + { + "label": "ext_idle_notification_v1_get_version()", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L301", + "_callable": true, + "_origin": "ast", + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "ext_idle_notification_v1_get_version()" + }, + { + "label": "ext_idle_notification_v1_set_user_data()", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L288", + "_callable": true, + "_origin": "ast", + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "ext_idle_notification_v1_set_user_data()" + }, + { + "label": "ext_idle_notifier_v1_destroy()", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L176", + "_callable": true, + "_origin": "ast", + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "ext_idle_notifier_v1_destroy()" + }, + { + "label": "ext_idle_notifier_v1_get_idle_notification()", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L195", + "_callable": true, + "_origin": "ast", + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "ext_idle_notifier_v1_get_idle_notification()" + }, + { + "label": "ext_idle_notifier_v1_get_input_idle_notification()", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L220", + "_callable": true, + "_origin": "ast", + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "ext_idle_notifier_v1_get_input_idle_notification()" + }, + { + "label": "ext_idle_notifier_v1_get_user_data()", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L158", + "_callable": true, + "_origin": "ast", + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "ext_idle_notifier_v1_get_user_data()" + }, + { + "label": "ext_idle_notifier_v1_get_version()", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L164", + "_callable": true, + "_origin": "ast", + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "ext_idle_notifier_v1_get_version()" + }, + { + "label": "ext_idle_notifier_v1_set_user_data()", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L151", + "_callable": true, + "_origin": "ast", + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "ext_idle_notifier_v1_set_user_data()" + }, + { + "label": "mgr_idle_watcher()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3293", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_idle_watcher", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "mgr_idle_watcher()" + }, + { + "label": "mgr_idle_wayland_cleanup()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L3275", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_mgr_idle_wayland_cleanup", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "mgr_idle_wayland_cleanup()" + }, + { + "label": "render_find_glyph()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L613", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_find_glyph", + "community": 6, + "community_name": "render_frame", + "norm_label": "render_find_glyph()" + }, + { + "label": "render_flush_quads()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L831", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_flush_quads", + "community": 6, + "community_name": "render_frame", + "norm_label": "render_flush_quads()" + }, + { + "label": "render_frame()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1057", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_frame", + "community": 6, + "community_name": "render_frame", + "norm_label": "render_frame()" + }, + { + "label": "render_push_quad()", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L810", + "_callable": true, + "_origin": "ast", + "id": "files_oledsaver_render_push_quad", + "community": 6, + "community_name": "render_frame", + "norm_label": "render_push_quad()" + }, + { + "label": "xdg-shell-client-protocol.h", + "file_type": "code", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1", + "_origin": "ast", + "id": "files_xdg_shell_client_protocol", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "norm_label": "xdg-shell-client-protocol.h" + }, + { + "label": "oledsaver.c", + "file_type": "code", + "source_file": "files/oledsaver.c", + "source_location": "L1", + "_origin": "ast", + "id": "files_oledsaver", + "community": 1, + "community_name": "oledsaver.c", + "norm_label": "oledsaver.c" + }, + { + "label": "xdg-shell-protocol.c", + "file_type": "code", + "source_file": "files/xdg-shell-protocol.c", + "source_location": "L1", + "_origin": "ast", + "id": "files_xdg_shell_protocol", + "community": 10, + "community_name": "xdg-shell-protocol.c", + "norm_label": "xdg-shell-protocol.c" + }, + { + "label": "mgr_output_info_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "mgr_output_info_t", + "community": 11, + "community_name": "manager_main", + "norm_label": "mgr_output_info_t" + }, + { + "label": "pid_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "pid_t", + "community": 11, + "community_name": "manager_main", + "norm_label": "pid_t" + }, + { + "label": "xdg-output-unstable-v1-client-protocol.h", + "file_type": "code", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L1", + "_origin": "ast", + "id": "files_xdg_output_unstable_v1_client_protocol", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "xdg-output-unstable-v1-client-protocol.h" + }, + { + "label": "mgr_outputs_wayland_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "mgr_outputs_wayland_t", + "community": 12, + "community_name": "xdg-output-unstable-v1-client-protocol.h", + "norm_label": "mgr_outputs_wayland_t" + }, + { + "label": "mgr_wayland_output_info_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "mgr_wayland_output_info_t", + "community": 13, + "community_name": "mgr_output_set_name", + "norm_label": "mgr_wayland_output_info_t" + }, + { + "label": "oledsaver-cursor.cpp", + "file_type": "code", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L1", + "_origin": "ast", + "id": "files_oledsaver_cursor", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": "oledsaver-cursor.cpp" + }, + { + "label": "cursor_hidden", + "file_type": "code", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L41", + "_origin": "ast", + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": "cursor_hidden" + }, + { + "label": "repo", + "file_type": "code", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L40", + "_origin": "ast", + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": "repo" + }, + { + "label": "json_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "json_t", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": "json_t" + }, + { + "label": "method_repository_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "method_repository_t", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": "method_repository_t" + }, + { + "label": "output_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "output_t", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": "output_t" + }, + { + "label": "plugin_interface_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "plugin_interface_t", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": "plugin_interface_t" + }, + { + "label": "pointf_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "pointf_t", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": "pointf_t" + }, + { + "label": "ref_ptr_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "ref_ptr_t", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "norm_label": "ref_ptr_t" + }, + { + "label": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L1", + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "wlr-layer-shell-unstable-v1-client-protocol.h" + }, + { + "label": "GLenum", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "glenum", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "glenum" + }, + { + "label": "GLuint", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "gluint", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "norm_label": "gluint" + }, + { + "label": "depth_layer_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "depth_layer_t", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "depth_layer_t" + }, + { + "label": "render_cell_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "render_cell_t", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "render_cell_t" + }, + { + "label": "rgb_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "rgb_t", + "community": 4, + "community_name": "render_init_layer", + "norm_label": "rgb_t" + }, + { + "label": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L1", + "_origin": "ast", + "id": "files_ext_idle_notify_v1_client_protocol", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "ext-idle-notify-v1-client-protocol.h" + }, + { + "label": "mgr_idle_wayland_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "mgr_idle_wayland_t", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "norm_label": "mgr_idle_wayland_t" + }, + { + "label": "glyph_info_t", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "glyph_info_t", + "community": 6, + "community_name": "render_frame", + "norm_label": "glyph_info_t" + }, + { + "label": "ext-idle-notify-v1-protocol.c", + "file_type": "code", + "source_file": "files/ext-idle-notify-v1-protocol.c", + "source_location": "L1", + "_origin": "ast", + "id": "files_ext_idle_notify_v1_protocol", + "community": 7, + "community_name": "ext-idle-notify-v1-protocol.c", + "norm_label": "ext-idle-notify-v1-protocol.c" + }, + { + "label": "wlr-layer-shell-unstable-v1-protocol.c", + "file_type": "code", + "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", + "source_location": "L1", + "_origin": "ast", + "id": "files_wlr_layer_shell_unstable_v1_protocol", + "community": 8, + "community_name": "wlr-layer-shell-unstable-v1-protocol.c", + "norm_label": "wlr-layer-shell-unstable-v1-protocol.c" + }, + { + "label": "xdg-output-unstable-v1-protocol.c", + "file_type": "code", + "source_file": "files/xdg-output-unstable-v1-protocol.c", + "source_location": "L1", + "_origin": "ast", + "id": "files_xdg_output_unstable_v1_protocol", + "community": 9, + "community_name": "xdg-output-unstable-v1-protocol.c", + "norm_label": "xdg-output-unstable-v1-protocol.c" + } + ], + "links": [ + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3618", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_main", + "target": "files_oledsaver_renderer_main", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3621", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_main", + "target": "files_oledsaver_mgr_read_pidfile", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3644", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_main", + "target": "files_oledsaver_manager_main", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3440", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_ensure_wayland_display", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3442", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_set_defaults", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3443", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_load_config", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3452", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_mkdirs", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3470", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_write_pidfile", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3473", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_refresh_outputs", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3477", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_get_focused_output_from_ipc", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3502", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_monotime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3509", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_reap_children", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3515", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_activate_all_outputs", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3516", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_run_lock_cmd", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3522", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_check_idle_inhibitors", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3530", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_find_output", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3549", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_get_output_timeout", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3557", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_blank_output", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3560", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_unblank_output", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3566", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_update_wayfire_cursor", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3599", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_release_wayfire_cursor", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3604", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_remove_pidfile", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3381", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_activate_all_outputs", + "target": "files_oledsaver_mgr_monotime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3389", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_activate_all_outputs", + "target": "files_oledsaver_mgr_blank_output", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2913", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_find_output", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2920", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_pids_alive", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2924", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_monotime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2926", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_kill_pids", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2931", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_get_output_color", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2932", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_get_val_d", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2934", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_get_val_i", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2941", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_get_self_exe", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3102", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_focus_name_from_event", + "target": "files_oledsaver_mgr_refresh_outputs", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3124", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_focus_name_from_event", + "target": "files_oledsaver_mgr_get_focused_output_from_ipc", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3134", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_focus_watcher", + "target": "files_oledsaver_mgr_ipc_connect", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3141", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_focus_watcher", + "target": "files_oledsaver_mgr_ipc_send_method", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3150", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_focus_watcher", + "target": "files_oledsaver_mgr_ipc_recv", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3190", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_focus_watcher", + "target": "files_oledsaver_mgr_focus_name_from_event", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3193", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_focus_watcher", + "target": "files_oledsaver_mgr_update_focused_output", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2463", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_get_cursor_status_from_ipc", + "target": "files_oledsaver_mgr_ipc_request", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2468", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_get_cursor_status_from_ipc", + "target": "files_oledsaver_mgr_ipc_response_has_error", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2826", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_get_focused_output_from_ipc", + "target": "files_oledsaver_mgr_ipc_request", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2590", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_get_output_color", + "target": "files_oledsaver_mgr_random_color", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3230", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_idle_handle_resumed", + "target": "files_oledsaver_mgr_monotime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3315", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_idle_watcher", + "target": "files_oledsaver_mgr_idle_wayland_cleanup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2080", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_ipc_connect", + "target": "files_oledsaver_mgr_wayfire_ipc_path", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2168", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_ipc_recv", + "target": "files_oledsaver_mgr_readn", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2188", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_ipc_request", + "target": "files_oledsaver_mgr_ipc_connect", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2191", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_ipc_request", + "target": "files_oledsaver_mgr_ipc_send_method", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2197", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_ipc_request", + "target": "files_oledsaver_mgr_ipc_recv", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2160", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_ipc_send_method", + "target": "files_oledsaver_mgr_ipc_send_payload", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2135", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_ipc_send_payload", + "target": "files_oledsaver_mgr_writen", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2268", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_load_config", + "target": "files_oledsaver_mgr_expand_tilde", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2286", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_load_config", + "target": "files_oledsaver_mgr_set_defaults", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2315", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_load_config", + "target": "files_oledsaver_mgr_trim", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2714", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_output_handle_name", + "target": "files_oledsaver_mgr_output_set_name", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2883", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_pids_alive", + "target": "files_oledsaver_mgr_pid_alive", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3415", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_read_pidfile", + "target": "files_oledsaver_mgr_runtime_path", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2784", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_oledsaver_ensure_wayland_display", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2791", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_oledsaver_mgr_monotime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2813", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_oledsaver_mgr_find_output", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2814", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_oledsaver_mgr_init_output", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2820", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_oledsaver_mgr_outputs_wayland_cleanup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2513", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_release_wayfire_cursor", + "target": "files_oledsaver_mgr_set_wayfire_cursor_hidden", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3409", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_remove_pidfile", + "target": "files_oledsaver_mgr_runtime_path", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2002", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_runtime_path", + "target": "files_oledsaver_mgr_mkdirs", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2495", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_set_wayfire_cursor_hidden", + "target": "files_oledsaver_mgr_ipc_request", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2500", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_set_wayfire_cursor_hidden", + "target": "files_oledsaver_mgr_ipc_response_has_error", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3028", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_unblank_output", + "target": "files_oledsaver_mgr_find_output", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2853", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_update_focused_output", + "target": "files_oledsaver_mgr_find_output", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2857", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_update_focused_output", + "target": "files_oledsaver_mgr_refresh_outputs", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2868", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_update_focused_output", + "target": "files_oledsaver_mgr_monotime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2529", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_update_wayfire_cursor", + "target": "files_oledsaver_mgr_get_cursor_status_from_ipc", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2539", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_update_wayfire_cursor", + "target": "files_oledsaver_mgr_release_wayfire_cursor", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2548", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_update_wayfire_cursor", + "target": "files_oledsaver_mgr_find_output", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2556", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_update_wayfire_cursor", + "target": "files_oledsaver_mgr_set_wayfire_cursor_hidden", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2037", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_wayfire_ipc_path", + "target": "files_oledsaver_ensure_wayland_display", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3398", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_write_pidfile", + "target": "files_oledsaver_mgr_runtime_path", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2666", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_xdg_output_handle_name", + "target": "files_oledsaver_mgr_output_set_name", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L461", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_build_atlas", + "target": "files_oledsaver_render_build_codepoint_list", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1087", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_frame", + "target": "files_oledsaver_render_cell_at_layer", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1113", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_frame", + "target": "files_oledsaver_render_find_glyph", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1166", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_frame", + "target": "files_oledsaver_render_push_quad", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1184", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_frame", + "target": "files_oledsaver_render_flush_quads", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L289", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_head_white_mix", + "target": "files_oledsaver_render_randf", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L883", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_get_layer_properties", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L909", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_randf", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L915", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_trail_color", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L916", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_rand_speed", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L920", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_randi", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L929", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_random_codepoint", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L942", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_cell_at_layer", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L946", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_head_white_mix", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L957", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_init_matrix", + "target": "files_oledsaver_render_init_layer", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L965", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_init_matrix", + "target": "files_oledsaver_render_tick_layer", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L758", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_init_shaders", + "target": "files_oledsaver_render_compile_shader", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L338", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_lookup_color", + "target": "files_oledsaver_render_parse_hex", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L295", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_rand_speed", + "target": "files_oledsaver_render_randf", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1000", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_randf", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1001", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_head_white_mix", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L982", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_trail_color", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L983", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_rand_speed", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L985", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_randi", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L997", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_cell_at_layer", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L999", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_random_codepoint", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1051", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_tick_matrix", + "target": "files_oledsaver_render_tick_layer", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L375", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_trail_color", + "target": "files_oledsaver_render_random_color", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L376", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_trail_color", + "target": "files_oledsaver_render_random_hex_color", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1550", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_lookup_color", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1575", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_ensure_wayland_display", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1662", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_init_egl", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1669", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_init_shaders", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1675", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_set_projection", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1681", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_init_freetype", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1687", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_build_atlas", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1696", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_init_matrix", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1760", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_tick_matrix", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1761", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_frame", + "confidence_score": 1.0 + }, + { + "relation": "defines", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L40", + "weight": 1.0, + "context": "field", + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo", + "confidence_score": 1.0 + }, + { + "relation": "defines", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L41", + "weight": 1.0, + "context": "field", + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L40", + "weight": 1.0, + "context": "field", + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "ref_ptr_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L40", + "weight": 1.0, + "context": "generic_arg", + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "method_repository_t", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_xdg_output_unstable_v1_client_protocol", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_ext_idle_notify_v1_client_protocol", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L74", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", + "target": "json_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", + "target": "pointf_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L90", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", + "target": "json_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L96", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", + "target": "json_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2580", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_mgr_get_output_color", + "target": "mgr_output_info_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2575", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_mgr_get_output_timeout", + "target": "mgr_output_info_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3275", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_mgr_idle_wayland_cleanup", + "target": "mgr_idle_wayland_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2606", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_mgr_init_output", + "target": "mgr_output_info_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2888", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_mgr_kill_pids", + "target": "mgr_output_info_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2638", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_mgr_output_set_name", + "target": "mgr_wayland_output_info_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2762", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_mgr_outputs_wayland_cleanup", + "target": "mgr_outputs_wayland_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1978", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_mgr_pid_alive", + "target": "pid_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2880", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_mgr_pids_alive", + "target": "mgr_output_info_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L305", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_render_cell_at_layer", + "target": "depth_layer_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L740", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_render_compile_shader", + "target": "glenum", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L881", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_render_init_layer", + "target": "depth_layer_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L970", + "weight": 1.0, + "context": "parameter_type", + "_origin": "ast", + "source": "files_oledsaver_render_tick_layer", + "target": "depth_layer_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", + "target": "output_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2432", + "weight": 1.0, + "context": "return_type", + "_origin": "ast", + "source": "files_oledsaver_mgr_find_output", + "target": "mgr_output_info_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3413", + "weight": 1.0, + "context": "return_type", + "_origin": "ast", + "source": "files_oledsaver_mgr_read_pidfile", + "target": "pid_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L305", + "weight": 1.0, + "context": "return_type", + "_origin": "ast", + "source": "files_oledsaver_render_cell_at_layer", + "target": "render_cell_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L740", + "weight": 1.0, + "context": "return_type", + "_origin": "ast", + "source": "files_oledsaver_render_compile_shader", + "target": "gluint", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L613", + "weight": 1.0, + "context": "return_type", + "_origin": "ast", + "source": "files_oledsaver_render_find_glyph", + "target": "glyph_info_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L335", + "weight": 1.0, + "context": "return_type", + "_origin": "ast", + "source": "files_oledsaver_render_lookup_color", + "target": "rgb_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L322", + "weight": 1.0, + "context": "return_type", + "_origin": "ast", + "source": "files_oledsaver_render_parse_hex", + "target": "rgb_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L361", + "weight": 1.0, + "context": "return_type", + "_origin": "ast", + "source": "files_oledsaver_render_random_color", + "target": "rgb_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L365", + "weight": 1.0, + "context": "return_type", + "_origin": "ast", + "source": "files_oledsaver_render_random_hex_color", + "target": "rgb_t", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L373", + "weight": 1.0, + "context": "return_type", + "_origin": "ast", + "source": "files_oledsaver_render_trail_color", + "target": "rgb_t", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L151", + "weight": 1.0, + "_origin": "ast", + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L158", + "weight": 1.0, + "_origin": "ast", + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L164", + "weight": 1.0, + "_origin": "ast", + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L176", + "weight": 1.0, + "_origin": "ast", + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L195", + "weight": 1.0, + "_origin": "ast", + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L220", + "weight": 1.0, + "_origin": "ast", + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L263", + "weight": 1.0, + "_origin": "ast", + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L288", + "weight": 1.0, + "_origin": "ast", + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L295", + "weight": 1.0, + "_origin": "ast", + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L301", + "weight": 1.0, + "_origin": "ast", + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L312", + "weight": 1.0, + "_origin": "ast", + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1049", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_tick_matrix", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1057", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_frame", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1201", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_xdg_output_handle_name", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1216", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_xdg_output_handle_logical_position", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1221", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_xdg_output_handle_logical_size", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1233", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_xdg_output_handle_done", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1238", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_xdg_output_handle_description", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1251", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_output_handle_geometry", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1259", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_output_handle_mode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1269", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_output_handle_scale", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1276", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_output_handle_done", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1280", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_output_handle_name", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1295", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_output_handle_description", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1311", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_layer_surface_configure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1323", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_layer_surface_closed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1336", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_registry_handle_global", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1359", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_registry_handle_global_remove", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1371", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_sig_handler", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1376", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_sigusr1_handler", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1381", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_ensure_wayland_display", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1411", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_renderer_main", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1940", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_log_msg", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1972", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_monotime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1978", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_pid_alive", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1983", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_mkdirs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L1996", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_runtime_path", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2010", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_expand_tilde", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2022", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_random_color", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2028", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_wayfire_ipc_path", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2078", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_ipc_connect", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2105", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_readn", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2117", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_writen", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2130", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_ipc_send_payload", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2142", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_ipc_send_method", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2166", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_ipc_recv", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2186", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_ipc_request", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2210", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_check_idle_inhibitors", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2216", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_trim", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2225", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_set_defaults", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2260", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_load_config", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2432", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_find_output", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2440", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_ipc_response_has_error", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2455", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_cursor_status_from_ipc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2494", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_set_wayfire_cursor_hidden", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2505", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_release_wayfire_cursor", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2525", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_update_wayfire_cursor", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2575", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_output_timeout", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2580", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_output_color", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2599", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_val_d", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2602", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_val_i", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2606", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_init_output", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2638", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_set_name", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2645", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_xdg_output_handle_logical_position", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2650", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_xdg_output_handle_logical_size", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2658", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_xdg_output_handle_done", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2663", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_xdg_output_handle_name", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2669", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_xdg_output_handle_description", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2682", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_handle_geometry", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2690", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_handle_mode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2700", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_handle_done", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2704", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_handle_scale", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2711", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_handle_name", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2717", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_handle_description", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2731", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_outputs_registry_handle_global", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2752", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_outputs_registry_handle_global_remove", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2762", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_outputs_wayland_cleanup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2780", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_refresh_outputs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2823", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_focused_output_from_ipc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L284", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_randf", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2848", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_update_focused_output", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L285", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_randi", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L287", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_head_white_mix", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2880", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_pids_alive", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2888", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_kill_pids", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2899", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_self_exe", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L2910", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_blank_output", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L294", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_rand_speed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3025", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_unblank_output", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L305", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_cell_at_layer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3089", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_focus_name_from_event", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L309", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_random_codepoint", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3130", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_focus_watcher", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3215", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_idle_handle_idled", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L322", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_parse_hex", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3225", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_idle_handle_resumed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3246", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_idle_registry_handle_global", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3263", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_idle_registry_handle_global_remove", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3275", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_idle_wayland_cleanup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3293", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_idle_watcher", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3346", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_signal_handler", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L335", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_lookup_color", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3357", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_run_lock_cmd", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3378", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_activate_all_outputs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3396", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_write_pidfile", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3407", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_remove_pidfile", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3413", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_read_pidfile", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3427", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_reap_children", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3435", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_manager_main", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L361", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_random_color", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L3615", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_main", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L365", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_random_hex_color", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L373", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_trail_color", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L384", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_build_codepoint_list", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L401", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_init_freetype", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L459", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_build_atlas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L613", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_find_glyph", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L628", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_init_egl", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L740", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_compile_shader", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L757", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_init_shaders", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L796", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_set_projection", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L810", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_push_quad", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L831", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_flush_quads", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L862", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_get_layer_properties", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L881", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_init_layer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L952", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_init_matrix", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver.c", + "source_location": "L970", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver", + "target": "files_oledsaver_render_tick_layer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L108", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L164", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L171", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L202", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L220", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L271", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L319", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L384", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L391", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L397", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L417", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L435", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L478", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L496", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L518", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L536", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L562", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L574", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L588", + "weight": 1.0, + "_origin": "ast", + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L145", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L152", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L158", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L172", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L184", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L342", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L379", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L386", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L392", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L404", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1003", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_listener", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1036", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_add_listener", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1077", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_set_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1084", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_get_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1090", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_get_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1103", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_destroy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1119", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1142", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_get_popup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1197", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1240", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_ack_configure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1501", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_listener", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1606", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1704", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1711", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1717", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_get_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1729", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_destroy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1760", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1778", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_title", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1812", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1835", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1862", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_move", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1904", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_resize", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1948", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1992", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2022", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2054", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2088", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2116", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2135", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2156", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_listener", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2224", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_add_listener", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2263", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_set_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2270", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_get_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2276", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_get_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2291", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_destroy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2339", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_grab", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2373", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_reposition", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L368", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_wl_interface", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L409", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_listener", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L437", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L473", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L480", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L486", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_get_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L501", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_destroy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L515", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_wl_output", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_wl_seat", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_wl_surface", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L543", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L561", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_pong", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L770", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L777", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L783", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_get_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L794", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_destroy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L810", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_size", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L831", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L848", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L866", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L890", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L912", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_offset", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L929", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L947", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L962", + "weight": 1.0, + "_origin": "ast", + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "plugin_interface_t", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L74", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L90", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L3320", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_idle_watcher", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L3322", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_idle_watcher", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L3277", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_idle_wayland_cleanup", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L3279", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_idle_wayland_cleanup", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L2766", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_outputs_wayland_cleanup", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L2773", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_outputs_wayland_cleanup", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L2800", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L2802", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L1320", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_render_layer_surface_configure", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L1592", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L1594", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L1629", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L1633", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L1638", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L1639", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L1640", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L1647", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L1835", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L1844", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "files/oledsaver.c", + "source_location": "L1850", + "weight": 1.0, + "_origin": "ast", + "source": "files_oledsaver_renderer_main", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy" + } + ], + "hyperedges": [] +}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/2026-09-11/manifest.json b/gui-apps/oledsaver/graphify-out/2026-09-11/manifest.json new file mode 100644 index 000000000000..14aa68a2c64a --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/2026-09-11/manifest.json @@ -0,0 +1,52 @@ +{ + "files/ext-idle-notify-v1-client-protocol.h": { + "mtime": 1781276121.2383394, + "ast_hash": "68ee069da1d53c6ddfe4aad1a45aa228", + "semantic_hash": "" + }, + "files/ext-idle-notify-v1-protocol.c": { + "mtime": 1781276121.2363393, + "ast_hash": "d44d5c1dae253d1086488678eaae7f52", + "semantic_hash": "" + }, + "files/oledsaver.c": { + "mtime": 1781379520.7539666, + "ast_hash": "1bffd7e2db6620922978248f2194a2bc", + "semantic_hash": "" + }, + "files/wlr-layer-shell-unstable-v1-client-protocol.h": { + "mtime": 1781276121.2363393, + "ast_hash": "9ae1c9b28ec7bdde56616c6caaf35262", + "semantic_hash": "" + }, + "files/wlr-layer-shell-unstable-v1-protocol.c": { + "mtime": 1781276121.2343392, + "ast_hash": "bb3527396ba5985dfffd48bb4c36cbf3", + "semantic_hash": "" + }, + "files/xdg-output-unstable-v1-client-protocol.h": { + "mtime": 1781276121.2373393, + "ast_hash": "1f03f1a4dd27bffda5b5318ab994ef61", + "semantic_hash": "" + }, + "files/xdg-output-unstable-v1-protocol.c": { + "mtime": 1781276121.2353394, + "ast_hash": "b52167aecdaa5079290322e71415ef7e", + "semantic_hash": "" + }, + "files/xdg-shell-client-protocol.h": { + "mtime": 1781276121.2373393, + "ast_hash": "d6e96826017acfb25eff163135da557c", + "semantic_hash": "" + }, + "files/xdg-shell-protocol.c": { + "mtime": 1781276121.2353394, + "ast_hash": "47c275e2de1584d65068839962581144", + "semantic_hash": "" + }, + "files/oledsaver-cursor.cpp": { + "mtime": 1786926310.4031188, + "ast_hash": "8777a2af4836803945dc1a39f539394a", + "semantic_hash": "" + } +}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/GRAPH_REPORT.md b/gui-apps/oledsaver/graphify-out/GRAPH_REPORT.md new file mode 100644 index 000000000000..7a828dd6677a --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/GRAPH_REPORT.md @@ -0,0 +1,135 @@ +# Graph Report - oledsaver (2026-09-11) + +## Corpus Check +- 12 files · ~33,095 words +- Verdict: corpus is large enough that graph structure adds value. + +## Summary +- 281 nodes · 439 edges · 19 communities (14 shown, 1 thin omitted) +- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 24 edges (avg confidence: 0.85) +- Token cost: 0 input · 0 output + +## Community Hubs (Navigation) +- xdg-shell-client-protocol.h +- oledsaver.c +- wlr-layer-shell-unstable-v1-client-protocol.h +- mgr_ipc_request +- render_init_layer +- ext-idle-notify-v1-client-protocol.h +- render_frame +- mgr_blank_output +- mgr_refresh_outputs +- mgr_output_set_name +- oledsaver_cursor_plugin_t +- mgr_load_config +- mgr_update_wayfire_cursor +- manager_main +- oledsaver_idle_plugin_t + +## God Nodes (most connected - your core abstractions) +1. `renderer_main()` - 23 edges +2. `manager_main()` - 22 edges +3. `oledsaver_cursor_plugin_t` - 14 edges +4. `render_init_layer()` - 11 edges +5. `render_tick_layer()` - 11 edges +6. `mgr_refresh_outputs()` - 11 edges +7. `mgr_blank_output()` - 11 edges +8. `oledsaver_idle_plugin_t` - 8 edges +9. `mgr_monotime()` - 8 edges +10. `mgr_ipc_request()` - 8 edges + +## Surprising Connections (you probably didn't know these) +- `main()` --calls--> `mgr_monotime()` [INFERRED] + tests/test-inhibition.c → files/oledsaver.c +- `main()` --calls--> `mgr_response_inhibits_output()` [INFERRED] + tests/test-inhibition.c → files/oledsaver.c +- `main()` --calls--> `mgr_idle_handle_resumed()` [INFERRED] + tests/test-inhibition.c → files/oledsaver.c +- `mgr_idle_wayland_cleanup()` --calls--> `ext_idle_notifier_v1_destroy()` [INFERRED] + files/oledsaver.c → files/ext-idle-notify-v1-client-protocol.h +- `mgr_idle_watcher()` --calls--> `ext_idle_notifier_v1_get_idle_notification()` [INFERRED] + files/oledsaver.c → files/ext-idle-notify-v1-client-protocol.h + +## Import Cycles +- None detected. + +## Communities (19 total, 1 thin omitted) + +### Community 0 - "xdg-shell-client-protocol.h" +Cohesion: 0.03 +Nodes (13): wl_interface, wl_output, wl_seat, wl_surface, xdg_popup, xdg_popup_listener, xdg_positioner, xdg_surface (+5 more) + +### Community 2 - "wlr-layer-shell-unstable-v1-client-protocol.h" +Cohesion: 0.07 +Nodes (24): render_compile_shader(), render_init_egl(), render_init_freetype(), render_init_shaders(), render_layer_surface_configure(), render_set_projection(), renderer_main(), wl_interface (+16 more) + +### Community 3 - "mgr_ipc_request" +Cohesion: 0.18 +Nodes (14): ensure_wayland_display(), mgr_check_idle_inhibitors(), mgr_focus_name_from_event(), mgr_focus_watcher(), mgr_get_focused_output_from_ipc(), mgr_ipc_connect(), mgr_ipc_recv(), mgr_ipc_request() (+6 more) + +### Community 4 - "render_init_layer" +Cohesion: 0.19 +Nodes (19): depth_layer_t, render_cell_at_layer(), render_get_layer_properties(), render_head_white_mix(), render_init_layer(), render_init_matrix(), render_lookup_color(), render_parse_hex() (+11 more) + +### Community 5 - "ext-idle-notify-v1-client-protocol.h" +Cohesion: 0.17 +Nodes (8): ext_idle_notification_v1_add_listener(), ext_idle_notification_v1_destroy(), ext_idle_notifier_v1_destroy(), ext_idle_notifier_v1_get_idle_notification(), ext_idle_notifier_v1_get_input_idle_notification(), mgr_idle_watcher(), mgr_idle_wayland_cleanup(), mgr_idle_wayland_t + +### Community 6 - "render_frame" +Cohesion: 0.40 +Nodes (5): render_find_glyph(), render_flush_quads(), render_frame(), render_push_quad(), glyph_info_t + +### Community 11 - "mgr_blank_output" +Cohesion: 0.13 +Nodes (18): mgr_activate_all_outputs(), mgr_blank_output(), mgr_get_output_color(), mgr_get_output_timeout(), mgr_get_self_exe(), mgr_get_val_d(), mgr_get_val_i(), mgr_idle_handle_resumed() (+10 more) + +### Community 12 - "mgr_refresh_outputs" +Cohesion: 0.18 +Nodes (7): mgr_outputs_wayland_cleanup(), mgr_refresh_outputs(), zxdg_output_manager_v1_destroy(), zxdg_output_manager_v1_get_xdg_output(), zxdg_output_v1_add_listener(), zxdg_output_v1_destroy(), mgr_outputs_wayland_t + +### Community 13 - "mgr_output_set_name" +Cohesion: 0.50 +Nodes (4): mgr_output_handle_name(), mgr_output_set_name(), mgr_xdg_output_handle_name(), mgr_wayland_output_info_t + +### Community 14 - "oledsaver_cursor_plugin_t" +Cohesion: 0.17 +Nodes (9): json_t, method_repository_t, plugin_interface_t, ref_ptr_t, oledsaver_cursor_plugin_t, cursor_hidden, repo, output_t (+1 more) + +### Community 15 - "mgr_load_config" +Cohesion: 0.50 +Nodes (4): mgr_expand_tilde(), mgr_load_config(), mgr_set_defaults(), mgr_trim() + +### Community 16 - "mgr_update_wayfire_cursor" +Cohesion: 0.60 +Nodes (5): mgr_get_cursor_status_from_ipc(), mgr_ipc_response_has_error(), mgr_release_wayfire_cursor(), mgr_set_wayfire_cursor_hidden(), mgr_update_wayfire_cursor() + +### Community 17 - "manager_main" +Cohesion: 0.25 +Nodes (11): main(), manager_main(), mgr_find_output(), mgr_mkdirs(), mgr_read_pidfile(), mgr_reap_children(), mgr_remove_pidfile(), mgr_run_lock_cmd() (+3 more) + +### Community 18 - "oledsaver_idle_plugin_t" +Cohesion: 0.22 +Nodes (6): json_t, method_repository_t, plugin_interface_t, ref_ptr_t, oledsaver_idle_plugin_t, repo + +## Knowledge Gaps +- **23 isolated node(s):** `repo`, `cursor_hidden`, `repo`, `wl_output`, `wl_surface` (+18 more) + These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 156 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) +- **1 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. + +## Suggested Questions +_Questions this graph is uniquely positioned to answer:_ + +- **Why does `renderer_main()` connect `wlr-layer-shell-unstable-v1-client-protocol.h` to `oledsaver.c`, `mgr_ipc_request`, `render_init_layer`, `render_frame`, `mgr_refresh_outputs`, `manager_main`?** + _High betweenness centrality (0.024) - this node is a cross-community bridge._ +- **Why does `render_compile_shader()` connect `wlr-layer-shell-unstable-v1-client-protocol.h` to `oledsaver.c`?** + _High betweenness centrality (0.009) - this node is a cross-community bridge._ +- **Why does `mgr_idle_wayland_cleanup()` connect `ext-idle-notify-v1-client-protocol.h` to `oledsaver.c`?** + _High betweenness centrality (0.009) - this node is a cross-community bridge._ +- **Are the 11 inferred relationships involving `renderer_main()` (e.g. with `zwlr_layer_shell_v1_get_layer_surface()` and `zwlr_layer_surface_v1_add_listener()`) actually correct?** + _`renderer_main()` has 11 INFERRED edges - model-reasoned connections that need verification._ +- **What connects `repo`, `cursor_hidden`, `repo` to the rest of the system?** + _23 weakly-connected nodes found - possible documentation gaps or missing edges._ +- **Should `xdg-shell-client-protocol.h` be split into smaller, more focused modules?** + _Cohesion score 0.028985507246376812 - nodes in this community are weakly interconnected._ +- **Should `oledsaver.c` be split into smaller, more focused modules?** + _Cohesion score 0.058823529411764705 - nodes in this community are weakly interconnected._
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/09e94abaf36f50d8aef5c16326bf37cbed2b7c764e627a9197966d0aa19024a8.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/09e94abaf36f50d8aef5c16326bf37cbed2b7c764e627a9197966d0aa19024a8.json new file mode 100644 index 000000000000..4f61700d6fa3 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/09e94abaf36f50d8aef5c16326bf37cbed2b7c764e627a9197966d0aa19024a8.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_inhibition_c", "label": "test-inhibition.c", "file_type": "code", "source_file": "tests/test-inhibition.c", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_inhibition_main", "label": "main()", "file_type": "code", "source_file": "tests/test-inhibition.c", "source_location": "L6", "_callable": true}], "edges": [{"source": "$graphify-root$_tests_test_inhibition_c", "target": "$graphify-root$_files_oledsaver_c", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-inhibition.c", "source_location": "L2", "weight": 1.0, "target_file": "$graphify-root$/files/oledsaver.c"}, {"source": "$graphify-root$_tests_test_inhibition_c", "target": "assert", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-inhibition.c", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_inhibition_c", "target": "$graphify-root$_tests_test_inhibition_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-inhibition.c", "source_location": "L6", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L7", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L8", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_response_inhibits_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L8", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L9", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_response_inhibits_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L9", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L10", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_response_inhibits_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L10", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L11", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_response_inhibits_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L11", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "json_object_put", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L12", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L17", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L18", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_response_inhibits_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L18", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "json_object_put", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L19", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L21", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_response_inhibits_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L21", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L22", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_monotime", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L24", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_idle_handle_resumed", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L25", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L26", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_idle_handle_resumed", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L28", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L29", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L30", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "puts", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L31", "receiver": null}]}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/22af665b700c7fbc560d1b7b0adc167798036a74a64614808c6f89d952c34b7f.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/22af665b700c7fbc560d1b7b0adc167798036a74a64614808c6f89d952c34b7f.json new file mode 100644 index 000000000000..d6f1f806669c --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/22af665b700c7fbc560d1b7b0adc167798036a74a64614808c6f89d952c34b7f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "label": "wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L1"}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", "label": "wl_output", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L46", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", "label": "wl_surface", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L47", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", "label": "xdg_popup", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L48", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", "label": "zwlr_layer_shell_v1", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L49", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", "label": "zwlr_layer_surface_v1", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L50", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", "label": "wl_interface", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L79", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", "label": "zwlr_layer_shell_v1_set_user_data()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L164", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", "label": "zwlr_layer_shell_v1_get_user_data()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L171", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", "label": "zwlr_layer_shell_v1_get_version()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L177", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "label": "zwlr_layer_shell_v1_get_layer_surface()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L202", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "label": "zwlr_layer_shell_v1_destroy()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L220", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", "label": "zwlr_layer_surface_v1_listener", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L271", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "label": "zwlr_layer_surface_v1_add_listener()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L319", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", "label": "zwlr_layer_surface_v1_set_user_data()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L384", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", "label": "zwlr_layer_surface_v1_get_user_data()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L391", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", "label": "zwlr_layer_surface_v1_get_version()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L397", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "label": "zwlr_layer_surface_v1_set_size()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L417", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "label": "zwlr_layer_surface_v1_set_anchor()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L435", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "label": "zwlr_layer_surface_v1_set_exclusive_zone()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L478", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "label": "zwlr_layer_surface_v1_set_margin()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L496", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "label": "zwlr_layer_surface_v1_set_keyboard_interactivity()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L518", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "label": "zwlr_layer_surface_v1_get_popup()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L536", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "label": "zwlr_layer_surface_v1_ack_configure()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L562", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "label": "zwlr_layer_surface_v1_destroy()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L574", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "label": "zwlr_layer_surface_v1_set_layer()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L588", "_callable": true}], "edges": [{"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "stddef", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L271", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L319", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L384", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L391", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L397", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L417", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L435", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L478", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L496", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L518", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L536", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L562", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L574", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L588", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L167", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L174", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L180", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L207", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L208", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L223", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L224", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L323", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L387", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L394", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L400", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L420", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L421", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L438", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L439", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L481", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L482", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L499", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L500", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L521", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L522", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L539", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L540", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L565", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L566", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L577", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L578", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L591", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L592", "receiver": null, "lang": "cpp"}], "parse_errors": {"first_error_line": 595, "multiline_error": false}}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/304d4b59e714925a5bcc875be4ff19d74c67a195f442a2d43678bab639c0cb8d.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/304d4b59e714925a5bcc875be4ff19d74c67a195f442a2d43678bab639c0cb8d.json new file mode 100644 index 000000000000..1163836fba18 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/304d4b59e714925a5bcc875be4ff19d74c67a195f442a2d43678bab639c0cb8d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_files_xdg_shell_client_protocol_h", "label": "xdg-shell-client-protocol.h", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1"}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_wl_output", "label": "wl_output", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L52", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_wl_seat", "label": "wl_seat", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L53", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_wl_surface", "label": "wl_surface", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L54", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup", "label": "xdg_popup", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L55", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner", "label": "xdg_positioner", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L56", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface", "label": "xdg_surface", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L57", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel", "label": "xdg_toplevel", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L58", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base", "label": "xdg_wm_base", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L59", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_wl_interface", "label": "wl_interface", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L84", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_listener", "label": "xdg_wm_base_listener", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L409", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_add_listener", "label": "xdg_wm_base_add_listener()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L437", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", "label": "xdg_wm_base_set_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L473", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", "label": "xdg_wm_base_get_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L480", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_version", "label": "xdg_wm_base_get_version()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L486", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_destroy", "label": "xdg_wm_base_destroy()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L501", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "label": "xdg_wm_base_create_positioner()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L515", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "label": "xdg_wm_base_get_xdg_surface()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L543", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_pong", "label": "xdg_wm_base_pong()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L561", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_user_data", "label": "xdg_positioner_set_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L770", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_get_user_data", "label": "xdg_positioner_get_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L777", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_get_version", "label": "xdg_positioner_get_version()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L783", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_destroy", "label": "xdg_positioner_destroy()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L794", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_size", "label": "xdg_positioner_set_size()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L810", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "label": "xdg_positioner_set_anchor_rect()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L831", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "label": "xdg_positioner_set_anchor()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L848", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "label": "xdg_positioner_set_gravity()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L866", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "label": "xdg_positioner_set_constraint_adjustment()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L890", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_offset", "label": "xdg_positioner_set_offset()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L912", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "label": "xdg_positioner_set_reactive()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L929", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "label": "xdg_positioner_set_parent_size()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L947", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "label": "xdg_positioner_set_parent_configure()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L962", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_listener", "label": "xdg_surface_listener", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1003", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_add_listener", "label": "xdg_surface_add_listener()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1036", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_user_data", "label": "xdg_surface_set_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1077", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_user_data", "label": "xdg_surface_get_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1084", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_version", "label": "xdg_surface_get_version()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1090", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_destroy", "label": "xdg_surface_destroy()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1103", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "label": "xdg_surface_get_toplevel()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1119", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_popup", "label": "xdg_surface_get_popup()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1142", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "label": "xdg_surface_set_window_geometry()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1197", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_ack_configure", "label": "xdg_surface_ack_configure()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1240", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_listener", "label": "xdg_toplevel_listener", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1501", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_add_listener", "label": "xdg_toplevel_add_listener()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1606", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", "label": "xdg_toplevel_set_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1704", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", "label": "xdg_toplevel_get_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1711", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_get_version", "label": "xdg_toplevel_get_version()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1717", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_destroy", "label": "xdg_toplevel_destroy()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1729", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "label": "xdg_toplevel_set_parent()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1760", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_title", "label": "xdg_toplevel_set_title()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1778", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "label": "xdg_toplevel_set_app_id()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1812", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "label": "xdg_toplevel_show_window_menu()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1835", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_move", "label": "xdg_toplevel_move()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1862", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_resize", "label": "xdg_toplevel_resize()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1904", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "label": "xdg_toplevel_set_max_size()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1948", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "label": "xdg_toplevel_set_min_size()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1992", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "label": "xdg_toplevel_set_maximized()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2022", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "label": "xdg_toplevel_unset_maximized()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2054", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "label": "xdg_toplevel_set_fullscreen()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2088", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "label": "xdg_toplevel_unset_fullscreen()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2116", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "label": "xdg_toplevel_set_minimized()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2135", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_listener", "label": "xdg_popup_listener", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2156", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_add_listener", "label": "xdg_popup_add_listener()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2224", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_set_user_data", "label": "xdg_popup_set_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2263", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_get_user_data", "label": "xdg_popup_get_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2270", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_get_version", "label": "xdg_popup_get_version()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2276", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_destroy", "label": "xdg_popup_destroy()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2291", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_grab", "label": "xdg_popup_grab()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2339", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_reposition", "label": "xdg_popup_reposition()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2373", "_callable": true}], "edges": [{"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "stddef", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L52", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_seat", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_surface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L137", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L248", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L305", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L368", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L409", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L437", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L473", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L480", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L486", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L501", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L515", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L543", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_pong", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L561", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L770", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L777", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L783", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L794", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L810", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L831", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L848", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L866", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L890", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_offset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L912", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L929", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L947", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L962", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1003", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1036", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1077", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1084", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1090", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1103", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1119", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_popup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1142", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1197", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_ack_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1240", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1501", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1606", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1704", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1711", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1717", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1729", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1760", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_title", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1778", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1812", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1835", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_move", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1862", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_resize", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1904", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1948", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1992", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2022", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2054", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2088", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2116", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2135", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2156", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2224", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2263", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2270", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2276", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2291", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_grab", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2339", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_reposition", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2373", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L441", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L476", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L483", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L489", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L504", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L505", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L520", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L521", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L548", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L549", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_pong", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L564", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_pong", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L565", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L773", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L780", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L786", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L797", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L798", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_size", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L813", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_size", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L814", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L834", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L835", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L851", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L852", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L869", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L870", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L893", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L894", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_offset", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L915", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_offset", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L916", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L932", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L933", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L950", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L951", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L965", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L966", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1040", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1080", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1087", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1093", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1106", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1107", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1124", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1125", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_popup", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1147", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_popup", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1148", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1200", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1201", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_ack_configure", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1243", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_ack_configure", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1244", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1610", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1707", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1714", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1720", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1732", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1733", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1763", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1764", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_title", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1781", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_title", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1782", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1815", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1816", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1838", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1839", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_move", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1865", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_move", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1866", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_resize", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1907", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_resize", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1908", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1951", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1952", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1995", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1996", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2025", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2026", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2057", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2058", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2091", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2092", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2119", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2120", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2138", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2139", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2228", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2266", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2273", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2279", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2294", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2295", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_grab", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2342", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_grab", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2343", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_reposition", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2376", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_reposition", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2377", "receiver": null, "lang": "cpp"}], "parse_errors": {"first_error_line": 2380, "multiline_error": false}}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/428f5d50c6db565fa18afc2b47dd82457c9fd533db482d548a9de92e62e76131.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/428f5d50c6db565fa18afc2b47dd82457c9fd533db482d548a9de92e62e76131.json new file mode 100644 index 000000000000..1836c188a07d --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/428f5d50c6db565fa18afc2b47dd82457c9fd533db482d548a9de92e62e76131.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "label": "xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L1"}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", "label": "zxdg_output_manager_v1_set_user_data()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L145", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", "label": "zxdg_output_manager_v1_get_user_data()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L152", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", "label": "zxdg_output_manager_v1_get_version()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L158", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "label": "zxdg_output_manager_v1_destroy()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L172", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "label": "zxdg_output_manager_v1_get_xdg_output()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L184", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "label": "zxdg_output_v1_add_listener()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L342", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", "label": "zxdg_output_v1_set_user_data()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L379", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", "label": "zxdg_output_v1_get_user_data()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L386", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", "label": "zxdg_output_v1_get_version()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L392", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "label": "zxdg_output_v1_destroy()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L404", "_callable": true}], "edges": [{"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "stddef", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L152", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L172", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L184", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L342", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L379", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L386", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L392", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L404", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L148", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L161", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L175", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L176", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L189", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L190", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L346", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L382", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L389", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L395", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L407", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L408", "receiver": null}], "parse_errors": {"first_error_line": 411, "multiline_error": false}}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/4459bcfe55063b16dbf4624de7b29fe7967471eca0fb281f90d8ee30ae494b88.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/4459bcfe55063b16dbf4624de7b29fe7967471eca0fb281f90d8ee30ae494b88.json new file mode 100644 index 000000000000..b35608a5dd42 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/4459bcfe55063b16dbf4624de7b29fe7967471eca0fb281f90d8ee30ae494b88.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L284", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L285", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L287", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L294", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L305", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L309", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L322", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L335", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L361", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L365", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L373", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L384", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L401", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L459", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L613", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L628", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L740", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L757", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L796", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L810", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L831", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L862", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L881", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L952", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L970", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1049", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1057", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1201", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1216", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1221", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1233", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1238", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1251", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1259", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1269", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1276", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1280", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1295", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1311", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1323", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1336", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1359", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1371", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1376", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1381", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1411", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1944", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1976", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1982", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1987", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2000", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2014", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2026", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2032", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2082", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2109", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2121", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2134", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2146", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2170", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2190", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2214", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2228", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2245", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2254", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2290", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2464", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2472", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2487", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2526", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2537", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2557", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2607", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2612", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2631", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2634", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2638", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2670", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2677", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2682", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2690", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2695", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2701", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2714", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2722", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2732", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2736", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2743", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2749", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2763", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2784", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2794", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2812", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2855", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2880", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2912", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2920", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2931", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2942", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3057", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3121", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3162", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3247", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3257", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3279", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3296", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3308", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3326", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3387", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3398", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3419", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3438", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3449", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3455", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3469", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3477", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3670", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L46", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L284", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L285", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L287", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L294", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L305", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L305", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L322", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L322", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L335", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L335", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L361", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L361", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L365", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L365", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L373", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L373", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L384", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L401", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L459", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L613", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L613", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L628", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L740", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L740", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L740", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L757", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L796", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L810", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L831", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L862", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L881", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L881", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L952", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L970", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L970", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1049", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1057", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1201", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1216", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1221", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1233", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1238", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1251", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1259", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1269", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1276", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1280", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1295", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1311", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1323", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1336", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1359", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1371", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1376", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1381", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1411", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1944", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1976", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1982", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1982", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1987", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2000", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2014", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2026", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2032", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2082", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2109", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2121", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2134", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2146", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2170", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2190", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2214", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2228", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2245", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2254", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2290", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2464", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2464", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2472", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2487", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2526", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2537", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2557", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2607", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2607", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2612", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2612", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2631", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2634", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2638", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2638", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2670", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2670", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2677", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2682", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2690", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2695", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2701", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2714", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2722", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2732", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2736", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2743", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2749", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2763", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2784", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2794", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2794", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2812", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2855", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2880", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2912", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2912", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2920", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2920", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2931", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2942", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3057", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3121", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3162", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3247", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3257", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3279", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3296", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3308", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3308", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3326", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3387", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3398", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3419", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3438", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3449", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3455", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3455", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3469", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3477", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3670", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L289", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L295", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L338", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L375", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L376", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L461", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L758", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L883", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L909", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L915", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L916", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L920", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L929", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L942", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L946", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L957", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L965", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L982", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L983", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L985", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L997", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L999", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1000", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1001", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1051", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1087", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1113", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1166", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1184", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1550", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1575", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1662", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1669", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1675", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1681", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1687", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1696", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1760", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1761", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2006", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2041", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2084", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2139", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2164", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2172", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2192", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2195", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2201", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2230", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2298", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2316", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2345", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2495", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2500", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2527", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2532", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2545", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2561", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2571", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2580", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2588", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2622", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2698", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2746", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2816", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2823", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2845", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2846", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2852", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2858", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2885", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2889", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2900", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2915", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2945", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2952", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2956", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2958", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2963", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2964", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2966", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2973", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3060", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3134", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3156", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3166", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3173", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3182", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3222", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3225", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3262", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3348", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3422", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3431", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3440", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3451", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3457", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3482", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3484", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3485", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3494", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3512", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3515", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3519", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3544", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3551", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3557", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3558", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3564", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3572", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3587", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3600", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3610", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3612", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3621", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3654", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3659", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3673", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3676", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3699", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L284", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L312", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L314", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L314", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L316", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L316", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L318", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L318", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L327", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L340", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L344", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L346", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L350", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L353", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L402", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L432", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L640", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L646", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L687", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L742", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L749", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L768", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L786", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L805", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L834", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L835", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L838", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L839", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L842", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L844", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L846", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L849", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L851", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L898", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L899", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L900", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L901", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L962", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1061", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1064", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1065", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1067", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1068", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1069", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1070", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1205", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1207", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1227", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1284", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1286", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1320", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1340", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1341", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1343", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1344", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1346", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1350", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1388", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1393", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1394", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1399", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1400", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1400", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1401", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1406", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1487", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1488", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1585", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1638", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1639", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1640", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1643", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1647", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1700", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1718", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "poll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1725", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1726", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1731", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1735", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1747", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1748", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1805", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1814", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1817", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1818", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1820", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1823", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1825", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1827", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1828", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1830", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1832", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1833", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1835", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1836", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1838", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1839", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1843", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1844", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1845", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1846", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1851", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1945", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1948", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1949", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1953", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1954", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1956", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1957", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1958", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1961", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1962", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1963", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1964", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1966", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1978", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1984", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1989", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1993", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1997", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2001", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2005", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2007", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2011", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2016", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2018", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2020", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2022", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2027", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2033", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2035", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2037", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2044", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2049", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2049", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2056", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2061", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2063", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2064", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2065", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2070", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2071", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2071", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2072", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2085", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2089", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2094", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2098", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2100", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2102", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2103", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2112", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2124", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2135", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2155", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2157", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2159", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2159", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2160", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2162", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2166", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2177", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2180", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2186", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2196", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2202", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2205", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2207", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2217", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2219", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2220", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2221", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2222", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2222", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2235", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2248", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2248", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2249", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2255", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2256", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2279", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2282", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2284", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2286", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2301", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2307", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2314", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2315", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2325", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2344", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2372", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2385", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2386", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2387", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2388", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2389", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2390", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2391", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2392", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2393", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2394", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2395", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2396", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2397", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2398", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2399", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2400", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2401", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2402", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2404", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2405", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2406", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2408", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2409", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2410", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2411", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2412", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2547", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2640", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2641", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2643", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2674", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2768", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2800", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2802", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2805", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2809", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2814", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2817", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2825", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2826", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2827", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2831", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2832", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2834", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2837", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2842", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2869", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2870", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2871", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2871", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2876", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2884", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2886", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2891", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2893", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2894", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2895", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2907", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2923", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2933", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2943", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2947", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2951", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2953", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2957", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2971", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2981", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2982", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2984", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2985", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2986", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2987", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2988", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2989", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2990", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2991", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2992", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2993", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2994", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2995", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2996", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2998", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3000", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3000", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3008", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3009", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3010", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3012", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3033", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3037", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3039", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3045", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3050", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3051", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3054", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3058", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3061", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3062", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3069", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3100", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3100", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3108", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3113", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3114", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3116", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3126", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3138", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3140", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3141", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3142", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3142", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3150", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3151", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3168", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3169", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3176", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3177", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3183", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3184", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3185", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3189", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3190", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3193", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3194", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3194", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3195", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3196", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3198", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3200", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3203", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3206", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3211", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3215", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3223", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3229", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3252", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3254", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3264", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3271", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3284", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3286", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3288", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3312", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3315", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3317", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3320", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3322", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3329", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3335", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3342", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3343", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3344", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3372", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3400", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3404", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3406", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3408", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3410", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3412", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3412", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3433", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3499", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3499", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3585", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3639", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3675", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3677", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3678", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3681", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3687", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3692", "receiver": null}], "parse_errors": {"first_error_line": 1591, "multiline_error": false}}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/50c6a183fbe6fd510cbab605f6327958cb7ddca77e516393cfb9ba68fd5b82cb.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/50c6a183fbe6fd510cbab605f6327958cb7ddca77e516393cfb9ba68fd5b82cb.json new file mode 100644 index 000000000000..b933615d18a9 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/50c6a183fbe6fd510cbab605f6327958cb7ddca77e516393cfb9ba68fd5b82cb.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "label": "ext-idle-notify-v1-client-protocol.h", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L1"}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", "label": "ext_idle_notifier_v1_set_user_data()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L151", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", "label": "ext_idle_notifier_v1_get_user_data()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L158", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", "label": "ext_idle_notifier_v1_get_version()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L164", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "label": "ext_idle_notifier_v1_destroy()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L176", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "label": "ext_idle_notifier_v1_get_idle_notification()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L195", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "label": "ext_idle_notifier_v1_get_input_idle_notification()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L220", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "label": "ext_idle_notification_v1_add_listener()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L263", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", "label": "ext_idle_notification_v1_set_user_data()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L288", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", "label": "ext_idle_notification_v1_get_user_data()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L295", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", "label": "ext_idle_notification_v1_get_version()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L301", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "label": "ext_idle_notification_v1_destroy()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L312", "_callable": true}], "edges": [{"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "stddef", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L176", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L195", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L263", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L288", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L295", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L312", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L154", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L161", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L167", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L179", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L180", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L200", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L201", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L225", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L226", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L267", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L291", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L298", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L304", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L315", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L316", "receiver": null}], "parse_errors": {"first_error_line": 319, "multiline_error": false}}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/607f285b7f38bcaec1d2b380b8f16359049a84e50b92212de5e1c33dc868b746.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/607f285b7f38bcaec1d2b380b8f16359049a84e50b92212de5e1c33dc868b746.json new file mode 100644 index 000000000000..b604813b42d4 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/607f285b7f38bcaec1d2b380b8f16359049a84e50b92212de5e1c33dc868b746.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_files_oledsaver_cursor_cpp", "label": "oledsaver-cursor.cpp", "file_type": "code", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "label": "oledsaver_cursor_plugin_t", "file_type": "code", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L13", "_callable": true, "_callable_class": true}, {"id": "plugin_interface_t", "label": "plugin_interface_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-cursor.cpp"}, {"id": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": ".init()", "file_type": "code", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L16", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "label": ".fini()", "file_type": "code", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L26", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable", "label": ".is_unloadable()", "file_type": "code", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L34", "_callable": true}, {"id": "ref_ptr_t", "label": "ref_ptr_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-cursor.cpp"}, {"id": "method_repository_t", "label": "method_repository_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-cursor.cpp"}, {"id": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo", "label": "repo", "file_type": "code", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L40"}, {"id": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden", "label": "cursor_hidden", "file_type": "code", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L41"}, {"id": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "label": ".get_output_at()", "file_type": "code", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L43", "_callable": true}, {"id": "output_t", "label": "output_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-cursor.cpp"}, {"id": "pointf_t", "label": "pointf_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-cursor.cpp"}, {"id": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": ".set_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L56", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "label": ".cursor_status()", "file_type": "code", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L74", "_callable": true}, {"id": "json_t", "label": "json_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-cursor.cpp"}, {"id": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "label": ".hide_cursor()", "file_type": "code", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L90", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": ".unhide_cursor()", "file_type": "code", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L96", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_cursor_cpp", "target": "cmath", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_cpp", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L2", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_cpp", "target": "core", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_cpp", "target": "output_layout", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_cpp", "target": "output", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_cpp", "target": "plugin", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_cpp", "target": "shared_core_data", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_cpp", "target": "ipc_method_repository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_cpp", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "plugin_interface_t", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "ref_ptr_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L40", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "method_repository_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L40", "weight": 1.0, "context": "generic_arg"}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L40", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L41", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "target": "output_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "target": "pointf_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "target": "json_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L74", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "target": "json_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L74", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L90", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "target": "json_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L90", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "target": "json_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L90", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "target": "json_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L96", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "target": "json_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L96", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "target": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver-cursor.cpp", "source_location": "L98", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "callee": "register_method", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L18", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "callee": "register_method", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L20", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "callee": "register_method", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L22", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L28", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L29", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L30", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "callee": "get_outputs", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L45", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "callee": "get_core", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L45", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "callee": "get_layout_geometry", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L47", "receiver": "output", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "callee": "get_core", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L65", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "callee": "get_core", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L68", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "callee": "get_cursor_position", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L77", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "callee": "get_core", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L77", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "callee": "isfinite", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L78", "receiver": "std", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "callee": "isfinite", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L78", "receiver": "std", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "callee": "ipc::json_ok", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L93", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "callee": "ipc::json_ok", "is_member_call": true, "source_file": "files/oledsaver-cursor.cpp", "source_location": "L99", "receiver": "wf", "lang": "cpp"}]}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/622b06fd3432b0e23bc42a64c3124c104d1452bd6fd63e2b7800a585fdb7f0d7.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/622b06fd3432b0e23bc42a64c3124c104d1452bd6fd63e2b7800a585fdb7f0d7.json new file mode 100644 index 000000000000..1d268220a2d5 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/622b06fd3432b0e23bc42a64c3124c104d1452bd6fd63e2b7800a585fdb7f0d7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_files_ext_idle_notify_v1_protocol_c", "label": "ext-idle-notify-v1-protocol.c", "file_type": "code", "source_file": "files/ext-idle-notify-v1-protocol.c", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_files_ext_idle_notify_v1_protocol_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-protocol.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_protocol_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-protocol.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_protocol_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-protocol.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_protocol_c", "target": "wayland_util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-protocol.c", "source_location": "L30", "weight": 1.0}], "raw_calls": [], "parse_errors": {"first_error_line": 60, "multiline_error": false}}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/696fe9874e762da6d6d6d31263864bce9a25eb8c3f40bacdfb967dcbde95c254.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/696fe9874e762da6d6d6d31263864bce9a25eb8c3f40bacdfb967dcbde95c254.json new file mode 100644 index 000000000000..40e9067d3981 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/696fe9874e762da6d6d6d31263864bce9a25eb8c3f40bacdfb967dcbde95c254.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_files_xdg_output_unstable_v1_protocol_c", "label": "xdg-output-unstable-v1-protocol.c", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-protocol.c", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_files_xdg_output_unstable_v1_protocol_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-protocol.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_protocol_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-protocol.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_protocol_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-protocol.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_protocol_c", "target": "wayland_util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-protocol.c", "source_location": "L29", "weight": 1.0}], "raw_calls": [], "parse_errors": {"first_error_line": 56, "multiline_error": false}}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/99cbb94bd5fc5e90d3b64891d46b85500c1584f2e6d8ff449b2e9cd6abdeefc0.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/99cbb94bd5fc5e90d3b64891d46b85500c1584f2e6d8ff449b2e9cd6abdeefc0.json new file mode 100644 index 000000000000..a35d4c4b567b --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/99cbb94bd5fc5e90d3b64891d46b85500c1584f2e6d8ff449b2e9cd6abdeefc0.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_files_oledsaver_idle_cpp", "label": "oledsaver-idle.cpp", "file_type": "code", "source_file": "files/oledsaver-idle.cpp", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t", "label": "oledsaver_idle_plugin_t", "file_type": "code", "source_file": "files/oledsaver-idle.cpp", "source_location": "L14", "_callable": true, "_callable_class": true}, {"id": "plugin_interface_t", "label": "plugin_interface_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-idle.cpp"}, {"id": "ref_ptr_t", "label": "ref_ptr_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-idle.cpp"}, {"id": "method_repository_t", "label": "method_repository_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-idle.cpp"}, {"id": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_repo", "label": "repo", "file_type": "code", "source_file": "files/oledsaver-idle.cpp", "source_location": "L16"}, {"id": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "label": ".status()", "file_type": "code", "source_file": "files/oledsaver-idle.cpp", "source_location": "L18", "_callable": true}, {"id": "json_t", "label": "json_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-idle.cpp"}, {"id": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_init", "label": ".init()", "file_type": "code", "source_file": "files/oledsaver-idle.cpp", "source_location": "L64", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_fini", "label": ".fini()", "file_type": "code", "source_file": "files/oledsaver-idle.cpp", "source_location": "L70", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_idle_cpp", "target": "set", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_cpp", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L2", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_cpp", "target": "core", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_cpp", "target": "output", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_cpp", "target": "plugin", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_cpp", "target": "view", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_cpp", "target": "wlroots_full", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_cpp", "target": "shared_core_data", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_cpp", "target": "ipc_method_repository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_cpp", "target": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t", "target": "plugin_interface_t", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t", "target": "ref_ptr_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t", "target": "method_repository_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L16", "weight": 1.0, "context": "generic_arg"}, {"source": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t", "target": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_repo", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t", "target": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "target": "json_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L18", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t", "target": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t", "target": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_fini", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_init", "target": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver-idle.cpp", "source_location": "L67", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "get_core", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L21", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver-idle.cpp", "source_location": "L25", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "wlr_surface_get_root_surface", "is_member_call": false, "source_file": "files/oledsaver-idle.cpp", "source_location": "L27", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "wl_surface_to_wayfire_view", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L28", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "is_mapped", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L29", "receiver": "view", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "get_output", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L29", "receiver": "view", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "get", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L33", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "get_root_node", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L33", "receiver": "view", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "parent", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L33", "receiver": "node", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "is_enabled", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L35", "receiver": "node", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "get_output", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L41", "receiver": "view", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "get_bounding_box", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L42", "receiver": "view", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "get_relative_geometry", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L43", "receiver": "output", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "insert", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L52", "receiver": "outputs", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "json_t::array", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L57", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_status", "callee": "append", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L59", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_init", "callee": "register_method", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L66", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_idle_oledsaver_idle_plugin_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "files/oledsaver-idle.cpp", "source_location": "L72", "receiver": "repo", "lang": "cpp"}], "parse_errors": {"first_error_line": 25, "multiline_error": false}}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/a1d98774448808e4f24ae850b227e55af57a2b1b5bc42b314bead36cd3ee53be.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/a1d98774448808e4f24ae850b227e55af57a2b1b5bc42b314bead36cd3ee53be.json new file mode 100644 index 000000000000..275c47d1a0f0 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/a1d98774448808e4f24ae850b227e55af57a2b1b5bc42b314bead36cd3ee53be.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_files_xdg_shell_protocol_c", "label": "xdg-shell-protocol.c", "file_type": "code", "source_file": "files/xdg-shell-protocol.c", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_files_xdg_shell_protocol_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-protocol.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_protocol_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-protocol.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_protocol_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-protocol.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_protocol_c", "target": "wayland_util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-protocol.c", "source_location": "L34", "weight": 1.0}], "raw_calls": [], "parse_errors": {"first_error_line": 94, "multiline_error": false}}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/fee6e71c0d106299e1ad9bcbd7b21434026e4b7772b437d53d769e305296597b.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/fee6e71c0d106299e1ad9bcbd7b21434026e4b7772b437d53d769e305296597b.json new file mode 100644 index 000000000000..1082bf0fbbbe --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/fee6e71c0d106299e1ad9bcbd7b21434026e4b7772b437d53d769e305296597b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_protocol_c", "label": "wlr-layer-shell-unstable-v1-protocol.c", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_protocol_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_protocol_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_protocol_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_protocol_c", "target": "wayland_util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "source_location": "L31", "weight": 1.0}], "raw_calls": [], "parse_errors": {"first_error_line": 66, "multiline_error": false}}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/last_query_stamp b/gui-apps/oledsaver/graphify-out/cache/last_query_stamp new file mode 100644 index 000000000000..00f537f2259d --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/last_query_stamp @@ -0,0 +1 @@ +1789161672.6978865
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/stat-index.json b/gui-apps/oledsaver/graphify-out/cache/stat-index.json new file mode 100644 index 000000000000..b42626ca4a7f --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/cache/stat-index.json @@ -0,0 +1 @@ +{"files/ext-idle-notify-v1-client-protocol.h":{"size":11956,"mtime_ns":1781276121238339326,"indexed_at_ns":1786926316482010028,"word_count":1422,"hashes":{"files/ext-idle-notify-v1-client-protocol.h":"50c6a183fbe6fd510cbab605f6327958cb7ddca77e516393cfb9ba68fd5b82cb"}},"files/ext-idle-notify-v1-protocol.c":{"size":2808,"mtime_ns":1781276121236339323,"indexed_at_ns":1786926316482610379,"word_count":360,"hashes":{"files/ext-idle-notify-v1-protocol.c":"622b06fd3432b0e23bc42a64c3124c104d1452bd6fd63e2b7800a585fdb7f0d7"}},"files/oledsaver.c":{"size":132011,"mtime_ns":1789161863514057366,"indexed_at_ns":1789161983364414297,"word_count":12244,"hashes":{"files/oledsaver.c":"4459bcfe55063b16dbf4624de7b29fe7967471eca0fb281f90d8ee30ae494b88"}},"files/wlr-layer-shell-unstable-v1-client-protocol.h":{"size":21962,"mtime_ns":1781276121236339323,"indexed_at_ns":1786926316483207220,"word_count":2729,"hashes":{"files/wlr-layer-shell-unstable-v1-client-protocol.h":"22af665b700c7fbc560d1b7b0adc167798036a74a64614808c6f89d952c34b7f"}},"files/wlr-layer-shell-unstable-v1-protocol.c":{"size":3439,"mtime_ns":1781276121234339319,"indexed_at_ns":1786926316483333760,"word_count":421,"hashes":{"files/wlr-layer-shell-unstable-v1-protocol.c":"fee6e71c0d106299e1ad9bcbd7b21434026e4b7772b437d53d769e305296597b"}},"files/xdg-output-unstable-v1-client-protocol.h":{"size":14776,"mtime_ns":1781276121237339325,"indexed_at_ns":1786926316483616731,"word_count":1968,"hashes":{"files/xdg-output-unstable-v1-client-protocol.h":"428f5d50c6db565fa18afc2b47dd82457c9fd533db482d548a9de92e62e76131"}},"files/xdg-output-unstable-v1-protocol.c":{"size":2772,"mtime_ns":1781276121235339321,"indexed_at_ns":1786926316483736261,"word_count":367,"hashes":{"files/xdg-output-unstable-v1-protocol.c":"696fe9874e762da6d6d6d31263864bce9a25eb8c3f40bacdfb967dcbde95c254"}},"files/xdg-shell-client-protocol.h":{"size":86018,"mtime_ns":1781276121237339325,"indexed_at_ns":1786926316484277942,"word_count":12268,"hashes":{"files/xdg-shell-client-protocol.h":"304d4b59e714925a5bcc875be4ff19d74c67a195f442a2d43678bab639c0cb8d"}},"files/xdg-shell-protocol.c":{"size":5999,"mtime_ns":1781276121235339321,"indexed_at_ns":1786926316484474022,"word_count":796,"hashes":{"files/xdg-shell-protocol.c":"a1d98774448808e4f24ae850b227e55af57a2b1b5bc42b314bead36cd3ee53be"}},"files/oledsaver-cursor.cpp":{"size":2690,"mtime_ns":1786926310403118763,"indexed_at_ns":1786926316482745589,"word_count":196,"hashes":{"files/oledsaver-cursor.cpp":"607f285b7f38bcaec1d2b380b8f16359049a84e50b92212de5e1c33dc868b746"}},"files/oledsaver-idle.cpp":{"size":2763,"mtime_ns":1789161872312096620,"indexed_at_ns":1789161983364243747,"word_count":225,"hashes":{"files/oledsaver-idle.cpp":"99cbb94bd5fc5e90d3b64891d46b85500c1584f2e6d8ff449b2e9cd6abdeefc0"}},"tests/test-inhibition.c":{"size":1468,"mtime_ns":1789161952533454203,"indexed_at_ns":1789161983365840318,"word_count":99,"hashes":{"tests/test-inhibition.c":"09e94abaf36f50d8aef5c16326bf37cbed2b7c764e627a9197966d0aa19024a8"}}}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/graph.html b/gui-apps/oledsaver/graphify-out/graph.html new file mode 100644 index 000000000000..5d8302c6c801 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/graph.html @@ -0,0 +1,345 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<meta charset="UTF-8"> +<title>graphify - graphify-out/graph.html</title> +<script src="https://unpkg.com/vis-network@9.1.6/standalone/umd/vis-network.min.js" + integrity="sha384-Ux6phic9PEHJ38YtrijhkzyJ8yQlH8i/+buBR8s3mAZOJrP1gwyvAcIYl3GWtpX1" + crossorigin="anonymous"></script> +<style> + * { box-sizing: border-box; margin: 0; padding: 0; } + body { background: #0f0f1a; color: #e0e0e0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; display: flex; height: 100vh; overflow: hidden; } + #graph { flex: 1; } + #sidebar { width: 280px; background: #1a1a2e; border-left: 1px solid #2a2a4e; display: flex; flex-direction: column; overflow: hidden; } + #search-wrap { padding: 12px; border-bottom: 1px solid #2a2a4e; } + #search { width: 100%; background: #0f0f1a; border: 1px solid #3a3a5e; color: #e0e0e0; padding: 7px 10px; border-radius: 6px; font-size: 13px; outline: none; } + #search:focus { border-color: #4E79A7; } + #search-results { max-height: 140px; overflow-y: auto; padding: 4px 12px; border-bottom: 1px solid #2a2a4e; display: none; } + .search-item { padding: 4px 6px; cursor: pointer; border-radius: 4px; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } + .search-item:hover { background: #2a2a4e; } + #info-panel { padding: 14px; border-bottom: 1px solid #2a2a4e; min-height: 140px; } + #info-panel h3 { font-size: 13px; color: #aaa; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.05em; } + #info-content { font-size: 13px; color: #ccc; line-height: 1.6; } + #info-content .field { margin-bottom: 5px; } + #info-content .field b { color: #e0e0e0; } + #info-content .empty { color: #555; font-style: italic; } + .neighbor-link { display: block; padding: 2px 6px; margin: 2px 0; border-radius: 3px; cursor: pointer; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 3px solid #333; } + .neighbor-link:hover { background: #2a2a4e; } + #neighbors-list { max-height: 160px; overflow-y: auto; margin-top: 4px; } + #legend-wrap { flex: 1; overflow-y: auto; padding: 12px; } + #legend-wrap h3 { font-size: 13px; color: #aaa; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.05em; } + .legend-item { display: flex; align-items: center; gap: 8px; padding: 4px 0; cursor: pointer; border-radius: 4px; font-size: 12px; } + .legend-item:hover { background: #2a2a4e; padding-left: 4px; } + .legend-item.dimmed { opacity: 0.35; } + .legend-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; } + .legend-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .legend-count { color: #666; font-size: 11px; } + #stats { padding: 10px 14px; border-top: 1px solid #2a2a4e; font-size: 11px; color: #555; } + #legend-controls { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; padding: 4px 0; } + #legend-controls label { display: flex; align-items: center; gap: 6px; cursor: pointer; font-size: 12px; color: #aaa; user-select: none; } + #legend-controls label:hover { color: #e0e0e0; } + .legend-cb, #select-all-cb { appearance: none; -webkit-appearance: none; width: 14px; height: 14px; border: 1.5px solid #3a3a5e; border-radius: 3px; background: #0f0f1a; cursor: pointer; position: relative; flex-shrink: 0; } + .legend-cb:checked, #select-all-cb:checked { background: #4E79A7; border-color: #4E79A7; } + .legend-cb:checked::after, #select-all-cb:checked::after { content: ''; position: absolute; left: 3.5px; top: 1px; width: 4px; height: 7px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); } + #select-all-cb:indeterminate { background: #4E79A7; border-color: #4E79A7; } + #select-all-cb:indeterminate::after { content: ''; position: absolute; left: 2px; top: 5px; width: 8px; height: 2px; background: #fff; border: none; transform: none; } +</style> +</head> +<body> +<div id="graph"></div> +<div id="sidebar"> + <div id="search-wrap"> + <input id="search" type="text" placeholder="Search nodes..." autocomplete="off"> + <div id="search-results"></div> + </div> + <div id="info-panel"> + <h3>Node Info</h3> + <div id="info-content"><span class="empty">Click a node to inspect it</span></div> + </div> + <div id="legend-wrap"> + <h3>Communities</h3> + <div id="legend-controls"> + <label><input type="checkbox" id="select-all-cb" checked onchange="toggleAllCommunities(!this.checked)">Select All</label> + </div> + <div id="legend"></div> + </div> + <div id="stats">281 nodes · 439 edges · 19 communities</div> +</div> +<script> +const RAW_NODES = [{"id": "files_xdg_shell_client_protocol_wl_interface", "label": "wl_interface", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_interface", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_wl_output", "label": "wl_output", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_output", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_wl_seat", "label": "wl_seat", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_seat", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_wl_surface", "label": "wl_surface", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_surface", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup", "label": "xdg_popup", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_listener", "label": "xdg_popup_listener", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_listener", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner", "label": "xdg_positioner", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface", "label": "xdg_surface", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_listener", "label": "xdg_surface_listener", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_listener", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel", "label": "xdg_toplevel", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_listener", "label": "xdg_toplevel_listener", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_listener", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base", "label": "xdg_wm_base", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_listener", "label": "xdg_wm_base_listener", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_listener", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "label": "oledsaver_cursor_plugin_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.5, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver_cursor_plugin_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 14}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t", "label": "oledsaver_idle_plugin_t", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.0, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver_idle_plugin_t", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 8}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", "label": "wl_interface", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_interface", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", "label": "wl_output", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_output", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", "label": "wl_surface", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_surface", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", "label": "xdg_popup", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", "label": "zwlr_layer_shell_v1", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", "label": "zwlr_layer_surface_v1", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", "label": "zwlr_layer_surface_v1_listener", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_listener", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_add_listener", "label": "xdg_popup_add_listener()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_add_listener()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_destroy", "label": "xdg_popup_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_get_user_data", "label": "xdg_popup_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_get_version", "label": "xdg_popup_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_grab", "label": "xdg_popup_grab()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_grab()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_reposition", "label": "xdg_popup_reposition()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_reposition()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_set_user_data", "label": "xdg_popup_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_destroy", "label": "xdg_positioner_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data", "label": "xdg_positioner_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_get_version", "label": "xdg_positioner_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "label": "xdg_positioner_set_anchor()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_anchor()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "label": "xdg_positioner_set_anchor_rect()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_anchor_rect()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "label": "xdg_positioner_set_constraint_adjustment()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_constraint_adjustment()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "label": "xdg_positioner_set_gravity()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_gravity()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_offset", "label": "xdg_positioner_set_offset()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_offset()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "label": "xdg_positioner_set_parent_configure()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_parent_configure()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "label": "xdg_positioner_set_parent_size()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_parent_size()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "label": "xdg_positioner_set_reactive()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_reactive()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_size", "label": "xdg_positioner_set_size()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_size()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data", "label": "xdg_positioner_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_ack_configure", "label": "xdg_surface_ack_configure()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_ack_configure()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_add_listener", "label": "xdg_surface_add_listener()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_add_listener()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_destroy", "label": "xdg_surface_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_get_popup", "label": "xdg_surface_get_popup()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_get_popup()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "label": "xdg_surface_get_toplevel()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_get_toplevel()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_get_user_data", "label": "xdg_surface_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_get_version", "label": "xdg_surface_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_set_user_data", "label": "xdg_surface_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "label": "xdg_surface_set_window_geometry()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_set_window_geometry()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener", "label": "xdg_toplevel_add_listener()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_add_listener()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_destroy", "label": "xdg_toplevel_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", "label": "xdg_toplevel_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_get_version", "label": "xdg_toplevel_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_move", "label": "xdg_toplevel_move()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_move()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_resize", "label": "xdg_toplevel_resize()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_resize()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "label": "xdg_toplevel_set_app_id()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_app_id()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "label": "xdg_toplevel_set_fullscreen()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_fullscreen()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "label": "xdg_toplevel_set_max_size()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_max_size()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "label": "xdg_toplevel_set_maximized()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_maximized()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "label": "xdg_toplevel_set_min_size()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_min_size()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "label": "xdg_toplevel_set_minimized()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_minimized()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "label": "xdg_toplevel_set_parent()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_parent()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_title", "label": "xdg_toplevel_set_title()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_title()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", "label": "xdg_toplevel_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "label": "xdg_toplevel_show_window_menu()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_show_window_menu()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "label": "xdg_toplevel_unset_fullscreen()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_unset_fullscreen()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "label": "xdg_toplevel_unset_maximized()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_unset_maximized()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener", "label": "xdg_wm_base_add_listener()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_add_listener()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "label": "xdg_wm_base_create_positioner()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_create_positioner()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_destroy", "label": "xdg_wm_base_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", "label": "xdg_wm_base_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_get_version", "label": "xdg_wm_base_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "label": "xdg_wm_base_get_xdg_surface()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_get_xdg_surface()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_pong", "label": "xdg_wm_base_pong()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_pong()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", "label": "xdg_wm_base_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_handle_idled()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_registry_handle_global()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_registry_handle_global_remove()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_log_msg()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_description()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_done()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_geometry()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_mode()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_scale()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_outputs_registry_handle_global()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_outputs_registry_handle_global_remove()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_signal_handler()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_description()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_done()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_logical_position()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_logical_size()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_build_atlas()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_build_codepoint_list()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_layer_surface_closed()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_description()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_done()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_geometry()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_mode()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_name()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_scale()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_registry_handle_global()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_registry_handle_global_remove()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_sig_handler()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_sigusr1_handler()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_description()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_done()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_logical_position()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_logical_size()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_name()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_activate_all_outputs()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_blank_output()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 11}, {"id": "files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_output_color()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_output_timeout()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_self_exe()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_val_d()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_val_i()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_handle_resumed()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_init_output()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_kill_pids()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_monotime()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 8}, {"id": "files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_pid_alive()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_pids_alive()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_random_color()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_response_inhibits_output()", "community": 11, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "tests_test_inhibition_main", "label": "main()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "main()", "community": 11, "community_name": "mgr_blank_output", "source_file": "tests/test-inhibition.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_outputs_wayland_cleanup()", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_refresh_outputs()", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 11}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "label": "zxdg_output_manager_v1_destroy()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_destroy()", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 3}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", "label": "zxdg_output_manager_v1_get_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_get_user_data()", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", "label": "zxdg_output_manager_v1_get_version()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_get_version()", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "label": "zxdg_output_manager_v1_get_xdg_output()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_get_xdg_output()", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 3}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", "label": "zxdg_output_manager_v1_set_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_set_user_data()", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "label": "zxdg_output_v1_add_listener()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_add_listener()", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 3}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "label": "zxdg_output_v1_destroy()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_destroy()", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 3}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", "label": "zxdg_output_v1_get_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_get_user_data()", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", "label": "zxdg_output_v1_get_version()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_get_version()", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", "label": "zxdg_output_v1_set_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_set_user_data()", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_name()", "community": 13, "community_name": "mgr_output_set_name", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_set_name()", "community": 13, "community_name": "mgr_output_set_name", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_name()", "community": 13, "community_name": "mgr_output_set_name", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "label": ".cursor_status()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".cursor_status()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "label": ".fini()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".fini()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "label": ".get_output_at()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_output_at()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "label": ".hide_cursor()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".hide_cursor()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": ".init()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".init()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable", "label": ".is_unloadable()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".is_unloadable()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": ".set_cursor_hidden()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".set_cursor_hidden()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": ".unhide_cursor()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".unhide_cursor()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_expand_tilde()", "community": 15, "community_name": "mgr_load_config", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_load_config()", "community": 15, "community_name": "mgr_load_config", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_set_defaults()", "community": 15, "community_name": "mgr_load_config", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_trim", "label": "mgr_trim()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_trim()", "community": 15, "community_name": "mgr_load_config", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_cursor_status_from_ipc()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_response_has_error()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_release_wayfire_cursor()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_set_wayfire_cursor_hidden()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_update_wayfire_cursor()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_oledsaver_main", "label": "main()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "main()", "community": 17, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_manager_main", "label": "manager_main()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "manager_main()", "community": 17, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 22}, {"id": "files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 12.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_find_output()", "community": 17, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 8}, {"id": "files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_mkdirs()", "community": 17, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_read_pidfile()", "community": 17, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_reap_children()", "community": 17, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_remove_pidfile()", "community": 17, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_run_lock_cmd()", "community": 17, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_runtime_path()", "community": 17, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_unblank_output()", "community": 17, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_write_pidfile()", "community": 17, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t_fini", "label": ".fini()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".fini()", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", "label": ".init()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".init()", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", "label": ".status()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": ".status()", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "render_compile_shader()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_init_egl", "label": "render_init_egl()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_egl()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_freetype()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_shaders()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_layer_surface_configure()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_set_projection", "label": "render_set_projection()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_set_projection()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_renderer_main", "label": "renderer_main()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 15.7, "font": {"size": 12, "color": "#ffffff"}, "title": "renderer_main()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 23}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "label": "zwlr_layer_shell_v1_destroy()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_destroy()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "label": "zwlr_layer_shell_v1_get_layer_surface()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_get_layer_surface()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", "label": "zwlr_layer_shell_v1_get_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_get_user_data()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", "label": "zwlr_layer_shell_v1_get_version()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_get_version()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", "label": "zwlr_layer_shell_v1_set_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_set_user_data()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "label": "zwlr_layer_surface_v1_ack_configure()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_ack_configure()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "label": "zwlr_layer_surface_v1_add_listener()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_add_listener()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "label": "zwlr_layer_surface_v1_destroy()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_destroy()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "label": "zwlr_layer_surface_v1_get_popup()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_get_popup()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", "label": "zwlr_layer_surface_v1_get_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_get_user_data()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", "label": "zwlr_layer_surface_v1_get_version()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_get_version()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "label": "zwlr_layer_surface_v1_set_anchor()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_anchor()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "label": "zwlr_layer_surface_v1_set_exclusive_zone()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_exclusive_zone()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "label": "zwlr_layer_surface_v1_set_keyboard_interactivity()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_keyboard_interactivity()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "label": "zwlr_layer_surface_v1_set_layer()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_layer()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "label": "zwlr_layer_surface_v1_set_margin()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_margin()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "label": "zwlr_layer_surface_v1_set_size()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_size()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", "label": "zwlr_layer_surface_v1_set_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_user_data()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ensure_wayland_display()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_check_idle_inhibitors()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_focus_name_from_event()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_focus_watcher()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_focused_output_from_ipc()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_connect()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_recv()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_request()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 8}, {"id": "files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_send_method()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_send_payload()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_readn", "label": "mgr_readn()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_readn()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_update_focused_output()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_wayfire_ipc_path()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_writen", "label": "mgr_writen()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_writen()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_cell_at_layer()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_get_layer_properties()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "render_head_white_mix()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_init_layer", "label": "render_init_layer()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_layer()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 11}, {"id": "files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_matrix()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "render_lookup_color()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_parse_hex()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "render_rand_speed()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_randf", "label": "render_randf()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_randf()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_render_randi", "label": "render_randi()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_randi()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_random_codepoint()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_random_color", "label": "render_random_color()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_random_color()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_random_hex_color()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_tick_layer()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 11}, {"id": "files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_tick_matrix()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_trail_color", "label": "render_trail_color()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_trail_color()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "label": "ext_idle_notification_v1_add_listener()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_add_listener()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "label": "ext_idle_notification_v1_destroy()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_destroy()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", "label": "ext_idle_notification_v1_get_user_data()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_get_user_data()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", "label": "ext_idle_notification_v1_get_version()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_get_version()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", "label": "ext_idle_notification_v1_set_user_data()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_set_user_data()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "label": "ext_idle_notifier_v1_destroy()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_destroy()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "label": "ext_idle_notifier_v1_get_idle_notification()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_get_idle_notification()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "label": "ext_idle_notifier_v1_get_input_idle_notification()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_get_input_idle_notification()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", "label": "ext_idle_notifier_v1_get_user_data()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_get_user_data()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", "label": "ext_idle_notifier_v1_get_version()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_get_version()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", "label": "ext_idle_notifier_v1_set_user_data()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_set_user_data()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_watcher()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_wayland_cleanup()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_find_glyph()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_flush_quads()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_frame", "label": "render_frame()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_frame()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_oledsaver_render_push_quad", "label": "render_push_quad()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_push_quad()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_xdg_shell_client_protocol", "label": "xdg-shell-client-protocol.h", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 26.9, "font": {"size": 12, "color": "#ffffff"}, "title": "xdg-shell-client-protocol.h", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 68}, {"id": "files_oledsaver", "label": "oledsaver.c", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 40.0, "font": {"size": 12, "color": "#ffffff"}, "title": "oledsaver.c", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 121}, {"id": "files_xdg_shell_protocol", "label": "xdg-shell-protocol.c", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg-shell-protocol.c", "community": 10, "community_name": "xdg-shell-protocol.c", "source_file": "files/xdg-shell-protocol.c", "file_type": "code", "degree": 0}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_info_t", "community": 11, "community_name": "mgr_blank_output", "source_file": "", "file_type": "code", "degree": 6}, {"id": "pid_t", "label": "pid_t", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "pid_t", "community": 11, "community_name": "mgr_blank_output", "source_file": "", "file_type": "code", "degree": 2}, {"id": "tests_test_inhibition", "label": "test-inhibition.c", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "test-inhibition.c", "community": 11, "community_name": "mgr_blank_output", "source_file": "tests/test-inhibition.c", "file_type": "code", "degree": 2}, {"id": "files_xdg_output_unstable_v1_client_protocol", "label": "xdg-output-unstable-v1-client-protocol.h", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg-output-unstable-v1-client-protocol.h", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 11}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_outputs_wayland_t", "community": 12, "community_name": "mgr_refresh_outputs", "source_file": "", "file_type": "code", "degree": 1}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_wayland_output_info_t", "community": 13, "community_name": "mgr_output_set_name", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor", "label": "oledsaver-cursor.cpp", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver-cursor.cpp", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_cpp_json_t", "label": "json_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "json_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_cursor_cpp_method_repository_t", "label": "method_repository_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "method_repository_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_cpp_plugin_interface_t", "label": "plugin_interface_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "plugin_interface_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_cpp_ref_ptr_t", "label": "ref_ptr_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ref_ptr_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden", "label": "cursor_hidden", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "cursor_hidden", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo", "label": "repo", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "repo", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 1}, {"id": "output_t", "label": "output_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "output_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "pointf_t", "label": "pointf_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "pointf_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle", "label": "oledsaver-idle.cpp", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver-idle.cpp", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_cpp_json_t", "label": "json_t", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "json_t", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_cpp_method_repository_t", "label": "method_repository_t", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "method_repository_t", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_cpp_plugin_interface_t", "label": "plugin_interface_t", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "plugin_interface_t", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_cpp_ref_ptr_t", "label": "ref_ptr_t", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ref_ptr_t", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t_repo", "label": "repo", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "repo", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "wlr-layer-shell-unstable-v1-client-protocol.h", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "wlr-layer-shell-unstable-v1-client-protocol.h", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 26}, {"id": "glenum", "label": "GLenum", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "GLenum", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "", "file_type": "code", "degree": 1}, {"id": "gluint", "label": "GLuint", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "GLuint", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "", "file_type": "code", "degree": 1}, {"id": "depth_layer_t", "label": "depth_layer_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "depth_layer_t", "community": 4, "community_name": "render_init_layer", "source_file": "", "file_type": "code", "degree": 3}, {"id": "render_cell_t", "label": "render_cell_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_cell_t", "community": 4, "community_name": "render_init_layer", "source_file": "", "file_type": "code", "degree": 1}, {"id": "rgb_t", "label": "rgb_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "rgb_t", "community": 4, "community_name": "render_init_layer", "source_file": "", "file_type": "code", "degree": 5}, {"id": "files_ext_idle_notify_v1_client_protocol", "label": "ext-idle-notify-v1-client-protocol.h", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ext-idle-notify-v1-client-protocol.h", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 12}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_wayland_t", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "", "file_type": "code", "degree": 1}, {"id": "glyph_info_t", "label": "glyph_info_t", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "glyph_info_t", "community": 6, "community_name": "render_frame", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_protocol", "label": "ext-idle-notify-v1-protocol.c", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ext-idle-notify-v1-protocol.c", "community": 7, "community_name": "ext-idle-notify-v1-protocol.c", "source_file": "files/ext-idle-notify-v1-protocol.c", "file_type": "code", "degree": 0}, {"id": "files_wlr_layer_shell_unstable_v1_protocol", "label": "wlr-layer-shell-unstable-v1-protocol.c", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "wlr-layer-shell-unstable-v1-protocol.c", "community": 8, "community_name": "wlr-layer-shell-unstable-v1-protocol.c", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "file_type": "code", "degree": 0}, {"id": "files_xdg_output_unstable_v1_protocol", "label": "xdg-output-unstable-v1-protocol.c", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg-output-unstable-v1-protocol.c", "community": 9, "community_name": "xdg-output-unstable-v1-protocol.c", "source_file": "files/xdg-output-unstable-v1-protocol.c", "file_type": "code", "degree": 0}]; +const RAW_EDGES = [{"from": "files_xdg_shell_client_protocol_wl_interface", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_wl_output", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_wl_seat", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_wl_surface", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_cpp_ref_ptr_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_cpp_method_repository_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_cpp_plugin_interface_t", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_repo", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_cpp_ref_ptr_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_cpp_method_repository_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_cpp_plugin_interface_t", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_fini", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_add_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_grab", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_reposition", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_offset", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_size", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_ack_configure", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_add_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_get_popup", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_move", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_resize", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_title", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_pong", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_handle_idled", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_registry_handle_global", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_registry_handle_global_remove", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_log_msg", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_description", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_done", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_geometry", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_mode", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_scale", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_registry_handle_global", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_registry_handle_global_remove", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_signal_handler", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_description", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_done", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_logical_position", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_logical_size", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_build_atlas", "to": "files_oledsaver_render_build_codepoint_list", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_build_atlas", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_build_atlas", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_build_codepoint_list", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_layer_surface_closed", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_description", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_done", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_geometry", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_mode", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_scale", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_registry_handle_global", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_registry_handle_global_remove", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_sig_handler", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_sigusr1_handler", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_description", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_done", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_logical_position", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_logical_size", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_activate_all_outputs", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_activate_all_outputs", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_activate_all_outputs", "to": "files_oledsaver_mgr_blank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_activate_all_outputs", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_find_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_pids_alive", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_kill_pids", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_get_output_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_get_val_d", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_get_val_i", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_get_self_exe", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_color", "to": "files_oledsaver_mgr_random_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_color", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_timeout", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_timeout", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_timeout", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_self_exe", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_val_d", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_val_i", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_handle_resumed", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_handle_resumed", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_handle_resumed", "to": "tests_test_inhibition_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_init_output", "to": "files_oledsaver_mgr_refresh_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_init_output", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_init_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_kill_pids", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_kill_pids", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_monotime", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_monotime", "to": "files_oledsaver_mgr_refresh_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_monotime", "to": "files_oledsaver_mgr_update_focused_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_monotime", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_monotime", "to": "tests_test_inhibition_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_pid_alive", "to": "files_oledsaver_mgr_pids_alive", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pid_alive", "to": "pid_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pid_alive", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pids_alive", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pids_alive", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_random_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_response_inhibits_output", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_response_inhibits_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_response_inhibits_output", "to": "tests_test_inhibition_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_inhibition_main", "to": "tests_test_inhibition", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "files_oledsaver_mgr_refresh_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "mgr_outputs_wayland_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_mgr_focus_name_from_event", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_ensure_wayland_display", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_mgr_find_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_mgr_update_focused_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_name", "to": "files_oledsaver_mgr_output_set_name", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_set_name", "to": "files_oledsaver_mgr_xdg_output_handle_name", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_set_name", "to": "mgr_wayland_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_set_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "to": "files_oledsaver_cursor_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "to": "pointf_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "to": "output_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "to": "files_oledsaver_cursor_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "to": "files_oledsaver_cursor_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_expand_tilde", "to": "files_oledsaver_mgr_load_config", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_expand_tilde", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_load_config", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_load_config", "to": "files_oledsaver_mgr_set_defaults", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_load_config", "to": "files_oledsaver_mgr_trim", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_load_config", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_defaults", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_defaults", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_trim", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_cursor_status_from_ipc", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_cursor_status_from_ipc", "to": "files_oledsaver_mgr_ipc_response_has_error", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_cursor_status_from_ipc", "to": "files_oledsaver_mgr_update_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_cursor_status_from_ipc", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_response_has_error", "to": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_response_has_error", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_release_wayfire_cursor", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_release_wayfire_cursor", "to": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_release_wayfire_cursor", "to": "files_oledsaver_mgr_update_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_release_wayfire_cursor", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "to": "files_oledsaver_mgr_update_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_update_wayfire_cursor", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_update_wayfire_cursor", "to": "files_oledsaver_mgr_find_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_update_wayfire_cursor", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_main", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_main", "to": "files_oledsaver_mgr_read_pidfile", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_main", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_main", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_ensure_wayland_display", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_mkdirs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_write_pidfile", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_get_focused_output_from_ipc", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_reap_children", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_run_lock_cmd", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_check_idle_inhibitors", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_find_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_unblank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_remove_pidfile", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver_mgr_unblank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver_mgr_update_focused_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_mkdirs", "to": "files_oledsaver_mgr_runtime_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_mkdirs", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_read_pidfile", "to": "files_oledsaver_mgr_runtime_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_read_pidfile", "to": "pid_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_read_pidfile", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_reap_children", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_remove_pidfile", "to": "files_oledsaver_mgr_runtime_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_remove_pidfile", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_run_lock_cmd", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_runtime_path", "to": "files_oledsaver_mgr_write_pidfile", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_runtime_path", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_unblank_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_write_pidfile", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", "to": "files_oledsaver_idle_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_compile_shader", "to": "files_oledsaver_render_init_shaders", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_compile_shader", "to": "glenum", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_compile_shader", "to": "gluint", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_compile_shader", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_egl", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_egl", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_freetype", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_freetype", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_shaders", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_shaders", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_layer_surface_configure", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_layer_surface_configure", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_render_set_projection", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_set_projection", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_lookup_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_ensure_wayland_display", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_init_matrix", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_tick_matrix", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_frame", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_ensure_wayland_display", "to": "files_oledsaver_mgr_wayfire_ipc_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_ensure_wayland_display", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_check_idle_inhibitors", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_check_idle_inhibitors", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_name_from_event", "to": "files_oledsaver_mgr_get_focused_output_from_ipc", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_name_from_event", "to": "files_oledsaver_mgr_focus_watcher", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_name_from_event", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver_mgr_ipc_connect", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver_mgr_ipc_send_method", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver_mgr_ipc_recv", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver_mgr_update_focused_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_focused_output_from_ipc", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_focused_output_from_ipc", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_connect", "to": "files_oledsaver_mgr_wayfire_ipc_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_connect", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_connect", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_recv", "to": "files_oledsaver_mgr_readn", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_recv", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_recv", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_request", "to": "files_oledsaver_mgr_ipc_send_method", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_request", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_send_method", "to": "files_oledsaver_mgr_ipc_send_payload", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_send_method", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_send_payload", "to": "files_oledsaver_mgr_writen", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_send_payload", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_readn", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_update_focused_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_wayfire_ipc_path", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_writen", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "files_oledsaver_render_frame", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "files_oledsaver_render_init_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "depth_layer_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "render_cell_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_get_layer_properties", "to": "files_oledsaver_render_init_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_get_layer_properties", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_head_white_mix", "to": "files_oledsaver_render_randf", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_head_white_mix", "to": "files_oledsaver_render_init_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_head_white_mix", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_head_white_mix", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_randf", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_trail_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_rand_speed", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_randi", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_random_codepoint", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_init_matrix", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "depth_layer_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_matrix", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_matrix", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_lookup_color", "to": "files_oledsaver_render_parse_hex", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_lookup_color", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_lookup_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_parse_hex", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_parse_hex", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_rand_speed", "to": "files_oledsaver_render_randf", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_rand_speed", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_rand_speed", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_randf", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_randf", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_randi", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_randi", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_codepoint", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_codepoint", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_color", "to": "files_oledsaver_render_trail_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_color", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_hex_color", "to": "files_oledsaver_render_trail_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_hex_color", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_hex_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_layer", "to": "files_oledsaver_render_trail_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_layer", "to": "files_oledsaver_render_tick_matrix", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_layer", "to": "depth_layer_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_layer", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_matrix", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_trail_color", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_trail_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "to": "files_oledsaver_mgr_idle_watcher", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "to": "files_oledsaver_mgr_idle_wayland_cleanup", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "to": "files_oledsaver_mgr_idle_wayland_cleanup", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "to": "files_oledsaver_mgr_idle_watcher", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "to": "files_oledsaver_mgr_idle_watcher", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_watcher", "to": "files_oledsaver_mgr_idle_wayland_cleanup", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_watcher", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_wayland_cleanup", "to": "mgr_idle_wayland_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_wayland_cleanup", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_find_glyph", "to": "files_oledsaver_render_frame", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_find_glyph", "to": "glyph_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_find_glyph", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_flush_quads", "to": "files_oledsaver_render_frame", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_flush_quads", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_frame", "to": "files_oledsaver_render_push_quad", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_frame", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_push_quad", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver", "to": "files_ext_idle_notify_v1_client_protocol", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver", "to": "tests_test_inhibition", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}]; +const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "xdg-shell-client-protocol.h", "count": 69}, {"cid": 1, "color": "#F28E2B", "label": "oledsaver.c", "count": 35}, {"cid": 2, "color": "#E15759", "label": "wlr-layer-shell-unstable-v1-client-protocol.h", "count": 35}, {"cid": 3, "color": "#76B7B2", "label": "mgr_ipc_request", "count": 14}, {"cid": 4, "color": "#59A14F", "label": "render_init_layer", "count": 19}, {"cid": 5, "color": "#EDC948", "label": "ext-idle-notify-v1-client-protocol.h", "count": 15}, {"cid": 6, "color": "#B07AA1", "label": "render_frame", "count": 5}, {"cid": 7, "color": "#FF9DA7", "label": "ext-idle-notify-v1-protocol.c", "count": 1}, {"cid": 8, "color": "#9C755F", "label": "wlr-layer-shell-unstable-v1-protocol.c", "count": 1}, {"cid": 9, "color": "#BAB0AC", "label": "xdg-output-unstable-v1-protocol.c", "count": 1}, {"cid": 10, "color": "#4E79A7", "label": "xdg-shell-protocol.c", "count": 1}, {"cid": 11, "color": "#F28E2B", "label": "mgr_blank_output", "count": 19}, {"cid": 12, "color": "#E15759", "label": "mgr_refresh_outputs", "count": 14}, {"cid": 13, "color": "#76B7B2", "label": "mgr_output_set_name", "count": 4}, {"cid": 14, "color": "#59A14F", "label": "oledsaver_cursor_plugin_t", "count": 18}, {"cid": 15, "color": "#EDC948", "label": "mgr_load_config", "count": 4}, {"cid": 16, "color": "#B07AA1", "label": "mgr_update_wayfire_cursor", "count": 5}, {"cid": 17, "color": "#FF9DA7", "label": "manager_main", "count": 11}, {"cid": 18, "color": "#9C755F", "label": "oledsaver_idle_plugin_t", "count": 10}]; + +// HTML-escape helper — prevents XSS when injecting graph data into innerHTML +function esc(s) { + return String(s).replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,'''); +} + +// Build vis datasets +const nodesDS = new vis.DataSet(RAW_NODES.map(n => ({ + id: n.id, label: n.label, color: n.color, size: n.size, + font: n.font, title: n.title, + _community: n.community, _community_name: n.community_name, + _source_file: n.source_file, _file_type: n.file_type, _degree: n.degree, +}))); + +const edgesDS = new vis.DataSet(RAW_EDGES.map((e, i) => ({ + id: i, from: e.from, to: e.to, + label: '', + title: e.title, + dashes: e.dashes, + width: e.width, + color: e.color, + arrows: { to: { enabled: true, scaleFactor: 0.5 } }, +}))); + +const container = document.getElementById('graph'); +const network = new vis.Network(container, { nodes: nodesDS, edges: edgesDS }, { + physics: { + enabled: true, + solver: 'forceAtlas2Based', + forceAtlas2Based: { + gravitationalConstant: -60, + centralGravity: 0.005, + springLength: 120, + springConstant: 0.08, + damping: 0.4, + avoidOverlap: 0.8, + }, + stabilization: { iterations: 200, fit: true }, + }, + interaction: { + hover: true, + tooltipDelay: 100, + hideEdgesOnDrag: true, + navigationButtons: false, + keyboard: false, + }, + nodes: { shape: 'dot', borderWidth: 1.5 }, + edges: { smooth: { type: 'continuous', roundness: 0.2 }, selectionWidth: 3 }, +}); + +network.once('stabilizationIterationsDone', () => { + network.setOptions({ physics: { enabled: false } }); +}); + +function showInfo(nodeId) { + const n = nodesDS.get(nodeId); + if (!n) return; + const neighborIds = network.getConnectedNodes(nodeId); + const neighborItems = neighborIds.map(nid => { + const nb = nodesDS.get(nid); + const color = nb ? nb.color.background : '#555'; + return `<span class="neighbor-link" style="border-left-color:${esc(color)}" data-nid="${esc(nid)}">${esc(nb ? nb.label : nid)}</span>`; + }).join(''); + document.getElementById('info-content').innerHTML = ` + <div class="field"><b>${esc(n.label)}</b></div> + <div class="field">Type: ${esc(n._file_type || 'unknown')}</div> + <div class="field">Community: ${esc(n._community_name)}</div> + <div class="field">Source: ${esc(n._source_file || '-')}</div> + <div class="field">Degree: ${n._degree}</div> + ${neighborIds.length ? `<div class="field" style="margin-top:8px;color:#aaa;font-size:11px">Neighbors (${neighborIds.length})</div><div id="neighbors-list">${neighborItems}</div>` : ''} + `; +} + +function focusNode(nodeId) { + network.focus(nodeId, { scale: 1.4, animation: true }); + network.selectNodes([nodeId]); + showInfo(nodeId); +} + +// Neighbor links use a data attribute + one delegated listener rather than an +// inline onclick. A node id/label sourced from a document or a scraped URL +// (graphify add) can contain a double-quote; dropping the stringified id +// unescaped into a quoted onclick both broke every link and allowed a hostile +// source to inject an event handler into the local report (stored XSS, #1838). +// esc() on data-nid keeps the value inside the attribute; the listener reads it +// back verbatim. Bound to document so it survives the innerHTML rebuild that +// recreates #neighbors-list on each showInfo(). +document.addEventListener('click', e => { + const el = e.target.closest('.neighbor-link'); + if (el && el.dataset.nid !== undefined) focusNode(el.dataset.nid); +}); + +// Track hovered node — hover detection is more reliable than click params +let hoveredNodeId = null; +network.on('hoverNode', params => { + hoveredNodeId = params.node; + container.style.cursor = 'pointer'; +}); +network.on('blurNode', () => { + hoveredNodeId = null; + container.style.cursor = 'default'; +}); +container.addEventListener('click', () => { + if (hoveredNodeId !== null) { + showInfo(hoveredNodeId); + network.selectNodes([hoveredNodeId]); + } +}); +network.on('click', params => { + if (params.nodes.length > 0) { + showInfo(params.nodes[0]); + } else if (hoveredNodeId === null) { + document.getElementById('info-content').innerHTML = '<span class="empty">Click a node to inspect it</span>'; + } +}); + +const searchInput = document.getElementById('search'); +const searchResults = document.getElementById('search-results'); +searchInput.addEventListener('input', () => { + const q = searchInput.value.toLowerCase().trim(); + searchResults.innerHTML = ''; + if (!q) { searchResults.style.display = 'none'; return; } + const matches = RAW_NODES.filter(n => n.label.toLowerCase().includes(q)).slice(0, 20); + if (!matches.length) { searchResults.style.display = 'none'; return; } + searchResults.style.display = 'block'; + matches.forEach(n => { + const el = document.createElement('div'); + el.className = 'search-item'; + el.textContent = n.label; + el.style.borderLeft = `3px solid ${n.color.background}`; + el.style.paddingLeft = '8px'; + el.onclick = () => { + network.focus(n.id, { scale: 1.5, animation: true }); + network.selectNodes([n.id]); + showInfo(n.id); + searchResults.style.display = 'none'; + searchInput.value = ''; + }; + searchResults.appendChild(el); + }); +}); +document.addEventListener('click', e => { + if (!searchResults.contains(e.target) && e.target !== searchInput) + searchResults.style.display = 'none'; +}); + +const hiddenCommunities = new Set(); + +const selectAllCb = document.getElementById('select-all-cb'); + +function updateSelectAllState() { + const total = LEGEND.length; + const hidden = hiddenCommunities.size; + selectAllCb.checked = hidden === 0; + selectAllCb.indeterminate = hidden > 0 && hidden < total; +} + +function toggleAllCommunities(hide) { + document.querySelectorAll('.legend-item').forEach(item => { + hide ? item.classList.add('dimmed') : item.classList.remove('dimmed'); + }); + document.querySelectorAll('.legend-cb').forEach(cb => { + cb.checked = !hide; + }); + LEGEND.forEach(c => { + if (hide) hiddenCommunities.add(c.cid); else hiddenCommunities.delete(c.cid); + }); + const updates = RAW_NODES.map(n => ({ id: n.id, hidden: hide })); + nodesDS.update(updates); + updateSelectAllState(); +} + +const legendEl = document.getElementById('legend'); +LEGEND.forEach(c => { + const item = document.createElement('div'); + item.className = 'legend-item'; + const cb = document.createElement('input'); + cb.type = 'checkbox'; + cb.className = 'legend-cb'; + cb.checked = true; + cb.addEventListener('change', (e) => { + e.stopPropagation(); + if (cb.checked) { + hiddenCommunities.delete(c.cid); + item.classList.remove('dimmed'); + } else { + hiddenCommunities.add(c.cid); + item.classList.add('dimmed'); + } + const updates = RAW_NODES + .filter(n => n.community === c.cid) + .map(n => ({ id: n.id, hidden: !cb.checked })); + nodesDS.update(updates); + updateSelectAllState(); + }); + item.innerHTML = `<div class="legend-dot" style="background:${c.color}"></div> + <span class="legend-label">${c.label}</span> + <span class="legend-count">${c.count}</span>`; + item.prepend(cb); + item.onclick = (e) => { + if (e.target === cb) return; + cb.checked = !cb.checked; + cb.dispatchEvent(new Event('change')); + }; + legendEl.appendChild(item); +}); +</script> +<script> +// Render hyperedges as shaded regions +const hyperedges = []; +// afterDrawing passes ctx already transformed to network coordinate space. +// Draw node positions raw — no manual pan/zoom/DPR math needed. + +// Andrew's monotone chain. Returns the hull in counter-clockwise order, which +// is what the perimeter must be traced in. Collinear and duplicate points +// collapse to the extremes, so degenerate member sets render as a segment +// rather than a zero-area crossed path. +function convexHull(pts) { + const p = pts.slice().sort((a, b) => (a.x - b.x) || (a.y - b.y)); + if (p.length < 3) return p; + const cross = (o, a, b) => (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x); + const build = seq => { + const out = []; + for (const q of seq) { + while (out.length >= 2 && cross(out[out.length - 2], out[out.length - 1], q) <= 0) out.pop(); + out.push(q); + } + out.pop(); + return out; + }; + const hull = build(p).concat(build(p.slice().reverse())); + return hull.length >= 3 ? hull : p; +} +network.on('afterDrawing', function(ctx) { + hyperedges.forEach(h => { + const positions = h.nodes + .map(nid => network.getPositions([nid])[nid]) + .filter(p => p !== undefined); + if (positions.length < 2) return; + ctx.save(); + ctx.globalAlpha = 0.12; + ctx.fillStyle = '#6366f1'; + ctx.strokeStyle = '#6366f1'; + ctx.lineWidth = 2; + ctx.beginPath(); + // Centroid and expanded hull in network coordinates. + // The perimeter must follow hull order, not h.nodes order: tracing the + // raw member order self-intersects whenever the layout does not happen + // to place members in angular order, filling as crossed wedges. + const cx = positions.reduce((s, p) => s + p.x, 0) / positions.length; + const cy = positions.reduce((s, p) => s + p.y, 0) / positions.length; + const hull = convexHull(positions); + const expanded = hull.map(p => ({ + x: cx + (p.x - cx) * 1.15, + y: cy + (p.y - cy) * 1.15 + })); + ctx.moveTo(expanded[0].x, expanded[0].y); + expanded.slice(1).forEach(p => ctx.lineTo(p.x, p.y)); + ctx.closePath(); + ctx.fill(); + ctx.globalAlpha = 0.4; + ctx.stroke(); + // Label + ctx.globalAlpha = 0.8; + ctx.fillStyle = '#4f46e5'; + ctx.font = 'bold 11px sans-serif'; + ctx.textAlign = 'center'; + ctx.fillText(h.label, cx, cy - 5); + ctx.restore(); + }); +}); +</script> +</body> +</html>
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/graph.json b/gui-apps/oledsaver/graphify-out/graph.json new file mode 100644 index 000000000000..ec1ca0f31085 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/graph.json @@ -0,0 +1,8389 @@ +{ + "directed": false, + "multigraph": false, + "graph": {}, + "nodes": [ + { + "id": "files_xdg_shell_client_protocol_wl_interface", + "label": "wl_interface", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "wl_interface", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L84" + }, + { + "id": "files_xdg_shell_client_protocol_wl_output", + "label": "wl_output", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "wl_output", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L52" + }, + { + "id": "files_xdg_shell_client_protocol_wl_seat", + "label": "wl_seat", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "wl_seat", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L53" + }, + { + "id": "files_xdg_shell_client_protocol_wl_surface", + "label": "wl_surface", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "wl_surface", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L54" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_popup", + "label": "xdg_popup", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_popup", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L55" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_popup_listener", + "label": "xdg_popup_listener", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_popup_listener", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2156" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner", + "label": "xdg_positioner", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L56" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_surface", + "label": "xdg_surface", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_surface", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L57" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_surface_listener", + "label": "xdg_surface_listener", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_surface_listener", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1003" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel", + "label": "xdg_toplevel", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L58" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_listener", + "label": "xdg_toplevel_listener", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_listener", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1501" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_wm_base", + "label": "xdg_wm_base", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_wm_base", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L59" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_wm_base_listener", + "label": "xdg_wm_base_listener", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_wm_base_listener", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L409" + }, + { + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "label": "oledsaver_cursor_plugin_t", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": "oledsaver_cursor_plugin_t", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L13" + }, + { + "id": "files_oledsaver_idle_oledsaver_idle_plugin_t", + "label": "oledsaver_idle_plugin_t", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 18, + "community_name": "oledsaver_idle_plugin_t", + "file_type": "code", + "norm_label": "oledsaver_idle_plugin_t", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L14" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", + "label": "wl_interface", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "wl_interface", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L79" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", + "label": "wl_output", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "wl_output", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L46" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", + "label": "wl_surface", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "wl_surface", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L47" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", + "label": "xdg_popup", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_popup", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L48" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", + "label": "zwlr_layer_shell_v1", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_shell_v1", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L49" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", + "label": "zwlr_layer_surface_v1", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L50" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", + "label": "zwlr_layer_surface_v1_listener", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_listener", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L271" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_popup_add_listener", + "label": "xdg_popup_add_listener()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_popup_add_listener()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2224" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_popup_destroy", + "label": "xdg_popup_destroy()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_popup_destroy()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2291" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_popup_get_user_data", + "label": "xdg_popup_get_user_data()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_popup_get_user_data()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2270" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_popup_get_version", + "label": "xdg_popup_get_version()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_popup_get_version()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2276" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_popup_grab", + "label": "xdg_popup_grab()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_popup_grab()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2339" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_popup_reposition", + "label": "xdg_popup_reposition()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_popup_reposition()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2373" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_popup_set_user_data", + "label": "xdg_popup_set_user_data()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_popup_set_user_data()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2263" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_destroy", + "label": "xdg_positioner_destroy()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_destroy()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L794" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data", + "label": "xdg_positioner_get_user_data()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_get_user_data()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L777" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_get_version", + "label": "xdg_positioner_get_version()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_get_version()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L783" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor", + "label": "xdg_positioner_set_anchor()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_set_anchor()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L848" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", + "label": "xdg_positioner_set_anchor_rect()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_set_anchor_rect()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L831" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", + "label": "xdg_positioner_set_constraint_adjustment()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_set_constraint_adjustment()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L890" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity", + "label": "xdg_positioner_set_gravity()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_set_gravity()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L866" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_offset", + "label": "xdg_positioner_set_offset()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_set_offset()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L912" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", + "label": "xdg_positioner_set_parent_configure()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_set_parent_configure()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L962" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", + "label": "xdg_positioner_set_parent_size()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_set_parent_size()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L947" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive", + "label": "xdg_positioner_set_reactive()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_set_reactive()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L929" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_size", + "label": "xdg_positioner_set_size()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_set_size()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L810" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data", + "label": "xdg_positioner_set_user_data()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_positioner_set_user_data()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L770" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_surface_ack_configure", + "label": "xdg_surface_ack_configure()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_surface_ack_configure()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1240" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_surface_add_listener", + "label": "xdg_surface_add_listener()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_surface_add_listener()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1036" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_surface_destroy", + "label": "xdg_surface_destroy()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_surface_destroy()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1103" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_surface_get_popup", + "label": "xdg_surface_get_popup()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_surface_get_popup()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1142" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel", + "label": "xdg_surface_get_toplevel()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_surface_get_toplevel()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1119" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_surface_get_user_data", + "label": "xdg_surface_get_user_data()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_surface_get_user_data()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1084" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_surface_get_version", + "label": "xdg_surface_get_version()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_surface_get_version()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1090" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_surface_set_user_data", + "label": "xdg_surface_set_user_data()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_surface_set_user_data()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1077" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", + "label": "xdg_surface_set_window_geometry()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_surface_set_window_geometry()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1197" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener", + "label": "xdg_toplevel_add_listener()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_add_listener()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1606" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_destroy", + "label": "xdg_toplevel_destroy()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_destroy()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1729" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", + "label": "xdg_toplevel_get_user_data()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_get_user_data()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1711" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_get_version", + "label": "xdg_toplevel_get_version()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_get_version()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1717" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_move", + "label": "xdg_toplevel_move()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_move()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1862" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_resize", + "label": "xdg_toplevel_resize()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_resize()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1904" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", + "label": "xdg_toplevel_set_app_id()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_set_app_id()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1812" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", + "label": "xdg_toplevel_set_fullscreen()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_set_fullscreen()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2088" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", + "label": "xdg_toplevel_set_max_size()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_set_max_size()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1948" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", + "label": "xdg_toplevel_set_maximized()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_set_maximized()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2022" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", + "label": "xdg_toplevel_set_min_size()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_set_min_size()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1992" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", + "label": "xdg_toplevel_set_minimized()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_set_minimized()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2135" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent", + "label": "xdg_toplevel_set_parent()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_set_parent()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1760" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_title", + "label": "xdg_toplevel_set_title()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_set_title()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1778" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", + "label": "xdg_toplevel_set_user_data()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_set_user_data()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1704" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", + "label": "xdg_toplevel_show_window_menu()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_show_window_menu()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1835" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", + "label": "xdg_toplevel_unset_fullscreen()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_unset_fullscreen()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2116" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", + "label": "xdg_toplevel_unset_maximized()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_toplevel_unset_maximized()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2054" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener", + "label": "xdg_wm_base_add_listener()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_wm_base_add_listener()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L437" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", + "label": "xdg_wm_base_create_positioner()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_wm_base_create_positioner()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L515" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_wm_base_destroy", + "label": "xdg_wm_base_destroy()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_wm_base_destroy()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L501" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", + "label": "xdg_wm_base_get_user_data()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_wm_base_get_user_data()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L480" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_wm_base_get_version", + "label": "xdg_wm_base_get_version()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_wm_base_get_version()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L486" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", + "label": "xdg_wm_base_get_xdg_surface()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_wm_base_get_xdg_surface()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L543" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_wm_base_pong", + "label": "xdg_wm_base_pong()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_wm_base_pong()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L561" + }, + { + "id": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", + "label": "xdg_wm_base_set_user_data()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg_wm_base_set_user_data()", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L473" + }, + { + "id": "files_oledsaver_mgr_idle_handle_idled", + "label": "mgr_idle_handle_idled()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_idle_handle_idled()", + "source_file": "files/oledsaver.c", + "source_location": "L3247" + }, + { + "id": "files_oledsaver_mgr_idle_registry_handle_global", + "label": "mgr_idle_registry_handle_global()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_idle_registry_handle_global()", + "source_file": "files/oledsaver.c", + "source_location": "L3279" + }, + { + "id": "files_oledsaver_mgr_idle_registry_handle_global_remove", + "label": "mgr_idle_registry_handle_global_remove()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_idle_registry_handle_global_remove()", + "source_file": "files/oledsaver.c", + "source_location": "L3296" + }, + { + "id": "files_oledsaver_mgr_log_msg", + "label": "mgr_log_msg()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_log_msg()", + "source_file": "files/oledsaver.c", + "source_location": "L1944" + }, + { + "id": "files_oledsaver_mgr_output_handle_description", + "label": "mgr_output_handle_description()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_output_handle_description()", + "source_file": "files/oledsaver.c", + "source_location": "L2749" + }, + { + "id": "files_oledsaver_mgr_output_handle_done", + "label": "mgr_output_handle_done()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_output_handle_done()", + "source_file": "files/oledsaver.c", + "source_location": "L2732" + }, + { + "id": "files_oledsaver_mgr_output_handle_geometry", + "label": "mgr_output_handle_geometry()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_output_handle_geometry()", + "source_file": "files/oledsaver.c", + "source_location": "L2714" + }, + { + "id": "files_oledsaver_mgr_output_handle_mode", + "label": "mgr_output_handle_mode()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_output_handle_mode()", + "source_file": "files/oledsaver.c", + "source_location": "L2722" + }, + { + "id": "files_oledsaver_mgr_output_handle_scale", + "label": "mgr_output_handle_scale()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_output_handle_scale()", + "source_file": "files/oledsaver.c", + "source_location": "L2736" + }, + { + "id": "files_oledsaver_mgr_outputs_registry_handle_global", + "label": "mgr_outputs_registry_handle_global()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_outputs_registry_handle_global()", + "source_file": "files/oledsaver.c", + "source_location": "L2763" + }, + { + "id": "files_oledsaver_mgr_outputs_registry_handle_global_remove", + "label": "mgr_outputs_registry_handle_global_remove()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_outputs_registry_handle_global_remove()", + "source_file": "files/oledsaver.c", + "source_location": "L2784" + }, + { + "id": "files_oledsaver_mgr_signal_handler", + "label": "mgr_signal_handler()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_signal_handler()", + "source_file": "files/oledsaver.c", + "source_location": "L3387" + }, + { + "id": "files_oledsaver_mgr_xdg_output_handle_description", + "label": "mgr_xdg_output_handle_description()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_xdg_output_handle_description()", + "source_file": "files/oledsaver.c", + "source_location": "L2701" + }, + { + "id": "files_oledsaver_mgr_xdg_output_handle_done", + "label": "mgr_xdg_output_handle_done()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_xdg_output_handle_done()", + "source_file": "files/oledsaver.c", + "source_location": "L2690" + }, + { + "id": "files_oledsaver_mgr_xdg_output_handle_logical_position", + "label": "mgr_xdg_output_handle_logical_position()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_xdg_output_handle_logical_position()", + "source_file": "files/oledsaver.c", + "source_location": "L2677" + }, + { + "id": "files_oledsaver_mgr_xdg_output_handle_logical_size", + "label": "mgr_xdg_output_handle_logical_size()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "mgr_xdg_output_handle_logical_size()", + "source_file": "files/oledsaver.c", + "source_location": "L2682" + }, + { + "id": "files_oledsaver_render_build_atlas", + "label": "render_build_atlas()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_build_atlas()", + "source_file": "files/oledsaver.c", + "source_location": "L459" + }, + { + "id": "files_oledsaver_render_build_codepoint_list", + "label": "render_build_codepoint_list()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_build_codepoint_list()", + "source_file": "files/oledsaver.c", + "source_location": "L384" + }, + { + "id": "files_oledsaver_render_layer_surface_closed", + "label": "render_layer_surface_closed()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_layer_surface_closed()", + "source_file": "files/oledsaver.c", + "source_location": "L1323" + }, + { + "id": "files_oledsaver_render_output_handle_description", + "label": "render_output_handle_description()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_output_handle_description()", + "source_file": "files/oledsaver.c", + "source_location": "L1295" + }, + { + "id": "files_oledsaver_render_output_handle_done", + "label": "render_output_handle_done()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_output_handle_done()", + "source_file": "files/oledsaver.c", + "source_location": "L1276" + }, + { + "id": "files_oledsaver_render_output_handle_geometry", + "label": "render_output_handle_geometry()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_output_handle_geometry()", + "source_file": "files/oledsaver.c", + "source_location": "L1251" + }, + { + "id": "files_oledsaver_render_output_handle_mode", + "label": "render_output_handle_mode()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_output_handle_mode()", + "source_file": "files/oledsaver.c", + "source_location": "L1259" + }, + { + "id": "files_oledsaver_render_output_handle_name", + "label": "render_output_handle_name()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_output_handle_name()", + "source_file": "files/oledsaver.c", + "source_location": "L1280" + }, + { + "id": "files_oledsaver_render_output_handle_scale", + "label": "render_output_handle_scale()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_output_handle_scale()", + "source_file": "files/oledsaver.c", + "source_location": "L1269" + }, + { + "id": "files_oledsaver_render_registry_handle_global", + "label": "render_registry_handle_global()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_registry_handle_global()", + "source_file": "files/oledsaver.c", + "source_location": "L1336" + }, + { + "id": "files_oledsaver_render_registry_handle_global_remove", + "label": "render_registry_handle_global_remove()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_registry_handle_global_remove()", + "source_file": "files/oledsaver.c", + "source_location": "L1359" + }, + { + "id": "files_oledsaver_render_sig_handler", + "label": "render_sig_handler()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_sig_handler()", + "source_file": "files/oledsaver.c", + "source_location": "L1371" + }, + { + "id": "files_oledsaver_render_sigusr1_handler", + "label": "render_sigusr1_handler()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_sigusr1_handler()", + "source_file": "files/oledsaver.c", + "source_location": "L1376" + }, + { + "id": "files_oledsaver_render_xdg_output_handle_description", + "label": "render_xdg_output_handle_description()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_xdg_output_handle_description()", + "source_file": "files/oledsaver.c", + "source_location": "L1238" + }, + { + "id": "files_oledsaver_render_xdg_output_handle_done", + "label": "render_xdg_output_handle_done()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_xdg_output_handle_done()", + "source_file": "files/oledsaver.c", + "source_location": "L1233" + }, + { + "id": "files_oledsaver_render_xdg_output_handle_logical_position", + "label": "render_xdg_output_handle_logical_position()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_xdg_output_handle_logical_position()", + "source_file": "files/oledsaver.c", + "source_location": "L1216" + }, + { + "id": "files_oledsaver_render_xdg_output_handle_logical_size", + "label": "render_xdg_output_handle_logical_size()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_xdg_output_handle_logical_size()", + "source_file": "files/oledsaver.c", + "source_location": "L1221" + }, + { + "id": "files_oledsaver_render_xdg_output_handle_name", + "label": "render_xdg_output_handle_name()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_xdg_output_handle_name()", + "source_file": "files/oledsaver.c", + "source_location": "L1201" + }, + { + "id": "files_oledsaver_mgr_activate_all_outputs", + "label": "mgr_activate_all_outputs()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_activate_all_outputs()", + "source_file": "files/oledsaver.c", + "source_location": "L3419" + }, + { + "id": "files_oledsaver_mgr_blank_output", + "label": "mgr_blank_output()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_blank_output()", + "source_file": "files/oledsaver.c", + "source_location": "L2942" + }, + { + "id": "files_oledsaver_mgr_get_output_color", + "label": "mgr_get_output_color()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_get_output_color()", + "source_file": "files/oledsaver.c", + "source_location": "L2612" + }, + { + "id": "files_oledsaver_mgr_get_output_timeout", + "label": "mgr_get_output_timeout()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_get_output_timeout()", + "source_file": "files/oledsaver.c", + "source_location": "L2607" + }, + { + "id": "files_oledsaver_mgr_get_self_exe", + "label": "mgr_get_self_exe()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_get_self_exe()", + "source_file": "files/oledsaver.c", + "source_location": "L2931" + }, + { + "id": "files_oledsaver_mgr_get_val_d", + "label": "mgr_get_val_d()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_get_val_d()", + "source_file": "files/oledsaver.c", + "source_location": "L2631" + }, + { + "id": "files_oledsaver_mgr_get_val_i", + "label": "mgr_get_val_i()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_get_val_i()", + "source_file": "files/oledsaver.c", + "source_location": "L2634" + }, + { + "id": "files_oledsaver_mgr_idle_handle_resumed", + "label": "mgr_idle_handle_resumed()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_idle_handle_resumed()", + "source_file": "files/oledsaver.c", + "source_location": "L3257" + }, + { + "id": "files_oledsaver_mgr_init_output", + "label": "mgr_init_output()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_init_output()", + "source_file": "files/oledsaver.c", + "source_location": "L2638" + }, + { + "id": "files_oledsaver_mgr_kill_pids", + "label": "mgr_kill_pids()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_kill_pids()", + "source_file": "files/oledsaver.c", + "source_location": "L2920" + }, + { + "id": "files_oledsaver_mgr_monotime", + "label": "mgr_monotime()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_monotime()", + "source_file": "files/oledsaver.c", + "source_location": "L1976" + }, + { + "id": "files_oledsaver_mgr_pid_alive", + "label": "mgr_pid_alive()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_pid_alive()", + "source_file": "files/oledsaver.c", + "source_location": "L1982" + }, + { + "id": "files_oledsaver_mgr_pids_alive", + "label": "mgr_pids_alive()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_pids_alive()", + "source_file": "files/oledsaver.c", + "source_location": "L2912" + }, + { + "id": "files_oledsaver_mgr_random_color", + "label": "mgr_random_color()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_random_color()", + "source_file": "files/oledsaver.c", + "source_location": "L2026" + }, + { + "id": "files_oledsaver_mgr_response_inhibits_output", + "label": "mgr_response_inhibits_output()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_response_inhibits_output()", + "source_file": "files/oledsaver.c", + "source_location": "L2214" + }, + { + "id": "tests_test_inhibition_main", + "label": "main()", + "_callable": true, + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "main()", + "source_file": "tests/test-inhibition.c", + "source_location": "L6" + }, + { + "id": "files_oledsaver_mgr_outputs_wayland_cleanup", + "label": "mgr_outputs_wayland_cleanup()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "mgr_outputs_wayland_cleanup()", + "source_file": "files/oledsaver.c", + "source_location": "L2794" + }, + { + "id": "files_oledsaver_mgr_refresh_outputs", + "label": "mgr_refresh_outputs()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "mgr_refresh_outputs()", + "source_file": "files/oledsaver.c", + "source_location": "L2812" + }, + { + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", + "label": "zxdg_output_manager_v1_destroy()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "zxdg_output_manager_v1_destroy()", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L172" + }, + { + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", + "label": "zxdg_output_manager_v1_get_user_data()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "zxdg_output_manager_v1_get_user_data()", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L152" + }, + { + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", + "label": "zxdg_output_manager_v1_get_version()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "zxdg_output_manager_v1_get_version()", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L158" + }, + { + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", + "label": "zxdg_output_manager_v1_get_xdg_output()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "zxdg_output_manager_v1_get_xdg_output()", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L184" + }, + { + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", + "label": "zxdg_output_manager_v1_set_user_data()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "zxdg_output_manager_v1_set_user_data()", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L145" + }, + { + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", + "label": "zxdg_output_v1_add_listener()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "zxdg_output_v1_add_listener()", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L342" + }, + { + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", + "label": "zxdg_output_v1_destroy()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "zxdg_output_v1_destroy()", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L404" + }, + { + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", + "label": "zxdg_output_v1_get_user_data()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "zxdg_output_v1_get_user_data()", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L386" + }, + { + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", + "label": "zxdg_output_v1_get_version()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "zxdg_output_v1_get_version()", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L392" + }, + { + "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", + "label": "zxdg_output_v1_set_user_data()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "zxdg_output_v1_set_user_data()", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L379" + }, + { + "id": "files_oledsaver_mgr_output_handle_name", + "label": "mgr_output_handle_name()", + "_callable": true, + "_origin": "ast", + "community": 13, + "community_name": "mgr_output_set_name", + "file_type": "code", + "norm_label": "mgr_output_handle_name()", + "source_file": "files/oledsaver.c", + "source_location": "L2743" + }, + { + "id": "files_oledsaver_mgr_output_set_name", + "label": "mgr_output_set_name()", + "_callable": true, + "_origin": "ast", + "community": 13, + "community_name": "mgr_output_set_name", + "file_type": "code", + "norm_label": "mgr_output_set_name()", + "source_file": "files/oledsaver.c", + "source_location": "L2670" + }, + { + "id": "files_oledsaver_mgr_xdg_output_handle_name", + "label": "mgr_xdg_output_handle_name()", + "_callable": true, + "_origin": "ast", + "community": 13, + "community_name": "mgr_output_set_name", + "file_type": "code", + "norm_label": "mgr_xdg_output_handle_name()", + "source_file": "files/oledsaver.c", + "source_location": "L2695" + }, + { + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", + "label": ".cursor_status()", + "_callable": true, + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": ".cursor_status()", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L74" + }, + { + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", + "label": ".fini()", + "_callable": true, + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": ".fini()", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L26" + }, + { + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", + "label": ".get_output_at()", + "_callable": true, + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": ".get_output_at()", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L43" + }, + { + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", + "label": ".hide_cursor()", + "_callable": true, + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": ".hide_cursor()", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L90" + }, + { + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", + "label": ".init()", + "_callable": true, + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": ".init()", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L16" + }, + { + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable", + "label": ".is_unloadable()", + "_callable": true, + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": ".is_unloadable()", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L34" + }, + { + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", + "label": ".set_cursor_hidden()", + "_callable": true, + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": ".set_cursor_hidden()", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L56" + }, + { + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", + "label": ".unhide_cursor()", + "_callable": true, + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": ".unhide_cursor()", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L96" + }, + { + "id": "files_oledsaver_mgr_expand_tilde", + "label": "mgr_expand_tilde()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "mgr_load_config", + "file_type": "code", + "norm_label": "mgr_expand_tilde()", + "source_file": "files/oledsaver.c", + "source_location": "L2014" + }, + { + "id": "files_oledsaver_mgr_load_config", + "label": "mgr_load_config()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "mgr_load_config", + "file_type": "code", + "norm_label": "mgr_load_config()", + "source_file": "files/oledsaver.c", + "source_location": "L2290" + }, + { + "id": "files_oledsaver_mgr_set_defaults", + "label": "mgr_set_defaults()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "mgr_load_config", + "file_type": "code", + "norm_label": "mgr_set_defaults()", + "source_file": "files/oledsaver.c", + "source_location": "L2254" + }, + { + "id": "files_oledsaver_mgr_trim", + "label": "mgr_trim()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "mgr_load_config", + "file_type": "code", + "norm_label": "mgr_trim()", + "source_file": "files/oledsaver.c", + "source_location": "L2245" + }, + { + "id": "files_oledsaver_mgr_get_cursor_status_from_ipc", + "label": "mgr_get_cursor_status_from_ipc()", + "_callable": true, + "_origin": "ast", + "community": 16, + "community_name": "mgr_update_wayfire_cursor", + "file_type": "code", + "norm_label": "mgr_get_cursor_status_from_ipc()", + "source_file": "files/oledsaver.c", + "source_location": "L2487" + }, + { + "id": "files_oledsaver_mgr_ipc_response_has_error", + "label": "mgr_ipc_response_has_error()", + "_callable": true, + "_origin": "ast", + "community": 16, + "community_name": "mgr_update_wayfire_cursor", + "file_type": "code", + "norm_label": "mgr_ipc_response_has_error()", + "source_file": "files/oledsaver.c", + "source_location": "L2472" + }, + { + "id": "files_oledsaver_mgr_release_wayfire_cursor", + "label": "mgr_release_wayfire_cursor()", + "_callable": true, + "_origin": "ast", + "community": 16, + "community_name": "mgr_update_wayfire_cursor", + "file_type": "code", + "norm_label": "mgr_release_wayfire_cursor()", + "source_file": "files/oledsaver.c", + "source_location": "L2537" + }, + { + "id": "files_oledsaver_mgr_set_wayfire_cursor_hidden", + "label": "mgr_set_wayfire_cursor_hidden()", + "_callable": true, + "_origin": "ast", + "community": 16, + "community_name": "mgr_update_wayfire_cursor", + "file_type": "code", + "norm_label": "mgr_set_wayfire_cursor_hidden()", + "source_file": "files/oledsaver.c", + "source_location": "L2526" + }, + { + "id": "files_oledsaver_mgr_update_wayfire_cursor", + "label": "mgr_update_wayfire_cursor()", + "_callable": true, + "_origin": "ast", + "community": 16, + "community_name": "mgr_update_wayfire_cursor", + "file_type": "code", + "norm_label": "mgr_update_wayfire_cursor()", + "source_file": "files/oledsaver.c", + "source_location": "L2557" + }, + { + "id": "files_oledsaver_main", + "label": "main()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "manager_main", + "file_type": "code", + "norm_label": "main()", + "source_file": "files/oledsaver.c", + "source_location": "L3670" + }, + { + "id": "files_oledsaver_manager_main", + "label": "manager_main()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "manager_main", + "file_type": "code", + "norm_label": "manager_main()", + "source_file": "files/oledsaver.c", + "source_location": "L3477" + }, + { + "id": "files_oledsaver_mgr_find_output", + "label": "mgr_find_output()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "manager_main", + "file_type": "code", + "norm_label": "mgr_find_output()", + "source_file": "files/oledsaver.c", + "source_location": "L2464" + }, + { + "id": "files_oledsaver_mgr_mkdirs", + "label": "mgr_mkdirs()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "manager_main", + "file_type": "code", + "norm_label": "mgr_mkdirs()", + "source_file": "files/oledsaver.c", + "source_location": "L1987" + }, + { + "id": "files_oledsaver_mgr_read_pidfile", + "label": "mgr_read_pidfile()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "manager_main", + "file_type": "code", + "norm_label": "mgr_read_pidfile()", + "source_file": "files/oledsaver.c", + "source_location": "L3455" + }, + { + "id": "files_oledsaver_mgr_reap_children", + "label": "mgr_reap_children()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "manager_main", + "file_type": "code", + "norm_label": "mgr_reap_children()", + "source_file": "files/oledsaver.c", + "source_location": "L3469" + }, + { + "id": "files_oledsaver_mgr_remove_pidfile", + "label": "mgr_remove_pidfile()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "manager_main", + "file_type": "code", + "norm_label": "mgr_remove_pidfile()", + "source_file": "files/oledsaver.c", + "source_location": "L3449" + }, + { + "id": "files_oledsaver_mgr_run_lock_cmd", + "label": "mgr_run_lock_cmd()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "manager_main", + "file_type": "code", + "norm_label": "mgr_run_lock_cmd()", + "source_file": "files/oledsaver.c", + "source_location": "L3398" + }, + { + "id": "files_oledsaver_mgr_runtime_path", + "label": "mgr_runtime_path()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "manager_main", + "file_type": "code", + "norm_label": "mgr_runtime_path()", + "source_file": "files/oledsaver.c", + "source_location": "L2000" + }, + { + "id": "files_oledsaver_mgr_unblank_output", + "label": "mgr_unblank_output()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "manager_main", + "file_type": "code", + "norm_label": "mgr_unblank_output()", + "source_file": "files/oledsaver.c", + "source_location": "L3057" + }, + { + "id": "files_oledsaver_mgr_write_pidfile", + "label": "mgr_write_pidfile()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "manager_main", + "file_type": "code", + "norm_label": "mgr_write_pidfile()", + "source_file": "files/oledsaver.c", + "source_location": "L3438" + }, + { + "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_fini", + "label": ".fini()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "oledsaver_idle_plugin_t", + "file_type": "code", + "norm_label": ".fini()", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L70" + }, + { + "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", + "label": ".init()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "oledsaver_idle_plugin_t", + "file_type": "code", + "norm_label": ".init()", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L64" + }, + { + "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", + "label": ".status()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "oledsaver_idle_plugin_t", + "file_type": "code", + "norm_label": ".status()", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L18" + }, + { + "id": "files_oledsaver_render_compile_shader", + "label": "render_compile_shader()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "render_compile_shader()", + "source_file": "files/oledsaver.c", + "source_location": "L740" + }, + { + "id": "files_oledsaver_render_init_egl", + "label": "render_init_egl()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "render_init_egl()", + "source_file": "files/oledsaver.c", + "source_location": "L628" + }, + { + "id": "files_oledsaver_render_init_freetype", + "label": "render_init_freetype()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "render_init_freetype()", + "source_file": "files/oledsaver.c", + "source_location": "L401" + }, + { + "id": "files_oledsaver_render_init_shaders", + "label": "render_init_shaders()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "render_init_shaders()", + "source_file": "files/oledsaver.c", + "source_location": "L757" + }, + { + "id": "files_oledsaver_render_layer_surface_configure", + "label": "render_layer_surface_configure()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "render_layer_surface_configure()", + "source_file": "files/oledsaver.c", + "source_location": "L1311" + }, + { + "id": "files_oledsaver_render_set_projection", + "label": "render_set_projection()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "render_set_projection()", + "source_file": "files/oledsaver.c", + "source_location": "L796" + }, + { + "id": "files_oledsaver_renderer_main", + "label": "renderer_main()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "renderer_main()", + "source_file": "files/oledsaver.c", + "source_location": "L1411" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", + "label": "zwlr_layer_shell_v1_destroy()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_shell_v1_destroy()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L220" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", + "label": "zwlr_layer_shell_v1_get_layer_surface()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_shell_v1_get_layer_surface()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L202" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", + "label": "zwlr_layer_shell_v1_get_user_data()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_shell_v1_get_user_data()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L171" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", + "label": "zwlr_layer_shell_v1_get_version()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_shell_v1_get_version()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L177" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", + "label": "zwlr_layer_shell_v1_set_user_data()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_shell_v1_set_user_data()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L164" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", + "label": "zwlr_layer_surface_v1_ack_configure()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_ack_configure()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L562" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", + "label": "zwlr_layer_surface_v1_add_listener()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_add_listener()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L319" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", + "label": "zwlr_layer_surface_v1_destroy()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_destroy()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L574" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", + "label": "zwlr_layer_surface_v1_get_popup()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_get_popup()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L536" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", + "label": "zwlr_layer_surface_v1_get_user_data()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_get_user_data()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L391" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", + "label": "zwlr_layer_surface_v1_get_version()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_get_version()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L397" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", + "label": "zwlr_layer_surface_v1_set_anchor()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_set_anchor()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L435" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", + "label": "zwlr_layer_surface_v1_set_exclusive_zone()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_set_exclusive_zone()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L478" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", + "label": "zwlr_layer_surface_v1_set_keyboard_interactivity()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_set_keyboard_interactivity()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L518" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", + "label": "zwlr_layer_surface_v1_set_layer()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_set_layer()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L588" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", + "label": "zwlr_layer_surface_v1_set_margin()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_set_margin()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L496" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", + "label": "zwlr_layer_surface_v1_set_size()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_set_size()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L417" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", + "label": "zwlr_layer_surface_v1_set_user_data()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "zwlr_layer_surface_v1_set_user_data()", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L384" + }, + { + "id": "files_oledsaver_ensure_wayland_display", + "label": "ensure_wayland_display()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "ensure_wayland_display()", + "source_file": "files/oledsaver.c", + "source_location": "L1381" + }, + { + "id": "files_oledsaver_mgr_check_idle_inhibitors", + "label": "mgr_check_idle_inhibitors()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_check_idle_inhibitors()", + "source_file": "files/oledsaver.c", + "source_location": "L2228" + }, + { + "id": "files_oledsaver_mgr_focus_name_from_event", + "label": "mgr_focus_name_from_event()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_focus_name_from_event()", + "source_file": "files/oledsaver.c", + "source_location": "L3121" + }, + { + "id": "files_oledsaver_mgr_focus_watcher", + "label": "mgr_focus_watcher()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_focus_watcher()", + "source_file": "files/oledsaver.c", + "source_location": "L3162" + }, + { + "id": "files_oledsaver_mgr_get_focused_output_from_ipc", + "label": "mgr_get_focused_output_from_ipc()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_get_focused_output_from_ipc()", + "source_file": "files/oledsaver.c", + "source_location": "L2855" + }, + { + "id": "files_oledsaver_mgr_ipc_connect", + "label": "mgr_ipc_connect()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_ipc_connect()", + "source_file": "files/oledsaver.c", + "source_location": "L2082" + }, + { + "id": "files_oledsaver_mgr_ipc_recv", + "label": "mgr_ipc_recv()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_ipc_recv()", + "source_file": "files/oledsaver.c", + "source_location": "L2170" + }, + { + "id": "files_oledsaver_mgr_ipc_request", + "label": "mgr_ipc_request()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_ipc_request()", + "source_file": "files/oledsaver.c", + "source_location": "L2190" + }, + { + "id": "files_oledsaver_mgr_ipc_send_method", + "label": "mgr_ipc_send_method()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_ipc_send_method()", + "source_file": "files/oledsaver.c", + "source_location": "L2146" + }, + { + "id": "files_oledsaver_mgr_ipc_send_payload", + "label": "mgr_ipc_send_payload()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_ipc_send_payload()", + "source_file": "files/oledsaver.c", + "source_location": "L2134" + }, + { + "id": "files_oledsaver_mgr_readn", + "label": "mgr_readn()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_readn()", + "source_file": "files/oledsaver.c", + "source_location": "L2109" + }, + { + "id": "files_oledsaver_mgr_update_focused_output", + "label": "mgr_update_focused_output()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_update_focused_output()", + "source_file": "files/oledsaver.c", + "source_location": "L2880" + }, + { + "id": "files_oledsaver_mgr_wayfire_ipc_path", + "label": "mgr_wayfire_ipc_path()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_wayfire_ipc_path()", + "source_file": "files/oledsaver.c", + "source_location": "L2032" + }, + { + "id": "files_oledsaver_mgr_writen", + "label": "mgr_writen()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_writen()", + "source_file": "files/oledsaver.c", + "source_location": "L2121" + }, + { + "id": "files_oledsaver_render_cell_at_layer", + "label": "render_cell_at_layer()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_cell_at_layer()", + "source_file": "files/oledsaver.c", + "source_location": "L305" + }, + { + "id": "files_oledsaver_render_get_layer_properties", + "label": "render_get_layer_properties()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_get_layer_properties()", + "source_file": "files/oledsaver.c", + "source_location": "L862" + }, + { + "id": "files_oledsaver_render_head_white_mix", + "label": "render_head_white_mix()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_head_white_mix()", + "source_file": "files/oledsaver.c", + "source_location": "L287" + }, + { + "id": "files_oledsaver_render_init_layer", + "label": "render_init_layer()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_init_layer()", + "source_file": "files/oledsaver.c", + "source_location": "L881" + }, + { + "id": "files_oledsaver_render_init_matrix", + "label": "render_init_matrix()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_init_matrix()", + "source_file": "files/oledsaver.c", + "source_location": "L952" + }, + { + "id": "files_oledsaver_render_lookup_color", + "label": "render_lookup_color()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_lookup_color()", + "source_file": "files/oledsaver.c", + "source_location": "L335" + }, + { + "id": "files_oledsaver_render_parse_hex", + "label": "render_parse_hex()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_parse_hex()", + "source_file": "files/oledsaver.c", + "source_location": "L322" + }, + { + "id": "files_oledsaver_render_rand_speed", + "label": "render_rand_speed()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_rand_speed()", + "source_file": "files/oledsaver.c", + "source_location": "L294" + }, + { + "id": "files_oledsaver_render_randf", + "label": "render_randf()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_randf()", + "source_file": "files/oledsaver.c", + "source_location": "L284" + }, + { + "id": "files_oledsaver_render_randi", + "label": "render_randi()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_randi()", + "source_file": "files/oledsaver.c", + "source_location": "L285" + }, + { + "id": "files_oledsaver_render_random_codepoint", + "label": "render_random_codepoint()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_random_codepoint()", + "source_file": "files/oledsaver.c", + "source_location": "L309" + }, + { + "id": "files_oledsaver_render_random_color", + "label": "render_random_color()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_random_color()", + "source_file": "files/oledsaver.c", + "source_location": "L361" + }, + { + "id": "files_oledsaver_render_random_hex_color", + "label": "render_random_hex_color()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_random_hex_color()", + "source_file": "files/oledsaver.c", + "source_location": "L365" + }, + { + "id": "files_oledsaver_render_tick_layer", + "label": "render_tick_layer()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_tick_layer()", + "source_file": "files/oledsaver.c", + "source_location": "L970" + }, + { + "id": "files_oledsaver_render_tick_matrix", + "label": "render_tick_matrix()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_tick_matrix()", + "source_file": "files/oledsaver.c", + "source_location": "L1049" + }, + { + "id": "files_oledsaver_render_trail_color", + "label": "render_trail_color()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_trail_color()", + "source_file": "files/oledsaver.c", + "source_location": "L373" + }, + { + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", + "label": "ext_idle_notification_v1_add_listener()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "ext_idle_notification_v1_add_listener()", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L263" + }, + { + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", + "label": "ext_idle_notification_v1_destroy()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "ext_idle_notification_v1_destroy()", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L312" + }, + { + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", + "label": "ext_idle_notification_v1_get_user_data()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "ext_idle_notification_v1_get_user_data()", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L295" + }, + { + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", + "label": "ext_idle_notification_v1_get_version()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "ext_idle_notification_v1_get_version()", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L301" + }, + { + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", + "label": "ext_idle_notification_v1_set_user_data()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "ext_idle_notification_v1_set_user_data()", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L288" + }, + { + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", + "label": "ext_idle_notifier_v1_destroy()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "ext_idle_notifier_v1_destroy()", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L176" + }, + { + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", + "label": "ext_idle_notifier_v1_get_idle_notification()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "ext_idle_notifier_v1_get_idle_notification()", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L195" + }, + { + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", + "label": "ext_idle_notifier_v1_get_input_idle_notification()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "ext_idle_notifier_v1_get_input_idle_notification()", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L220" + }, + { + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", + "label": "ext_idle_notifier_v1_get_user_data()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "ext_idle_notifier_v1_get_user_data()", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L158" + }, + { + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", + "label": "ext_idle_notifier_v1_get_version()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "ext_idle_notifier_v1_get_version()", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L164" + }, + { + "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", + "label": "ext_idle_notifier_v1_set_user_data()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "ext_idle_notifier_v1_set_user_data()", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L151" + }, + { + "id": "files_oledsaver_mgr_idle_watcher", + "label": "mgr_idle_watcher()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "mgr_idle_watcher()", + "source_file": "files/oledsaver.c", + "source_location": "L3326" + }, + { + "id": "files_oledsaver_mgr_idle_wayland_cleanup", + "label": "mgr_idle_wayland_cleanup()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "mgr_idle_wayland_cleanup()", + "source_file": "files/oledsaver.c", + "source_location": "L3308" + }, + { + "id": "files_oledsaver_render_find_glyph", + "label": "render_find_glyph()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "render_frame", + "file_type": "code", + "norm_label": "render_find_glyph()", + "source_file": "files/oledsaver.c", + "source_location": "L613" + }, + { + "id": "files_oledsaver_render_flush_quads", + "label": "render_flush_quads()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "render_frame", + "file_type": "code", + "norm_label": "render_flush_quads()", + "source_file": "files/oledsaver.c", + "source_location": "L831" + }, + { + "id": "files_oledsaver_render_frame", + "label": "render_frame()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "render_frame", + "file_type": "code", + "norm_label": "render_frame()", + "source_file": "files/oledsaver.c", + "source_location": "L1057" + }, + { + "id": "files_oledsaver_render_push_quad", + "label": "render_push_quad()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "render_frame", + "file_type": "code", + "norm_label": "render_push_quad()", + "source_file": "files/oledsaver.c", + "source_location": "L810" + }, + { + "id": "files_xdg_shell_client_protocol", + "label": "xdg-shell-client-protocol.h", + "_origin": "ast", + "community": 0, + "community_name": "xdg-shell-client-protocol.h", + "file_type": "code", + "norm_label": "xdg-shell-client-protocol.h", + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1" + }, + { + "id": "files_oledsaver", + "label": "oledsaver.c", + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "oledsaver.c", + "source_file": "files/oledsaver.c", + "source_location": "L1" + }, + { + "id": "files_xdg_shell_protocol", + "label": "xdg-shell-protocol.c", + "_origin": "ast", + "community": 10, + "community_name": "xdg-shell-protocol.c", + "file_type": "code", + "norm_label": "xdg-shell-protocol.c", + "source_file": "files/xdg-shell-protocol.c", + "source_location": "L1" + }, + { + "id": "mgr_output_info_t", + "label": "mgr_output_info_t", + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_output_info_t", + "source_file": "", + "source_location": "" + }, + { + "id": "pid_t", + "label": "pid_t", + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "pid_t", + "source_file": "", + "source_location": "" + }, + { + "id": "tests_test_inhibition", + "label": "test-inhibition.c", + "_origin": "ast", + "community": 11, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "test-inhibition.c", + "source_file": "tests/test-inhibition.c", + "source_location": "L1" + }, + { + "id": "files_xdg_output_unstable_v1_client_protocol", + "label": "xdg-output-unstable-v1-client-protocol.h", + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "xdg-output-unstable-v1-client-protocol.h", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L1" + }, + { + "id": "mgr_outputs_wayland_t", + "label": "mgr_outputs_wayland_t", + "_origin": "ast", + "community": 12, + "community_name": "mgr_refresh_outputs", + "file_type": "code", + "norm_label": "mgr_outputs_wayland_t", + "source_file": "", + "source_location": "" + }, + { + "id": "mgr_wayland_output_info_t", + "label": "mgr_wayland_output_info_t", + "_origin": "ast", + "community": 13, + "community_name": "mgr_output_set_name", + "file_type": "code", + "norm_label": "mgr_wayland_output_info_t", + "source_file": "", + "source_location": "" + }, + { + "id": "files_oledsaver_cursor", + "label": "oledsaver-cursor.cpp", + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": "oledsaver-cursor.cpp", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L1" + }, + { + "id": "files_oledsaver_cursor_cpp_json_t", + "label": "json_t", + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": "json_t", + "source_file": "", + "source_location": "" + }, + { + "id": "files_oledsaver_cursor_cpp_method_repository_t", + "label": "method_repository_t", + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": "method_repository_t", + "source_file": "", + "source_location": "" + }, + { + "id": "files_oledsaver_cursor_cpp_plugin_interface_t", + "label": "plugin_interface_t", + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": "plugin_interface_t", + "source_file": "", + "source_location": "" + }, + { + "id": "files_oledsaver_cursor_cpp_ref_ptr_t", + "label": "ref_ptr_t", + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": "ref_ptr_t", + "source_file": "", + "source_location": "" + }, + { + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden", + "label": "cursor_hidden", + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": "cursor_hidden", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L41" + }, + { + "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo", + "label": "repo", + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": "repo", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L40" + }, + { + "id": "output_t", + "label": "output_t", + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": "output_t", + "source_file": "", + "source_location": "" + }, + { + "id": "pointf_t", + "label": "pointf_t", + "_origin": "ast", + "community": 14, + "community_name": "oledsaver_cursor_plugin_t", + "file_type": "code", + "norm_label": "pointf_t", + "source_file": "", + "source_location": "" + }, + { + "id": "files_oledsaver_idle", + "label": "oledsaver-idle.cpp", + "_origin": "ast", + "community": 18, + "community_name": "oledsaver_idle_plugin_t", + "file_type": "code", + "norm_label": "oledsaver-idle.cpp", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L1" + }, + { + "id": "files_oledsaver_idle_cpp_json_t", + "label": "json_t", + "_origin": "ast", + "community": 18, + "community_name": "oledsaver_idle_plugin_t", + "file_type": "code", + "norm_label": "json_t", + "source_file": "", + "source_location": "" + }, + { + "id": "files_oledsaver_idle_cpp_method_repository_t", + "label": "method_repository_t", + "_origin": "ast", + "community": 18, + "community_name": "oledsaver_idle_plugin_t", + "file_type": "code", + "norm_label": "method_repository_t", + "source_file": "", + "source_location": "" + }, + { + "id": "files_oledsaver_idle_cpp_plugin_interface_t", + "label": "plugin_interface_t", + "_origin": "ast", + "community": 18, + "community_name": "oledsaver_idle_plugin_t", + "file_type": "code", + "norm_label": "plugin_interface_t", + "source_file": "", + "source_location": "" + }, + { + "id": "files_oledsaver_idle_cpp_ref_ptr_t", + "label": "ref_ptr_t", + "_origin": "ast", + "community": 18, + "community_name": "oledsaver_idle_plugin_t", + "file_type": "code", + "norm_label": "ref_ptr_t", + "source_file": "", + "source_location": "" + }, + { + "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_repo", + "label": "repo", + "_origin": "ast", + "community": 18, + "community_name": "oledsaver_idle_plugin_t", + "file_type": "code", + "norm_label": "repo", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L16" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_client_protocol", + "label": "wlr-layer-shell-unstable-v1-client-protocol.h", + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "wlr-layer-shell-unstable-v1-client-protocol.h", + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L1" + }, + { + "id": "glenum", + "label": "GLenum", + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "glenum", + "source_file": "", + "source_location": "" + }, + { + "id": "gluint", + "label": "GLuint", + "_origin": "ast", + "community": 2, + "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "file_type": "code", + "norm_label": "gluint", + "source_file": "", + "source_location": "" + }, + { + "id": "depth_layer_t", + "label": "depth_layer_t", + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "depth_layer_t", + "source_file": "", + "source_location": "" + }, + { + "id": "render_cell_t", + "label": "render_cell_t", + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "render_cell_t", + "source_file": "", + "source_location": "" + }, + { + "id": "rgb_t", + "label": "rgb_t", + "_origin": "ast", + "community": 4, + "community_name": "render_init_layer", + "file_type": "code", + "norm_label": "rgb_t", + "source_file": "", + "source_location": "" + }, + { + "id": "files_ext_idle_notify_v1_client_protocol", + "label": "ext-idle-notify-v1-client-protocol.h", + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "ext-idle-notify-v1-client-protocol.h", + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L1" + }, + { + "id": "mgr_idle_wayland_t", + "label": "mgr_idle_wayland_t", + "_origin": "ast", + "community": 5, + "community_name": "ext-idle-notify-v1-client-protocol.h", + "file_type": "code", + "norm_label": "mgr_idle_wayland_t", + "source_file": "", + "source_location": "" + }, + { + "id": "glyph_info_t", + "label": "glyph_info_t", + "_origin": "ast", + "community": 6, + "community_name": "render_frame", + "file_type": "code", + "norm_label": "glyph_info_t", + "source_file": "", + "source_location": "" + }, + { + "id": "files_ext_idle_notify_v1_protocol", + "label": "ext-idle-notify-v1-protocol.c", + "_origin": "ast", + "community": 7, + "community_name": "ext-idle-notify-v1-protocol.c", + "file_type": "code", + "norm_label": "ext-idle-notify-v1-protocol.c", + "source_file": "files/ext-idle-notify-v1-protocol.c", + "source_location": "L1" + }, + { + "id": "files_wlr_layer_shell_unstable_v1_protocol", + "label": "wlr-layer-shell-unstable-v1-protocol.c", + "_origin": "ast", + "community": 8, + "community_name": "wlr-layer-shell-unstable-v1-protocol.c", + "file_type": "code", + "norm_label": "wlr-layer-shell-unstable-v1-protocol.c", + "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", + "source_location": "L1" + }, + { + "id": "files_xdg_output_unstable_v1_protocol", + "label": "xdg-output-unstable-v1-protocol.c", + "_origin": "ast", + "community": 9, + "community_name": "xdg-output-unstable-v1-protocol.c", + "file_type": "code", + "norm_label": "xdg-output-unstable-v1-protocol.c", + "source_file": "files/xdg-output-unstable-v1-protocol.c", + "source_location": "L1" + } + ], + "links": [ + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L85", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", + "target": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "files_oledsaver_main", + "target": "files_oledsaver_renderer_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3673", + "weight": 1.0 + }, + { + "source": "files_oledsaver_main", + "target": "files_oledsaver_mgr_read_pidfile", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3676", + "weight": 1.0 + }, + { + "source": "files_oledsaver_main", + "target": "files_oledsaver_manager_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3699", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_ensure_wayland_display", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3482", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_set_defaults", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3484", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_load_config", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3485", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_mkdirs", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3494", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_write_pidfile", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3512", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_refresh_outputs", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3515", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_get_focused_output_from_ipc", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3519", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_monotime", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3544", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_reap_children", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3551", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_activate_all_outputs", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3557", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_run_lock_cmd", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3558", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_check_idle_inhibitors", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3564", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_find_output", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3572", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_response_inhibits_output", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3587", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_get_output_timeout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3600", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_unblank_output", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3610", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_blank_output", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3612", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_update_wayfire_cursor", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3621", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_release_wayfire_cursor", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3654", + "weight": 1.0 + }, + { + "source": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_remove_pidfile", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3659", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_activate_all_outputs", + "target": "files_oledsaver_mgr_monotime", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3422", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_activate_all_outputs", + "target": "files_oledsaver_mgr_blank_output", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3431", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_find_output", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2945", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_pids_alive", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2952", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_monotime", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2956", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_kill_pids", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2958", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_get_output_color", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2963", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_get_val_d", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2964", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_get_val_i", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2966", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_blank_output", + "target": "files_oledsaver_mgr_get_self_exe", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2973", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_check_idle_inhibitors", + "target": "files_oledsaver_mgr_ipc_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2230", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_focus_name_from_event", + "target": "files_oledsaver_mgr_refresh_outputs", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3134", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_focus_name_from_event", + "target": "files_oledsaver_mgr_get_focused_output_from_ipc", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3156", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_focus_watcher", + "target": "files_oledsaver_mgr_ipc_connect", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3166", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_focus_watcher", + "target": "files_oledsaver_mgr_ipc_send_method", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3173", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_focus_watcher", + "target": "files_oledsaver_mgr_ipc_recv", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3182", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_focus_watcher", + "target": "files_oledsaver_mgr_focus_name_from_event", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3222", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_focus_watcher", + "target": "files_oledsaver_mgr_update_focused_output", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3225", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_get_cursor_status_from_ipc", + "target": "files_oledsaver_mgr_ipc_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2495", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_get_cursor_status_from_ipc", + "target": "files_oledsaver_mgr_ipc_response_has_error", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2500", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_get_focused_output_from_ipc", + "target": "files_oledsaver_mgr_ipc_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2858", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_get_output_color", + "target": "files_oledsaver_mgr_random_color", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2622", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_idle_handle_resumed", + "target": "files_oledsaver_mgr_monotime", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3262", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_idle_watcher", + "target": "files_oledsaver_mgr_idle_wayland_cleanup", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3348", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_ipc_connect", + "target": "files_oledsaver_mgr_wayfire_ipc_path", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2084", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_ipc_recv", + "target": "files_oledsaver_mgr_readn", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2172", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_ipc_request", + "target": "files_oledsaver_mgr_ipc_connect", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2192", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_ipc_request", + "target": "files_oledsaver_mgr_ipc_send_method", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2195", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_ipc_request", + "target": "files_oledsaver_mgr_ipc_recv", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2201", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_ipc_send_method", + "target": "files_oledsaver_mgr_ipc_send_payload", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2164", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_ipc_send_payload", + "target": "files_oledsaver_mgr_writen", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2139", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_load_config", + "target": "files_oledsaver_mgr_expand_tilde", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2298", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_load_config", + "target": "files_oledsaver_mgr_set_defaults", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2316", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_load_config", + "target": "files_oledsaver_mgr_trim", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2345", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_output_handle_name", + "target": "files_oledsaver_mgr_output_set_name", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2746", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_pids_alive", + "target": "files_oledsaver_mgr_pid_alive", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2915", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_read_pidfile", + "target": "files_oledsaver_mgr_runtime_path", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3457", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_oledsaver_ensure_wayland_display", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2816", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_oledsaver_mgr_monotime", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2823", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_oledsaver_mgr_find_output", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2845", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_oledsaver_mgr_init_output", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2846", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_oledsaver_mgr_outputs_wayland_cleanup", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2852", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_release_wayfire_cursor", + "target": "files_oledsaver_mgr_set_wayfire_cursor_hidden", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2545", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_remove_pidfile", + "target": "files_oledsaver_mgr_runtime_path", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3451", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_runtime_path", + "target": "files_oledsaver_mgr_mkdirs", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2006", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_set_wayfire_cursor_hidden", + "target": "files_oledsaver_mgr_ipc_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2527", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_set_wayfire_cursor_hidden", + "target": "files_oledsaver_mgr_ipc_response_has_error", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2532", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_unblank_output", + "target": "files_oledsaver_mgr_find_output", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3060", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_update_focused_output", + "target": "files_oledsaver_mgr_find_output", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2885", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_update_focused_output", + "target": "files_oledsaver_mgr_refresh_outputs", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2889", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_update_focused_output", + "target": "files_oledsaver_mgr_monotime", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2900", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_update_wayfire_cursor", + "target": "files_oledsaver_mgr_get_cursor_status_from_ipc", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2561", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_update_wayfire_cursor", + "target": "files_oledsaver_mgr_release_wayfire_cursor", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2571", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_update_wayfire_cursor", + "target": "files_oledsaver_mgr_find_output", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2580", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_update_wayfire_cursor", + "target": "files_oledsaver_mgr_set_wayfire_cursor_hidden", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2588", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_wayfire_ipc_path", + "target": "files_oledsaver_ensure_wayland_display", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2041", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_write_pidfile", + "target": "files_oledsaver_mgr_runtime_path", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3440", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_xdg_output_handle_name", + "target": "files_oledsaver_mgr_output_set_name", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2698", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_build_atlas", + "target": "files_oledsaver_render_build_codepoint_list", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L461", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_frame", + "target": "files_oledsaver_render_cell_at_layer", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1087", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_frame", + "target": "files_oledsaver_render_find_glyph", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1113", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_frame", + "target": "files_oledsaver_render_push_quad", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1166", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_frame", + "target": "files_oledsaver_render_flush_quads", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1184", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_head_white_mix", + "target": "files_oledsaver_render_randf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L289", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_get_layer_properties", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L883", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_randf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L909", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_trail_color", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L915", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_rand_speed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L916", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_randi", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L920", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_random_codepoint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L929", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_cell_at_layer", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L942", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_init_layer", + "target": "files_oledsaver_render_head_white_mix", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L946", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_init_matrix", + "target": "files_oledsaver_render_init_layer", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L957", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_init_matrix", + "target": "files_oledsaver_render_tick_layer", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L965", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_init_shaders", + "target": "files_oledsaver_render_compile_shader", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L758", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_lookup_color", + "target": "files_oledsaver_render_parse_hex", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L338", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_rand_speed", + "target": "files_oledsaver_render_randf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L295", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_randf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1000", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_head_white_mix", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1001", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_trail_color", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L982", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_rand_speed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L983", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_randi", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L985", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_cell_at_layer", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L997", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_tick_layer", + "target": "files_oledsaver_render_random_codepoint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L999", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_tick_matrix", + "target": "files_oledsaver_render_tick_layer", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1051", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_trail_color", + "target": "files_oledsaver_render_random_color", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L375", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_trail_color", + "target": "files_oledsaver_render_random_hex_color", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L376", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_lookup_color", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1550", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_ensure_wayland_display", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1575", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_init_egl", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1662", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_init_shaders", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1669", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_set_projection", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1675", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_init_freetype", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1681", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_build_atlas", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1687", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_init_matrix", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1696", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_tick_matrix", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1760", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_oledsaver_render_frame", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1761", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo", + "relation": "defines", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "field", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden", + "relation": "defines", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "field", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "files_oledsaver_idle_oledsaver_idle_plugin_t", + "target": "files_oledsaver_idle_oledsaver_idle_plugin_t_repo", + "relation": "defines", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "field", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_cpp_ref_ptr_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "field", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "files_oledsaver_idle_oledsaver_idle_plugin_t", + "target": "files_oledsaver_idle_cpp_ref_ptr_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "field", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_cpp_method_repository_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "files_oledsaver_idle_oledsaver_idle_plugin_t", + "target": "files_oledsaver_idle_cpp_method_repository_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "files/oledsaver.c", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_xdg_output_unstable_v1_client_protocol", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "files/oledsaver.c", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_ext_idle_notify_v1_client_protocol", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "files/oledsaver.c", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "tests_test_inhibition", + "target": "files_oledsaver", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test-inhibition.c", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", + "target": "files_oledsaver_cursor_cpp_json_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L74", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", + "target": "pointf_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", + "target": "files_oledsaver_cursor_cpp_json_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L90", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", + "target": "files_oledsaver_cursor_cpp_json_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L96", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_get_output_color", + "target": "mgr_output_info_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L2612", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_get_output_timeout", + "target": "mgr_output_info_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L2607", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_idle_wayland_cleanup", + "target": "mgr_idle_wayland_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L3308", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_init_output", + "target": "mgr_output_info_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L2638", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_kill_pids", + "target": "mgr_output_info_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L2920", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_output_set_name", + "target": "mgr_wayland_output_info_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L2670", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_outputs_wayland_cleanup", + "target": "mgr_outputs_wayland_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L2794", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_pid_alive", + "target": "pid_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L1982", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_pids_alive", + "target": "mgr_output_info_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L2912", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_cell_at_layer", + "target": "depth_layer_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L305", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_compile_shader", + "target": "glenum", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L740", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_init_layer", + "target": "depth_layer_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L881", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_tick_layer", + "target": "depth_layer_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "files/oledsaver.c", + "source_location": "L970", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", + "target": "output_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", + "target": "files_oledsaver_idle_cpp_json_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_find_output", + "target": "mgr_output_info_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "files/oledsaver.c", + "source_location": "L2464", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_read_pidfile", + "target": "pid_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "files/oledsaver.c", + "source_location": "L3455", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_cell_at_layer", + "target": "render_cell_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "files/oledsaver.c", + "source_location": "L305", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_compile_shader", + "target": "gluint", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "files/oledsaver.c", + "source_location": "L740", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_find_glyph", + "target": "glyph_info_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "files/oledsaver.c", + "source_location": "L613", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_lookup_color", + "target": "rgb_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "files/oledsaver.c", + "source_location": "L335", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_parse_hex", + "target": "rgb_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "files/oledsaver.c", + "source_location": "L322", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_random_color", + "target": "rgb_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "files/oledsaver.c", + "source_location": "L361", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_random_hex_color", + "target": "rgb_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "files/oledsaver.c", + "source_location": "L365", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_trail_color", + "target": "rgb_t", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "files/oledsaver.c", + "source_location": "L373", + "weight": 1.0 + }, + { + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L151", + "weight": 1.0 + }, + { + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L158", + "weight": 1.0 + }, + { + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L176", + "weight": 1.0 + }, + { + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L195", + "weight": 1.0 + }, + { + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L220", + "weight": 1.0 + }, + { + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L288", + "weight": 1.0 + }, + { + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L295", + "weight": 1.0 + }, + { + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L301", + "weight": 1.0 + }, + { + "source": "files_ext_idle_notify_v1_client_protocol", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/ext-idle-notify-v1-client-protocol.h", + "source_location": "L312", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_tick_matrix", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1049", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_frame", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1057", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_xdg_output_handle_name", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1201", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_xdg_output_handle_logical_position", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1216", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_xdg_output_handle_logical_size", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1221", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_xdg_output_handle_done", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1233", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_xdg_output_handle_description", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1238", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_output_handle_geometry", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1251", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_output_handle_mode", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1259", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_output_handle_scale", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1269", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_output_handle_done", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1276", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_output_handle_name", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1280", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_output_handle_description", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1295", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_layer_surface_configure", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1311", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_layer_surface_closed", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1323", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_registry_handle_global", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1336", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_registry_handle_global_remove", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1359", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_sig_handler", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1371", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_sigusr1_handler", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1376", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_ensure_wayland_display", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1381", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_renderer_main", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1411", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_log_msg", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1944", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_monotime", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1976", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_pid_alive", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1982", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_mkdirs", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L1987", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_runtime_path", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2000", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_expand_tilde", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2014", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_random_color", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2026", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_wayfire_ipc_path", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2032", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_ipc_connect", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2082", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_readn", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2109", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_writen", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2121", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_ipc_send_payload", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2134", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_ipc_send_method", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2146", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_ipc_recv", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2170", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_ipc_request", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2190", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_response_inhibits_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2214", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_check_idle_inhibitors", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2228", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_trim", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2245", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_set_defaults", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2254", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_load_config", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2290", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_find_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2464", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_ipc_response_has_error", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2472", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_cursor_status_from_ipc", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2487", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_set_wayfire_cursor_hidden", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2526", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_release_wayfire_cursor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2537", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_update_wayfire_cursor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2557", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_output_timeout", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2607", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_output_color", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2612", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_val_d", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2631", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_val_i", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2634", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_init_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2638", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_set_name", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2670", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_xdg_output_handle_logical_position", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2677", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_xdg_output_handle_logical_size", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2682", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_xdg_output_handle_done", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2690", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_xdg_output_handle_name", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2695", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_xdg_output_handle_description", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2701", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_handle_geometry", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2714", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_handle_mode", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2722", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_handle_done", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2732", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_handle_scale", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2736", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_handle_name", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2743", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_output_handle_description", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2749", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_outputs_registry_handle_global", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2763", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_outputs_registry_handle_global_remove", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2784", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_outputs_wayland_cleanup", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2794", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_refresh_outputs", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2812", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_randf", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L284", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_randi", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L285", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_focused_output_from_ipc", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2855", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_head_white_mix", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L287", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_update_focused_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2880", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_pids_alive", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2912", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_kill_pids", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2920", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_get_self_exe", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2931", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_rand_speed", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L294", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_blank_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L2942", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_cell_at_layer", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L305", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_unblank_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3057", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_random_codepoint", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L309", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_focus_name_from_event", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3121", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_focus_watcher", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3162", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_parse_hex", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L322", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_idle_handle_idled", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3247", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_idle_handle_resumed", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3257", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_idle_registry_handle_global", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3279", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_idle_registry_handle_global_remove", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3296", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_idle_wayland_cleanup", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3308", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_idle_watcher", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3326", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_lookup_color", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L335", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_signal_handler", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3387", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_run_lock_cmd", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3398", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_activate_all_outputs", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3419", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_write_pidfile", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3438", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_remove_pidfile", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3449", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_read_pidfile", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3455", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_mgr_reap_children", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3469", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_manager_main", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3477", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_random_color", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L361", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_random_hex_color", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L365", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_main", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3670", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_trail_color", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L373", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_build_codepoint_list", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L384", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_init_freetype", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L401", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_build_atlas", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L459", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_find_glyph", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L613", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_init_egl", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L628", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_compile_shader", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L740", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_init_shaders", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L757", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_set_projection", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L796", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_push_quad", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L810", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_flush_quads", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L831", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_get_layer_properties", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L862", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_init_layer", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L881", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_init_matrix", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L952", + "weight": 1.0 + }, + { + "source": "files_oledsaver", + "target": "files_oledsaver_render_tick_layer", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L970", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "files_oledsaver_idle", + "target": "files_oledsaver_idle_oledsaver_idle_plugin_t", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L108", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L171", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L177", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L202", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L220", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L271", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L319", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L384", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L391", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L397", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L417", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L435", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L478", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L496", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L518", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L536", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L562", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L574", + "weight": 1.0 + }, + { + "source": "files_wlr_layer_shell_unstable_v1_client_protocol", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "source_location": "L588", + "weight": 1.0 + }, + { + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L145", + "weight": 1.0 + }, + { + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L152", + "weight": 1.0 + }, + { + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L158", + "weight": 1.0 + }, + { + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L172", + "weight": 1.0 + }, + { + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L184", + "weight": 1.0 + }, + { + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L342", + "weight": 1.0 + }, + { + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L379", + "weight": 1.0 + }, + { + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L386", + "weight": 1.0 + }, + { + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L392", + "weight": 1.0 + }, + { + "source": "files_xdg_output_unstable_v1_client_protocol", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L404", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_listener", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1003", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_add_listener", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1036", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_set_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1077", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_get_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1084", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_get_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1090", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_destroy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1103", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1119", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_get_popup", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1142", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1197", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface_ack_configure", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1240", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_listener", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1501", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1606", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1704", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1711", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_get_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1717", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_destroy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1729", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1760", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_title", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1778", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1812", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1835", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_move", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1862", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_resize", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1904", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1948", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L1992", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2022", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2054", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2088", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2116", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2135", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_listener", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2156", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_add_listener", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2224", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_set_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2263", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_get_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2270", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_get_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2276", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_destroy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2291", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_grab", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2339", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup_reposition", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L2373", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_wl_interface", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L368", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_listener", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L409", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L437", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L473", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L480", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_get_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L486", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_destroy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L501", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L515", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_wl_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L52", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_wl_seat", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_wl_surface", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L543", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_popup", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base_pong", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L561", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_surface", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_toplevel", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_wm_base", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L770", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L777", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_get_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L783", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_destroy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L794", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_size", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L810", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L831", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L848", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L866", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L890", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_offset", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L912", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L929", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L947", + "weight": 1.0 + }, + { + "source": "files_xdg_shell_client_protocol", + "target": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/xdg-shell-client-protocol.h", + "source_location": "L962", + "weight": 1.0 + }, + { + "source": "tests_test_inhibition", + "target": "tests_test_inhibition_main", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test-inhibition.c", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_cpp_plugin_interface_t", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "files_oledsaver_idle_oledsaver_idle_plugin_t", + "target": "files_oledsaver_idle_cpp_plugin_interface_t", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L74", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L90", + "weight": 1.0 + }, + { + "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", + "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-cursor.cpp", + "source_location": "L96", + "weight": 1.0 + }, + { + "source": "files_oledsaver_idle_oledsaver_idle_plugin_t", + "target": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "files_oledsaver_idle_oledsaver_idle_plugin_t", + "target": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "files_oledsaver_idle_oledsaver_idle_plugin_t", + "target": "files_oledsaver_idle_oledsaver_idle_plugin_t_fini", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L70", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_idle_watcher", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3356", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_idle_watcher", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3359", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_idle_watcher", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3363", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_idle_wayland_cleanup", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3310", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_idle_wayland_cleanup", + "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L3312", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_outputs_wayland_cleanup", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2798", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_outputs_wayland_cleanup", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2805", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2832", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_refresh_outputs", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L2834", + "weight": 1.0 + }, + { + "source": "files_oledsaver_render_layer_surface_configure", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1320", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1592", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1594", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1629", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1633", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1638", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1639", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1640", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1647", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1835", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1844", + "weight": 1.0 + }, + { + "source": "files_oledsaver_renderer_main", + "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "files/oledsaver.c", + "source_location": "L1850", + "weight": 1.0 + }, + { + "source": "tests_test_inhibition_main", + "target": "files_oledsaver_mgr_monotime", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "tests/test-inhibition.c", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "tests_test_inhibition_main", + "target": "files_oledsaver_mgr_idle_handle_resumed", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "tests/test-inhibition.c", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "tests_test_inhibition_main", + "target": "files_oledsaver_mgr_response_inhibits_output", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "tests/test-inhibition.c", + "source_location": "L8", + "weight": 1.0 + } + ], + "hyperedges": [] +}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/manifest.json b/gui-apps/oledsaver/graphify-out/manifest.json new file mode 100644 index 000000000000..c518f5983035 --- /dev/null +++ b/gui-apps/oledsaver/graphify-out/manifest.json @@ -0,0 +1,74 @@ +{ + "files/ext-idle-notify-v1-client-protocol.h": { + "mtime": 1781276121.2383394, + "seen": 1789161983.6576905, + "ast_hash": "68ee069da1d53c6ddfe4aad1a45aa228", + "semantic_hash": "" + }, + "files/ext-idle-notify-v1-protocol.c": { + "mtime": 1781276121.2363393, + "seen": 1789161983.6576936, + "ast_hash": "d44d5c1dae253d1086488678eaae7f52", + "semantic_hash": "" + }, + "files/oledsaver.c": { + "mtime": 1789161863.5140574, + "seen": 1789161983.6576986, + "ast_hash": "59adaacd0d8ef1cda0bd47a30380c008", + "semantic_hash": "" + }, + "files/wlr-layer-shell-unstable-v1-client-protocol.h": { + "mtime": 1781276121.2363393, + "seen": 1789161983.6576998, + "ast_hash": "9ae1c9b28ec7bdde56616c6caaf35262", + "semantic_hash": "" + }, + "files/wlr-layer-shell-unstable-v1-protocol.c": { + "mtime": 1781276121.2343392, + "seen": 1789161983.6577005, + "ast_hash": "bb3527396ba5985dfffd48bb4c36cbf3", + "semantic_hash": "" + }, + "files/xdg-output-unstable-v1-client-protocol.h": { + "mtime": 1781276121.2373393, + "seen": 1789161983.6577017, + "ast_hash": "1f03f1a4dd27bffda5b5318ab994ef61", + "semantic_hash": "" + }, + "files/xdg-output-unstable-v1-protocol.c": { + "mtime": 1781276121.2353394, + "seen": 1789161983.6577024, + "ast_hash": "b52167aecdaa5079290322e71415ef7e", + "semantic_hash": "" + }, + "files/xdg-shell-client-protocol.h": { + "mtime": 1781276121.2373393, + "seen": 1789161983.6577032, + "ast_hash": "d6e96826017acfb25eff163135da557c", + "semantic_hash": "" + }, + "files/xdg-shell-protocol.c": { + "mtime": 1781276121.2353394, + "seen": 1789161983.6577039, + "ast_hash": "47c275e2de1584d65068839962581144", + "semantic_hash": "" + }, + "files/oledsaver-cursor.cpp": { + "mtime": 1786926310.4031188, + "seen": 1789161983.6576958, + "ast_hash": "8777a2af4836803945dc1a39f539394a", + "semantic_hash": "" + }, + "files/oledsaver-idle.cpp": { + "mtime": 1789161872.3120966, + "seen": 1789161983.657697, + "ast_hash": "d731f7665861c844d6005bbcee6907d6", + "semantic_hash": "" + }, + "tests/test-inhibition.c": { + "mtime": 1789161952.5334542, + "seen": 1789161983.6577046, + "ast_hash": "9440cbc5a4259836b628a86d3733897c", + "semantic_hash": "" + } +}
\ No newline at end of file diff --git a/gui-apps/oledsaver/metadata.xml b/gui-apps/oledsaver/metadata.xml index a91a1b954a63..08d807c5f38b 100644 --- a/gui-apps/oledsaver/metadata.xml +++ b/gui-apps/oledsaver/metadata.xml @@ -1,9 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> <pkgmetadata> - <maintainer type="project"> - <email>core@baldeagleos.com</email> - <name>Development</name> + <maintainer type="person"> + <email>ecsfwxvr@localhost</email> + <name>Local Maintainer</name> </maintainer> + <longdescription lang="en"> + OLED-friendly Matrix rain screensaver for Sway/Wayland compositors. + Uses wlr-layer-shell to display a full-screen matrix rain animation + on idle outputs, protecting OLED panels from burn-in. Includes an + integrated idle manager that monitors per-output focus and timeouts. + </longdescription> + <upstream> + <bugs-to>https://localhost</bugs-to> + </upstream> <origin>baldeagleos-repo</origin> </pkgmetadata> diff --git a/gui-apps/oledsaver/oledsaver-1.0.0.ebuild b/gui-apps/oledsaver/oledsaver-1.0.0.ebuild new file mode 100644 index 000000000000..5bc41521bedf --- /dev/null +++ b/gui-apps/oledsaver/oledsaver-1.0.0.ebuild @@ -0,0 +1,58 @@ +# Copyright 2024 Gentoo Authors +# Distributed under the terms of the MIT License + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="OLED-friendly Matrix rain screensaver for Sway/Wayland" +HOMEPAGE="" +SRC_URI="${P}.tar.gz" +RESTRICT="fetch" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" + +BDEPEND=" + dev-libs/wayland + dev-libs/wayland-protocols + virtual/pkgconfig +" + +DEPEND=" + dev-libs/wayland + media-libs/mesa[egl(+),gles2(+)] + media-libs/freetype + dev-libs/json-c +" + +RDEPEND=" + ${DEPEND} + gui-apps/swayidle +" + +S="${WORKDIR}/${P}" + +src_compile() { + emake \ + CC="$(tc-getCC)" \ + CFLAGS="${CFLAGS}" \ + LDFLAGS="${LDFLAGS}" \ + WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \ + PREFIX="/usr" \ + || die "build failed" +} + +src_install() { + dobin oledsaver + + insinto /etc + newins oledsaver.conf.default oledsaver.conf +} + +pkg_postinst() { + elog "Configuration file installed to /etc/oledsaver.conf" + elog "Run 'oledsaver' in your Sway session to start the screensaver manager." + elog "Requires SWAYSOCK to be set (automatic in Sway sessions)." +} diff --git a/gui-apps/oledsaver/oledsaver-1.0.1.ebuild b/gui-apps/oledsaver/oledsaver-1.0.1.ebuild new file mode 100644 index 000000000000..5bc41521bedf --- /dev/null +++ b/gui-apps/oledsaver/oledsaver-1.0.1.ebuild @@ -0,0 +1,58 @@ +# Copyright 2024 Gentoo Authors +# Distributed under the terms of the MIT License + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="OLED-friendly Matrix rain screensaver for Sway/Wayland" +HOMEPAGE="" +SRC_URI="${P}.tar.gz" +RESTRICT="fetch" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" + +BDEPEND=" + dev-libs/wayland + dev-libs/wayland-protocols + virtual/pkgconfig +" + +DEPEND=" + dev-libs/wayland + media-libs/mesa[egl(+),gles2(+)] + media-libs/freetype + dev-libs/json-c +" + +RDEPEND=" + ${DEPEND} + gui-apps/swayidle +" + +S="${WORKDIR}/${P}" + +src_compile() { + emake \ + CC="$(tc-getCC)" \ + CFLAGS="${CFLAGS}" \ + LDFLAGS="${LDFLAGS}" \ + WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \ + PREFIX="/usr" \ + || die "build failed" +} + +src_install() { + dobin oledsaver + + insinto /etc + newins oledsaver.conf.default oledsaver.conf +} + +pkg_postinst() { + elog "Configuration file installed to /etc/oledsaver.conf" + elog "Run 'oledsaver' in your Sway session to start the screensaver manager." + elog "Requires SWAYSOCK to be set (automatic in Sway sessions)." +} diff --git a/gui-apps/oledsaver/oledsaver-1.0.2.ebuild b/gui-apps/oledsaver/oledsaver-1.0.2.ebuild new file mode 100644 index 000000000000..33a13289b175 --- /dev/null +++ b/gui-apps/oledsaver/oledsaver-1.0.2.ebuild @@ -0,0 +1,66 @@ +# Copyright 2024 Gentoo Authors +# Distributed under the terms of the MIT License + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="OLED-friendly Matrix rain screensaver for Sway/Wayland" +HOMEPAGE="" +SRC_URI="${P}.tar.gz" +RESTRICT="fetch" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" + +BDEPEND=" + dev-libs/wayland + dev-libs/wayland-protocols + virtual/pkgconfig +" + +DEPEND=" + dev-libs/wayland + media-libs/mesa[egl(+),gles2(+)] + media-libs/freetype + dev-libs/json-c +" + +RDEPEND=" + ${DEPEND} + gui-apps/swayidle +" + +S="${WORKDIR}/${P}" + +src_compile() { + emake \ + CC="$(tc-getCC)" \ + CFLAGS="${CFLAGS}" \ + LDFLAGS="${LDFLAGS}" \ + WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \ + PREFIX="/usr" \ + || die "build failed" +} + +src_install() { + dobin oledsaver + + insinto /etc + newins oledsaver.conf.default oledsaver.conf + +} + +pkg_preinst() { + if [[ -f "${EROOT}/etc/oledsaver.conf" ]]; then + # Existing config found — don't overwrite it + rm "${ED}/etc/oledsaver.conf" || die + fi +} + +pkg_postinst() { + elog "Configuration file installed to /etc/oledsaver.conf" + elog "Run 'oledsaver' in your Sway session to start the screensaver manager." + elog "Requires SWAYSOCK to be set (automatic in Sway sessions)." +} diff --git a/gui-apps/oledsaver/oledsaver-1.0.3.ebuild b/gui-apps/oledsaver/oledsaver-1.0.3.ebuild new file mode 100644 index 000000000000..33a13289b175 --- /dev/null +++ b/gui-apps/oledsaver/oledsaver-1.0.3.ebuild @@ -0,0 +1,66 @@ +# Copyright 2024 Gentoo Authors +# Distributed under the terms of the MIT License + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="OLED-friendly Matrix rain screensaver for Sway/Wayland" +HOMEPAGE="" +SRC_URI="${P}.tar.gz" +RESTRICT="fetch" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" + +BDEPEND=" + dev-libs/wayland + dev-libs/wayland-protocols + virtual/pkgconfig +" + +DEPEND=" + dev-libs/wayland + media-libs/mesa[egl(+),gles2(+)] + media-libs/freetype + dev-libs/json-c +" + +RDEPEND=" + ${DEPEND} + gui-apps/swayidle +" + +S="${WORKDIR}/${P}" + +src_compile() { + emake \ + CC="$(tc-getCC)" \ + CFLAGS="${CFLAGS}" \ + LDFLAGS="${LDFLAGS}" \ + WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \ + PREFIX="/usr" \ + || die "build failed" +} + +src_install() { + dobin oledsaver + + insinto /etc + newins oledsaver.conf.default oledsaver.conf + +} + +pkg_preinst() { + if [[ -f "${EROOT}/etc/oledsaver.conf" ]]; then + # Existing config found — don't overwrite it + rm "${ED}/etc/oledsaver.conf" || die + fi +} + +pkg_postinst() { + elog "Configuration file installed to /etc/oledsaver.conf" + elog "Run 'oledsaver' in your Sway session to start the screensaver manager." + elog "Requires SWAYSOCK to be set (automatic in Sway sessions)." +} diff --git a/gui-apps/oledsaver/oledsaver-1.0.4.ebuild b/gui-apps/oledsaver/oledsaver-1.0.4.ebuild new file mode 100644 index 000000000000..6d1d818af57c --- /dev/null +++ b/gui-apps/oledsaver/oledsaver-1.0.4.ebuild @@ -0,0 +1,64 @@ +# Copyright 2024 Gentoo Authors +# Distributed under the terms of the MIT License + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="OLED-friendly Matrix rain screensaver for Sway/Wayland" +HOMEPAGE="" +SRC_URI="${P}.tar.gz" +RESTRICT="fetch" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" + +BDEPEND=" + dev-libs/wayland + dev-libs/wayland-protocols + virtual/pkgconfig +" + +DEPEND=" + dev-libs/json-c:= + dev-libs/wayland + media-libs/freetype:2 + media-libs/mesa[egl(+),gles2(+)] +" + +RDEPEND=" + ${DEPEND} + gui-apps/swayidle + media-libs/fontconfig +" + +src_compile() { + emake \ + CC="$(tc-getCC)" \ + CFLAGS="${CFLAGS} -std=c11" \ + LDFLAGS="${LDFLAGS}" \ + PREFIX="${EPREFIX}/usr" +} + +src_install() { + emake \ + DESTDIR="${D}" \ + PREFIX="${EPREFIX}/usr" \ + install + + insinto /etc + newins oledsaver.conf.default oledsaver.conf +} + +pkg_preinst() { + if [[ -f "${EROOT}/etc/oledsaver.conf" ]]; then + rm "${ED}/etc/oledsaver.conf" || die + fi +} + +pkg_postinst() { + elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf" + elog "Run 'oledsaver' in your Sway session to start the screensaver manager." + elog "Requires SWAYSOCK to be set (automatic in Sway sessions)." +} diff --git a/gui-apps/oledsaver/oledsaver-1.0.5.ebuild b/gui-apps/oledsaver/oledsaver-1.0.5.ebuild new file mode 100644 index 000000000000..6d1d818af57c --- /dev/null +++ b/gui-apps/oledsaver/oledsaver-1.0.5.ebuild @@ -0,0 +1,64 @@ +# Copyright 2024 Gentoo Authors +# Distributed under the terms of the MIT License + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="OLED-friendly Matrix rain screensaver for Sway/Wayland" +HOMEPAGE="" +SRC_URI="${P}.tar.gz" +RESTRICT="fetch" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" + +BDEPEND=" + dev-libs/wayland + dev-libs/wayland-protocols + virtual/pkgconfig +" + +DEPEND=" + dev-libs/json-c:= + dev-libs/wayland + media-libs/freetype:2 + media-libs/mesa[egl(+),gles2(+)] +" + +RDEPEND=" + ${DEPEND} + gui-apps/swayidle + media-libs/fontconfig +" + +src_compile() { + emake \ + CC="$(tc-getCC)" \ + CFLAGS="${CFLAGS} -std=c11" \ + LDFLAGS="${LDFLAGS}" \ + PREFIX="${EPREFIX}/usr" +} + +src_install() { + emake \ + DESTDIR="${D}" \ + PREFIX="${EPREFIX}/usr" \ + install + + insinto /etc + newins oledsaver.conf.default oledsaver.conf +} + +pkg_preinst() { + if [[ -f "${EROOT}/etc/oledsaver.conf" ]]; then + rm "${ED}/etc/oledsaver.conf" || die + fi +} + +pkg_postinst() { + elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf" + elog "Run 'oledsaver' in your Sway session to start the screensaver manager." + elog "Requires SWAYSOCK to be set (automatic in Sway sessions)." +} diff --git a/gui-apps/oledsaver/oledsaver-1.0.6.ebuild b/gui-apps/oledsaver/oledsaver-1.0.6.ebuild new file mode 100644 index 000000000000..8f66f7c1f890 --- /dev/null +++ b/gui-apps/oledsaver/oledsaver-1.0.6.ebuild @@ -0,0 +1,63 @@ +# Copyright 2024 Gentoo Authors +# Distributed under the terms of the MIT License + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="OLED-friendly Matrix rain screensaver for wlroots Wayland compositors" +HOMEPAGE="" +SRC_URI="${P}.tar.gz" +RESTRICT="fetch" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" + +BDEPEND=" + dev-libs/wayland + dev-libs/wayland-protocols + virtual/pkgconfig +" + +DEPEND=" + dev-libs/json-c:= + dev-libs/wayland + media-libs/freetype:2 + media-libs/mesa[egl(+),gles2(+)] +" + +RDEPEND=" + ${DEPEND} + media-libs/fontconfig +" + +src_compile() { + emake \ + CC="$(tc-getCC)" \ + CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \ + LDFLAGS="${LDFLAGS}" \ + PREFIX="${EPREFIX}/usr" \ + WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" +} + +src_install() { + emake \ + CC="$(tc-getCC)" \ + CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \ + DESTDIR="${D}" \ + LDFLAGS="${LDFLAGS}" \ + PREFIX="${EPREFIX}/usr" \ + WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \ + install + + insinto /etc + newins oledsaver.conf.default oledsaver.conf +} + +pkg_postinst() { + elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf" + elog "Manager mode uses the Wayland output registry for outputs and Wayfire IPC for focus." + elog "Wayfire must load the ipc and ipc-rules plugins for focused-output tracking." + elog "Renderer mode requires wlr-layer-shell and xdg-output. Manager idle events require ext-idle-notify-v1." +} diff --git a/gui-apps/oledsaver/oledsaver-1.0.9.ebuild b/gui-apps/oledsaver/oledsaver-1.0.9.ebuild new file mode 100644 index 000000000000..5ec323e90060 --- /dev/null +++ b/gui-apps/oledsaver/oledsaver-1.0.9.ebuild @@ -0,0 +1,85 @@ +# Copyright 2024 Gentoo Authors +# Distributed under the terms of the MIT License + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="OLED-friendly Matrix rain screensaver for wlroots Wayland compositors" +HOMEPAGE="" +SRC_URI="" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" + +BDEPEND=" + dev-libs/wayland + dev-libs/wayland-protocols + virtual/pkgconfig +" + +DEPEND=" + dev-libs/json-c:= + dev-libs/wayland + gui-wm/wayfire:= + media-libs/freetype:2 + media-libs/mesa[egl(+),gles2(+)] +" + +RDEPEND=" + ${DEPEND} + media-libs/fontconfig + !gui-apps/oledsaver-cursor +" + +S="${WORKDIR}/${P}" + +src_unpack() { + mkdir -p "${S}" || die + cp "${FILESDIR}"/Makefile \ + "${FILESDIR}"/oledsaver.c \ + "${FILESDIR}"/oledsaver.conf.default \ + "${FILESDIR}"/oledsaver-cursor.cpp \ + "${FILESDIR}"/oledsaver-cursor.xml \ + "${FILESDIR}"/oledsaver-idle.cpp \ + "${FILESDIR}"/oledsaver-idle.xml \ + "${FILESDIR}"/wlr-layer-shell-unstable-v1.xml \ + "${S}"/ || die +} + +src_compile() { + emake \ + CC="$(tc-getCC)" \ + CXX="$(tc-getCXX)" \ + CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \ + CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \ + LDFLAGS="${LDFLAGS}" \ + PREFIX="${EPREFIX}/usr" \ + WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" +} + +src_install() { + emake \ + CC="$(tc-getCC)" \ + CXX="$(tc-getCXX)" \ + CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \ + CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \ + DESTDIR="${D}" \ + LDFLAGS="${LDFLAGS}" \ + PREFIX="${EPREFIX}/usr" \ + WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \ + install + + insinto /etc + newins oledsaver.conf.default oledsaver.conf +} + +pkg_postinst() { + elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf" + elog "Set OLEDSAVER_CONFIG to use a different config file." + elog "Without OLEDSAVER_CONFIG, per-user configs are preferred over /etc/oledsaver.conf." + elog "Manager mode uses the Wayland output registry for outputs and Wayfire IPC for focus." + elog "Wayfire must load ipc, ipc-rules, oledsaver-idle, and oledsaver-cursor for cursor hiding on blanked outputs." + elog "Renderer mode requires wlr-layer-shell and xdg-output. Manager idle events require ext-idle-notify-v1." +} diff --git a/gui-apps/oledsaver/tests/test-inhibition.c b/gui-apps/oledsaver/tests/test-inhibition.c new file mode 100644 index 000000000000..cc6b2b1dc143 --- /dev/null +++ b/gui-apps/oledsaver/tests/test-inhibition.c @@ -0,0 +1,33 @@ +#define main oledsaver_program_main +#include "../files/oledsaver.c" +#undef main +#include <assert.h> + +int main(void) { + struct json_object *response = json_tokener_parse("{\"outputs\":[\"DP-2\",\"HDMI-A-1\"]}"); + assert(mgr_response_inhibits_output(response, "DP-2")); + assert(mgr_response_inhibits_output(response, "HDMI-A-1")); + assert(!mgr_response_inhibits_output(response, "DP-1")); + assert(!mgr_response_inhibits_output(response, "DP")); + json_object_put(response); + const char *invalid[] = {"{}", "{\"error\":\"unavailable\"}", + "{\"outputs\":null}", "{\"outputs\":\"DP-2\"}", + "{\"outputs\":[false,12,null,{}]}", "{\"outputs\":[]}"}; + for (size_t i = 0; i < sizeof(invalid) / sizeof(invalid[0]); i++) { + response = json_tokener_parse(invalid[i]); + assert(!mgr_response_inhibits_output(response, "DP-2")); + json_object_put(response); + } + assert(!mgr_response_inhibits_output(NULL, "DP-2")); + pthread_mutex_init(&G.lock, NULL); + G.manual_activation = 1; + G.last_blank_time = mgr_monotime(); + mgr_idle_handle_resumed(NULL, NULL); + assert(G.manual_activation); /* spurious early resume must not undo explicit activation */ + G.last_blank_time -= 4; + mgr_idle_handle_resumed(NULL, NULL); + assert(!G.manual_activation); + pthread_mutex_destroy(&G.lock); + puts("Passed per-output filtering, malformed IPC responses, and explicit activation resume checks."); + return 0; +} diff --git a/gui-wm/gamescope/files/gamescope-no-git.patch b/gui-wm/gamescope/files/gamescope-no-git.patch new file mode 100644 index 000000000000..5e74314861e8 --- /dev/null +++ b/gui-wm/gamescope/files/gamescope-no-git.patch @@ -0,0 +1,35 @@ +https://github.com/ValveSoftware/gamescope/pull/2400 + +From 48c55c65992fc8a40444c7b7abcc23bbe335e474 Mon Sep 17 00:00:00 2001 +From: James Le Cuirot <chewi@gentoo.org> +Date: Fri, 11 Sep 2026 22:59:59 +0100 +Subject: [PATCH] build: don't fail meson setup if git is missing + +`check: false` was given to `run_command`, but failure will still be fatal if +the given command cannot be found at all. +--- a/src/meson.build ++++ b/src/meson.build +@@ -173,10 +173,16 @@ endforeach + cc = meson.get_compiler('c') + compiler_name = cc.get_id() + compiler_version = cc.version() +- +-vcs_tag_cmd = ['git', 'describe', '--always', '--tags', '--dirty=+'] +-vcs_tag = run_command(vcs_tag_cmd, check: false).stdout().strip() +-version_tag = vcs_tag + ' (' + compiler_name + ' ' + compiler_version + ')' ++version_tag = '(' + compiler_name + ' ' + compiler_version + ')' ++ ++git = find_program('git', native: true, required: false) ++if git.found() ++ vcs_tag_cmd = [git, 'describe', '--always', '--tags', '--dirty=+'] ++ vcs_tag = run_command(vcs_tag_cmd, check: false).stdout().strip() ++ if vcs_tag != '' ++ version_tag = vcs_tag + ' ' + version_tag ++ endif ++endif + + gamescope_version_conf = configuration_data() + gamescope_version_conf.set('VCS_TAG', version_tag) +-- +2.55.0 + diff --git a/gui-wm/gamescope/gamescope-3.16.25-r1.ebuild b/gui-wm/gamescope/gamescope-3.16.25-r1.ebuild index 3563c076beb5..f29b3908bf4c 100644 --- a/gui-wm/gamescope/gamescope-3.16.25-r1.ebuild +++ b/gui-wm/gamescope/gamescope-3.16.25-r1.ebuild @@ -84,6 +84,7 @@ BDEPEND=" PATCHES=( "${FILESDIR}"/${PN}-deprecated-stb.patch "${FILESDIR}"/${PN}-subprojects.patch + "${FILESDIR}"/${PN}-no-git.patch ) FILECAPS=( diff --git a/gui-wm/gamescope/gamescope-3.16.28.ebuild b/gui-wm/gamescope/gamescope-3.16.28.ebuild index 8a106f93b5a7..a81f16456112 100644 --- a/gui-wm/gamescope/gamescope-3.16.28.ebuild +++ b/gui-wm/gamescope/gamescope-3.16.28.ebuild @@ -84,6 +84,7 @@ BDEPEND=" PATCHES=( "${FILESDIR}"/${PN}-deprecated-stb.patch "${FILESDIR}"/${PN}-subprojects.patch + "${FILESDIR}"/${PN}-no-git.patch ) FILECAPS=( diff --git a/kde-frameworks/kwallet-runtime/Manifest b/kde-frameworks/kwallet-runtime/Manifest index 55c2f7a0c725..9cba9e8df6c6 100644 --- a/kde-frameworks/kwallet-runtime/Manifest +++ b/kde-frameworks/kwallet-runtime/Manifest @@ -1,3 +1,4 @@ DIST kwallet-6.27.0.tar.xz 381384 BLAKE2B 7b5f44e65a4074a57e847265d0b8694ea019715338987a858b988b706109c6184fde528b175fe5012abdb8b885485f8969e010557c042c245951dfcc25393a4e SHA512 5f422280e8ba36a89a0754189f4c8074c13f2cc9b028b03cc4eb72ac93d56ff5c84dfbeb35c9213eee537e4c3576a1e042cbba4da77ce9004a99ed495877013b +DIST kwallet-6.29.0-patchset-1.tar.xz 33220 BLAKE2B 1e3dc5572ae678c1346cb8648af28f9bf2c27488110ec89e30359041733154954911d0ef035dac92bcf1205ad905f7cf9d40cc8f911c4fdec1187fcd86fe286e SHA512 1a046cc6bec24c0a071f80b1f64fd3a77057719d5bf9f8c8b5adc1abc79904a2df03965cdbcca8c36664048f4b0b0d89a7d3fd562b61d0be403597d46a3113f0 DIST kwallet-6.29.0.tar.xz 382604 BLAKE2B a05b6f89f4affc7e3b96fa031d84bf5b4548ac1ed2a20db9ac029e389fd4d1f0b942a8a7989c6c3448fd897246101d51fb081d83295a9ad714c197c32a9b05a7 SHA512 d2584ee74dbedaa09a2360aee620c081b3bba09257a27a24e3d0033aa16a44ff5990c432b67d8557d86fab660bce06fd8fd41e5020c7754c02e8a0575a6e0caa DIST kwallet-6.30.0.tar.xz 378552 BLAKE2B eff1a85b8f5d45a090cb32ceca3a3b007f1aa5ff4b61dedbf9ff9c9842e9e9f4bbb2672286d3c5e5c42937c445cf833b4fcd4ee712b2412f38ab046c43553cd7 SHA512 3d040fbd907d50dd1a82164fc93af144a7b80026acc2cf1eb0fe65677a2c34a13a202a35160f9bfbf282f91905d4597eafa6291e049db766330242fa516e3ac7 diff --git a/kde-frameworks/kwallet-runtime/kwallet-runtime-6.29.0-r1.ebuild b/kde-frameworks/kwallet-runtime/kwallet-runtime-6.29.0-r1.ebuild new file mode 100644 index 000000000000..80bae859348d --- /dev/null +++ b/kde-frameworks/kwallet-runtime/kwallet-runtime-6.29.0-r1.ebuild @@ -0,0 +1,88 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +KDE_ORG_NAME="kwallet" +PATCHSET="${KDE_ORG_NAME}-${PV}-patchset-1" +QTMIN=6.10.1 +inherit ecm frameworks.kde.org optfeature + +DESCRIPTION="Framework providing desktop-wide storage for passwords" +SRC_URI+=" https://dev.gentoo.org/~asturm/distfiles/kde/${PATCHSET}.tar.xz" + +LICENSE="LGPL-2+" +KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86" +IUSE="gpg +man +keyring +legacy-kwallet X" + +DEPEND=" + dev-libs/libgcrypt:0= + >=dev-qt/qtbase-${QTMIN}:6[dbus,gui,widgets] + =kde-frameworks/kcolorscheme-${KDE_CATV}*:6 + =kde-frameworks/kconfig-${KDE_CATV}*:6 + =kde-frameworks/kcoreaddons-${KDE_CATV}*:6 + =kde-frameworks/kcrash-${KDE_CATV}*:6 + =kde-frameworks/kdbusaddons-${KDE_CATV}*:6 + =kde-frameworks/ki18n-${KDE_CATV}*:6 + =kde-frameworks/knotifications-${KDE_CATV}*:6 + =kde-frameworks/kservice-${KDE_CATV}*:6 + >=kde-frameworks/kwallet-${PV}-r1:6 + =kde-frameworks/kwallet-${PV}*:6 + =kde-frameworks/kwidgetsaddons-${KDE_CATV}*:6 + =kde-frameworks/kwindowsystem-${KDE_CATV}*:6[X?] + gpg? ( dev-libs/qgpgme:= ) + keyring? ( >=app-crypt/qca-2.3.9:2[qt6(+)] ) + legacy-kwallet? ( app-crypt/libsecret ) +" +RDEPEND="${DEPEND} + !<kde-frameworks/kwallet-5.116.0-r2:5[-kf6compat(-)] + !<kde-frameworks/kwallet-6.14.0:6 + keyring? ( =kde-frameworks/ksecretd-services-${KDE_CATV}* ) +" +BDEPEND="man? ( >=kde-frameworks/kdoctools-${KDE_CATV}:6 )" + +PATCHES=( + "${FILESDIR}/${P}-stdalone.patch" # downstream + "${WORKDIR}/${PATCHSET}" # in 6.30/6.31 +) + +src_prepare() { + ecm_src_prepare + cmake_comment_add_subdirectory -f src api +} + +src_configure() { + local mycmakeargs=( + -DBUILD_KWALLET_QUERY=ON # could be split easily together w/ docs + $(cmake_use_find_package gpg Gpgmepp) + -DBUILD_KSECRETD=$(usex keyring) + -DBUILD_KWALLETD=$(usex legacy-kwallet) + $(cmake_use_find_package man KF6DocTools) + -DWITH_X11=$(usex X) + ) + + ecm_src_configure +} + +src_install() { + # provided by kde-frameworks/kwallet + ECM_REMOVE_FROM_INSTALL=( /usr/share/config.kcfg/kwalletsettings.kcfg ) + + # provided by kde-frameworks/ksecretd-services + if use keyring; then + ECM_REMOVE_FROM_INSTALL+=( + /usr/share/dbus-1/services/org.freedesktop.impl.portal.desktop.kwallet.service + /usr/share/dbus-1/services/org.kde.secretservicecompat.service + ) + fi + + ecm_src_install +} + +pkg_postinst() { + if [[ -z "${REPLACING_VERSIONS}" ]]; then + optfeature "Auto-unlocking after Plasma login" "kde-plasma/kwallet-pam" + optfeature "KWallet management" "kde-apps/kwalletmanager" + elog "For more information, read https://wiki.gentoo.org/wiki/KDE#KWallet" + fi +} diff --git a/kde-frameworks/kwallet/Manifest b/kde-frameworks/kwallet/Manifest index 55c2f7a0c725..9cba9e8df6c6 100644 --- a/kde-frameworks/kwallet/Manifest +++ b/kde-frameworks/kwallet/Manifest @@ -1,3 +1,4 @@ DIST kwallet-6.27.0.tar.xz 381384 BLAKE2B 7b5f44e65a4074a57e847265d0b8694ea019715338987a858b988b706109c6184fde528b175fe5012abdb8b885485f8969e010557c042c245951dfcc25393a4e SHA512 5f422280e8ba36a89a0754189f4c8074c13f2cc9b028b03cc4eb72ac93d56ff5c84dfbeb35c9213eee537e4c3576a1e042cbba4da77ce9004a99ed495877013b +DIST kwallet-6.29.0-patchset-1.tar.xz 33220 BLAKE2B 1e3dc5572ae678c1346cb8648af28f9bf2c27488110ec89e30359041733154954911d0ef035dac92bcf1205ad905f7cf9d40cc8f911c4fdec1187fcd86fe286e SHA512 1a046cc6bec24c0a071f80b1f64fd3a77057719d5bf9f8c8b5adc1abc79904a2df03965cdbcca8c36664048f4b0b0d89a7d3fd562b61d0be403597d46a3113f0 DIST kwallet-6.29.0.tar.xz 382604 BLAKE2B a05b6f89f4affc7e3b96fa031d84bf5b4548ac1ed2a20db9ac029e389fd4d1f0b942a8a7989c6c3448fd897246101d51fb081d83295a9ad714c197c32a9b05a7 SHA512 d2584ee74dbedaa09a2360aee620c081b3bba09257a27a24e3d0033aa16a44ff5990c432b67d8557d86fab660bce06fd8fd41e5020c7754c02e8a0575a6e0caa DIST kwallet-6.30.0.tar.xz 378552 BLAKE2B eff1a85b8f5d45a090cb32ceca3a3b007f1aa5ff4b61dedbf9ff9c9842e9e9f4bbb2672286d3c5e5c42937c445cf833b4fcd4ee712b2412f38ab046c43553cd7 SHA512 3d040fbd907d50dd1a82164fc93af144a7b80026acc2cf1eb0fe65677a2c34a13a202a35160f9bfbf282f91905d4597eafa6291e049db766330242fa516e3ac7 diff --git a/kde-frameworks/kwallet/kwallet-6.29.0-r1.ebuild b/kde-frameworks/kwallet/kwallet-6.29.0-r1.ebuild new file mode 100644 index 000000000000..63d35f4064e8 --- /dev/null +++ b/kde-frameworks/kwallet/kwallet-6.29.0-r1.ebuild @@ -0,0 +1,33 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PATCHSET="${P}-patchset-1" +QTMIN=6.10.1 +inherit ecm frameworks.kde.org + +DESCRIPTION="Interface to KWallet Framework providing desktop-wide storage for passwords" +SRC_URI+=" https://dev.gentoo.org/~asturm/distfiles/kde/${PATCHSET}.tar.xz" + +LICENSE="LGPL-2+" +KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86" +IUSE="minimal" + +DEPEND=" + >=dev-qt/qtbase-${QTMIN}:6[dbus,gui,widgets] + =kde-frameworks/kconfig-${KDE_CATV}*:6 +" +RDEPEND="${DEPEND}" +PDEPEND="!minimal? ( =kde-frameworks/kwallet-runtime-${KDE_CATV}* )" + +PATCHES=( "${WORKDIR}/${PATCHSET}" ) # in 6.30 + +src_configure() { + local mycmakeargs=( + -DBUILD_KSECRETD=OFF + -DBUILD_KWALLETD=OFF + -DBUILD_KWALLET_QUERY=OFF + ) + ecm_src_configure +} diff --git a/kde-plasma/plasma-bigscreen/files/plasma-bigscreen-6.7.5-kcmutils-6.31-qml-link.patch b/kde-plasma/plasma-bigscreen/files/plasma-bigscreen-6.7.5-kcmutils-6.31-qml-link.patch new file mode 100644 index 000000000000..3f195289d7cd --- /dev/null +++ b/kde-plasma/plasma-bigscreen/files/plasma-bigscreen-6.7.5-kcmutils-6.31-qml-link.patch @@ -0,0 +1,29 @@ +From e32e240c90287c433b1005d7ffacdde0fe5d4779 Mon Sep 17 00:00:00 2001 +From: Thomas Eleveld <poketho33extra@gmail.com> +Date: Thu, 10 Sep 2026 13:13:36 +0000 +Subject: [PATCH] Fix build error by adding Qt6:Qml to CMakeLists of + kcms/bluetooth + +--- + kcms/bluetooth/CMakeLists.txt | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/kcms/bluetooth/CMakeLists.txt b/kcms/bluetooth/CMakeLists.txt +index 4f57b2cb..da9100d0 100644 +--- a/kcms/bluetooth/CMakeLists.txt ++++ b/kcms/bluetooth/CMakeLists.txt +@@ -6,7 +6,8 @@ kcmutils_add_qml_kcm(kcm_mediacenter_bluetooth SOURCES + devicesproxymodel.cpp devicesproxymodel.h + ) + +-target_link_libraries(kcm_mediacenter_bluetooth ++target_link_libraries(kcm_mediacenter_bluetooth PRIVATE + KF6::KCMUtilsQuick + KF6::BluezQt +-) +\ No newline at end of file ++ Qt6::Qml ++) +-- +GitLab + diff --git a/kde-plasma/plasma-bigscreen/plasma-bigscreen-6.7.5.ebuild b/kde-plasma/plasma-bigscreen/plasma-bigscreen-6.7.5.ebuild index 0b8724b0974e..c978f15e75de 100644 --- a/kde-plasma/plasma-bigscreen/plasma-bigscreen-6.7.5.ebuild +++ b/kde-plasma/plasma-bigscreen/plasma-bigscreen-6.7.5.ebuild @@ -64,3 +64,5 @@ BDEPEND=" >=dev-qt/qtbase-${QTMIN}:6[wayland] dev-util/wayland-scanner " + +PATCHES=( "${FILESDIR}/${P}-kcmutils-6.31-qml-link.patch" ) # in 6.8 diff --git a/media-libs/mesa/Manifest b/media-libs/mesa/Manifest index cb87de1ae048..ada8a5ca4d59 100644 --- a/media-libs/mesa/Manifest +++ b/media-libs/mesa/Manifest @@ -5,6 +5,7 @@ DIST mesa-26.1.6.tar.xz 77770828 BLAKE2B 1bb16b0982b81518d8a0dcfc9b78c487167b783 DIST mesa-26.1.7.tar.xz 77799016 BLAKE2B 1418efe5171982eca1560891f18a8be8249b00c9305e461fe68f6dc7f02ec8eb093f67f02c602a96c77bbc7434cad8129ecf8def686b2528cda5892340c8d2db SHA512 9acc75c3d6386f90cf761dfa42e72b1c36d399a6905127d18aa3eb84d665502da7c3cebead82fdbca91ad510673ba7e296b5e148602d6db7e79172d6155f3ec5 DIST mesa-26.1.8.tar.xz 77827888 BLAKE2B 173997a90bbb27d8f6b1e4c349430d063a9264efddf03c9449f93b9e0438fa38948dfbfecddb798cd57818070953b8c525cb3796807101632b1b642c4d6b0361 SHA512 eb3d46ae9aaba70fdd908486cef24041fec9264ddf586eaebbba65ce55e716d306ef9e91be83e742dfaec4dfc94105a5cd3a36b29bf56614febcbcf6c1f8b516 DIST mesa-26.2.1.tar.xz 68500756 BLAKE2B f5ec3451d18da9336d775259dd0d3f0c73c81d0857ba7da32dd296aba258ad5b8424fb8781582a838375e99710451d2aaeda94def604ad006e5a5a378b44d30a SHA512 d4bc755442c6573a1b75cafad50ec66594fa0ca7599c525f368bdecbd551a970e890ed6b044d9251f84278d27dcaa30649fbf4f4bf0adbaa76e1cc1ba6a1181f +DIST mesa-26.2.2.tar.xz 68533264 BLAKE2B a9924a7cbac5dbdb4d93ba8499c49a6be51edd8ec5b258f2986a5690b04f6898012389dcc7e07097bad0defed52e9255d3a2c82bb6101a531b17fde82ef69afc SHA512 55b1234c8653dad9b85ba3de7b777a0d957909baf4628f0c00e21d4ba89c004cb687a1dcf8da46ed0a092231dd4f859027509f83ad8c558750845ba470902615 DIST paste-1.0.14.crate 18157 BLAKE2B 35e8548611c51ee75f4d04926149e5e54870d7073d9b635d550a6fa0f85891f57f326bdbcff3dd8618cf40f8e08cf903ef87d9c034d5921d8b91e1db842cdd7c SHA512 3a793f0e5e773a7f7defc798a4c17ae9a40d715144632ea6cb0a8c785e14c4212046491df016bb9838281f8eaf327a79f01c1e2ac5f26785c028bc880faff9ee DIST proc-macro2-1.0.86.crate 48958 BLAKE2B 4b89e07f23af8328dbb34fe2b3f1b202f1e6a3885a6269740a23359b41bb4099ac2484565d3b2b0936261689ca525785ac620c766997234fd8d0f409e80e5ea3 SHA512 1cdb7e22a35ae231d880c9420784c9acf97bda2db258b3d34aae5061dc1858449defe19a49e12c6a4173906aa72a4115059ac2db0fc760205fd2ab8b5b414434 DIST quote-1.0.35.crate 28136 BLAKE2B 81424245e1e2b94459df68bb3a9a866c6a364102b5e1d010ede9c5f8278f8406d7b651957d091c5914e936b494b0f6e9a6a1dd8b7d35cd7d7100f86dee4ec12e SHA512 f5314fb6af17cf36c228e1970c569c29ec248954a450a5f90ba9e2896d04f74904c9cec5a1f74325f2489295a94491eee4ce8fb461e22cd4b34e53f1f881efd2 diff --git a/media-libs/mesa/mesa-26.2.2.ebuild b/media-libs/mesa/mesa-26.2.2.ebuild new file mode 100644 index 000000000000..51b130171aea --- /dev/null +++ b/media-libs/mesa/mesa-26.2.2.ebuild @@ -0,0 +1,446 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( {18..22} ) +LLVM_OPTIONAL=1 +CARGO_OPTIONAL=1 +PYTHON_COMPAT=( python3_{13..14} ) + +inherit flag-o-matic linux-info llvm-r2 meson-multilib python-any-r1 toolchain-funcs + +MY_P="${P/_/-}" + +CRATES=" + paste@1.0.14 + proc-macro2@1.0.86 + quote@1.0.35 + rustc-hash@2.1.1 + syn@2.0.87 + unicode-ident@1.0.12 +" + +RUST_MIN_VER="1.85.0" +RUST_MULTILIB=1 +RUST_OPTIONAL=1 + +inherit cargo + +DESCRIPTION="OpenGL-like graphic library for Linux" +HOMEPAGE="https://mesa3d.org/" + +if [[ ${PV} == 9999 ]]; then + EGIT_REPO_URI="https://gitlab.freedesktop.org/mesa/mesa.git" + inherit git-r3 +else + SRC_URI=" + https://archive.mesa3d.org/${MY_P}.tar.xz + " + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-solaris" +fi + +# This should be {CARGO_CRATE_URIS//.crate/.tar.gz} to correspond to the wrap files, +# but there are "stale" distfiles on the mirrors with the wrong names. +# export MESON_PACKAGE_CACHE_DIR="${DISTDIR}" +SRC_URI+=" + opencl? ( ${CARGO_CRATE_URIS} ) + !opencl? ( video_cards_nvk? ( ${CARGO_CRATE_URIS} ) ) +" + +S="${WORKDIR}/${MY_P}" +EGIT_CHECKOUT_DIR=${S} + +LICENSE="MIT SGI-B-2.0" +SLOT="0" + +VIDEO_CARDS=" + asahi d3d12 freedreno i915 imagination intel lavapipe lima nouveau nvk + panfrost r300 r600 radeon radeonsi v3d vc4 virgl vivante vmware zink" +for card in ${VIDEO_CARDS}; do + IUSE_VIDEO_CARDS+=" video_cards_${card}" +done + +IUSE="${IUSE_VIDEO_CARDS} + cpu_flags_x86_sse2 debug +llvm + lm-sensors opencl +opengl +proprietary-codecs + sysprof test unwind vaapi valgrind vulkan + wayland +X +zstd" +RESTRICT="!test? ( test )" +REQUIRED_USE=" + llvm? ( ${LLVM_REQUIRED_USE} ) + video_cards_i915? ( llvm ) + video_cards_lavapipe? ( llvm vulkan ) + video_cards_radeon? ( x86? ( llvm ) amd64? ( llvm ) ) + video_cards_r300? ( x86? ( llvm ) amd64? ( llvm ) ) + video_cards_zink? ( vulkan opengl ) + video_cards_nvk? ( vulkan video_cards_nouveau ) +" + +LIBDRM_DEPSTRING=">=x11-libs/libdrm-2.4.133" +RDEPEND=" + ${LIBDRM_DEPSTRING}[${MULTILIB_USEDEP}] + >=dev-libs/expat-2.1.0-r3[${MULTILIB_USEDEP}] + >=dev-util/spirv-tools-1.3.231.0[${MULTILIB_USEDEP}] + >=media-libs/libglvnd-1.3.2[X?,${MULTILIB_USEDEP}] + >=virtual/zlib-1.2.9:=[${MULTILIB_USEDEP}] + unwind? ( sys-libs/libunwind[${MULTILIB_USEDEP}] ) + llvm? ( + $(llvm_gen_dep " + llvm-core/llvm:\${LLVM_SLOT}[llvm_targets_AMDGPU(+),${MULTILIB_USEDEP}] + opencl? ( + dev-util/spirv-llvm-translator:\${LLVM_SLOT} + llvm-core/clang:\${LLVM_SLOT}[llvm_targets_AMDGPU(+),${MULTILIB_USEDEP}] + =llvm-runtimes/libclc-\${LLVM_SLOT}*[spirv(-)] + ) + ") + video_cards_r600? ( + virtual/libelf:0=[${MULTILIB_USEDEP}] + ) + video_cards_radeon? ( + virtual/libelf:0=[${MULTILIB_USEDEP}] + ) + ) + lm-sensors? ( sys-apps/lm-sensors:=[${MULTILIB_USEDEP}] ) + opencl? ( + >=virtual/opencl-3 + llvm-runtimes/libclc[spirv(-)] + virtual/libelf:0= + ) + vaapi? ( + >=media-libs/libva-1.7.3:=[${MULTILIB_USEDEP}] + ) + video_cards_i915? ( + ${LIBDRM_DEPSTRING}[video_cards_intel] + ) + video_cards_nvk? ( + virtual/libelf:0=[${MULTILIB_USEDEP}] + ) + video_cards_radeonsi? ( + ${LIBDRM_DEPSTRING}[video_cards_amdgpu] + virtual/libelf:0=[${MULTILIB_USEDEP}] + ) + video_cards_zink? ( media-libs/vulkan-loader:=[${MULTILIB_USEDEP}] ) + vulkan? ( + media-libs/libdisplay-info:=[${MULTILIB_USEDEP}] + virtual/libudev:= + ) + wayland? ( >=dev-libs/wayland-1.18.0[${MULTILIB_USEDEP}] ) + X? ( + >=x11-libs/libX11-1.8[${MULTILIB_USEDEP}] + >=x11-libs/libxshmfence-1.1[${MULTILIB_USEDEP}] + >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}] + >=x11-libs/libXxf86vm-1.1.3[${MULTILIB_USEDEP}] + >=x11-libs/libxcb-1.17:=[${MULTILIB_USEDEP}] + x11-libs/libXfixes[${MULTILIB_USEDEP}] + x11-libs/xcb-util-keysyms[${MULTILIB_USEDEP}] + ) + zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] ) +" + +DEPEND="${RDEPEND} + sysprof? ( >=dev-util/sysprof-capture-49.0[${MULTILIB_USEDEP}] ) + video_cards_d3d12? ( >=dev-util/directx-headers-1.619.1[${MULTILIB_USEDEP}] ) + valgrind? ( dev-debug/valgrind ) + wayland? ( >=dev-libs/wayland-protocols-1.41 ) + X? ( + x11-libs/libXrandr[${MULTILIB_USEDEP}] + x11-base/xorg-proto + ) +" + +CLC_DEPSTRING=" + ~dev-util/mesa_clc-${PV}[video_cards_asahi?,video_cards_panfrost?] + llvm-runtimes/libclc[spirv(-)] +" +BDEPEND=" + ${PYTHON_DEPS} + opencl? ( + >=dev-util/bindgen-0.71.1 + ${RUST_DEPEND} + ) + >=dev-build/meson-1.7.0 + app-alternatives/yacc + sys-devel/flex + virtual/pkgconfig + $(python_gen_any_dep " + >=dev-python/mako-0.8.0[\${PYTHON_USEDEP}] + dev-python/packaging[\${PYTHON_USEDEP}] + dev-python/pyyaml[\${PYTHON_USEDEP}] + ") + video_cards_asahi? ( ${CLC_DEPSTRING} ) + video_cards_intel? ( ${CLC_DEPSTRING} ) + video_cards_panfrost? ( ${CLC_DEPSTRING} ) + vulkan? ( + dev-util/glslang + video_cards_imagination? ( ${CLC_DEPSTRING} ) + video_cards_nvk? ( + >=dev-util/bindgen-0.71.1 + >=dev-util/cbindgen-0.26.0 + ${RUST_DEPEND} + ${CLC_DEPSTRING} + ) + ) + wayland? ( dev-util/wayland-scanner ) +" + +QA_WX_LOAD=" +x86? ( + usr/lib/libgallium-*.so + usr/lib/libGLX_mesa.so.0.0.0 +)" + +src_unpack() { + if [[ ${PV} == 9999 ]]; then + git-r3_src_unpack + else + unpack ${MY_P}.tar.xz + fi + + if use opencl || use video_cards_nvk; then + # We need this because we cannot tell meson to use DISTDIR yet + mkdir -p "${S}"/subprojects/packagecache || die + local i + for i in ${CRATES}; do + i=${i/@/-} + ln -s "${DISTDIR}/${i}.crate" \ + "${S}/subprojects/packagecache/${i}.tar.gz" || die + done + fi +} + +pkg_pretend() { + if [[ ${MERGE_TYPE} != binary ]] && use test; then + tc-check-openmp + fi + + if use vulkan; then + if ! use video_cards_asahi && + ! use video_cards_d3d12 && + ! use video_cards_freedreno && + ! use video_cards_imagination && + ! use video_cards_intel && + ! use video_cards_lavapipe && + ! use video_cards_nouveau && + ! use video_cards_nvk && + ! use video_cards_panfrost && + ! use video_cards_radeonsi && + ! use video_cards_v3d && + ! use video_cards_virgl; then + ewarn "Ignoring USE=vulkan since VIDEO_CARDS does not contain asahi, d3d12, freedreno, imagination, intel, lavapipe, nouveau, nvk, panfrost, radeonsi, v3d, or virgl" + fi + fi + + # VA + if use vaapi; then + if ! use video_cards_d3d12 && + ! use video_cards_nouveau && + ! use video_cards_r600 && + ! use video_cards_radeonsi && + ! use video_cards_virgl; then + ewarn "Ignoring USE=vaapi since VIDEO_CARDS does not contain d3d12, nouveau, r600, radeonsi, or virgl" + fi + fi + + if ! use llvm; then + use opencl && ewarn "Ignoring USE=opencl since USE does not contain llvm" + fi +} + +python_check_deps() { + python_has_version -b ">=dev-python/mako-0.8.0[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/packaging[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/pyyaml[${PYTHON_USEDEP}]" || return 1 +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]] && use test; then + tc-check-openmp + fi + + # warning message for bug 459306 + if use llvm && has_version llvm-core/llvm[!debug=]; then + ewarn "Mismatch between debug USE flags in media-libs/mesa and llvm-core/llvm" + ewarn "detected! This can cause problems. For details, see bug 459306." + fi + + if use video_cards_intel || + use video_cards_radeonsi; then + if kernel_is -ge 5 11 3; then + CONFIG_CHECK="~KCMP" + elif kernel_is -ge 5 11; then + CONFIG_CHECK="~CHECKPOINT_RESTORE" + elif kernel_is -ge 5 10 20; then + CONFIG_CHECK="~KCMP" + else + CONFIG_CHECK="~CHECKPOINT_RESTORE" + fi + linux-info_pkg_setup + fi + + use llvm && llvm-r2_pkg_setup + python-any-r1_pkg_setup + + if use opencl || (use vulkan && use video_cards_nvk); then + rust_pkg_setup + fi +} + +src_prepare() { + default + sed -i -e "/^PLATFORM_SYMBOLS/a '__gentoo_check_ldflags__'," \ + bin/symbols-check.py || die # bug #830728 +} + +multilib_src_configure() { + local emesonargs=() + + # bug #932591 and https://gitlab.freedesktop.org/mesa/mesa/-/issues/11140 + filter-lto + + local platforms + use X && platforms+="x11" + use wayland && platforms+=",wayland" + emesonargs+=(-Dplatforms=${platforms#,}) + + if use video_cards_d3d12 || + use video_cards_nouveau || + use video_cards_r600 || + use video_cards_radeonsi || + use video_cards_virgl; then + emesonargs+=($(meson_feature vaapi gallium-va)) + use vaapi && emesonargs+=( -Dva-libs-path="${EPREFIX}"/usr/$(get_libdir)/va/drivers ) + else + emesonargs+=(-Dgallium-va=disabled) + fi + + if use video_cards_d3d12; then + emesonargs+=($(meson_feature vaapi gallium-d3d12-video)) + fi + + gallium_enable !llvm softpipe + gallium_enable llvm llvmpipe + gallium_enable video_cards_asahi asahi + gallium_enable video_cards_d3d12 d3d12 + gallium_enable video_cards_freedreno freedreno + gallium_enable video_cards_i915 i915 + gallium_enable video_cards_intel crocus iris + gallium_enable video_cards_lima lima + gallium_enable video_cards_nouveau nouveau + gallium_enable video_cards_panfrost panfrost + gallium_enable video_cards_v3d v3d + gallium_enable video_cards_vc4 vc4 + gallium_enable video_cards_virgl virgl + gallium_enable video_cards_vivante etnaviv + gallium_enable video_cards_vmware svga + gallium_enable video_cards_zink zink + + gallium_enable video_cards_r300 r300 + gallium_enable video_cards_r600 r600 + gallium_enable video_cards_radeonsi radeonsi + if ! use video_cards_r300 && + ! use video_cards_r600; then + gallium_enable video_cards_radeon r300 r600 + fi + + if use llvm && use opencl; then + PKG_CONFIG_PATH="$(get_llvm_prefix)/$(get_libdir)/pkgconfig" + # See https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/docs/rusticl.rst + emesonargs+=( + $(meson_native_true gallium-rusticl) + -Drust_std=2021 + ) + fi + + if use vulkan; then + vulkan_enable video_cards_asahi asahi + vulkan_enable video_cards_d3d12 microsoft-experimental + vulkan_enable video_cards_freedreno freedreno + vulkan_enable video_cards_imagination imagination + vulkan_enable video_cards_intel intel intel_hasvk + vulkan_enable video_cards_lavapipe swrast + vulkan_enable video_cards_nvk nouveau + vulkan_enable video_cards_panfrost panfrost + vulkan_enable video_cards_radeonsi amd + vulkan_enable video_cards_v3d broadcom + vulkan_enable video_cards_vc4 broadcom + vulkan_enable video_cards_virgl virtio + emesonargs+=(-Dvulkan-layers=anti-lag,device-select,overlay) + fi + + driver_list() { + local drivers="$(sort -u <<< "${1// /$'\n'}")" + echo "${drivers//$'\n'/,}" + } + + if use opengl && use X; then + emesonargs+=(-Dglx=dri) + else + emesonargs+=(-Dglx=disabled) + fi + + if [[ "${ABI}" == amd64 ]]; then + emesonargs+=($(meson_feature video_cards_intel intel-rt)) + fi + + if use video_cards_asahi || + use video_cards_intel || + use video_cards_nvk || + use video_cards_panfrost || + { use vulkan && use video_cards_imagination; }; then + emesonargs+=(-Dmesa-clc=system) + fi + + if use video_cards_asahi || + use video_cards_panfrost; then + emesonargs+=(-Dprecomp-compiler=system) + fi + + use debug && EMESON_BUILDTYPE=debug + + emesonargs+=( + $(meson_use test build-tests) + -Dexpat=enabled + $(meson_use opengl) + $(meson_feature opengl gbm) + $(meson_feature opengl gles1) + $(meson_feature opengl gles2) + $(meson_feature opengl glvnd) + $(meson_feature opengl egl) + $(meson_feature llvm) + $(meson_feature lm-sensors lmsensors) + $(meson_feature unwind libunwind) + $(meson_feature vulkan display-info) + $(meson_feature zstd) + $(meson_use llvm amd-use-llvm) + $(meson_use sysprof) + $(meson_use cpu_flags_x86_sse2 sse2) + -Dvalgrind=$(usex valgrind auto disabled) + -Dvideo-codecs=$(usex proprietary-codecs "all" "all_free") + -Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[*]}") + -Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[*]}") + -Db_ndebug=$(usex debug false true) + -Dallow-broken-lto=true + ) + meson_src_configure +} + +multilib_src_test() { + meson_src_test -t 100 +} + +# $1 - VIDEO_CARDS flag (check skipped for "--") +# other args - names of DRI drivers to enable +gallium_enable() { + if [[ $1 == -- ]] || use $1; then + shift + GALLIUM_DRIVERS+=("$@") + fi +} + +vulkan_enable() { + if [[ $1 == -- ]] || use $1; then + shift + VULKAN_DRIVERS+=("$@") + fi +} diff --git a/net-dialup/freeradius/Manifest b/net-dialup/freeradius/Manifest index d80b11b3284d..adb9914eef85 100644 --- a/net-dialup/freeradius/Manifest +++ b/net-dialup/freeradius/Manifest @@ -1,2 +1,3 @@ +DIST freeradius-server-3.2.10.tar.bz2 3727834 BLAKE2B 2e4b88f13c5742e60fd5b2931e93cb861b8fd0b9b12ba340a08f185884b64e49f035e14387a19b9ae4ae7c71ec9249132c0ccf19febfcdefd4725ddef0877a77 SHA512 c1928f6123848549797b7f527841b0bfcd61f2da02ddfe6c1cb49dd36af2da05c06c8f33c95330ad43f0326e3d1c893e3dff1797f499eac452bb5ef1ada00b16 DIST freeradius-server-3.2.6.tar.bz2 3500878 BLAKE2B 0af7cdf7fb784f2d5019f3bcb06d1d44dca046c9a4513d780ab032367001b6a67e9ea17a3a5b4609b9d7b936647e60c96e35188ba9644c4360071ac8d021bd58 SHA512 3fdd0c1bf82cf7ea2e9ee46cda1061ef06c97eddd70b75be17f05d9dc13771b339d01f140b4288632700d6315c1ac506d225d1e83a179b6f7e8338e2ae42d7e8 DIST freeradius-server-3.2.8.tar.bz2 3671952 BLAKE2B 6266c00c68cbb02de65f88d976453fdcdda552d7554199030640f9bcd60f208afaf75aaac8fbf0a2eea0022eb23ad7b809cb910d48618261ea9f52100732c469 SHA512 31db199c3847bfdb80b726e16cece0d660bd741fae0fca8ba96aaaee30972c657438c4e1fdaa7ef070f84d8b7889a8da8db1defc542b0c0e18f247156f17e0ae diff --git a/net-dialup/freeradius/freeradius-3.2.10.ebuild b/net-dialup/freeradius/freeradius-3.2.10.ebuild new file mode 100644 index 000000000000..75d9971e3eb2 --- /dev/null +++ b/net-dialup/freeradius/freeradius-3.2.10.ebuild @@ -0,0 +1,327 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{13..14} ) +AUTOTOOLS_DEPEND=">=dev-build/autoconf-2.69" +inherit autotools pam python-single-r1 systemd + +MY_PN=${PN}-server +MY_P=${MY_PN}-${PV} +MY_PV=$(ver_rs 1- "_") + +DESCRIPTION="Highly configurable free RADIUS server" +HOMEPAGE="https://www.freeradius.org/" +SRC_URI="https://github.com/FreeRADIUS/freeradius-server/releases/download/release_${MY_PV}/${MY_P}.tar.bz2" +S="${WORKDIR}"/${MY_P} + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~sparc ~x86" + +IUSE=" + debug iodbc kafka kerberos ldap memcached mysql mongodb odbc oracle pam + postgres python readline redis samba selinux sqlite ssl systemd yubikey +" + +# NOTE: Temporary freeradius doesn't support linking with mariadb client +# libs also if code is compliant, will be available in the next release. +# (http://lists.freeradius.org/pipermail/freeradius-devel/2018-October/013228.html)a + +# TODO: rlm_mschap works with both samba library or without. I need to avoid +# linking of samba library if -samba is used. + +# TODO: unconditional json-c for now as automagic dep despite efforts to stop it +# ditto libpcap. Can restore USE=rest, USE=pcap if/when fixed. + +DEPEND=" + acct-group/radius + acct-user/radius + dev-libs/libltdl + dev-libs/libpcre + dev-libs/json-c:= + dev-lang/perl:= + net-libs/libpcap + net-misc/curl + sys-libs/gdbm:= + sys-libs/libcap + sys-libs/talloc + virtual/libcrypt:= + iodbc? ( dev-db/libiodbc ) + kafka? ( dev-libs/librdkafka:= ) + kerberos? ( virtual/krb5 ) + ldap? ( net-nds/openldap:= ) + memcached? ( + || ( + dev-libs/libmemcached-awesome + dev-libs/libmemcached + ) + ) + mysql? ( dev-db/mysql-connector-c:= ) + mongodb? ( >=dev-libs/mongo-c-driver-1.13.0-r1 ) + odbc? ( dev-db/unixODBC ) + oracle? ( dev-db/oracle-instantclient[sdk] ) + pam? ( sys-libs/pam ) + postgres? ( dev-db/postgresql:= ) + python? ( ${PYTHON_DEPS} ) + readline? ( sys-libs/readline:= ) + redis? ( dev-libs/hiredis:= ) + samba? ( net-fs/samba ) + sqlite? ( dev-db/sqlite:3 ) + ssl? ( >=dev-libs/openssl-1.0.2:=[-bindist(-)] ) + systemd? ( sys-apps/systemd:= ) + yubikey? ( sys-auth/libyubikey ) +" +RDEPEND=" + ${DEPEND} + selinux? ( sec-policy/selinux-radius ) +" + +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +# bug #721040 +QA_SONAME="usr/lib.*/libfreeradius-.*.so" + +QA_CONFIG_IMPL_DECL_SKIP=( + # Not available on Linux (bug #900048) + htonll + htonlll +) + +PATCHES=( + "${FILESDIR}/${PN}-3.2.8-systemd-service.patch" + "${FILESDIR}/${PN}-3.2.3-configure-c99.patch" +) + +pkg_setup() { + if use python ; then + python-single-r1_pkg_setup + export PYTHONBIN="${EPYTHON}" + fi +} + +src_prepare() { + default + + # Most of the configuration options do not appear as ./configure + # switches. Instead it identifies the directories that are available + # and run through them. These might check for the presence of + # various libraries, in which case they are not built. To avoid + # automagic dependencies, we just remove all the modules that we're + # not interested in using. + # TODO: shift more of these into configure args below as things + # are a bit better now. + use ssl || { rm -r src/modules/rlm_eap/types/rlm_eap_{tls,ttls,peap} || die ; } + use ldap || { rm -r src/modules/rlm_ldap || die ; } + use kerberos || { rm -r src/modules/rlm_krb5 || die ; } + use memcached || { rm -r src/modules/rlm_cache/drivers/rlm_cache_memcached || die ; } + use pam || { rm -r src/modules/rlm_pam || die ; } + + # Drop support for python2 + rm -r src/modules/rlm_python || die + + use python || { rm -r src/modules/rlm_python3 || die ; } + #use rest || { rm -r src/modules/rlm_rest || die ; } + # Do not install ruby rlm module, bug #483108 + rm -r src/modules/rlm_ruby || die + + # These are all things we don't have in portage/I don't want to deal + # with myself. + # + # Requires TNCS library + rm -r src/modules/rlm_eap/types/rlm_eap_tnc || die + # Requires libeap-ikev2 + rm -r src/modules/rlm_eap/types/rlm_eap_ikev2 || die + # Requires some membership.h + rm -r src/modules/rlm_opendirectory || die + # Requires firebird + rm -r ./src/modules/rlm_sql/drivers/rlm_sql_firebird || die + # ? + rm -r src/modules/rlm_sql/drivers/rlm_sql_{db2,freetds} || die + + # SQL drivers that are not part of experimental are loaded from a + # file, so we have to remove them from the file itself when we + # remove them. + usesqldriver() { + local flag=$1 + local driver=rlm_sql_${2:-${flag}} + + if ! use ${flag} ; then + rm -r src/modules/rlm_sql/drivers/${driver} || die + sed -i -e /${driver}/d src/modules/rlm_sql/stable || die + fi + } + + sed -i \ + -e 's:^#\tuser = :\tuser = :g' \ + -e 's:^#\tgroup = :\tgroup = :g' \ + -e 's:/var/run/radiusd:/run/radiusd:g' \ + -e '/^run_dir/s:${localstatedir}::g' \ + raddb/radiusd.conf.in || die + + # - Verbosity + # - B uild shared libraries using jlibtool -shared + sed -i \ + -e 's|--silent ||g' \ + -e 's:--mode=\(compile\|link\):& -shared:g' \ + scripts/libtool.mk || die + + # Crude measure to stop jlibtool from running ranlib and ar + sed -i \ + -e '/LIBRARIAN/s|".*"|"true"|g' \ + -e '/RANLIB/s|".*"|"true"|g' \ + scripts/jlibtool.c || die + + usesqldriver mysql + usesqldriver postgres postgresql + usesqldriver iodbc + usesqldriver odbc unixodbc + usesqldriver oracle + usesqldriver sqlite + usesqldriver mongodb mongo + + eautoreconf +} + +src_configure() { + # Do not try to enable static with static-libs; upstream is a + # massacre of libtool best practices so you also have to make sure + # to --enable-shared explicitly. + local myeconfargs=( + # Revisit confcache when not needing to use ac_cv anymore + # for automagic deps. + #--cache-file="${S}"/config.cache + + --enable-shared + --disable-ltdl-install + --disable-silent-rules + --with-system-libtool + --with-system-libltdl + + --enable-strict-dependencies + --without-rlm_couchbase + --without-rlm_securid + --without-rlm_unbound + --without-rlm_idn + #--without-rlm_json + #$(use_with rest libfreeradius-json) + + # Our OpenSSL should be patched. Avoid false-positive failures. + --disable-openssl-version-check + --with-ascend-binary + --with-udpfromto + --with-dhcp + --with-pcre + --with-iodbc-include-dir=/usr/include/iodbc + --with-experimental-modules + --with-docdir=/usr/share/doc/${PF} + --with-logdir=/var/log/radius + + $(use_enable debug developer) + $(use_with kafka rlm_kafka) + $(use_with ldap edir) + $(use_with redis rlm_cache_redis) + $(use_with redis rlm_redis) + $(use_with redis rlm_rediswho) + $(use_with ssl openssl) + $(use_with systemd systemd) + $(use_with yubikey rlm_yubikey) + ) + + # bug #77613 + if has_version app-crypt/heimdal ; then + myeconfargs+=( --enable-heimdal-krb5 ) + fi + + if use python ; then + myeconfargs+=( + --with-rlm-python3-bin=${EPYTHON} + --with-rlm-python3-config-bin=${EPYTHON}-config + ) + fi + + if ! use readline ; then + export ac_cv_lib_readline=no + fi + + #if ! use pcap ; then + # export ac_cv_lib_pcap_pcap_open_live=no + # export ac_cv_header_pcap_h=no + #fi + + econf "${myeconfargs[@]}" +} + +src_compile() { + # Verbose, do not generate certificates + emake \ + Q='' ECHO=true \ + LOCAL_CERT_PRODUCTS='' +} + +src_install() { + dodir /etc + + diropts -m0750 -o root -g radius + dodir /etc/raddb + + diropts -m0750 -o radius -g radius + dodir /var/log/radius + + keepdir /var/log/radius/radacct + diropts + + # - Verbose, do not install certificates + # - Parallel install fails (bug #509498) + emake -j1 \ + Q='' ECHO=true \ + LOCAL_CERT_PRODUCTS='' \ + R="${D}" \ + install + + if use pam ; then + pamd_mimic_system radiusd auth account password session + fi + + # bug #711756 + fowners -R radius:radius /etc/raddb + fowners -R radius:radius /var/log/radius + + dodoc CREDITS + + rm "${ED}"/usr/sbin/rc.radiusd || die + + newinitd "${FILESDIR}"/radius.init-r4 radiusd + newconfd "${FILESDIR}"/radius.conf-r6 radiusd + + if ! use systemd ; then + # If systemd builtin is not enabled we need use Type=Simple + # as systemd .service + sed -i -e 's:^Type=.*::g' \ + -e 's:^WatchdogSec=.*::g' -e 's:^NotifyAccess=all.*::g' \ + "${S}"/debian/freeradius.service + fi + + systemd_dounit "${S}"/debian/freeradius.service + + find "${ED}" \( -name "*.a" -o -name "*.la" \) -delete || die +} + +pkg_config() { + if use ssl ; then + cd "${ROOT}"/etc/raddb/certs || die + + ./bootstrap || die "Error while running ./bootstrap script." + chown root:radius "${ROOT}"/etc/raddb/certs || die + chown root:radius "${ROOT}"/etc/raddb/certs/ca.pem || die + chown root:radius "${ROOT}"/etc/raddb/certs/server.{key,crt,pem} || die + fi +} + +pkg_preinst() { + if ! has_version ${CATEGORY}/${PN} && use ssl ; then + elog "You have to run \`emerge --config =${CATEGORY}/${PF}\` to be able" + elog "to start the radiusd service." + fi +} diff --git a/net-libs/nodejs/Manifest b/net-libs/nodejs/Manifest index 2b8ebff6efb7..0208ef5c16d9 100644 --- a/net-libs/nodejs/Manifest +++ b/net-libs/nodejs/Manifest @@ -6,7 +6,9 @@ DIST node-v22.21.1.tar.xz 50151568 BLAKE2B 5a7ab1b746c7c25887ed7e9a5728b8c01287c DIST node-v22.23.2.tar.xz 51362684 BLAKE2B ddf19407ada0f94f4cc08814f633099f38044eb9709143d06509eff76b481736a26712c55fe3abc67e2ee18cfd524841b976ba40074699fe13c05d55a265d771 SHA512 92b959098fb7fcfe80776a983d2ae52479692a63c49087c97a0ee2423147a5222b1e1994e98ff650483322cf3a1f1cca8a51f3389993c0ff5fc13b6d1f4ef4ef DIST node-v24.14.0.tar.xz 53987528 BLAKE2B 3d181bdb01c82ea10add1251b97614ea8bb2cc1de52044a639a1955339c4861e84600bd89c0e951f20f4dc61352838142a4d87bd07380936661d89a7f68bc0e5 SHA512 44f8a4758f34373f44daf1498ecb83261788251a43c9063bc3572ebf9bd647adafbc44474127771f5f9e36aa01feee1ad991e01ab3ec5a892607194441f76aaa DIST node-v24.19.0.tar.xz 55505276 BLAKE2B 7a7caa4fc46e598010c8a27e1463018b2cb65d430888aa7181c5e8db5e213379723b2d29f2f446d542900c0850b0dc3f4dfe98d942d2caae244f6a2a93b58c47 SHA512 82057740cace16e02fa973d5fef5fc265150e3c278cc232d32ad7d5a9163b8cbfdf437de8675b8a174c9883a94a680de2ac1c2184957767efd5add3fa8380751 +DIST node-v24.21.0.tar.xz 57357488 BLAKE2B a907f5f23668d4a2839aebb9520417c0c4ee155881546ad8bbd8df7249decd070e4826a2d2465467c4295d8b9e9c5032df5ce337275df562cf02593419030401 SHA512 bb25a4fb9e5d9bc7ce05d2dfe48d9cb3524ce2e61f61105e0a769c56ac18f051825251a72fa5abe8ab5c596b0f2706bafec4d55d0a8a1bfef019f77e46520f03 DIST node-v26.3.0.tar.xz 59811728 BLAKE2B a69f067e63883239a38397484b3f92ff4ca8a1ae651cb4f3328e6f994f16260751f3f64ff6c914aeef837d1f6deade8649979f091a044c86c8467058bb0065d2 SHA512 464a24d2536f3ead35325cfb268355fcc66a95260519174cba847efa4037ae2529c24781595b11aae45810570f41c0d2f2d7db2ed365baccda1017a7131a7efe DIST node-v26.6.0.tar.xz 61545700 BLAKE2B b6211e62009ed0e91ff5ac90ce031871d4e637286a590c12f28c498e2a784c88a61793e4609871bd8e13826276d5df1d14b093210703e680d14e4450a045e4a4 SHA512 e2e750f12c5c13bc0221f324bab3e5b2f5ba92490bcddb1a2162ad826a3feae18c98444d512b6fa5094b16d9e5501dd4aeb905184038c77bca95c882ae5a4f77 DIST node-v26.7.0.tar.xz 60914892 BLAKE2B 7a93d5a1e8341944d5cb8e537265c4d792ba447e249b813d90ef1ab3ddd931eb23ca4617993e37e79cc08c55a1d7a769ddfc898dc5b7225f676dc6ead55bc461 SHA512 d7dd7bf0485369c29ad90740c404b647696efd79c6a59f6a3da0b72cdb2740a5855fd62a55985516b8649d9c3359ce4141840f6e6a93427eaa5c87a3cd93e9c9 DIST node-v26.8.1.tar.xz 61293584 BLAKE2B 961996ccea2be7e5aafba7163342b04f929a8aafc95a17e1ed8e3a99b2439a5ee206370b2dd5a4af986ebe35212e36bc3ab7ba77282a5d8626cfba3320273c99 SHA512 d85f4cd844bda35322fe1613d868b09b3024c6bad3d5e57e72304c8c288d5a238998bd7bf7ce223cf537d99364b935634db3bcac35f5a3c557a4e21f8c0a5443 +DIST node-v26.8.2.tar.xz 61307988 BLAKE2B ba0c72f1085592dae974334a5ddf5da4f664b9c7ebee8361b8a4a5ba2bb588f21b9940272962e71bcfc5f64e9aa91b850b464a975d6ed57092c305480428f2c8 SHA512 b4331a00b3c1aa508d374b6d09042dedf4fd78c21c5aec46b3017c5fa1aa67f670bc5ef20449e625cd40b775b9582c44f018e321637883cbfc567e46c174c64e diff --git a/net-libs/nodejs/nodejs-24.21.0.ebuild b/net-libs/nodejs/nodejs-24.21.0.ebuild new file mode 100644 index 000000000000..ded4ee0b1d1c --- /dev/null +++ b/net-libs/nodejs/nodejs-24.21.0.ebuild @@ -0,0 +1,294 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CONFIG_CHECK="~ADVISE_SYSCALLS" +PYTHON_COMPAT=( python3_{13..14} ) +PYTHON_REQ_USE="threads(+)" + +inherit bash-completion-r1 check-reqs flag-o-matic linux-info +inherit ninja-utils pax-utils python-any-r1 toolchain-funcs xdg-utils + +DESCRIPTION="A JavaScript runtime built on Chrome's V8 JavaScript engine" +HOMEPAGE="https://nodejs.org/" +LICENSE="Apache-1.1 Apache-2.0 BlueOak-1.0.0 BSD BSD-2 MIT npm? ( Artistic-2 )" + +if [[ ${PV} == *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/nodejs/node" + SLOT="0" +else + SRC_URI=" + https://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz + " + SLOT="0/$(ver_cut 1)" + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86 ~x64-macos" + S="${WORKDIR}/node-v${PV}" +fi + +IUSE="corepack cpu_flags_x86_sse2 debug doc +icu +inspector lto +npm pax-kernel +snapshot +ssl +system-icu +system-ssl test" +REQUIRED_USE="inspector? ( icu ssl ) + npm? ( ssl ) + system-icu? ( icu ) + system-ssl? ( ssl ) + x86? ( cpu_flags_x86_sse2 )" + +RESTRICT="!test? ( test )" + +COMMON_DEPEND=">=app-arch/brotli-1.1.0:= + dev-db/sqlite:3 + >=dev-cpp/ada-4.0.0:= + >=dev-cpp/simdutf-7.3.4:= + >=dev-libs/libuv-1.52.1:= + >=dev-libs/simdjson-4.6.7:= + >=net-dns/c-ares-1.34.8:= + >=net-libs/nghttp2-1.70.0:= + >=net-libs/nghttp3-1.18.0:= + virtual/zlib:= + corepack? ( !sys-apps/yarn ) + system-icu? ( >=dev-libs/icu-78:= ) + system-ssl? ( + >=net-libs/ngtcp2-1.25.0:= + >=dev-libs/openssl-3.5.8:0= + ) + !system-ssl? ( >=net-libs/ngtcp2-1.14.0:=[-gnutls] ) + || ( + sys-devel/gcc:* + llvm-runtimes/libatomic-stub + )" +BDEPEND="${PYTHON_DEPS} + app-alternatives/ninja + sys-apps/coreutils + virtual/pkgconfig + test? ( net-misc/curl ) + pax-kernel? ( sys-apps/elfix )" +DEPEND="${COMMON_DEPEND}" +RDEPEND="${COMMON_DEPEND}" + +# These are measured on a loong machine with -ggdb on, and only checked +# if debugging flags are present in CFLAGS. +# +# The final link consumed a little more than 7GiB alone, so 8GiB is the lower +# limit for memory usage. Disk usage was 19.1GiB for the build directory and +# 1.2GiB for the installed image, so we leave some room for architectures with +# fatter binaries and set the disk requirement to 22GiB. +CHECKREQS_MEMORY="8G" +CHECKREQS_DISK_BUILD="22G" + +PATCHES=( + "${FILESDIR}"/${P}-32-bit.patch +) + +pkg_pretend() { + if [[ ${MERGE_TYPE} != "binary" ]]; then + if is-flagq "-g*" && ! is-flagq "-g*0" ; then + einfo "Checking for sufficient disk space and memory to build ${PN} with debugging CFLAGS" + check-reqs_pkg_pretend + fi + fi +} + +pkg_setup() { + python-any-r1_pkg_setup + linux-info_pkg_setup +} + +src_prepare() { + tc-export AR CC CXX PKG_CONFIG + export V=1 + export BUILDTYPE=Release + + # fix compilation on Darwin + # https://code.google.com/p/gyp/issues/detail?id=260 + sed -i -e "/append('-arch/d" tools/gyp/pylib/gyp/xcode_emulation.py || die + + # proper libdir, hat tip @ryanpcmcquen https://github.com/iojs/io.js/issues/504 + local LIBDIR=$(get_libdir) + sed -i -e "s|lib/|${LIBDIR}/|g" tools/install.py || die + sed -i -e "s/'lib'/'${LIBDIR}'/" deps/npm/lib/npm.js || die + + # Avoid writing a depfile, not useful + sed -i -e "/DEPFLAGS =/d" tools/gyp/pylib/gyp/generator/make.py || die + + sed -i -e "/'-O3'/d" common.gypi node.gypi || die + + # debug builds. change install path, remove optimisations and override buildtype + if use debug; then + sed -i -e "s|out/Release/|out/Debug/|g" tools/install.py || die + BUILDTYPE=Debug + fi + + # We need to disable mprotect on two files when it builds Bug 694100. + use pax-kernel && + PATCHES+=( "${FILESDIR}"/${PN}-24.1.0-paxmarking.patch ) + + use ppc64 && + PATCHES+=( "${FILESDIR}/${PN}-24.11.1-restore-ppc64be.patch" ) + + default +} + +src_configure() { + xdg_environment_reset + + # LTO compiler flags are handled by configure.py itself + filter-lto + # The warnings are *so* noisy and make build.logs massive + append-cxxflags $(test-flags-CXX -Wno-template-id-cdtor) + # https://bugs.gentoo.org/931514 + use arm64 && append-flags $(test-flags-CXX -mbranch-protection=none) + + local myconf=( + --ninja + --shared-ada + --shared-brotli + --shared-cares + --shared-libuv + --shared-nghttp2 + --shared-nghttp3 + --shared-ngtcp2 + --shared-simdjson + --shared-simdutf + --shared-sqlite + --shared-zlib + ) + use debug && myconf+=( --debug ) + use lto && myconf+=( --enable-lto ) + if use system-icu; then + myconf+=( --with-intl=system-icu ) + elif use icu; then + myconf+=( --with-intl=full-icu ) + else + myconf+=( --with-intl=none ) + fi + use corepack || myconf+=( --without-corepack ) + use inspector || myconf+=( --without-inspector ) + use npm || myconf+=( --without-npm ) + use snapshot || myconf+=( --without-node-snapshot ) + if use ssl; then + use system-ssl && myconf+=( --shared-openssl --openssl-use-def-ca-store ) + else + myconf+=( --without-ssl ) + fi + + local myarch="" + case "${ARCH}:${ABI}" in + *:amd64) myarch="x64";; + *:arm) myarch="arm";; + *:arm64) myarch="arm64";; + loong:lp64*) myarch="loong64";; + riscv:lp64*) myarch="riscv64";; + *:ppc64) myarch="ppc64";; + *:x32) myarch="x32";; + *:x86) myarch="ia32";; + *) myarch="${ABI}";; + esac + + GYP_DEFINES="linux_use_gold_flags=0 + linux_use_bundled_binutils=0 + linux_use_bundled_gold=0" \ + "${EPYTHON}" configure.py \ + --prefix="${EPREFIX}"/usr \ + --dest-cpu=${myarch} \ + "${myconf[@]}" || die +} + +src_compile() { + eninja -C out/Release +} + +src_install() { + local LIBDIR="${ED}/usr/$(get_libdir)" + default + + pax-mark -m "${ED}"/usr/bin/node + + if use doc; then + docinto html + dodoc -r "${S}"/doc/* + fi + + if use npm; then + keepdir /etc/npm + echo "NPM_CONFIG_GLOBALCONFIG=${EPREFIX}/etc/npm/npmrc" > "${T}"/50npm + doenvd "${T}"/50npm + + # Install bash completion for `npm` + local tmp_npm_completion_file="$(TMPDIR="${T}" mktemp -t npm.XXXXXXXXXX)" + "${ED}/usr/bin/npm" completion > "${tmp_npm_completion_file}" + newbashcomp "${tmp_npm_completion_file}" npm + + # Move man pages + doman "${LIBDIR}"/node_modules/npm/man/man{1,5,7}/* + + # Clean up + rm -f "${LIBDIR}"/node_modules/npm/{.mailmap,.npmignore,Makefile} + + local find_exp="-or -name" + local find_name=() + for match in "AUTHORS*" "CHANGELOG*" "CONTRIBUT*" "README*" \ + ".travis.yml" ".eslint*" ".wercker.yml" ".npmignore" \ + "*.bat" "*.cmd"; do + find_name+=( ${find_exp} "${match}" ) + done + + # Remove various development and/or inappropriate files and + # useless docs of dependend packages. + find "${LIBDIR}"/node_modules \ + \( -type d -name examples \) -or \( -type f \( \ + -iname "LICEN?E*" \ + "${find_name[@]}" \ + \) \) -exec rm -rf "{}" \; + fi + + use corepack && + "${D}"/usr/bin/corepack enable --install-directory "${D}"/usr/bin + + mv "${ED}"/usr/share/doc/node "${ED}"/usr/share/doc/${PF} || die +} + +src_test() { + local drop_tests=( + test/parallel/test-dns.js + test/parallel/test-dns-resolveany-bad-ancount.js + test/parallel/test-dns-setserver-when-querying.js + test/parallel/test-dotenv.js + test/parallel/test-fs-mkdir.js + test/parallel/test-fs-read-stream.js + test/parallel/test-fs-utimes-y2K38.js + test/parallel/test-fs-watch-recursive-add-file.js + test/parallel/test-http2-client-set-priority.js + test/parallel/test-http2-priority-event.js + test/parallel/test-process-euid-egid.js + test/parallel/test-process-get-builtin.mjs + test/parallel/test-process-initgroups.js + test/parallel/test-process-setgroups.js + test/parallel/test-process-uid-gid.js + test/parallel/test-release-npm.js + test/parallel/test-socket-write-after-fin-error.js + test/parallel/test-strace-openat-openssl.js + test/sequential/test-tls-session-timeout.js + test/sequential/test-util-debug.js + ) + use inspector || + drop_tests+=( + test/parallel/test-inspector-emit-protocol-event.js + test/parallel/test-inspector-network-arbitrary-data.js + test/parallel/test-inspector-network-domain.js + test/parallel/test-inspector-network-fetch.js + test/parallel/test-inspector-network-http.js + test/sequential/test-watch-mode.mjs + ) + rm -f "${drop_tests[@]}" || die "disabling tests failed" + + out/${BUILDTYPE}/cctest || die + "${EPYTHON}" tools/test.py --mode=${BUILDTYPE,,} --flaky-tests=dontcare -J message parallel sequential || die +} + +pkg_postinst() { + if use npm; then + ewarn "remember to run: source /etc/profile if you plan to use nodejs" + ewarn " in your current shell" + fi +} diff --git a/net-libs/nodejs/nodejs-26.8.2.ebuild b/net-libs/nodejs/nodejs-26.8.2.ebuild new file mode 100644 index 000000000000..5bf345200933 --- /dev/null +++ b/net-libs/nodejs/nodejs-26.8.2.ebuild @@ -0,0 +1,315 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CONFIG_CHECK="~ADVISE_SYSCALLS" +PYTHON_COMPAT=( python3_{13..14} ) +PYTHON_REQ_USE="threads(+)" + +inherit check-reqs flag-o-matic linux-info ninja-utils pax-utils +inherit python-any-r1 shell-completion toolchain-funcs xdg-utils + +DESCRIPTION="A JavaScript runtime built on Chrome's V8 JavaScript engine" +HOMEPAGE="https://nodejs.org/" +LICENSE="Apache-1.1 Apache-2.0 BlueOak-1.0.0 BSD BSD-2 MIT npm? ( Artistic-2 )" + +if [[ ${PV} == *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/nodejs/node" + SLOT="0" +else + SRC_URI="https://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz" + SLOT="0/$(ver_cut 1)" + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86 ~x64-macos" + S="${WORKDIR}/node-v${PV}" +fi + +IUSE="cpu_flags_x86_sse2 debug doc +icu +inspector lto +npm pax-kernel +snapshot +ssl system-icu +system-ssl test" +REQUIRED_USE="inspector? ( icu ssl ) + npm? ( ssl ) + system-icu? ( icu ) + system-ssl? ( ssl ) + x86? ( cpu_flags_x86_sse2 )" + +RESTRICT="!test? ( test )" + +COMMON_DEPEND=">=app-arch/brotli-1.1.0:= + dev-db/sqlite:3 + >=dev-cpp/ada-4.0.0:= + >=dev-cpp/simdutf-7.3.4:= + >=dev-libs/libuv-1.52.1:= + >=dev-libs/simdjson-4.6.9:= + >=net-dns/c-ares-1.34.8:= + >=net-libs/nghttp2-1.70.0:= + >=net-libs/nghttp3-1.18.0:= + virtual/zlib:= + system-icu? ( >=dev-libs/icu-78:= ) + system-ssl? ( + >=net-libs/ngtcp2-1.25.0:= + >=dev-libs/openssl-3.5.8:0= + ) + !system-ssl? ( >=net-libs/ngtcp2-1.25.0:=[-gnutls] ) + || ( + sys-devel/gcc:* + llvm-runtimes/libatomic-stub + )" +BDEPEND="${PYTHON_DEPS} + app-alternatives/ninja + sys-apps/coreutils + virtual/pkgconfig + test? ( net-misc/curl ) + pax-kernel? ( sys-apps/elfix )" +DEPEND="${COMMON_DEPEND}" +RDEPEND="${COMMON_DEPEND}" + +# These are measured on a loong machine with -ggdb on, and only checked +# if debugging flags are present in CFLAGS. +# +# The final link consumed a little more than 7GiB alone, so 8GiB is the lower +# limit for memory usage. Disk usage was 19.1GiB for the build directory and +# 1.2GiB for the installed image, so we leave some room for architectures with +# fatter binaries and set the disk requirement to 22GiB. +CHECKREQS_MEMORY="8G" +CHECKREQS_DISK_BUILD="22G" + +PATCHES=( + "${FILESDIR}"/${PN}-26.6.0-gcc17.patch + "${FILESDIR}"/${PN}-26.6.0-format-cstdlib.patch + "${FILESDIR}"/${PN}-26.6.0-v8-climits.patch +) + +pkg_pretend() { + if [[ ${MERGE_TYPE} != "binary" ]]; then + if is-flagq "-g*" && ! is-flagq "-g*0" ; then + einfo "Checking for sufficient disk space and memory to build ${PN} with debugging CFLAGS" + check-reqs_pkg_pretend + fi + fi +} + +pkg_setup() { + python-any-r1_pkg_setup + linux-info_pkg_setup + # https://github.com/nodejs/node/issues/62676 - Can't build Temporal with system ICU. + if use system-icu; then + ewarn "The ES2026 'Temporal' datetime feature/object is not available when using system-icu." + ewarn "Please consider whether this is desirable for your use case." + ewarn "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal" + fi +} + +src_prepare() { + tc-export AR CC CXX PKG_CONFIG + export V=1 + export BUILDTYPE=Release + + # fix compilation on Darwin + # https://code.google.com/p/gyp/issues/detail?id=260 + sed -i -e '/append("-arch")/{N;d;}' tools/gyp/pylib/gyp/xcode_emulation.py || die + + # proper libdir, hat tip @ryanpcmcquen https://github.com/iojs/io.js/issues/504 + local LIBDIR=$(get_libdir) + sed -i -e "s|lib/|${LIBDIR}/|g" tools/install.py || die + sed -i -e "s/'lib'/'${LIBDIR}'/" deps/npm/lib/npm.js || die + + # Avoid writing a depfile, not useful + sed -i -e "/DEPFLAGS =/d" tools/gyp/pylib/gyp/generator/make.py || die + + sed -i -e "/'-O3'/d" common.gypi node.gypi || die + + # debug builds. change install path, remove optimisations and override buildtype + if use debug; then + sed -i -e "s|out/Release/|out/Debug/|g" tools/install.py || die + BUILDTYPE=Debug + fi + + # We need to disable mprotect on two files when it builds Bug 694100. + use pax-kernel && + PATCHES+=( "${FILESDIR}"/${PN}-24.1.0-paxmarking.patch ) + + use ppc64 && + PATCHES+=( "${FILESDIR}/${PN}-24.11.1-restore-ppc64be.patch" ) + + default +} + +src_configure() { + xdg_environment_reset + + # LTO compiler flags are handled by configure.py itself + filter-lto + # The warnings are *so* noisy and make build.logs massive + append-cxxflags $(test-flags-CXX -Wno-template-id-cdtor) + # https://bugs.gentoo.org/931514 + use arm64 && append-flags $(test-flags-CXX -mbranch-protection=none) + + local myconf=( + --ninja + --shared-ada + --shared-brotli + --shared-cares + --shared-libuv + --shared-nghttp2 + --shared-nghttp3 + --shared-ngtcp2 + --shared-simdjson + --shared-simdutf + --shared-sqlite + --shared-zlib + ) + use debug && myconf+=( --debug ) + use lto && myconf+=( --enable-lto ) + if use system-icu; then + # No Temporal support: https://github.com/nodejs/node/issues/62676 + myconf+=( --with-intl=system-icu ) + elif use icu; then + # Full embedded ICU (Temporal works) + myconf+=( --with-intl=full-icu ) + else + # Default embedded subset (Temporal works, saves space over full-icu) + myconf+=( --with-intl=small-icu ) + fi + use inspector || myconf+=( --without-inspector ) + use npm || myconf+=( --without-npm ) + use snapshot || myconf+=( --without-node-snapshot ) + if use ssl; then + use system-ssl && myconf+=( --shared-openssl --openssl-use-def-ca-store ) + else + myconf+=( --without-ssl ) + fi + + local myarch="" + case "${ARCH}:${ABI}" in + *:amd64) myarch="x64";; + *:arm) myarch="arm";; + *:arm64) myarch="arm64";; + loong:lp64*) myarch="loong64";; + riscv:lp64*) myarch="riscv64";; + *:ppc64) myarch="ppc64";; + *:x32) myarch="x32";; + *:x86) myarch="ia32";; + *) myarch="${ABI}";; + esac + + GYP_DEFINES="linux_use_gold_flags=0 + linux_use_bundled_binutils=0 + linux_use_bundled_gold=0" \ + "${EPYTHON}" configure.py \ + --prefix="${EPREFIX}"/usr \ + --dest-cpu=${myarch} \ + "${myconf[@]}" || die +} + +src_compile() { + eninja -C out/Release + # There's just a plain make target for the FFI tests, and it doesn't support ninja. + use test && emake build-ffi-tests +} + +src_install() { + local LIBDIR="${ED}/usr/$(get_libdir)" + default + + pax-mark -m "${ED}"/usr/bin/node + + if use doc; then + docinto html + dodoc -r "${S}"/doc/* + fi + + if use npm; then + keepdir /etc/npm + echo "NPM_CONFIG_GLOBALCONFIG=${EPREFIX}/etc/npm/npmrc" > "${T}"/50npm + doenvd "${T}"/50npm + + # Install bash completion for `npm` + local tmp_npm_completion_file="$(TMPDIR="${T}" mktemp -t npm.XXXXXXXXXX)" + "${ED}/usr/bin/npm" completion > "${tmp_npm_completion_file}" + newbashcomp "${tmp_npm_completion_file}" npm + + # Move man pages + doman "${LIBDIR}"/node_modules/npm/man/man{1,5,7}/* + + # Clean up + rm -f "${LIBDIR}"/node_modules/npm/{.mailmap,.npmignore,Makefile} + + local find_exp="-or -name" + local find_name=() + for match in "AUTHORS*" "CHANGELOG*" "CONTRIBUT*" "README*" \ + ".travis.yml" ".eslint*" ".wercker.yml" ".npmignore" \ + "*.bat" "*.cmd"; do + find_name+=( ${find_exp} "${match}" ) + done + + # Remove various development and/or inappropriate files and + # useless docs of dependend packages. + # Strict match for LICENSE files to avoid purging actual logic (e.g. license.js) + # which breaks npm. + find "${LIBDIR}"/node_modules \ + \( -type d -name examples \) -or \( -type f \( \ + \( -iname "LICEN?E*" -not -name "*.js" -not -name "*.json" \) \ + "${find_name[@]}" \ + \) \) -exec rm -rf "{}" \; + fi + + mv "${ED}"/usr/share/doc/node "${ED}"/usr/share/doc/${PF} || die +} + +src_test() { + local drop_tests=( + test/parallel/test-dns.js + test/parallel/test-dns-resolveany-bad-ancount.js + test/parallel/test-dns-setserver-when-querying.js + test/parallel/test-dotenv.js + test/parallel/test-fs-mkdir.js + test/parallel/test-fs-read-stream.js + test/parallel/test-fs-utimes-y2K38.js + test/parallel/test-fs-watch-recursive-add-file.js + test/parallel/test-http2-client-set-priority.js + test/parallel/test-http2-priority-event.js + test/parallel/test-process-euid-egid.js + test/parallel/test-process-get-builtin.mjs + test/parallel/test-process-initgroups.js + test/parallel/test-process-setgroups.js + test/parallel/test-process-uid-gid.js + test/parallel/test-release-npm.js + # Unreliable when using system libraries and ASLR. + # The variations between snapshot generation passes appear limited to memory + # allocation pointers leaking into the serialised V8 blob array; the actual + # bytecode and engine structures remain consistently... consistent. + test/parallel/test-snapshot-reproducible.js + test/parallel/test-socket-write-after-fin-error.js + test/parallel/test-strace-openat-openssl.js + test/sequential/test-tls-session-timeout.js + test/sequential/test-util-debug.js + ) + use inspector || + drop_tests+=( + test/parallel/test-inspector-emit-protocol-event.js + test/parallel/test-inspector-network-arbitrary-data.js + test/parallel/test-inspector-network-domain.js + test/parallel/test-inspector-network-fetch.js + test/parallel/test-inspector-network-http.js + test/sequential/test-watch-mode.mjs + ) + rm -f "${drop_tests[@]}" || die "disabling tests failed" + + out/${BUILDTYPE}/cctest || die + "${EPYTHON}" tools/test.py --mode=${BUILDTYPE,,} --flaky-tests=dontcare -J message parallel sequential || die +} + +pkg_postinst() { + if use npm; then + ewarn "remember to run: source /etc/profile if you plan to use nodejs" + ewarn " in your current shell" + fi + + if use system-icu; then + ewarn "" + ewarn "Node.js was built with USE='system-icu'." + ewarn "The JavaScript 'Temporal' API has been disabled." + ewarn "If you need full ES2026+ compliance, rebuild with USE='-system-icu'." + ewarn "" + fi +} diff --git a/net-misc/anydesk/Manifest b/net-misc/anydesk/Manifest index b4efffe59986..460db6a050ea 100644 --- a/net-misc/anydesk/Manifest +++ b/net-misc/anydesk/Manifest @@ -1,4 +1,4 @@ -DIST anydesk-7.1.3-amd64.tar.gz 14932865 BLAKE2B 07713c6d03649f12e4c3e2847e9978c22e0b2d3c956ebe9fef6a0b9c287cf96299f1d19c9c73a5f933e664d6af10eb21b491695fd2e8ffd93b7ead355e8830c9 SHA512 2f25a0440e0ebad7a0772a6475532cbf917d283ad486546ce0067c2c2f96d5837ea56cee5ea835b4c6dd9145c0326d31b9a038fa1783f877e7a045d155fc0186 -DIST anydesk-7.1.3-arm64.tar.gz 14956692 BLAKE2B b8d0417247397e98e19d034772f5fd1859539d284599ce2555643b99ef9737f46ddec2ece3cffe42216aedb1f3e029055d1784c79a878c9939da4025aa403edd SHA512 d8a4812c1fbcd18da4dc4f41bd8eff770e468538610ddd7862035b256a84f61ea1525babbd0cac10548d48aff68f32ccaf71e5b24499a2b05164e071b6afc0ed DIST anydesk-7.1.4-amd64.tar.gz 15022660 BLAKE2B b04a03e333bae377e568eb2284f760ec2972e73a5b7da4e1b69b6a1638072e979e42076173840038f559dad3c519d564a5f809c644fe69ecc1e9a643eac4fcfd SHA512 5530dbb76630ebaab7f77996ca8389c520b09d9831d047d0463019afb05638e12d3a12c39e8d03581397540bd7d7eaca1fade4dd88681ed89babad94b9b8edc7 DIST anydesk-7.1.4-arm64.tar.gz 15034979 BLAKE2B 1a51b33d89d90388809174a817060b7bf3b34ca28cd03171038a9fb58e8514b61155d11b6801700c60bdd6789393b33bb7d90fa5e536ef365f24e43bfdd0f2cc SHA512 a014f78687dd3bd3524a0cc42bd5537874ba3940716973a8c860c026b1f20a889f98b3ef002f84188ffed0c35677d93400f48ac36f6e641609338873350b3f05 +DIST anydesk-8.0.4-amd64.tar.gz 16120447 BLAKE2B 5d8990681dcea222205c2750d0d3b49845488a7852a29db049bc36e9582e311e84d761a724ad39dabdf8fbbdf699ac492d5e38502ed6248923acff64e55a8b6f SHA512 ccb5d8af5e954ded92c6149317bbb8133c31deff0a11a5ee2f7b8f63d574e2ce9dd24c1e02286cd99a5e566ad7cb795817e9074a16c555f4829e2872f6853b3b +DIST anydesk-8.0.4-arm64.tar.gz 16066317 BLAKE2B 793a9251a4593683968c037858739f6881c0fd8a2ab2b05b8f1777136c285979de57e6377e74c9392a57f23f1d5c90a483dc749309c79730ded203cf7857f173 SHA512 20d414021a4d08209e660ef77200a48bb0b387f49d9576604ef6296aecf4e44a648df45339d23c37a962def7d29b9050cdab5233d23c27571e56457dcebf232c diff --git a/net-misc/anydesk/anydesk-7.1.3.ebuild b/net-misc/anydesk/anydesk-8.0.4.ebuild index 2b7b045e127e..2b7b045e127e 100644 --- a/net-misc/anydesk/anydesk-7.1.3.ebuild +++ b/net-misc/anydesk/anydesk-8.0.4.ebuild diff --git a/net-misc/asterisk/Manifest b/net-misc/asterisk/Manifest index d3c1baba818c..311aaa9e3fd0 100644 --- a/net-misc/asterisk/Manifest +++ b/net-misc/asterisk/Manifest @@ -1,4 +1,7 @@ DIST asterisk-20.20.1.tar.gz 28781305 BLAKE2B 1247a6564ff0e1eceba379b75767308583c47fa16ead5948540b335331b199d42b604b32fb0a11a03ddbd959f29e16162412bfc3983f10fb34b4aadf1ea6d788 SHA512 194bb5672ff1051a42f6dcaced2e08d068a32172e9fc06a69b2b61b8bcf675d5479c48894b131580042068e946ea92d0f8f7c52fe07b7ef7a7ed7272579bb1e5 +DIST asterisk-20.21.0.tar.gz 28838213 BLAKE2B c8739a091c5b79fe90503430a2c1e4845a97254ec3f013780c828e484612c4b822528b13c2c0d8eb60bd0b1e37f2a2622a39110177bf4ceea3ea4be8375f518f SHA512 5a1226f02991ce21c1deace50ac0b4e072eedcd145acd47f66f374c0bffe8f0e64da1fe68cc02cdf604d64ed9229c46669d679839312661bfafba8fb0674f7a2 DIST asterisk-21.12.3.tar.gz 26622723 BLAKE2B f5b79a26e941553e66e9a7a54563a52912106d2095b580c0f06207362801ef10fe50dd3f8b78af595d960ad52c5b471953e83092b4b2e0d11b9a7b9e540b0059 SHA512 85745610143582bf0c144d675ed1ecdc9a64a2ccf3de4498375ebabfee33f09d8f48d3ffe5509bff3b2da8fad449fa309af2199a14fdc7153c87a71cc24bf6a6 DIST asterisk-22.10.1.tar.gz 26672088 BLAKE2B cbd95f997438c1a9cb363204c24600ee20a8318396f92576adb6656a4e880536f1481f1f9e74a86c389c5b7758965f1a40be80c558aef3087f6d72a7c828788e SHA512 d2ffc95d6e8e3f5ea3ccb5cd40ead62323978b1af563c338b53a03ba45d4f40cee4eabd6f7aa4cd48e59c5741f4fa05dea5905593d1971371f77205ebe4bd967 +DIST asterisk-22.11.0.tar.gz 26724408 BLAKE2B 3cec79e979ca8e524af3631a23e11caa34951d3c8730821655acaa1f27974fde4550123f16f23e25f49923fb83bf1fc1e4801fd91aabd72ce430ff45d63a7f90 SHA512 00cfcca62052c2240f67a50e52701f724a6e0406892010f789d9e2e72d1f8180fc6b68307f1397873c1c409c509e9df0d7765a842c85d84019bf8438c6577d87 DIST asterisk-23.4.1.tar.gz 26534868 BLAKE2B 2facccaa5eaa582e01fe75c22197eac219b2dfb701f412da073f561170db3240d6f14ddff8f6424a0a68470838dabd40002785b01d22e3a4547259a475cdc736 SHA512 b189526328c72d544875ba48a5946ec33aa454739e38e0e7e1e0495604d9cdb96ed4eeae54dd0c6a0d7328022e9737e76097a13ca682a053a1e465d805621501 +DIST asterisk-23.5.0.tar.gz 26585361 BLAKE2B 425d7bfa0531b5b02d4b2353beaa2ef0cac5e0e24e9a5b98646363248ecbfca34af3672a2f9e31bd3e2f07f6231300230513f0ece1ea15f373f320c07dd4d109 SHA512 fcf6a2a5cf418a81b0ca4890ec22981e7a4b54b4da26b6a419ce1cdca6c86bfee502155e3f446426decef0c25b2c41675c2fe237b0211fabf51a074f94ce525e diff --git a/net-misc/asterisk/asterisk-20.21.0.ebuild b/net-misc/asterisk/asterisk-20.21.0.ebuild new file mode 100644 index 000000000000..4de5baef0d86 --- /dev/null +++ b/net-misc/asterisk/asterisk-20.21.0.ebuild @@ -0,0 +1,371 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +inherit autotools linux-info lua-single toolchain-funcs + +DESCRIPTION="Asterisk: A Modular Open Source PBX System" +HOMEPAGE="https://www.asterisk.org/" +SRC_URI="https://downloads.asterisk.org/pub/telephony/asterisk/releases/${P}.tar.gz" +LICENSE="GPL-2" +SLOT="0/${PV%%.*}" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86" + +IUSE_VOICEMAIL_STORAGE=( + voicemail_storage_odbc + voicemail_storage_imap +) +IUSE="${IUSE_VOICEMAIL_STORAGE[*]} alsa blocks bluetooth calendar +caps cluster codec2 curl debug deprecated doc freetds gtalk http iconv ilbc ldap lua mysql newt odbc pjproject portaudio postgres radius selinux snmp span speex srtp +ssl static statsd systemd unbound vorbis xmpp" +IUSE_EXPAND="VOICEMAIL_STORAGE" +REQUIRED_USE="gtalk? ( xmpp ) + lua? ( ${LUA_REQUIRED_USE} ) + voicemail_storage_odbc? ( odbc ) +" + +PATCHES=( + "${FILESDIR}/asterisk-16.16.2-no-var-run-install.patch" +) + +DEPEND="acct-user/asterisk + acct-group/asterisk + dev-db/sqlite:3 + dev-libs/popt + >=dev-libs/jansson-2.11:= + dev-libs/libedit + dev-libs/libxml2:2= + dev-libs/libxslt + sys-apps/util-linux + virtual/zlib:= + virtual/libcrypt:= + alsa? ( media-libs/alsa-lib ) + bluetooth? ( net-wireless/bluez:= ) + calendar? ( + net-libs/neon:= + dev-libs/libical:= + dev-libs/iksemel + ) + caps? ( sys-libs/libcap ) + blocks? ( sys-libs/blocksruntime ) + cluster? ( sys-cluster/corosync ) + codec2? ( media-libs/codec2:= ) + curl? ( net-misc/curl ) + freetds? ( dev-db/freetds ) + gtalk? ( dev-libs/iksemel ) + http? ( dev-libs/gmime:2.6 ) + iconv? ( virtual/libiconv ) + ilbc? ( media-libs/libilbc ) + ldap? ( net-nds/openldap:= ) + lua? ( ${LUA_DEPS} ) + mysql? ( dev-db/mysql-connector-c:= ) + newt? ( dev-libs/newt ) + odbc? ( dev-db/unixODBC ) + pjproject? ( >=net-libs/pjproject-2.12:= ) + portaudio? ( media-libs/portaudio ) + postgres? ( dev-db/postgresql:* ) + radius? ( net-dialup/freeradius-client ) + snmp? ( net-analyzer/net-snmp:= ) + span? ( media-libs/spandsp ) + speex? ( + media-libs/libogg + media-libs/speex + media-libs/speexdsp + ) + srtp? ( net-libs/libsrtp:= ) + ssl? ( + dev-libs/openssl:0= + ) + systemd? ( sys-apps/systemd ) + !systemd? ( !sys-apps/systemd ) + unbound? ( net-dns/unbound ) + vorbis? ( + media-libs/libogg + media-libs/libvorbis + ) + voicemail_storage_imap? ( net-libs/c-client[ssl=] ) + xmpp? ( dev-libs/iksemel ) +" + +RDEPEND="${DEPEND} + net-misc/asterisk-core-sounds + net-misc/asterisk-extra-sounds + net-misc/asterisk-moh-opsound + selinux? ( sec-policy/selinux-asterisk )" +PDEPEND="net-misc/asterisk-base" + +BDEPEND="dev-libs/libxml2:2 + virtual/pkgconfig" + +QA_CONFIG_IMPL_DECL_SKIP=( + htonll + ntohll +) +QA_DT_NEEDED="/usr/lib.*/libasteriskssl[.]so[.][0-9]\+" + +ast_make() { + local make_args=( + "NOISY_BUILD=yes" + "ASTDBDIR=\$(ASTDATADIR)/astdb" + "ASTVARRUNDIR=/run/asterisk" + "ASTCACHEDIR=/var/cache/asterisk" + "OPTIMIZE=" + "DEBUG=" + "DESTDIR=${D}" + "CONFIG_SRC=configs/samples" + "CONFIG_EXTEN=.sample" + "AST_FORTIFY_SOURCE=" + ) + + emake "${make_args[@]}" "$@" +} + +pkg_pretend() { + CONFIG_CHECK="~!NF_CONNTRACK_SIP" + local WARNING_NF_CONNTRACK_SIP="SIP (NAT) connection tracking is enabled. Some users + have reported that this module dropped critical SIP packets in their deployments. You + may want to disable it if you see such problems." + check_extra_config + + [[ "${MERGE_TYPE}" == binary ]] && return + + if tc-is-clang; then + use blocks || die "CC=clang requires USE=blocks" + else + use blocks && die "USE=blocks can only be used with CC=clang" + fi +} + +pkg_setup() { + use lua && lua-single_pkg_setup +} + +src_prepare() { + default + AT_M4DIR="autoconf third-party third-party/pjproject third-party/jansson third-party/libjwt" \ + AC_CONFIG_SUBDIRS=menuselect eautoreconf +} + +src_configure() { + local vmst + local copt cstate + local myconf=( + LUA_VERSION="${ELUA#lua}" + --localstatedir="/var" + --with-crypto + --with-gsm=internal + --with-popt + --with-z + --with-libedit + --without-jansson-bundled + --without-pjproject-bundled + $(use_with caps cap) + $(use_with codec2) + $(use_with lua lua) + $(use_with http gmime) + $(use_with newt) + $(use_with pjproject) + $(use_with portaudio) + $(use_with ssl) + $(use_with unbound) + ) + econf "${myconf[@]}" + + ast_menuselect() { + menuselect/menuselect "$@" menuselect.makeopts || die "menuselect $* failed." + } + + _use_select() { + local state=$(use "$1" && echo enable || echo disable) + local x + shift # remove use from parameters + + for x; do + ast_menuselect --${state} "$x" + done + } + + # Blank out sounds/sounds.xml file to prevent + # asterisk from installing sounds files (we pull them in via + # asterisk-{core,extra}-sounds and asterisk-moh-opsound. + >sounds/sounds.xml || die "Unable to blank out sounds/sounds.xml" + + # That NATIVE_ARCH chatter really is quite bothersome + sed -i 's/NATIVE_ARCH=/&0/' build_tools/menuselect-deps || die "Unable to squelch noisy build system" + + # Compile menuselect binary for optional components + emake "${_make_args[@]}" menuselect.makeopts + + # Disable astdb2* tools. We've been on sqlite long enough + # that this should really no longer be a problem (bug #https://bugs.gentoo.org/872194) + ast_menuselect --disable astdb2sqlite3 + ast_menuselect --disable astdb2bdb + + # Disable BUILD_NATIVE (bug #667498) + ast_menuselect --disable build_native + + # Broken functionality is forcibly disabled (bug #360143) + ast_menuselect --disable chan_ooh323 + + # Utility set is forcibly enabled (bug #358001) + ast_menuselect --enable smsq + ast_menuselect --enable streamplayer + ast_menuselect --enable aelparse + ast_menuselect --enable astman + + # this is connected, otherwise it would not find + # ast_pktccops_gate_alloc symbol + ast_menuselect --enable chan_mgcp + ast_menuselect --enable res_pktccops + + # SSL is forcibly enabled, IAX2 & DUNDI are expected to be available + ast_menuselect --enable pbx_dundi + ast_menuselect --enable func_aes + ast_menuselect --enable chan_iax2 + + # SQlite3 is now the main database backend, enable related features + ast_menuselect --enable cdr_sqlite3_custom + ast_menuselect --enable cel_sqlite3_custom + + # Disable conversion tools (which fails to compile in some cases). + ast_menuselect --disable astdb2bdb + + # The others are based on USE-flag settings + _use_select alsa chan_alsa + _use_select bluetooth chan_mobile + _use_select calendar res_calendar res_calendar_{caldav,ews,exchange,icalendar} + _use_select cluster res_corosync + _use_select codec2 codec_codec2 + _use_select curl func_curl res_config_curl res_curl + _use_select deprecated app_macro chan_sip res_monitor + _use_select freetds {cdr,cel}_tds + _use_select gtalk chan_motif + _use_select http res_http_post + _use_select iconv func_iconv + _use_select ilbc codec_ilbc format_ilbc + _use_select ldap res_config_ldap + _use_select lua pbx_lua + _use_select mysql res_config_mysql + _use_select odbc cdr_adaptive_odbc res_config_odbc {cdr,cel,res,func}_odbc + _use_select postgres {cdr,cel}_pgsql res_config_pgsql + _use_select radius {cdr,cel}_radius + _use_select snmp res_snmp + _use_select span res_fax_spandsp + _use_select speex {codec,func}_speex + _use_select speex format_ogg_speex + _use_select srtp res_srtp + _use_select statsd res_statsd res_{endpoint,chan}_stats + _use_select vorbis format_ogg_vorbis + _use_select xmpp res_xmpp + + # Voicemail storage ... + ast_menuselect --enable app_voicemail + for vmst in "${IUSE_VOICEMAIL_STORAGE[@]}"; do + if use "${vmst#+}"; then + ast_menuselect --enable "app_voicemail_${vmst##*_}" + fi + done + + if use debug; then + for o in DONT_OPTIMIZE DEBUG_FD_LEAKS MALLOC_DEBUG BETTER_BACKTRACES; do + ast_menuselect --enable "${o}" + done + fi + + if [[ -n "${GENTOO_ASTERISK_CUSTOM_MENUSELECT:+yes}" ]]; then + for copt in ${GENTOO_ASTERISK_CUSTOM_MENUSELECT}; do + cstate=--enable + [[ "${copt}" == -* ]] && cstate=--disable + ebegin "Custom option ${copt#[-+]} ${cstate:2}d" + ast_menuselect ${cstate} "${copt#[-+]}" + eend $? + done + fi +} + +src_compile() { + ast_make +} + +src_install() { + local d + + dodir "/usr/$(get_libdir)/pkgconfig" + + diropts -m 0750 -o root -g asterisk + dodir /etc/asterisk + + ast_make install install-headers install-configs "DESTDIR=${D}" + + fowners asterisk: /var/lib/asterisk/astdb + + if use radius; then + insinto /etc/radiusclient/ + doins contrib/dictionary.digium + fi + + # keep directories + diropts -m 0750 -o asterisk -g root + keepdir /var/spool/asterisk/{system,tmp,meetme,monitor,dictate,voicemail,recording,outgoing} + diropts -m 0750 -o asterisk -g asterisk + keepdir /var/log/asterisk/{cdr-csv,cdr-custom} + + # Reset diropts else dodoc uses it for doc installations. + diropts -m0755 + + dodoc README* BUGS CREDITS + + # install extra documentation + use doc && dodoc doc/*.{txt,pdf} + + # Asterisk installs a few folders that's empty by design, + # but still required. This finds them, and marks them for + # portage. + while read d <&3; do + keepdir "${d#${ED}}" + done 3< <(find "${ED}"/var -type d -empty || die "Find failed.") +} + +pkg_postinst() { + if [[ -z "${REPLACING_VERSIONS}" ]]; then + elog "Asterisk Wiki: https://wiki.asterisk.org/wiki/" + elog "Gentoo VoIP IRC Channel: #gentoo-voip @ irc.libera.chat" + else + local my_replacing=() x + for x in ${REPLACING_VERSIONS}; do + [[ $(ver_cut 1 ${x}) != $(ver_cut 1) ]] && + my_replacing+=( $(ver_cut 1 ${x}) ) + done + if [[ "${#my_replacing}" -gt 0 ]]; then + my_replacing="${my_replacing[*]}" + my_replacing="${my_replacing// /, }" + [[ "${my_replacing}" = *", "* ]] && + my_replacing="${my_replacing%, *} or ${my_replacing##*, }" + elog "You are updating from Asterisk ${my_replacing}, you should reference the upgrade document:" + elog "https://docs.asterisk.org/Asterisk_$(ver_cut 1)_Documentation/Upgrading/" + elog "Assistance also available on Gentoo VoIP IRC Channel: #gentoo-voip @ irc.libera.chat" + fi + fi + + if use deprecated; then + ewarn "You really aught to port whatever code you have that depends on this since these are going to go away." + ewarn "Refer: https://docs.asterisk.org/Development/Policies-and-Procedures/Module-Deprecation/" + fi + + if [[ -n "${GENTOO_ASTERISK_CUSTOM_MENUSELECT:+yes}" ]]; then + ewarn "You are using GENTOO_ASTERISK_CUSTOM_MENUSELECT, this should only be used" + ewarn "for debugging, for anything else, please file a bug on https://bugs.gentoo.org" + fi + + if [[ -f /var/lib/asterisk/astdb.sqlite3 ]]; then + ewarn "Default astdb location has changed from /var/lib/asterisk to /var/lib/asterisk/astdb" + ewarn "You still have a /var/lib/asterisk/astdb.sqlite3 file. You need to either set" + ewarn "astdbdir in /etc/asterisk/asterisk.conf to /var/lib/asterisk or follow these" + ewarn "steps to migrate:" + ewarn "1. /etc/init.d/asterisk stop" + ewarn "2. mv /var/lib/asterisk/astdb.sqlite3 /var/lib/asterisk/astdb/" + ewarn "3. /etc/init.d/asterisk start" + ewarn "This update was done partly for security reasons so that /var/lib/asterisk can be root owned." + fi +} diff --git a/net-misc/asterisk/asterisk-22.11.0.ebuild b/net-misc/asterisk/asterisk-22.11.0.ebuild new file mode 100644 index 000000000000..c9ecdd152615 --- /dev/null +++ b/net-misc/asterisk/asterisk-22.11.0.ebuild @@ -0,0 +1,358 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +inherit autotools linux-info lua-single toolchain-funcs + +DESCRIPTION="Asterisk: A Modular Open Source PBX System" +HOMEPAGE="https://www.asterisk.org/" +SRC_URI="https://downloads.asterisk.org/pub/telephony/asterisk/releases/${P}.tar.gz" +LICENSE="GPL-2" +SLOT="0/${PV%%.*}" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~sparc ~x86" + +IUSE_VOICEMAIL_STORAGE=( + voicemail_storage_odbc + voicemail_storage_imap +) +IUSE="${IUSE_VOICEMAIL_STORAGE[*]} blocks bluetooth calendar +caps cluster codec2 curl debug doc freetds gtalk http iconv ilbc ldap lua mysql newt odbc pjproject portaudio postgres radius selinux snmp span speex srtp +ssl static statsd systemd unbound vorbis xmpp" +IUSE_EXPAND="VOICEMAIL_STORAGE" +REQUIRED_USE="gtalk? ( xmpp ) + lua? ( ${LUA_REQUIRED_USE} ) + voicemail_storage_odbc? ( odbc ) +" + +PATCHES=( + "${FILESDIR}/asterisk-16.16.2-no-var-run-install.patch" +) + +DEPEND="acct-user/asterisk + acct-group/asterisk + dev-db/sqlite:3 + dev-libs/popt + >=dev-libs/jansson-2.11:= + dev-libs/libedit + dev-libs/libxml2:2= + dev-libs/libxslt + sys-apps/util-linux + virtual/zlib:= + virtual/libcrypt:= + bluetooth? ( net-wireless/bluez:= ) + calendar? ( + net-libs/neon:= + dev-libs/libical:= + dev-libs/iksemel + ) + caps? ( sys-libs/libcap ) + blocks? ( sys-libs/blocksruntime ) + cluster? ( sys-cluster/corosync ) + codec2? ( media-libs/codec2:= ) + curl? ( net-misc/curl ) + freetds? ( dev-db/freetds ) + gtalk? ( dev-libs/iksemel ) + http? ( dev-libs/gmime:2.6 ) + iconv? ( virtual/libiconv ) + ilbc? ( media-libs/libilbc ) + ldap? ( net-nds/openldap:= ) + lua? ( ${LUA_DEPS} ) + mysql? ( dev-db/mysql-connector-c:= ) + newt? ( dev-libs/newt ) + odbc? ( dev-db/unixODBC ) + pjproject? ( >=net-libs/pjproject-2.12:= ) + portaudio? ( media-libs/portaudio ) + postgres? ( dev-db/postgresql:* ) + radius? ( net-dialup/freeradius-client ) + snmp? ( net-analyzer/net-snmp:= ) + span? ( media-libs/spandsp ) + speex? ( + media-libs/libogg + media-libs/speex + media-libs/speexdsp + ) + srtp? ( net-libs/libsrtp:= ) + ssl? ( + dev-libs/openssl:0= + ) + systemd? ( sys-apps/systemd ) + !systemd? ( !sys-apps/systemd ) + unbound? ( net-dns/unbound ) + vorbis? ( + media-libs/libogg + media-libs/libvorbis + ) + voicemail_storage_imap? ( net-libs/c-client[ssl=] ) + xmpp? ( dev-libs/iksemel ) +" + +RDEPEND="${DEPEND} + net-misc/asterisk-core-sounds + net-misc/asterisk-extra-sounds + net-misc/asterisk-moh-opsound + selinux? ( sec-policy/selinux-asterisk )" +PDEPEND="net-misc/asterisk-base" + +BDEPEND="dev-libs/libxml2:2 + virtual/pkgconfig" + +QA_CONFIG_IMPL_DECL_SKIP=( + htonll + ntohll +) +QA_DT_NEEDED="/usr/lib.*/libasteriskssl[.]so[.][0-9]\+" + +ast_make() { + local make_args=( + "NOISY_BUILD=yes" + "ASTDBDIR=\$(ASTDATADIR)/astdb" + "ASTVARRUNDIR=/run/asterisk" + "ASTCACHEDIR=/var/cache/asterisk" + "OPTIMIZE=" + "DEBUG=" + "CONFIG_SRC=configs/samples" + "CONFIG_EXTEN=.sample" + "AST_FORTIFY_SOURCE=" + ) + + emake "${make_args[@]}" "$@" +} + +pkg_pretend() { + CONFIG_CHECK="~!NF_CONNTRACK_SIP" + local WARNING_NF_CONNTRACK_SIP="SIP (NAT) connection tracking is enabled. Some users + have reported that this module dropped critical SIP packets in their deployments. You + may want to disable it if you see such problems." + check_extra_config + + [[ "${MERGE_TYPE}" == binary ]] && return + + if tc-is-clang; then + use blocks || die "CC=clang requires USE=blocks" + else + use blocks && die "USE=blocks can only be used with CC=clang" + fi +} + +pkg_setup() { + use lua && lua-single_pkg_setup +} + +src_prepare() { + default + AT_M4DIR="autoconf third-party third-party/pjproject third-party/jansson third-party/libjwt" \ + AC_CONFIG_SUBDIRS=menuselect eautoreconf +} + +src_configure() { + local vmst + local copt cstate + local myconf=( + LUA_VERSION="${ELUA#lua}" \ + --localstatedir="/var" \ + --with-crypto \ + --with-gsm=internal \ + --with-popt \ + --with-z \ + --with-libedit \ + --without-jansson-bundled \ + --without-pjproject-bundled \ + $(use_with caps cap) \ + $(use_with codec2) \ + $(use_with lua lua) \ + $(use_with http gmime) \ + $(use_with newt) \ + $(use_with pjproject) \ + $(use_with portaudio) \ + $(use_with ssl) \ + $(use_with unbound) + ) + + econf "${myconf[@]}" + + ast_menuselect() { + menuselect/menuselect "$@" menuselect.makeopts || die "menuselect $* failed." + } + + _use_select() { + local state=$(use "$1" && echo enable || echo disable) + local x + shift # remove use from parameters + + for x; do + ast_menuselect --${state} "$x" + done + } + + # Blank out sounds/sounds.xml file to prevent + # asterisk from installing sounds files (we pull them in via + # asterisk-{core,extra}-sounds and asterisk-moh-opsound. + >sounds/sounds.xml || die "Unable to blank out sounds/sounds.xml" + + # That NATIVE_ARCH chatter really is quite bothersome + sed -i 's/NATIVE_ARCH=/&0/' build_tools/menuselect-deps || die "Unable to squelch noisy build system" + + # Compile menuselect binary for optional components + ast_make menuselect.makeopts + + # Disable astdb2* tools. We've been on sqlite long enough + # that this should really no longer be a problem (bug #https://bugs.gentoo.org/872194) + ast_menuselect --disable astdb2sqlite3 + ast_menuselect --disable astdb2bdb + + # Disable BUILD_NATIVE (bug #667498) + ast_menuselect --disable build_native + + # Broken functionality is forcibly disabled (bug #360143) + ast_menuselect --disable chan_ooh323 + + # Utility set is forcibly enabled (bug #358001) + ast_menuselect --enable smsq + ast_menuselect --enable streamplayer + ast_menuselect --enable aelparse + ast_menuselect --enable astman + + # SSL is forcibly enabled, IAX2 & DUNDI are expected to be available + ast_menuselect --enable pbx_dundi + ast_menuselect --enable func_aes + ast_menuselect --enable chan_iax2 + + # SQlite3 is now the main database backend, enable related features + ast_menuselect --enable cdr_sqlite3_custom + ast_menuselect --enable cel_sqlite3_custom + + # Disable conversion tools (which fails to compile in some cases). + ast_menuselect --disable astdb2bdb + + # The others are based on USE-flag settings + _use_select bluetooth chan_mobile + _use_select calendar res_calendar res_calendar_{caldav,ews,exchange,icalendar} + _use_select cluster res_corosync + _use_select codec2 codec_codec2 + _use_select curl func_curl res_config_curl res_curl + _use_select freetds {cdr,cel}_tds + _use_select gtalk chan_motif + _use_select http res_http_post + _use_select iconv func_iconv + _use_select ilbc codec_ilbc format_ilbc + _use_select ldap res_config_ldap + _use_select lua pbx_lua + _use_select mysql res_config_mysql + _use_select odbc cdr_adaptive_odbc res_config_odbc {cdr,cel,res,func}_odbc + _use_select postgres {cdr,cel}_pgsql res_config_pgsql + _use_select radius {cdr,cel}_radius + _use_select snmp res_snmp + _use_select span res_fax_spandsp + _use_select speex {codec,func}_speex + _use_select speex format_ogg_speex + _use_select srtp res_srtp + _use_select statsd res_statsd res_{endpoint,chan}_stats + _use_select vorbis format_ogg_vorbis + _use_select xmpp res_xmpp + + # Voicemail storage ... + ast_menuselect --enable app_voicemail + for vmst in "${IUSE_VOICEMAIL_STORAGE[@]}"; do + if use "${vmst#+}"; then + ast_menuselect --enable "app_voicemail_${vmst##*_}" + fi + done + + if use debug; then + for o in DONT_OPTIMIZE DEBUG_FD_LEAKS MALLOC_DEBUG BETTER_BACKTRACES; do + ast_menuselect --enable "${o}" + done + fi + + if [[ -n "${GENTOO_ASTERISK_CUSTOM_MENUSELECT:+yes}" ]]; then + for copt in ${GENTOO_ASTERISK_CUSTOM_MENUSELECT}; do + cstate=--enable + [[ "${copt}" == -* ]] && cstate=--disable + ebegin "Custom option ${copt#[-+]} ${cstate:2}d" + ast_menuselect ${cstate} "${copt#[-+]}" + eend $? + done + fi +} + +src_compile() { + ast_make +} + +src_install() { + local d + + dodir "/usr/$(get_libdir)/pkgconfig" + + diropts -m 0750 -o root -g asterisk + dodir /etc/asterisk + + ast_make install install-headers install-configs "DESTDIR=${D}" + + fowners asterisk: /var/lib/asterisk/astdb + + if use radius; then + insinto /etc/radiusclient/ + doins contrib/dictionary.digium + fi + + # keep directories + diropts -m 0750 -o asterisk -g root + keepdir /var/spool/asterisk/{system,tmp,meetme,monitor,dictate,voicemail,recording,outgoing} + diropts -m 0750 -o asterisk -g asterisk + keepdir /var/log/asterisk/{cdr-csv,cdr-custom} + + # Reset diropts else dodoc uses it for doc installations. + diropts -m0755 + + dodoc README* BUGS CREDITS + + # install extra documentation + use doc && dodoc doc/*.{txt,pdf} + + # Asterisk installs a few folders that's empty by design, + # but still required. This finds them, and marks them for + # portage. + while read d <&3; do + keepdir "${d#${ED}}" + done 3< <(find "${ED}"/var -type d -empty || die "Find failed.") +} + +pkg_postinst() { + if [[ -z "${REPLACING_VERSIONS}" ]]; then + elog "Asterisk Wiki: https://wiki.asterisk.org/wiki/" + elog "Gentoo VoIP IRC Channel: #gentoo-voip @ irc.libera.chat" + else + local my_replacing=() x + for x in ${REPLACING_VERSIONS}; do + [[ $(ver_cut 1 ${x}) != $(ver_cut 1) ]] && + my_replacing+=( $(ver_cut 1 ${x}) ) + done + if [[ "${#my_replacing}" -gt 0 ]]; then + my_replacing="${my_replacing[*]}" + my_replacing="${my_replacing// /, }" + [[ "${my_replacing}" = *", "* ]] && + my_replacing="${my_replacing%, *} or ${my_replacing##*, }" + elog "You are updating from Asterisk ${my_replacing}, you should reference the upgrade document:" + elog "https://docs.asterisk.org/Asterisk_$(ver_cut 1)_Documentation/Upgrading/" + elog "Assistance also available on Gentoo VoIP IRC Channel: #gentoo-voip @ irc.libera.chat" + fi + fi + + if [[ -n "${GENTOO_ASTERISK_CUSTOM_MENUSELECT:+yes}" ]]; then + ewarn "You are using GENTOO_ASTERISK_CUSTOM_MENUSELECT, this should only be used" + ewarn "for debugging, for anything else, please file a bug on https://bugs.gentoo.org" + fi + + if [[ -f /var/lib/asterisk/astdb.sqlite3 ]]; then + ewarn "Default astdb location has changed from /var/lib/asterisk to /var/lib/asterisk/astdb" + ewarn "You still have a /var/lib/asterisk/astdb.sqlite3 file. You need to either set" + ewarn "astdbdir in /etc/asterisk/asterisk.conf to /var/lib/asterisk or follow these" + ewarn "steps to migrate:" + ewarn "1. /etc/init.d/asterisk stop" + ewarn "2. mv /var/lib/asterisk/astdb.sqlite3 /var/lib/asterisk/astdb/" + ewarn "3. /etc/init.d/asterisk start" + ewarn "This update was done partly for security reasons so that /var/lib/asterisk can be root owned." + fi +} diff --git a/net-misc/asterisk/asterisk-23.5.0.ebuild b/net-misc/asterisk/asterisk-23.5.0.ebuild new file mode 100644 index 000000000000..cb4149d2dea3 --- /dev/null +++ b/net-misc/asterisk/asterisk-23.5.0.ebuild @@ -0,0 +1,350 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +inherit autotools linux-info lua-single toolchain-funcs + +DESCRIPTION="Asterisk: A Modular Open Source PBX System" +HOMEPAGE="https://www.asterisk.org/" +SRC_URI="https://downloads.asterisk.org/pub/telephony/asterisk/releases/${P}.tar.gz" +LICENSE="GPL-2" +SLOT="0/${PV%%.*}" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~sparc ~x86" + +IUSE_VOICEMAIL_STORAGE=( + voicemail_storage_odbc + voicemail_storage_imap +) +IUSE="${IUSE_VOICEMAIL_STORAGE[*]} blocks bluetooth calendar +caps cluster codec2 curl debug doc freetds gtalk http iconv ilbc ldap lua mysql newt odbc pjproject portaudio postgres radius selinux snmp span speex srtp +ssl static statsd systemd unbound vorbis xmpp" +IUSE_EXPAND="VOICEMAIL_STORAGE" +REQUIRED_USE="gtalk? ( xmpp ) + lua? ( ${LUA_REQUIRED_USE} ) + voicemail_storage_odbc? ( odbc ) +" + +PATCHES=( + "${FILESDIR}/asterisk-16.16.2-no-var-run-install.patch" +) + +DEPEND="acct-user/asterisk + acct-group/asterisk + dev-db/sqlite:3 + dev-libs/popt + >=dev-libs/jansson-2.11:= + dev-libs/libedit + dev-libs/libxml2:2= + dev-libs/libxslt + sys-apps/util-linux + virtual/zlib:= + virtual/libcrypt:= + bluetooth? ( net-wireless/bluez:= ) + calendar? ( + net-libs/neon:= + dev-libs/libical:= + dev-libs/iksemel + ) + caps? ( sys-libs/libcap ) + blocks? ( sys-libs/blocksruntime ) + cluster? ( sys-cluster/corosync ) + codec2? ( media-libs/codec2:= ) + curl? ( net-misc/curl ) + freetds? ( dev-db/freetds ) + gtalk? ( dev-libs/iksemel ) + http? ( dev-libs/gmime:2.6 ) + iconv? ( virtual/libiconv ) + ilbc? ( media-libs/libilbc ) + ldap? ( net-nds/openldap:= ) + lua? ( ${LUA_DEPS} ) + mysql? ( dev-db/mysql-connector-c:= ) + newt? ( dev-libs/newt ) + odbc? ( dev-db/unixODBC ) + pjproject? ( >=net-libs/pjproject-2.12:= ) + portaudio? ( media-libs/portaudio ) + postgres? ( dev-db/postgresql:* ) + radius? ( net-dialup/freeradius-client ) + snmp? ( net-analyzer/net-snmp:= ) + span? ( media-libs/spandsp ) + speex? ( + media-libs/libogg + media-libs/speex + media-libs/speexdsp + ) + srtp? ( net-libs/libsrtp:= ) + ssl? ( + dev-libs/openssl:0= + ) + systemd? ( sys-apps/systemd ) + !systemd? ( !sys-apps/systemd ) + unbound? ( net-dns/unbound ) + vorbis? ( + media-libs/libogg + media-libs/libvorbis + ) + voicemail_storage_imap? ( net-libs/c-client[ssl=] ) + xmpp? ( dev-libs/iksemel ) +" + +RDEPEND="${DEPEND} + net-misc/asterisk-core-sounds + net-misc/asterisk-extra-sounds + net-misc/asterisk-moh-opsound + selinux? ( sec-policy/selinux-asterisk )" +PDEPEND="net-misc/asterisk-base" + +BDEPEND="dev-libs/libxml2:2 + virtual/pkgconfig" + +QA_CONFIG_IMPL_DECL_SKIP=( + htonll + ntohll +) +QA_DT_NEEDED="/usr/lib.*/libasteriskssl[.]so[.][0-9]\+" + +ast_make() { + local make_args=( + "NOISY_BUILD=yes" + "ASTDBDIR=\$(ASTDATADIR)/astdb" + "ASTVARRUNDIR=/run/asterisk" + "ASTCACHEDIR=/var/cache/asterisk" + "OPTIMIZE=" + "DEBUG=" + "CONFIG_SRC=configs/samples" + "CONFIG_EXTEN=.sample" + "AST_FORTIFY_SOURCE=" + ) + + emake "${make_args[@]}" "$@" +} + +pkg_pretend() { + CONFIG_CHECK="~!NF_CONNTRACK_SIP" + local WARNING_NF_CONNTRACK_SIP="SIP (NAT) connection tracking is enabled. Some users + have reported that this module dropped critical SIP packets in their deployments. You + may want to disable it if you see such problems." + check_extra_config + + [[ "${MERGE_TYPE}" == binary ]] && return + + if tc-is-clang; then + use blocks || die "CC=clang requires USE=blocks" + else + use blocks && die "USE=blocks can only be used with CC=clang" + fi +} + +pkg_setup() { + use lua && lua-single_pkg_setup +} + +src_prepare() { + default + AT_M4DIR="autoconf third-party third-party/pjproject third-party/jansson third-party/libjwt" \ + AC_CONFIG_SUBDIRS=menuselect eautoreconf +} + +src_configure() { + local vmst + local copt cstate + local myconf=( + LUA_VERSION="${ELUA#lua}" \ + --localstatedir="/var" \ + --with-crypto \ + --with-gsm=internal \ + --with-popt \ + --with-z \ + --with-libedit \ + --without-jansson-bundled \ + --without-pjproject-bundled \ + $(use_with caps cap) \ + $(use_with codec2) \ + $(use_with lua lua) \ + $(use_with http gmime) \ + $(use_with newt) \ + $(use_with pjproject) \ + $(use_with portaudio) \ + $(use_with ssl) \ + $(use_with unbound) + ) + + econf "${myconf[@]}" + + ast_menuselect() { + menuselect/menuselect "$@" menuselect.makeopts || die "menuselect $* failed." + } + + _use_select() { + local state=$(use "$1" && echo enable || echo disable) + local x + shift # remove use from parameters + + for x; do + ast_menuselect --${state} "$x" + done + } + + # Blank out sounds/sounds.xml file to prevent + # asterisk from installing sounds files (we pull them in via + # asterisk-{core,extra}-sounds and asterisk-moh-opsound. + >sounds/sounds.xml || die "Unable to blank out sounds/sounds.xml" + + # That NATIVE_ARCH chatter really is quite bothersome + sed -i 's/NATIVE_ARCH=/&0/' build_tools/menuselect-deps || die "Unable to squelch noisy build system" + + # Compile menuselect binary for optional components + ast_make menuselect.makeopts + + # Disable BUILD_NATIVE (bug #667498) + ast_menuselect --disable build_native + + # Broken functionality is forcibly disabled (bug #360143) + ast_menuselect --disable chan_ooh323 + + # Utility set is forcibly enabled (bug #358001) + ast_menuselect --enable smsq + ast_menuselect --enable streamplayer + ast_menuselect --enable aelparse + ast_menuselect --enable astman + + # SSL is forcibly enabled, IAX2 & DUNDI are expected to be available + ast_menuselect --enable pbx_dundi + ast_menuselect --enable func_aes + ast_menuselect --enable chan_iax2 + + # SQlite3 is now the main database backend, enable related features + ast_menuselect --enable cdr_sqlite3_custom + ast_menuselect --enable cel_sqlite3_custom + + # The others are based on USE-flag settings + _use_select bluetooth chan_mobile + _use_select calendar res_calendar res_calendar_{caldav,ews,exchange,icalendar} + _use_select cluster res_corosync + _use_select codec2 codec_codec2 + _use_select curl func_curl res_config_curl res_curl + _use_select freetds {cdr,cel}_tds + _use_select gtalk chan_motif + _use_select http res_http_post + _use_select iconv func_iconv + _use_select ilbc codec_ilbc format_ilbc + _use_select ldap res_config_ldap + _use_select lua pbx_lua + _use_select mysql res_config_mysql + _use_select odbc cdr_adaptive_odbc res_config_odbc {cdr,cel,res,func}_odbc + _use_select postgres {cdr,cel}_pgsql res_config_pgsql + _use_select radius {cdr,cel}_radius + _use_select snmp res_snmp + _use_select span res_fax_spandsp + _use_select speex {codec,func}_speex + _use_select speex format_ogg_speex + _use_select srtp res_srtp + _use_select statsd res_statsd res_{endpoint,chan}_stats + _use_select vorbis format_ogg_vorbis + _use_select xmpp res_xmpp + + # Voicemail storage ... + ast_menuselect --enable app_voicemail + for vmst in "${IUSE_VOICEMAIL_STORAGE[@]}"; do + if use "${vmst#+}"; then + ast_menuselect --enable "app_voicemail_${vmst##*_}" + fi + done + + if use debug; then + for o in DONT_OPTIMIZE DEBUG_FD_LEAKS MALLOC_DEBUG BETTER_BACKTRACES; do + ast_menuselect --enable "${o}" + done + fi + + if [[ -n "${GENTOO_ASTERISK_CUSTOM_MENUSELECT:+yes}" ]]; then + for copt in ${GENTOO_ASTERISK_CUSTOM_MENUSELECT}; do + cstate=--enable + [[ "${copt}" == -* ]] && cstate=--disable + ebegin "Custom option ${copt#[-+]} ${cstate:2}d" + ast_menuselect ${cstate} "${copt#[-+]}" + eend $? + done + fi +} + +src_compile() { + ast_make +} + +src_install() { + local d + + dodir "/usr/$(get_libdir)/pkgconfig" + + diropts -m 0750 -o root -g asterisk + dodir /etc/asterisk + + ast_make install install-headers install-configs "DESTDIR=${D}" + + fowners asterisk: /var/lib/asterisk/astdb + + if use radius; then + insinto /etc/radiusclient/ + doins contrib/dictionary.digium + fi + + # keep directories + diropts -m 0750 -o asterisk -g root + keepdir /var/spool/asterisk/{system,tmp,meetme,monitor,dictate,voicemail,recording,outgoing} + diropts -m 0750 -o asterisk -g asterisk + keepdir /var/log/asterisk/{cdr-csv,cdr-custom} + + # Reset diropts else dodoc uses it for doc installations. + diropts -m0755 + + dodoc README* BUGS CREDITS + + # install extra documentation + use doc && dodoc doc/*.{txt,pdf} + + # Asterisk installs a few folders that's empty by design, + # but still required. This finds them, and marks them for + # portage. + while read d <&3; do + keepdir "${d#${ED}}" + done 3< <(find "${ED}"/var -type d -empty || die "Find failed.") +} + +pkg_postinst() { + if [[ -z "${REPLACING_VERSIONS}" ]]; then + elog "Asterisk Wiki: https://wiki.asterisk.org/wiki/" + elog "Gentoo VoIP IRC Channel: #gentoo-voip @ irc.libera.chat" + else + local my_replacing=() x + for x in ${REPLACING_VERSIONS}; do + [[ $(ver_cut 1 ${x}) != $(ver_cut 1) ]] && + my_replacing+=( $(ver_cut 1 ${x}) ) + done + if [[ "${#my_replacing}" -gt 0 ]]; then + my_replacing="${my_replacing[*]}" + my_replacing="${my_replacing// /, }" + [[ "${my_replacing}" = *", "* ]] && + my_replacing="${my_replacing%, *} or ${my_replacing##*, }" + elog "You are updating from Asterisk ${my_replacing}, you should reference the upgrade document:" + elog "https://docs.asterisk.org/Asterisk_$(ver_cut 1)_Documentation/Upgrading/" + elog "Assistance also available on Gentoo VoIP IRC Channel: #gentoo-voip @ irc.libera.chat" + fi + fi + + if [[ -n "${GENTOO_ASTERISK_CUSTOM_MENUSELECT:+yes}" ]]; then + ewarn "You are using GENTOO_ASTERISK_CUSTOM_MENUSELECT, this should only be used" + ewarn "for debugging, for anything else, please file a bug on https://bugs.gentoo.org" + fi + + if [[ -f /var/lib/asterisk/astdb.sqlite3 ]]; then + ewarn "Default astdb location has changed from /var/lib/asterisk to /var/lib/asterisk/astdb" + ewarn "You still have a /var/lib/asterisk/astdb.sqlite3 file. You need to either set" + ewarn "astdbdir in /etc/asterisk/asterisk.conf to /var/lib/asterisk or follow these" + ewarn "steps to migrate:" + ewarn "1. /etc/init.d/asterisk stop" + ewarn "2. mv /var/lib/asterisk/astdb.sqlite3 /var/lib/asterisk/astdb/" + ewarn "3. /etc/init.d/asterisk start" + ewarn "This update was done partly for security reasons so that /var/lib/asterisk can be root owned." + fi +} diff --git a/net-misc/frr/Manifest b/net-misc/frr/Manifest index 378eab512f62..b4676acabb8a 100644 --- a/net-misc/frr/Manifest +++ b/net-misc/frr/Manifest @@ -1,13 +1,16 @@ -DIST frr-10.1.3.tar.gz 11054898 BLAKE2B d0315061fddd2fb7d44cc9fd58044203a54778f716a341e3b73f15427f17ac73aaab0887d5d805f2d80c26688e4b49445467e8007d35d1f0aca785e296a2a181 SHA512 90dc1be0ef975b55e4e4442106543ed38b0f51b30dc250a619639d7e37de339801728672ced4f7b197141921b22ad86471a5a2422421daacd6e53f04e1de5179 DIST frr-10.1.4.tar.gz 11052999 BLAKE2B ea887de27ef8878158de6922ea694c763911e68e2b9a80ab6517d9b55bd717c06f1f9fbe1706b1fecbd1fc55cd69f68171371fd6cd69fdffd271bb8003811b4b SHA512 c19ebec84eca93b19ec1722e99abe8188aa159ae6b3d298199aac42da7327f07002d2ddd01f88f12ae37347c82a5fa5d1879166a28fa7df9ee0d482c991829d7 DIST frr-10.1.5.tar.gz 11056980 BLAKE2B 601f500637e05fb1a0f86723add22b524a643c2231d2bdd7060cbfe12174cee676b253042d052e759c1b68823d8948fe1985b2d40dd134faf63e387ac69a9ad7 SHA512 e561419763b0f96ece0f6fdc1e4d6b8a2147dd7f1f134e256791802ba176d10a5a67141cc3f6c2c718d4d28c4df869b4d58290a9409142be0345b271c8bad356 -DIST frr-10.2.3.tar.gz 11191641 BLAKE2B d1ece2ead664e1e06b4080c48c895ab730b08a6f97f0ab119f0edfb1d04913e5dba64725ba4382dd87622639b0e7f30b22121206a5d28ff175275e1682124051 SHA512 e426499ae02aca87bf33d30917f40b730f80be8b70b4ae69685d9d0b70c1a205730691a434613f7348dc5ae196319a797f33c3872e668905e8d5799bff41da93 DIST frr-10.2.5.tar.gz 11211589 BLAKE2B fb44d197418f7d96e2465fc6f5eedd5014550cc5f215a38ca03a8dc5ccc62794d2e6042f65b5930c1e681060dd59c74858cab78bc53bb38d775dec5ede417c62 SHA512 ac1e8433df84cc0411587856cfa2709ed04cd2628682ccdf7c55de8fa0599c9ddf57b2e01a9df27a6d1b54e1ab2289136e2145516182c67a2835b65780f07b68 -DIST frr-10.3.1.tar.gz 11379856 BLAKE2B aeeaa15bcd102ec322672106e1fdd98f2d124ac79514be6ee1ac63648a336519a95b1f1dc5fbee348b92796e6e79e2a9f857b959af5838b2c2b4afb2dc68de0a SHA512 a39ef9995c13f6e5c7fab683a8fce78640c5d40c580ea1978af3af46d393f5da6a2209b49e6609f197a603202943926def035be271b54e79d50b4e68b277c31b +DIST frr-10.2.6.tar.gz 11218518 BLAKE2B 912048eeed4eb5c043690d9476af79ab32d71a7c6b76adef555f9b171837ea1bd6a3ef9996dd3b2a1b9f8c2d3becd581976bd4292e06723ce6c85562e2905f9a SHA512 7aeb9f94e78d1736f753b2f4f54dc810880071540d8eefa368d750d29bd9bc3280700000969734dfdaff646e942481e54ccd00d6c020e28042b96ac91ae30c42 DIST frr-10.3.3.tar.gz 11407013 BLAKE2B 51d244073ab54cc4861a7bb3c88931df7ef5d7d5eee139fcb2529e9c3004daaa2ddbad15cecd6a063b70f6f4a4955a12c89f961aafd2738bfc03d7e5c67ea3a6 SHA512 183fab4c767329a67de00e9cd77c4af61d248468218702e25e6a7e4d72fb0a524417dd4ff6c5cbb639a524fd70c8ba0cac3b3f251794bf5dcf5cf21e4297d737 DIST frr-10.3.4.tar.gz 11417283 BLAKE2B fd8fa07ec6c5c637644c7502b7fab5bf9238d613b91e9a0b31f968cec99473012f526dbae064a909fc8be6ee93ac9351bf67b1df8ade3bfb4e41dd14691fa035 SHA512 bd9684a54106c9913497b81d2fdd97b8d1f946024f102a9c6f5ee954aee4cbfea66d053343249b15fd8b679f59568a53d99e844b76aa894c7bb3dc4d3aae07e9 DIST frr-10.4.3.tar.gz 11604274 BLAKE2B acb0a576a49f203a6472bcf2154ca93cdc73466da4669fc6c40cef334a33f1ab9f9fdc982afdb04411441aa470b3f4b3812569fe67f0108c5ed8c11bf7e8b869 SHA512 a02af2804c65996e831b067ba775c5b925d28f7f12ac5ce435c439b9aad874080c6594fcc0013f3895db3c4a1fa6f2cc5934f78103f7331c56e7feb20e2069c2 DIST frr-10.4.4.tar.gz 11608145 BLAKE2B 9f22016737cc835d3a3dc9770d511504d0a8f43cbe7c2046663fafb4e67266e1a6c0cdcdc2c4e3588565ea47d89f145144f7c5b01ccf091cd61888ada1de225d SHA512 22aea3b97c285930f8ebe3e4916fef9043141a5ee5ffc3f4e88b5dc3f80b537b3a5e930a222db21c424334a0008a8ee9f0434c93faa0c49ecad3f0434e78a86b +DIST frr-10.4.5.tar.gz 11623268 BLAKE2B 14c7528c46d8317be3002eb838f347736ad8e1f3b4e7a3efc9cf3456857770a4cf9d4795ff2307d5d5085419f9da990a09963f2bd55b661d4f7eff867babb6fb SHA512 d6f9aabfcc42c4c5e475489e4555ef677bf5ae97457aa65ecd1ab609b474249c6543e997496daa6250c5cedbec9e7667cf91549d52c7abdf7383e7759aa02e1f DIST frr-10.5.3.tar.gz 11681795 BLAKE2B 86575b9c887d7c933f24c97b3f220b422c332817cb0012fb6b14a7888da49b9963be87014197ed3854740aa0058e7a577d42bc4362b5be9e131606e1ca2a1af0 SHA512 0195dff0299be91d4e7ce7c9c0737773d74171a8500f2257c74fcad8388849e955aace5dbcc28b6bb99ba6b4102886941055d7742196628701f5f6996d5f7a9e DIST frr-10.5.4.tar.gz 11692283 BLAKE2B 1b28435a6264fa9ff249a974cebad2b544bd6d31c2332247c39e8b884a74e61306ac2f71f14636b80efddddbce0b8a4e64d05909d23d43ad4c4cbad7ed5c2bcb SHA512 69e5c9ca70efa0cfb84cb251b213a2b3bd526ec7b8477f0d269b9463bf9e85338ad7e28c3e0aa2bd2dbe9e6c9fc412b12afcff28898bdbaa2f3a9c420b074f2d +DIST frr-10.5.5.tar.gz 11732841 BLAKE2B d60d2ca455ccb59d9f7b44b362649dbdfde0022e18f92c07323041852fbfafe30302cf721fe02430b367c2f6152493e23a41dde1932136f57b1df22e46a11db0 SHA512 2ecc8e2d6b79f4afa19a54de8a313f7d14b7b854d040084d215c5da4c83a7842a13b353801cf729381b30a789846a7aa50f368a12c7a0152957e152adc50811a DIST frr-10.6.1.tar.gz 11999229 BLAKE2B 1740464b53ea93e4dfe1e8c7eecfeb062f40d0ea3fcf824a12f66caef4155ee047ec4bf4c4f2defecd5c38bddc9659941763045095cf133fcb48beacd7b2d006 SHA512 c591055fc29c237f16f337835268515685872876e6f6abf82f91226543a22068c4e169904780a7ad08e383a31509b93a14fbfce26170186e64b9af3799e8f271 +DIST frr-10.6.2.tar.gz 12068751 BLAKE2B 32fc10cbf6f780fd7eac4d08610c9e7c455faa735a1c0f58f98fc41c43536193a0486b484f60ba691396b5b09270903f8b2ad34bce4c2e7e3829fc1096d6949a SHA512 c3eb0c4ea2630b571dd176dbb78c7d618309c23f0cf588bca0b29e4474a3c74c5f7fff084f8d82e26983112a51c24e5194d1fec0afc03ffb15ed82f77dbe596a +DIST frr-10.7.0.tar.gz 12518790 BLAKE2B 4adc266bb68788d084986ec5ada3aff2f8cee29203556340932930f8232b217ca649d126b982e03f8c7f82144ef6efed29eea2055d32d08cde242c52c6acca89 SHA512 72f745b237c9644237171cb290ea1ae506e991f036d2f9669bf1e5398f81f26450a29f3db8f0a6ca001fb3f4f13b2ad8a90211a303eb4f869c016d20979d6da3 +DIST frr-10.7.1.tar.gz 12546137 BLAKE2B 7f7e703a5d2a2615c5061e57aed6dbd36baa796592cc03d2c1c8bb306e183957eeb331c586953bfd87e16f39947988a74c00f76b79a8284d07967f05ec1362e5 SHA512 c7e171ae1a30669fb6e027977af77125e233ad8e9b7ca8612725b426c52600164e7b69db8c6b4280276c30a3ad1f0b7b9cf51fc7a4593fe30cc219eec4c7a957 diff --git a/net-misc/frr/files/frr-8.4.1-logrotate.patch b/net-misc/frr/files/frr-8.4.1-logrotate.patch deleted file mode 100644 index e1507455ae38..000000000000 --- a/net-misc/frr/files/frr-8.4.1-logrotate.patch +++ /dev/null @@ -1,168 +0,0 @@ ---- a/redhat/frr.logrotate 2022-11-18 08:31:08.000000000 +0300 -+++ b/redhat/frr.logrotate 2022-12-08 15:49:11.162739743 +0300 -@@ -1,4 +1,5 @@ - /var/log/frr/frr.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -7,6 +8,7 @@ - } - - /var/log/frr/zebra.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -15,6 +17,7 @@ - } - - /var/log/frr/babeld.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -23,6 +26,7 @@ - } - - /var/log/frr/bgpd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -31,6 +35,7 @@ - } - - /var/log/frr/isisd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -39,6 +44,7 @@ - } - - /var/log/frr/ospfd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -47,6 +53,7 @@ - } - - /var/log/frr/ospf6d.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -55,6 +62,7 @@ - } - - /var/log/frr/ripd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -63,6 +71,7 @@ - } - - /var/log/frr/ripngd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -71,6 +80,7 @@ - } - - /var/log/frr/ldpd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -79,6 +89,7 @@ - } - - /var/log/frr/nhrpd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -87,6 +98,7 @@ - } - - /var/log/frr/eigrpd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -95,6 +107,7 @@ - } - - /var/log/frr/bfdd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -103,6 +116,7 @@ - } - - /var/log/frr/fabricd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -111,6 +125,7 @@ - } - - /var/log/frr/pathd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -119,6 +134,7 @@ - } - - /var/log/frr/pbrd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -127,6 +143,7 @@ - } - - /var/log/frr/pimd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -135,6 +152,7 @@ - } - - /var/log/frr/pim6d.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -143,6 +161,7 @@ - } - - /var/log/frr/sharpd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -151,6 +170,7 @@ - } - - /var/log/frr/staticd.log { -+ su frr frr - notifempty - missingok - postrotate -@@ -159,6 +179,7 @@ - } - - /var/log/frr/vrrpd.log { -+ su frr frr - notifempty - missingok - postrotate diff --git a/net-misc/frr/files/frr-openrc-v2 b/net-misc/frr/files/frr-openrc-v2 deleted file mode 100644 index 24e326ed84a7..000000000000 --- a/net-misc/frr/files/frr-openrc-v2 +++ /dev/null @@ -1,301 +0,0 @@ -#!/sbin/openrc-run -# -# FRR OpenRC init script. -# -# Copyright (C) 2020 Rafael F. Zalamena -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; only version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -description="FRR initialization script." - -# FRR variables. -frr_dir="/usr/lib/frr" -frr_state_dir="/run/frr" -config_file="/etc/frr/frr.conf" -daemon_file="/etc/frr/daemons" -daemon_db="/run/frrdb" -vty_config_file="/etc/frr/vtysh.conf" -frr_reload="$frr_dir/frr-reload.py" -frr_reload_log="$frr_state_dir/reload.log" - -# Don't change profile here, use $daemon_file. This is the default. -frr_profile="traditional" - -# watchfrr variables. -watchfrr_daemons='' -watchfrr_pidfile="$frr_state_dir/watchfrr.pid" - -# -# Helpers. -# -_check_daemon_binary() { - local daemon=$1 - - [ -x "$frr_dir/$daemon" ] && return 0 - - eerror "No binary found for $daemon in $frr_dir" - return 1 -} - -_load_daemon_list() { - # Load FRR daemons configuration file. - while read line <&3 ; do - case $line in - ""|"#"*) - # Skip empty/commented lines. - continue - ;; - - *d=*|*_instances=*|*_options=*|*_wrap=*) - # Load daemon options. - eval "$line" - ;; - - MAX_FDS=*|frr_profile=*|vtysh_enable=*) - # Load misc configuration. - eval "$line" - ;; - esac - done 3< $daemon_file - - # `zebra` and `staticd` are mandatory. - _check_daemon_binary 'zebra' || return 1 - _check_daemon_binary 'staticd' || return 1 - watchfrr_daemons='zebra staticd' - - # Create the watchfrr command line. - for daemon in \ - babeld bfdd bgpd eigrpd fabricd isisd ldpd nhrpd ospfd ospf6d pbrd \ - pimd ripd ripngd sharpd vrrpd \ - ; do - # Trick to read variable name with variable. - cdaemon=$(eval echo \$$daemon) - cdaemon_instances=$(eval echo \$${daemon}_instances) - - # Add daemon to command line if specified. - if [ ! -z $cdaemon ] && [ $cdaemon = 'yes' ]; then - _check_daemon_binary $daemon || return 1 - - # Multi instance daemon handling. - if [ ! -z $cdaemon_instances ]; then - for instance in $(echo $cdaemon_instances | tr ',' ' '); do - watchfrr_daemons="$watchfrr_daemons $daemon-$instance" - done - continue - fi - - # Single instance daemon handling. - watchfrr_daemons="$watchfrr_daemons $daemon" - continue - fi - done -} - -_frr_start() { - # Apply MAX_FDS configuration if set. - if [ ! -z $MAX_FDS ]; then - veinfo " Setting maximum file descriptors to ${MAX_FDS}" - prlimit -n $MAX_FDS >/dev/null 2>/dev/null - fi - - # Save started daemons to state database. - rm -f -- $daemon_db - for daemon in $watchfrr_daemons; do - echo $daemon >> $daemon_db - veinfo " Starting $daemon..." - done - - veinfo " Starting watchfrr..." - - # Start watchfrr which will start all configured daemons. - eval $all_wrap $frr_dir/watchfrr -d -F $frr_profile $watchfrr_daemons - - veinfo " Loading configuration..." - - # After starting the daemons, lets load the configuration. - if [ $vtysh_enable = 'yes' ]; then - vtysh -b -n - else - veinfo " Configuration loading disabled (vtysh_enable=$vtysh_enable)" - fi -} - -_get_pid() { - local daemon=$1 - local pid_file="$frr_state_dir/$daemon.pid" - - # Test for file existence. - if [ ! -r "$pid_file" ]; then - eerror "Failed to find or read $daemon pid file" - return 1 - fi - - # Get PID if any. - pid=$(cat $pid_file) - if [ -z $pid ]; then - eerror "$daemon PID file empty" - return 1 - fi - - return 0 -} - -_stop_daemon() { - local daemon=$1 - local pid_file="$frr_state_dir/$daemon.pid" - - # Get daemon pid. - _get_pid $daemon - - # Ask daemon to quit. - kill -2 "$pid" - - # Test if daemon is still running. - attempts=1200 - while kill -0 "$pid" 2>/dev/null; do - sleep 0.5 - [ $((attempts - 1)) -gt 0 ] || break - done - - # Tell user about our situation. - if kill -0 "$pid" 2>/dev/null ; then - eerror "Failed to stop $daemon (PID=${pid})" - return 1 - else - rm -f -- $pid_file - fi -} - -_frr_stop() { - local failures=0 - - # Stop watchfrr first so it doesn't restart anyone. - veinfo " Stopping watchfrr..." - _stop_daemon watchfrr || failures=1 - - # Read started daemon database. - while read line <&3 ; do - case $line in - ""|"#"*) - # Skip empty/commented lines. - continue - ;; - - *) - # Get daemon name. - veinfo " Stopping $line..." - _stop_daemon $line || failures=1 - ;; - esac - done 3< $daemon_db - - # Remove daemon database file. - rm -f -- $daemon_db - - return $failures -} - -_check_watchfrr() { - _get_pid watchfrr || return 1 - return 0 -} - -# -# Main. -# -depend() { - # We need root to write logs. - need localmount - # Optionally wait for network to start. - use net - # Expect /run to be ready. - after bootmisc -} - -start_pre() { - # Check configuration file readability. - checkpath -f -m 0640 -o frr:frr $vty_config_file - checkpath -f -m 0640 -o frr:frr $daemon_file - checkpath -f -m 0640 -o frr:frr $config_file - - # Check run state directory. - checkpath -d -o frr $frr_state_dir - - # Load daemon list and peform checks. - _load_daemon_list -} - -start() { - # Load daemon list. - _load_daemon_list - - # Handle restarts. - if [ "$RC_CMD" = 'restart' ]; then - ebegin 'Reloading FRR configuration' - else - ebegin 'Starting FRR' - fi - - # Start FRR. - _frr_start - - # New daemons and watchfrr started, apply new configuration. - if [ "$RC_CMD" = 'restart' ]; then - "$frr_reload" --reload "$config_file" 2>/run/frr/reload.log - [ $? -ne 0 ] && ewarn " Failed to reload (check $frr_reload_log)" - # NOTE: we can't return bad status otherwise OpenRC will think we - # failed to start, lets print a helpful message instead. - fi - - eend 0 -} - -stop() { - local failures=0 - - # Handle restarts. - if [ "$RC_CMD" = 'restart' ]; then - # Load daemon list. - _load_daemon_list - - # We must restart 'watchfrr' in order to start new daemons. - veinfo " Stopping watchfrr..." - _stop_daemon watchfrr - - # Stop daemons that are no longer in configuration file. - for daemon in $(ls -1 /run/frr/*.pid | cut -d '.' -f 1); do - # Filter daemon name. - daemon=$(basename "$daemon") - - # Skip watchfrr. - [ "$daemon" = 'watchfrr' ] && continue - - echo "$watchfrr_daemons" | grep "$daemon" >/dev/null - if [ $? -ne 0 ]; then - veinfo " Stopping $daemon..." - _stop_daemon $daemon - fi - done - - return 0 - fi - - ebegin 'Stopping FRR' - _frr_stop || failures=1 - eend $failures 'some daemons failed to stop' -} - -status() { - _check_watchfrr || return 1 -} diff --git a/net-misc/frr/frr-10.2.3.ebuild b/net-misc/frr/frr-10.2.6.ebuild index 2a7bdf5cfeb7..876a999cb402 100644 --- a/net-misc/frr/frr-10.2.3.ebuild +++ b/net-misc/frr/frr-10.2.6.ebuild @@ -14,7 +14,7 @@ S="${WORKDIR}/frr-${P}" LICENSE="GPL-2+" SLOT="0/$(ver_cut 1-2)" -KEYWORDS="amd64 ~arm64 ~x86" +KEYWORDS="~amd64 ~arm64 ~x86" IUSE="doc fpm grpc nhrp ospfapi pam rpki snmp test" REQUIRED_USE="${PYTHON_REQUIRED_USE}" RESTRICT="!test? ( test )" @@ -55,7 +55,6 @@ RDEPEND=" PATCHES=( "${FILESDIR}"/${PN}-7.5-ipctl-forwarding.patch - "${FILESDIR}"/${PN}-8.4.1-logrotate.patch "${FILESDIR}"/${PN}-9.1-mimic-gnu-basename-api-for-non-glibc.patch "${FILESDIR}"/${PN}-tests-abs_srcdir.patch "${FILESDIR}"/${PN}-tests-grpc.patch @@ -136,14 +135,14 @@ my_src_install() { # Install logrotate configuration insinto /etc/logrotate.d - newins "${S}"/redhat/frr.logrotate frr + newins "${FILESDIR}/logrotate-v2" frr # Install PAM configuration file use pam && newpamd "${FILESDIR}"/frr.pam frr # Install init scripts systemd_dounit tools/frr.service - newinitd "${FILESDIR}"/frr-openrc-v2 frr + newinitd "${FILESDIR}"/frr-openrc-v4 frr # Conflict files, installed by net-libs/libsmi, bug #758383 # Files from frr seems to be newer. diff --git a/net-misc/frr/frr-10.3.1.ebuild b/net-misc/frr/frr-10.4.5.ebuild index 2a7bdf5cfeb7..876a999cb402 100644 --- a/net-misc/frr/frr-10.3.1.ebuild +++ b/net-misc/frr/frr-10.4.5.ebuild @@ -14,7 +14,7 @@ S="${WORKDIR}/frr-${P}" LICENSE="GPL-2+" SLOT="0/$(ver_cut 1-2)" -KEYWORDS="amd64 ~arm64 ~x86" +KEYWORDS="~amd64 ~arm64 ~x86" IUSE="doc fpm grpc nhrp ospfapi pam rpki snmp test" REQUIRED_USE="${PYTHON_REQUIRED_USE}" RESTRICT="!test? ( test )" @@ -55,7 +55,6 @@ RDEPEND=" PATCHES=( "${FILESDIR}"/${PN}-7.5-ipctl-forwarding.patch - "${FILESDIR}"/${PN}-8.4.1-logrotate.patch "${FILESDIR}"/${PN}-9.1-mimic-gnu-basename-api-for-non-glibc.patch "${FILESDIR}"/${PN}-tests-abs_srcdir.patch "${FILESDIR}"/${PN}-tests-grpc.patch @@ -136,14 +135,14 @@ my_src_install() { # Install logrotate configuration insinto /etc/logrotate.d - newins "${S}"/redhat/frr.logrotate frr + newins "${FILESDIR}/logrotate-v2" frr # Install PAM configuration file use pam && newpamd "${FILESDIR}"/frr.pam frr # Install init scripts systemd_dounit tools/frr.service - newinitd "${FILESDIR}"/frr-openrc-v2 frr + newinitd "${FILESDIR}"/frr-openrc-v4 frr # Conflict files, installed by net-libs/libsmi, bug #758383 # Files from frr seems to be newer. diff --git a/net-misc/frr/frr-10.1.3.ebuild b/net-misc/frr/frr-10.5.5.ebuild index 36f33c84a7db..876a999cb402 100644 --- a/net-misc/frr/frr-10.1.3.ebuild +++ b/net-misc/frr/frr-10.5.5.ebuild @@ -4,7 +4,7 @@ EAPI=8 PYTHON_COMPAT=( python3_{13..14} ) -inherit autotools pam python-single-r1 systemd +inherit out-of-source autotools pam python-single-r1 systemd DESCRIPTION="The FRRouting Protocol Suite" HOMEPAGE="https://frrouting.org/" @@ -14,7 +14,7 @@ S="${WORKDIR}/frr-${P}" LICENSE="GPL-2+" SLOT="0/$(ver_cut 1-2)" -KEYWORDS="amd64 ~arm64 ~x86" +KEYWORDS="~amd64 ~arm64 ~x86" IUSE="doc fpm grpc nhrp ospfapi pam rpki snmp test" REQUIRED_USE="${PYTHON_REQUIRED_USE}" RESTRICT="!test? ( test )" @@ -37,7 +37,9 @@ COMMON_DEPEND=" BDEPEND=" sys-devel/flex app-alternatives/yacc + dev-libs/elfutils doc? ( dev-python/sphinx ) + grpc? ( sys-apps/which ) " DEPEND=" ${COMMON_DEPEND} @@ -53,7 +55,6 @@ RDEPEND=" PATCHES=( "${FILESDIR}"/${PN}-7.5-ipctl-forwarding.patch - "${FILESDIR}"/${PN}-8.4.1-logrotate.patch "${FILESDIR}"/${PN}-9.1-mimic-gnu-basename-api-for-non-glibc.patch "${FILESDIR}"/${PN}-tests-abs_srcdir.patch "${FILESDIR}"/${PN}-tests-grpc.patch @@ -71,7 +72,7 @@ src_prepare() { eautoreconf } -src_configure() { +my_src_configure() { local myconf=( ac_cv_prog_VALGRIND_CHECK=no LEX=flex @@ -101,18 +102,18 @@ src_configure() { econf "${myconf[@]}" } -src_compile() { +my_src_compile() { emake GRPC_CFLAGS=-std=gnu++23 GRPC_CXXFLAGS=-std=gnu++23 use doc && emake html } -src_test() { +my_src_test() { local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 emake GRPC_CFLAGS=-std=gnu++23 GRPC_CXXFLAGS=-std=gnu++23 check } -src_install() { +my_src_install() { default find "${ED}" -name '*.la' -delete || die @@ -126,7 +127,7 @@ src_install() { # Install the default configuration files insinto /etc/frr - doins tools/etc/frr/{vtysh.conf,frr.conf,daemons} + doins "${S}"/tools/etc/frr/{vtysh.conf,frr.conf,daemons} # Fix permissions/owners. fowners frr:frr /etc/frr/{vtysh.conf,frr.conf,daemons} @@ -134,14 +135,14 @@ src_install() { # Install logrotate configuration insinto /etc/logrotate.d - newins redhat/frr.logrotate frr + newins "${FILESDIR}/logrotate-v2" frr # Install PAM configuration file use pam && newpamd "${FILESDIR}"/frr.pam frr # Install init scripts systemd_dounit tools/frr.service - newinitd "${FILESDIR}"/frr-openrc-v2 frr + newinitd "${FILESDIR}"/frr-openrc-v4 frr # Conflict files, installed by net-libs/libsmi, bug #758383 # Files from frr seems to be newer. diff --git a/net-misc/frr/frr-10.6.2.ebuild b/net-misc/frr/frr-10.6.2.ebuild new file mode 100644 index 000000000000..876a999cb402 --- /dev/null +++ b/net-misc/frr/frr-10.6.2.ebuild @@ -0,0 +1,153 @@ +# Copyright 2020-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{13..14} ) +inherit out-of-source autotools pam python-single-r1 systemd + +DESCRIPTION="The FRRouting Protocol Suite" +HOMEPAGE="https://frrouting.org/" +SRC_URI="https://github.com/FRRouting/frr/archive/${P}.tar.gz" +# FRR tarballs have weird format. +S="${WORKDIR}/frr-${P}" + +LICENSE="GPL-2+" +SLOT="0/$(ver_cut 1-2)" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="doc fpm grpc nhrp ospfapi pam rpki snmp test" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" +RESTRICT="!test? ( test )" + +COMMON_DEPEND=" + ${PYTHON_DEPS} + acct-user/frr + dev-libs/json-c:0= + dev-libs/protobuf-c:0= + >=net-libs/libyang-2.1.128 + sys-libs/libcap + sys-libs/readline:0= + virtual/libcrypt:= + grpc? ( net-libs/grpc:= ) + nhrp? ( net-dns/c-ares:0= ) + pam? ( sys-libs/pam ) + rpki? ( >=net-libs/rtrlib-0.8.0[ssh] ) + snmp? ( net-analyzer/net-snmp:= ) +" +BDEPEND=" + sys-devel/flex + app-alternatives/yacc + dev-libs/elfutils + doc? ( dev-python/sphinx ) + grpc? ( sys-apps/which ) +" +DEPEND=" + ${COMMON_DEPEND} + elibc_musl? ( sys-libs/queue-standalone ) + test? ( + $(python_gen_cond_dep 'dev-python/pytest[${PYTHON_USEDEP}]') + dev-util/cunit + ) +" +RDEPEND=" + ${COMMON_DEPEND} +" + +PATCHES=( + "${FILESDIR}"/${PN}-7.5-ipctl-forwarding.patch + "${FILESDIR}"/${PN}-9.1-mimic-gnu-basename-api-for-non-glibc.patch + "${FILESDIR}"/${PN}-tests-abs_srcdir.patch + "${FILESDIR}"/${PN}-tests-grpc.patch +) + +QA_CONFIG_IMPL_DECL_SKIP=( + mallinfo # No functional impact. + mallinfo2 +) + +src_prepare() { + default + + python_fix_shebang tools + eautoreconf +} + +my_src_configure() { + local myconf=( + ac_cv_prog_VALGRIND_CHECK=no + LEX=flex + --with-pkg-extra-version="-gentoo" + --enable-configfile-mask=0640 + --enable-logfile-mask=0640 + --libdir="${EPREFIX}"/usr/lib/frr + --sbindir="${EPREFIX}"/usr/lib/frr + --libexecdir="${EPREFIX}"/usr/lib/frr + --sysconfdir="${EPREFIX}"/etc/frr + --localstatedir="${EPREFIX}"/run/frr + --with-moduledir="${EPREFIX}"/usr/lib/frr/modules + --enable-user=frr + --enable-group=frr + --enable-vty-group=frr + --enable-multipath=64 + $(use_enable doc) + $(use_enable fpm) + $(use_enable grpc) + $(use_enable kernel_linux realms) + $(use_enable nhrp nhrpd) + $(usex ospfapi '--enable-ospfclient' '' '' '') + $(use_enable rpki) + $(use_enable snmp) + ) + + econf "${myconf[@]}" +} + +my_src_compile() { + emake GRPC_CFLAGS=-std=gnu++23 GRPC_CXXFLAGS=-std=gnu++23 + + use doc && emake html +} + +my_src_test() { + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + emake GRPC_CFLAGS=-std=gnu++23 GRPC_CXXFLAGS=-std=gnu++23 check +} + +my_src_install() { + default + find "${ED}" -name '*.la' -delete || die + + # Install user documentation if asked + use doc && dodoc -r doc/user/_build/html + + # Create configuration directory with correct permissions + # Create logs directory with the correct permissions + diropts -ofrr -gfrr -m0775 + keepdir /var/log/frr /etc/frr + + # Install the default configuration files + insinto /etc/frr + doins "${S}"/tools/etc/frr/{vtysh.conf,frr.conf,daemons} + + # Fix permissions/owners. + fowners frr:frr /etc/frr/{vtysh.conf,frr.conf,daemons} + fperms 640 /etc/frr/{vtysh.conf,frr.conf,daemons} + + # Install logrotate configuration + insinto /etc/logrotate.d + newins "${FILESDIR}/logrotate-v2" frr + + # Install PAM configuration file + use pam && newpamd "${FILESDIR}"/frr.pam frr + + # Install init scripts + systemd_dounit tools/frr.service + newinitd "${FILESDIR}"/frr-openrc-v4 frr + + # Conflict files, installed by net-libs/libsmi, bug #758383 + # Files from frr seems to be newer. + rm "${ED}"/usr/share/yang/ietf-interfaces.yang || die + rm "${ED}"/usr/share/yang/ietf-netconf.yang || die + rm "${ED}"/usr/share/yang/ietf-netconf-with-defaults.yang || die + rm "${ED}"/usr/share/yang/ietf-netconf-acm.yang || die +} diff --git a/net-misc/frr/frr-10.7.0.ebuild b/net-misc/frr/frr-10.7.0.ebuild new file mode 100644 index 000000000000..a4289497d8b4 --- /dev/null +++ b/net-misc/frr/frr-10.7.0.ebuild @@ -0,0 +1,151 @@ +# Copyright 2020-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{13..14} ) +inherit out-of-source autotools pam python-single-r1 systemd + +DESCRIPTION="The FRRouting Protocol Suite" +HOMEPAGE="https://frrouting.org/" +SRC_URI="https://github.com/FRRouting/frr/archive/${P}.tar.gz" +# FRR tarballs have weird format. +S="${WORKDIR}/frr-${P}" + +LICENSE="GPL-2+" +SLOT="0/$(ver_cut 1-2)" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="doc fpm grpc nhrp ospfapi pam rpki snmp test" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" +RESTRICT="!test? ( test )" + +COMMON_DEPEND=" + ${PYTHON_DEPS} + acct-user/frr + dev-libs/json-c:0= + dev-libs/protobuf-c:0= + >=net-libs/libyang-2.1.128 + sys-libs/libcap + sys-libs/readline:0= + virtual/libcrypt:= + grpc? ( net-libs/grpc:= ) + nhrp? ( net-dns/c-ares:0= ) + pam? ( sys-libs/pam ) + rpki? ( >=net-libs/rtrlib-0.8.0[ssh] ) + snmp? ( net-analyzer/net-snmp:= ) +" +BDEPEND=" + sys-devel/flex + app-alternatives/yacc + dev-libs/elfutils + doc? ( dev-python/sphinx ) + grpc? ( sys-apps/which ) +" +DEPEND=" + ${COMMON_DEPEND} + elibc_musl? ( sys-libs/queue-standalone ) + test? ( + $(python_gen_cond_dep 'dev-python/pytest[${PYTHON_USEDEP}]') + dev-util/cunit + ) +" +RDEPEND=" + ${COMMON_DEPEND} +" + +PATCHES=( + "${FILESDIR}"/${PN}-7.5-ipctl-forwarding.patch + "${FILESDIR}"/${PN}-9.1-mimic-gnu-basename-api-for-non-glibc.patch +) + +QA_CONFIG_IMPL_DECL_SKIP=( + mallinfo # No functional impact. + mallinfo2 +) + +src_prepare() { + default + + python_fix_shebang tools + eautoreconf +} + +my_src_configure() { + local myconf=( + ac_cv_prog_VALGRIND_CHECK=no + LEX=flex + --with-pkg-extra-version="-gentoo" + --enable-configfile-mask=0640 + --enable-logfile-mask=0640 + --libdir="${EPREFIX}"/usr/lib/frr + --sbindir="${EPREFIX}"/usr/lib/frr + --libexecdir="${EPREFIX}"/usr/lib/frr + --sysconfdir="${EPREFIX}"/etc/frr + --localstatedir="${EPREFIX}"/run/frr + --with-moduledir="${EPREFIX}"/usr/lib/frr/modules + --enable-user=frr + --enable-group=frr + --enable-vty-group=frr + --enable-multipath=64 + $(use_enable doc) + $(use_enable fpm) + $(use_enable grpc) + $(use_enable kernel_linux realms) + $(use_enable nhrp nhrpd) + $(usex ospfapi '--enable-ospfclient' '' '' '') + $(use_enable rpki) + $(use_enable snmp) + ) + + econf "${myconf[@]}" +} + +my_src_compile() { + emake GRPC_CFLAGS=-std=gnu++23 GRPC_CXXFLAGS=-std=gnu++23 + + use doc && emake html +} + +my_src_test() { + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + emake GRPC_CFLAGS=-std=gnu++23 GRPC_CXXFLAGS=-std=gnu++23 check +} + +my_src_install() { + default + find "${ED}" -name '*.la' -delete || die + + # Install user documentation if asked + use doc && dodoc -r doc/user/_build/html + + # Create configuration directory with correct permissions + # Create logs directory with the correct permissions + diropts -ofrr -gfrr -m0775 + keepdir /var/log/frr /etc/frr + + # Install the default configuration files + insinto /etc/frr + doins "${S}"/tools/etc/frr/{vtysh.conf,frr.conf,daemons} + + # Fix permissions/owners. + fowners frr:frr /etc/frr/{vtysh.conf,frr.conf,daemons} + fperms 640 /etc/frr/{vtysh.conf,frr.conf,daemons} + + # Install logrotate configuration + insinto /etc/logrotate.d + newins "${FILESDIR}/logrotate-v2" frr + + # Install PAM configuration file + use pam && newpamd "${FILESDIR}"/frr.pam frr + + # Install init scripts + systemd_dounit tools/frr.service + newinitd "${FILESDIR}"/frr-openrc-v4 frr + + # Conflict files, installed by net-libs/libsmi, bug #758383 + # Files from frr seems to be newer. + rm "${ED}"/usr/share/yang/ietf-interfaces.yang || die + rm "${ED}"/usr/share/yang/ietf-netconf.yang || die + rm "${ED}"/usr/share/yang/ietf-netconf-with-defaults.yang || die + rm "${ED}"/usr/share/yang/ietf-netconf-acm.yang || die +} diff --git a/net-misc/frr/frr-10.7.1.ebuild b/net-misc/frr/frr-10.7.1.ebuild new file mode 100644 index 000000000000..a4289497d8b4 --- /dev/null +++ b/net-misc/frr/frr-10.7.1.ebuild @@ -0,0 +1,151 @@ +# Copyright 2020-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{13..14} ) +inherit out-of-source autotools pam python-single-r1 systemd + +DESCRIPTION="The FRRouting Protocol Suite" +HOMEPAGE="https://frrouting.org/" +SRC_URI="https://github.com/FRRouting/frr/archive/${P}.tar.gz" +# FRR tarballs have weird format. +S="${WORKDIR}/frr-${P}" + +LICENSE="GPL-2+" +SLOT="0/$(ver_cut 1-2)" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="doc fpm grpc nhrp ospfapi pam rpki snmp test" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" +RESTRICT="!test? ( test )" + +COMMON_DEPEND=" + ${PYTHON_DEPS} + acct-user/frr + dev-libs/json-c:0= + dev-libs/protobuf-c:0= + >=net-libs/libyang-2.1.128 + sys-libs/libcap + sys-libs/readline:0= + virtual/libcrypt:= + grpc? ( net-libs/grpc:= ) + nhrp? ( net-dns/c-ares:0= ) + pam? ( sys-libs/pam ) + rpki? ( >=net-libs/rtrlib-0.8.0[ssh] ) + snmp? ( net-analyzer/net-snmp:= ) +" +BDEPEND=" + sys-devel/flex + app-alternatives/yacc + dev-libs/elfutils + doc? ( dev-python/sphinx ) + grpc? ( sys-apps/which ) +" +DEPEND=" + ${COMMON_DEPEND} + elibc_musl? ( sys-libs/queue-standalone ) + test? ( + $(python_gen_cond_dep 'dev-python/pytest[${PYTHON_USEDEP}]') + dev-util/cunit + ) +" +RDEPEND=" + ${COMMON_DEPEND} +" + +PATCHES=( + "${FILESDIR}"/${PN}-7.5-ipctl-forwarding.patch + "${FILESDIR}"/${PN}-9.1-mimic-gnu-basename-api-for-non-glibc.patch +) + +QA_CONFIG_IMPL_DECL_SKIP=( + mallinfo # No functional impact. + mallinfo2 +) + +src_prepare() { + default + + python_fix_shebang tools + eautoreconf +} + +my_src_configure() { + local myconf=( + ac_cv_prog_VALGRIND_CHECK=no + LEX=flex + --with-pkg-extra-version="-gentoo" + --enable-configfile-mask=0640 + --enable-logfile-mask=0640 + --libdir="${EPREFIX}"/usr/lib/frr + --sbindir="${EPREFIX}"/usr/lib/frr + --libexecdir="${EPREFIX}"/usr/lib/frr + --sysconfdir="${EPREFIX}"/etc/frr + --localstatedir="${EPREFIX}"/run/frr + --with-moduledir="${EPREFIX}"/usr/lib/frr/modules + --enable-user=frr + --enable-group=frr + --enable-vty-group=frr + --enable-multipath=64 + $(use_enable doc) + $(use_enable fpm) + $(use_enable grpc) + $(use_enable kernel_linux realms) + $(use_enable nhrp nhrpd) + $(usex ospfapi '--enable-ospfclient' '' '' '') + $(use_enable rpki) + $(use_enable snmp) + ) + + econf "${myconf[@]}" +} + +my_src_compile() { + emake GRPC_CFLAGS=-std=gnu++23 GRPC_CXXFLAGS=-std=gnu++23 + + use doc && emake html +} + +my_src_test() { + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + emake GRPC_CFLAGS=-std=gnu++23 GRPC_CXXFLAGS=-std=gnu++23 check +} + +my_src_install() { + default + find "${ED}" -name '*.la' -delete || die + + # Install user documentation if asked + use doc && dodoc -r doc/user/_build/html + + # Create configuration directory with correct permissions + # Create logs directory with the correct permissions + diropts -ofrr -gfrr -m0775 + keepdir /var/log/frr /etc/frr + + # Install the default configuration files + insinto /etc/frr + doins "${S}"/tools/etc/frr/{vtysh.conf,frr.conf,daemons} + + # Fix permissions/owners. + fowners frr:frr /etc/frr/{vtysh.conf,frr.conf,daemons} + fperms 640 /etc/frr/{vtysh.conf,frr.conf,daemons} + + # Install logrotate configuration + insinto /etc/logrotate.d + newins "${FILESDIR}/logrotate-v2" frr + + # Install PAM configuration file + use pam && newpamd "${FILESDIR}"/frr.pam frr + + # Install init scripts + systemd_dounit tools/frr.service + newinitd "${FILESDIR}"/frr-openrc-v4 frr + + # Conflict files, installed by net-libs/libsmi, bug #758383 + # Files from frr seems to be newer. + rm "${ED}"/usr/share/yang/ietf-interfaces.yang || die + rm "${ED}"/usr/share/yang/ietf-netconf.yang || die + rm "${ED}"/usr/share/yang/ietf-netconf-with-defaults.yang || die + rm "${ED}"/usr/share/yang/ietf-netconf-acm.yang || die +} diff --git a/sci-libs/nlopt/Manifest b/sci-libs/nlopt/Manifest index fbeae9403636..ba70a71b73dd 100644 --- a/sci-libs/nlopt/Manifest +++ b/sci-libs/nlopt/Manifest @@ -1,3 +1,4 @@ DIST nlopt-2.10.0.tar.gz 2065021 BLAKE2B dba4446c8603f22048158b9cfabe6afae55372f9034fdc5b8e31c748a1fed294889a2af4a07a9d36e11c4b36e5c016df7c92bb61f9399ef0f1048070fc0f9894 SHA512 7668db6997ba141ee1759f222bad23a7854aa17962470653ddb5824c25100b50f52c462441f0cc12a62e2322ff084c7f7b7fab09471b0acb13a861d7f7575655 DIST nlopt-2.10.1.tar.gz 2064973 BLAKE2B 6711a022d10fb462af903778d4c9c180b9fe1d11ff20be768e0a237e097e59b26c7d33acd410cd295285d0438dac1f75b14fa02199e1144acaf32f18c2c91035 SHA512 c7bc34c3fc00cb714473f5612329291dd3b7f2748a08c83ac0ab1fc719e9ce88c730eeeac88367273dd6e5f78e7afa0bed818374ae50b326fcd25f370abc1909 +DIST nlopt-2.11.0.tar.gz 2065716 BLAKE2B a4d4d1ad5810fe2a4970a3c09be64c35ef0510f40411fd52395677ffd194eff1c9094f020cff5155ace6e3b451a0d20c98bf1ee29fb47366b3087bd89c2ec32c SHA512 72dfb5374f89f6a507f0a22317fd76b4fc26795d7868842e02dc67a76fbbaf04fb769cec7b366774f5d2a1ed0c2305878c9d82e0ef85e449f9350cdcaa58c262 DIST nlopt-2.7.1.tar.gz 2044180 BLAKE2B 6d459f94a26ee6dd7f72c73c48992bd047150aa525bc4ad088c8516127afc5c7843f6fbb6726c2f845271b87934c13e0892a063362ab50df51f92e81979111fb SHA512 e23cb522fc696010574c14b72be85acc0f8ccf0bf208bf2b8789c57d6c5a6e6d419ee10330581518b1c1567018ae909b626ce7761d4fbd5bf112916871e420e2 diff --git a/sci-libs/nlopt/nlopt-2.10.1.ebuild b/sci-libs/nlopt/nlopt-2.10.1.ebuild index 3a2ad88c822b..e2bcddcc0ca4 100644 --- a/sci-libs/nlopt/nlopt-2.10.1.ebuild +++ b/sci-libs/nlopt/nlopt-2.10.1.ebuild @@ -119,4 +119,8 @@ src_install() { for r in */README; do newdoc ${r} README.$(dirname ${r}) done + + if use test; then + rm "${ED}"/usr/include/nlopt.f || die + fi } diff --git a/sci-libs/nlopt/nlopt-2.11.0.ebuild b/sci-libs/nlopt/nlopt-2.11.0.ebuild new file mode 100644 index 000000000000..e2bcddcc0ca4 --- /dev/null +++ b/sci-libs/nlopt/nlopt-2.11.0.ebuild @@ -0,0 +1,126 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +GUILE_COMPAT=( 2-2 3-0 ) +PYTHON_COMPAT=( python3_{13..14} ) +FORTRAN_NEEDED="test" + +inherit python-r1 cmake guile-single fortran-2 + +DESCRIPTION="Non-linear optimization library" +HOMEPAGE="https://github.com/stevengj/nlopt" +SRC_URI="https://github.com/stevengj/nlopt/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="LGPL-2.1 MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~riscv ~x86" +IUSE="guile octave python test" +REQUIRED_USE="guile? ( ${GUILE_REQUIRED_USE} ) python? ( ${PYTHON_REQUIRED_USE} )" +RESTRICT="!test? ( test )" + +RDEPEND=" + guile? ( ${GUILE_DEPS} ) + octave? ( >=sci-mathematics/octave-6:= ) + python? ( + ${PYTHON_DEPS} + dev-python/numpy[${PYTHON_USEDEP}] + ) +" +DEPEND="${RDEPEND}" +BDEPEND="python? ( dev-lang/swig )" + +pkg_setup() { + use guile && guile-single_pkg_setup + fortran-2_pkg_setup +} + +src_prepare() { + cmake_src_prepare + + use guile && guile_bump_sources + use python && python_copy_sources +} + +src_configure() { + # MATLAB detection causes problems (as in bug #826774) if we don't + # explicitly disable it. + local mycmakeargs=( + -DNLOPT_CXX=ON + -DNLOPT_FORTRAN=$(usex test) + -DNLOPT_GUILE=$(usex guile) + -DNLOPT_JAVA=OFF + -DNLOPT_OCTAVE=$(usex octave) + -DNLOPT_MATLAB=OFF + -DNLOPT_PYTHON=OFF + -DNLOPT_SWIG=$(usex python) + -DNLOPT_TESTS=$(usex test) + ) + + cmake_src_configure + + if use python; then + python_configure() { + local mycmakeargs=( + ${mycmakeargs[@]} + -DNLOPT_PYTHON=ON + -DINSTALL_PYTHON_DIR="$(python_get_sitedir)" + ) + + cmake_src_configure + } + + python_foreach_impl run_in_build_dir python_configure + fi +} + +src_compile() { + cmake_src_compile + + if use python; then + python_foreach_impl run_in_build_dir cmake_src_compile + fi +} + +src_test() { + do_test() { + cd "${BUILD_DIR}"/test || die + + local a f + for a in {1..9}; do + for f in {5..9}; do + ./testopt -a $a -o $f || die "algorithm $a function $f failed" + done + done + } + + do_test + + if use python; then + python_foreach_impl run_in_build_dir do_test + fi +} + +nlopt_install() { + cmake_src_install + python_optimize +} + +src_install() { + cmake_src_install + + guile_unstrip_ccache + if use python; then + python_foreach_impl run_in_build_dir nlopt_install + fi + + local r + for r in */README; do + newdoc ${r} README.$(dirname ${r}) + done + + if use test; then + rm "${ED}"/usr/include/nlopt.f || die + fi +} diff --git a/sec-keys/openpgp-keys-ntpsec/openpgp-keys-ntpsec-20260731.ebuild b/sec-keys/openpgp-keys-ntpsec/openpgp-keys-ntpsec-20260731.ebuild index 8b7f8ab1340d..9a8f66ed94c1 100644 --- a/sec-keys/openpgp-keys-ntpsec/openpgp-keys-ntpsec-20260731.ebuild +++ b/sec-keys/openpgp-keys-ntpsec/openpgp-keys-ntpsec-20260731.ebuild @@ -12,4 +12,4 @@ inherit sec-keys DESCRIPTION="OpenPGP keys used to sign ntpsec releases" HOMEPAGE="https://ftp.ntpsec.org/pub/releases/" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" diff --git a/sys-apps/cyme/Manifest b/sys-apps/cyme/Manifest index ff8c9a009949..9bfb9b9e8d6f 100644 --- a/sys-apps/cyme/Manifest +++ b/sys-apps/cyme/Manifest @@ -1,4 +1,6 @@ DIST cyme-3.0.0.gh.tar.gz 502909 BLAKE2B 1e49cffc3af35c793e54cff1d4eda0939d7880fcae05fee4f5344ce793d15240acef7f417e2575f1e3570d470168431cf74322a1459f227bc9e02635fe4ea292 SHA512 26d33c7fb20865f97bf6edec628f50acc1467596e448c94e0f3164b4add84c90b5f504359c57cd9c66cb150f39f5f0a6d04408c168eca04a981f941de2f4ab79 DIST cyme-3.0.1.gh.tar.gz 504377 BLAKE2B 19b67c9c7f5768a55c63b8023a8fb39b3248ed08a2134c6969e23b23dca5d478341a892d4efca916f4484df6c1b2aaa680c80a7fc541d3482cf7b0d3c16a2f3b SHA512 5386847317f04dfa74e5ce8aa184640f5ceb4effa9187c586cacdc0473b5a15aae56c7ac7c61486d6a248dddfb1540e99273801e1cf221413ea2b539e9fd91a3 +DIST cyme-3.0.2.gh.tar.gz 505557 BLAKE2B 00c95a2054eec4944e714c129a89ada0a61fb7fca72393a16c2f6f8bea7fcf62da59f1318b96ede650a0b36c348ff6f34ee4924f6ef5a97711af81825262c956 SHA512 aa567f276bd16b6c208c3760c66f95cecad3b106d4a2d3597b3ceffd2b87fb87606c28fef633df6f991f0d8c35e44d4c07de5341b948e2a4e28d81248c73ecde DIST cyme-v3.0.0-crates.tar.xz 17418632 BLAKE2B fa8776bb051c8ebce4f31c2fa5186734f4e9fb0cbf5f17738ba89d018ceeace5b6d436f7035c9294e98c528b0aba2bb17e36a980db6d1bae417a62fd69e744a7 SHA512 5087ac21b4e3f0cc20cc233f4036d380b0e23cd971a36d64807d200e02b1336a11fa32c40781fbf996f9ba35aa3b642a23c61cd3472a1a6af74172fbb117c0cf DIST cyme-v3.0.1-crates.tar.xz 17428128 BLAKE2B d51f3e36c9d1113d221c8bde6d9282a4b47e629bf6ec1c7d45ae7a1a58fe43edfabec330e09efbf642fa868a8404f81f1238e68bd8aeaa52e49aa4aaff59c57a SHA512 ca701d49eca440db4701b0cc8111263da3fe53750596e3dc20fed7ba35faf7f4cfcebfa00552b8ee365d597b39e39a65e933366e9f02f8ea39c64d6a05bd2c1c +DIST cyme-v3.0.2-crates.tar.xz 18439176 BLAKE2B a0a408c3d43b0b2d2c09cb4681d413c6e56c9abaf938155c828c67e7206d93c5d5ae282902b47b1a6a39c4d1924fd819510418238a861cdc47e4ecbc86270578 SHA512 3aa7078c7be1995411b4caddc27e323ecdf26a122e8f7e76b27179eba35d4cdb2d636faadc58f24fe6b7982d1f7e2864ad626c7c98d02a4ed2a9870a76da82c7 diff --git a/sys-apps/cyme/cyme-3.0.2.ebuild b/sys-apps/cyme/cyme-3.0.2.ebuild new file mode 100644 index 000000000000..898804d05aef --- /dev/null +++ b/sys-apps/cyme/cyme-3.0.2.ebuild @@ -0,0 +1,27 @@ +# Copyright 2024-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +RUST_MIN_VER="1.88.0" +CRATES=" +" + +inherit cargo + +DESCRIPTION="List system USB buses and devices; a modern cross-platform \`lsusb\`" +HOMEPAGE="https://github.com/tuna-f1sh/cyme/" +SRC_URI=" + https://github.com/tuna-f1sh/cyme/archive/v${PV}.tar.gz + -> ${P}.gh.tar.gz + ${CARGO_CRATE_URIS} + https://github.com/gentoo-crate-dist/cyme/releases/download/v${PV}/cyme-v${PV}-crates.tar.xz +" + +LICENSE="GPL-3+" +# Dependent crate licenses +LICENSE+=" Apache-2.0 LGPL-2+ MIT MPL-2.0 Unicode-3.0" +SLOT="0" +KEYWORDS="~amd64" + +QA_FLAGS_IGNORED="/usr/bin/cyme" diff --git a/sys-apps/systemd/Manifest b/sys-apps/systemd/Manifest index 0e460f8575cb..e5e7b2f3cc8f 100644 --- a/sys-apps/systemd/Manifest +++ b/sys-apps/systemd/Manifest @@ -4,6 +4,7 @@ DIST systemd-260.2.tar.gz 17663337 BLAKE2B 6f19c9ab444d9bcd8d585a4c2ef5bf8763dcf DIST systemd-260.4.tar.gz 17757440 BLAKE2B a1e171a2282e494cf1881fb0c33f9974eee06b7b1d623fe8e041b7fcabf9424af080ca21a8d0d2829f90469253fa42265a1870f1bf7f824326db8e32384a18bc SHA512 1cd03f78d2e782d351dc049bb8ef22ab03a2600f5f667721045aa113baea0c7f72743088932b813140f39007a43d5491e58f40ef36eeb9ddfd9a183d39e4b000 DIST systemd-261.1.tar.gz 18405830 BLAKE2B ab345d6ae27d361aa56d3b021263e2b2e3af76cdc37ee9015932557f1b904f2e5e5a6d5911b4a442057d12d5eedf8a702a30aa13f9b68294ccc14833f397a0ea SHA512 5dbf8b902fbed6e719367266da658b46ed55e76c93b7aa48ebaf9daca36cb19261ebd45cb97139c51227022a8ca3d07da360953bd9b0aebb429dce6d111f7e5c DIST systemd-261.2.tar.gz 18456346 BLAKE2B f8f57c5e78ff31727ecfd18b61d3a3a95b764e5a049c0cc974be567273db2f771ab2f50df1ebf06b0c3a659c7e02db309dee4844217e3a91ae1169877971a34e SHA512 876f043970cb65b39ae15fba39f23bf94c7c3d80569503d6e8ea2c8013c30ee40ce43cb55cbcb1cf14d5c3021aafc09c0f67473bbf742d8964bf9fa30693b971 +DIST systemd-261.3.tar.gz 18560547 BLAKE2B d0809439fea1f8c8b00a597ea5a09ff0455009c07f13976ed7663978bb8cafbd22ce0f49386087fec3553b376251cc8c82ca05adb6188c6ec43e580b336dc7de SHA512 b271feced437bda2b33a158a0c5a013f42ec335e7266d8b45c160e79454885985c9451f8575775760a3c8534ac7ec20afa669180d606c94efea3cabba28456e1 DIST systemd-261.tar.gz 18390754 BLAKE2B 3e307fa237911ee18e9dca2e3e26eac4859fe19bd856c970d9c557ed2a3420944a20affad60bf10dc4cada657778bac38a1a529fc0081ba255550bfd4c1a1f06 SHA512 6a21c2a9bd83d962db4e6c095078ec79259d8109583b59094d17e76c0826e96a6183778f46b64352b0fe62cb8890736e9331f35e9a4c8b65f9b574fa915f9fd8 DIST systemd-262-rc1.tar.gz 18982539 BLAKE2B b2164077a03d0a473fc2182b8f8926d4429b2ec49c48754db47a1c9fcdd4fcdbd13097c92747c611a09975edf5866d8a6a5b9537febf4d956285db4c1d145779 SHA512 5bd4ed38246de1ea17b46fcc6f921f94a53047cec4dc53b005afd4ca75cd50d631b92c6662204871ad2c0808694244ec15d90732b1251d15bf5f9d74b6a2a7f0 DIST systemd-262-rc2.tar.gz 19014998 BLAKE2B 8121400c571d74afde0d4d6e89358704c77dbab46fe7338871d268f39134e1f3b5d5b42a7a5a97ce4a721d2a38930d5d47c84ee04ef6787090deba31d676cee4 SHA512 8d4f8d41e0af6b058d922490896bdbc8487927b2b1db488a9c24614bac4fc3a14bafcd50901251d4ad4095cc2f56782f900fb32e0a70aab56f6a69fdfd257442 diff --git a/sys-apps/systemd/systemd-261.2.ebuild b/sys-apps/systemd/systemd-261.2.ebuild index 8ac96c6c8510..a1c79303c65f 100644 --- a/sys-apps/systemd/systemd-261.2.ebuild +++ b/sys-apps/systemd/systemd-261.2.ebuild @@ -25,7 +25,7 @@ else fi inherit branding flag-o-matic linux-info meson-multilib optfeature pam python-single-r1 -inherit secureboot shell-completion systemd toolchain-funcs udev +inherit secureboot shell-completion systemd toolchain-funcs udev xdg-utils DESCRIPTION="System and service manager for Linux" HOMEPAGE="https://systemd.io/" @@ -551,6 +551,7 @@ pkg_preinst() { } pkg_postinst() { + xdg_mimeinfo_database_update systemd_update_catalog # Keep this here in case the database format changes so it gets updated @@ -614,3 +615,7 @@ pkg_prerm() { rm -f -v "${EROOT}"/var/lib/systemd/catalog/database fi } + +pkg_postrm() { + xdg_mimeinfo_database_update +} diff --git a/sys-apps/systemd/systemd-261.3.ebuild b/sys-apps/systemd/systemd-261.3.ebuild new file mode 100644 index 000000000000..a423edab718f --- /dev/null +++ b/sys-apps/systemd/systemd-261.3.ebuild @@ -0,0 +1,620 @@ +# Copyright 2011-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +PYTHON_COMPAT=( python3_{13..14} ) + +# Avoid QA warnings +TMPFILES_OPTIONAL=1 +UDEV_OPTIONAL=1 + +QA_PKGCONFIG_VERSION=$(ver_cut 1) + +if [[ ${PV} == 9999 ]]; then + EGIT_REPO_URI="https://github.com/systemd/systemd.git" + inherit git-r3 +else + MY_PV=${PV/_/-} + MY_P=${PN}-${MY_PV} + S=${WORKDIR}/${MY_P} + SRC_URI="https://github.com/systemd/${PN}/archive/refs/tags/v${MY_PV}.tar.gz -> ${MY_P}.tar.gz" + + if [[ ${PV} != *rc* ]] ; then + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + fi +fi + +inherit branding flag-o-matic linux-info meson-multilib optfeature pam python-single-r1 +inherit secureboot shell-completion systemd toolchain-funcs udev xdg-utils + +DESCRIPTION="System and service manager for Linux" +HOMEPAGE="https://systemd.io/" + +LICENSE="GPL-2 LGPL-2.1 MIT public-domain" +SLOT="0/2" +IUSE=" + acl apparmor audit boot bpf cryptsetup curl +dns-over-tls elfutils fido2 + +gcrypt gnutls homed idn imds importd +kernel-install +kmod +libarchive + +lz4 lzma +openssl pam passwdqc pcre pkcs11 policykit pwquality qrcode + remote +resolvconf +seccomp selinux sysv-utils test tpm ukify vanilla xkb + +zstd +" +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + boot? ( kernel-install ) + dns-over-tls? ( openssl ) + fido2? ( cryptsetup openssl ) + homed? ( cryptsetup pam openssl ) + imds? ( curl ) + importd? ( curl libarchive lzma openssl ) + ?? ( passwdqc pwquality ) + passwdqc? ( homed ) + pwquality? ( homed ) + remote? ( curl ) + ukify? ( boot ) +" +RESTRICT="!test? ( test )" + +MINKV="5.10" + +COMMON_DEPEND=" + >=sys-apps/util-linux-2.37 + acl? ( sys-apps/acl ) + apparmor? ( >=sys-libs/libapparmor-2.13 ) + audit? ( >=sys-process/audit-2 ) + bpf? ( >=dev-libs/libbpf-1.4.0 ) + cryptsetup? ( >=sys-fs/cryptsetup-2.4.0:= ) + curl? ( >=net-misc/curl-7.32.0:0= ) + elfutils? ( >=dev-libs/elfutils-0.177 ) + elibc_glibc? ( + >=sys-libs/glibc-2.34 + >=sys-libs/libxcrypt-4.4.0 + ) + elibc_musl? ( + >=sys-libs/musl-1.2.6 + sys-libs/libucontext + virtual/libcrypt + ) + fido2? ( + dev-libs/libfido2 + ) + gcrypt? ( >=dev-libs/libgcrypt-1.4.5 ) + gnutls? ( >=net-libs/gnutls-3.6.0:0= ) + remote? ( >=net-libs/libmicrohttpd-0.9.33:0=[epoll(+)] ) + idn? ( net-dns/libidn2 ) + importd? ( + app-arch/bzip2:0= + virtual/zlib:= + ) + kmod? ( >=sys-apps/kmod-15:0= ) + libarchive? ( >=app-arch/libarchive-3.0:0= ) + lz4? ( >=app-arch/lz4-0_p131:0= ) + lzma? ( >=app-arch/xz-utils-5.0.5-r1:0= ) + openssl? ( >=dev-libs/openssl-3.0.0:0= ) + pam? ( sys-libs/pam:=[${MULTILIB_USEDEP}] ) + passwdqc? ( sys-auth/passwdqc ) + pkcs11? ( >=app-crypt/p11-kit-0.23.3 ) + pcre? ( dev-libs/libpcre2 ) + pwquality? ( >=dev-libs/libpwquality-1.4.1 ) + qrcode? ( >=media-gfx/qrencode-3:0= ) + seccomp? ( >=sys-libs/libseccomp-2.4.0 ) + selinux? ( >=sys-libs/libselinux-2.1.9 ) + tpm? ( app-crypt/tpm2-tss ) + xkb? ( >=x11-libs/libxkbcommon-0.4.1 ) + zstd? ( >=app-arch/zstd-1.4.0:0= ) +" + +# Newer linux-headers needed by ia64, bug #480218 +DEPEND="${COMMON_DEPEND} + >=sys-kernel/linux-headers-${MINKV} +" + +PEFILE_DEPEND='dev-python/pefile[${PYTHON_USEDEP}]' + +# baselayout-2.2 has /run +RDEPEND="${COMMON_DEPEND} + >=acct-group/adm-0-r1 + >=acct-group/wheel-0-r1 + >=acct-group/kmem-0-r1 + >=acct-group/tty-0-r1 + >=acct-group/utmp-0-r1 + >=acct-group/audio-0-r1 + >=acct-group/cdrom-0-r1 + acct-group/clock + >=acct-group/dialout-0-r1 + >=acct-group/disk-0-r1 + >=acct-group/input-0-r1 + >=acct-group/kvm-0-r1 + >=acct-group/lp-0-r1 + >=acct-group/render-0-r1 + acct-group/sgx + >=acct-group/tape-0-r1 + acct-group/users + >=acct-group/video-0-r1 + >=acct-group/systemd-journal-0-r1 + >=acct-user/root-0-r1 + acct-user/nobody + >=acct-user/systemd-journal-remote-0-r1 + >=acct-user/systemd-coredump-0-r1 + >=acct-user/systemd-network-0-r1 + acct-user/systemd-oom + >=acct-user/systemd-resolve-0-r1 + >=acct-user/systemd-timesync-0-r1 + >=sys-apps/baselayout-2.2 + imds? ( acct-user/systemd-imds ) + ukify? ( + ${PYTHON_DEPS} + $(python_gen_cond_dep "${PEFILE_DEPEND}") + ) + selinux? ( + sec-policy/selinux-base-policy[systemd] + sec-policy/selinux-ntp + ) + sysv-utils? ( + !sys-apps/openrc[sysv-utils(-)] + !sys-apps/sysvinit + ) + !sysv-utils? ( sys-apps/sysvinit ) + resolvconf? ( !net-dns/openresolv ) + !sys-auth/nss-myhostname + !sys-fs/eudev + !sys-fs/udev +" + +# sys-apps/dbus: the daemon only (+ build-time lib dep for tests) +PDEPEND=" + >=sys-apps/dbus-1.9.8[systemd] + >=sys-fs/udev-init-scripts-34 + policykit? ( sys-auth/polkit ) + !sysv-utils? ( sys-apps/systemd-initctl ) + !vanilla? ( sys-apps/gentoo-systemd-integration ) +" + +BDEPEND=" + app-arch/xz-utils:0 + dev-util/gperf + >=dev-build/meson-0.46 + >=sys-apps/coreutils-8.16 + sys-devel/gettext + virtual/pkgconfig + bpf? ( + >=dev-util/bpftool-7.0.0 + sys-devel/bpf-toolchain + ) + test? ( + app-text/tree + dev-lang/perl + >=dev-libs/glib-2.22.0:2 + sys-apps/dbus + ) + app-text/docbook-xml-dtd:4.2 + app-text/docbook-xml-dtd:4.5 + app-text/docbook-xsl-stylesheets + dev-libs/libxslt:0 + ${PYTHON_DEPS} + $(python_gen_cond_dep " + dev-python/jinja2[\${PYTHON_USEDEP}] + dev-python/lxml[\${PYTHON_USEDEP}] + boot? ( + >=dev-python/pyelftools-0.30[\${PYTHON_USEDEP}] + test? ( ${PEFILE_DEPEND} ) + ) + ") +" + +QA_FLAGS_IGNORED="usr/lib/systemd/boot/efi/.*" +QA_EXECSTACK="usr/lib/systemd/boot/efi/*" + +pkg_pretend() { + if [[ ${MERGE_TYPE} != buildonly ]]; then + local CONFIG_CHECK="~BLK_DEV_BSG ~CGROUPS + ~CGROUP_BPF ~DEVTMPFS ~EPOLL ~FANOTIFY ~FHANDLE + ~INOTIFY_USER ~IPV6 ~NET ~NET_NS ~PROC_FS ~SIGNALFD ~SYSFS + ~TIMERFD ~TMPFS_XATTR ~UNIX ~USER_NS + ~!GRKERNSEC_PROC ~!IDE ~!SYSFS_DEPRECATED + ~!SYSFS_DEPRECATED_V2" + + use acl && CONFIG_CHECK+=" ~TMPFS_POSIX_ACL" + use bpf && CONFIG_CHECK+=" ~BPF ~BPF_SYSCALL ~BPF_LSM ~DEBUG_INFO_BTF" + use seccomp && CONFIG_CHECK+=" ~SECCOMP ~SECCOMP_FILTER" + + if kernel_is -ge 5 10 20; then + CONFIG_CHECK+=" ~KCMP" + else + CONFIG_CHECK+=" ~CHECKPOINT_RESTORE" + fi + + if kernel_is -ge 4 18; then + CONFIG_CHECK+=" ~AUTOFS_FS" + else + CONFIG_CHECK+=" ~AUTOFS4_FS" + fi + + if linux_config_exists; then + local uevent_helper_path=$(linux_chkconfig_string UEVENT_HELPER_PATH) + if [[ -n ${uevent_helper_path} ]] && [[ ${uevent_helper_path} != '""' ]]; then + ewarn "It's recommended to set an empty value to the following kernel config option:" + ewarn "CONFIG_UEVENT_HELPER_PATH=${uevent_helper_path}" + fi + if linux_chkconfig_present X86; then + CONFIG_CHECK+=" ~DMIID" + fi + fi + + if kernel_is -lt ${MINKV//./ }; then + ewarn "Kernel version at least ${MINKV} required" + fi + + check_extra_config + fi +} + +pkg_setup() { + use boot && secureboot_pkg_setup +} + +src_unpack() { + default + [[ ${PV} != 9999 ]] || git-r3_src_unpack +} + +src_prepare() { + local PATCHES=( + "${FILESDIR}/261-gcc-bpf.patch" + ) + + if ! use vanilla; then + PATCHES+=( + "${FILESDIR}/gentoo-journald-audit-r4.patch" + ) + fi + + default +} + +src_configure() { + # Prevent conflicts with i686 cross toolchain, bug 559726 + tc-export AR CC NM OBJCOPY RANLIB + + # Our toolchain sets F_S=2 by default w/ >= -O2, so we need + # to unset F_S first, then explicitly set 2, to negate any default + # and anything set by the user if they're choosing 3 (or if they've + # modified GCC to set 3). + # + # malloc_usable_size doesn't play well with _F_S=3: + # https://github.com/systemd/systemd/issues/41459 (bug #971773) + if tc-is-clang && tc-enables-fortify-source ; then + # We can't unconditionally do this b/c we fortify needs + # some level of optimisation. + filter-flags -D_FORTIFY_SOURCE=3 + append-cppflags -U_FORTIFY_SOURCE -D_GENTOO_NO_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 + fi + + python_setup + + multilib-minimal_src_configure +} + +multilib_src_configure() { + local myconf=( + --localstatedir="${EPREFIX}/var" + -Ddocdir="share/doc/${PF}" + -Dmode=release # default is developer, bug 918671 + -Dlibc=$(usex elibc_musl musl glibc) + -Dsupport-url="${BRANDING_OS_SUPPORT_URL}" + -Dpamlibdir="$(getpam_mod_dir)" + -Dbashcompletiondir="$(get_bashcompdir)" + -Dzshcompletiondir="$(get_zshcompdir)" + -Dsplit-bin=false + -Dima=true # no deps + -Ddebug-shell="${EPREFIX}/bin/sh" # Match /etc/shells, bug 919749 + -Ddefault-user-shell="${EPREFIX}/bin/bash" + -Dbpf-compiler=gcc + -Dntp-servers="0.gentoo.pool.ntp.org 1.gentoo.pool.ntp.org 2.gentoo.pool.ntp.org 3.gentoo.pool.ntp.org" + # Breaks screen, tmux, etc. + -Ddefault-kill-user-processes=false + -Dcreate-log-dirs=false + -Dlibcrypt=enabled + -Dcompat-mutable-uid-boundaries=true + + # options affecting multilib + $(meson_use !elibc_musl nss-myhostname) + $(meson_feature !elibc_musl nss-mymachines) + $(meson_feature !elibc_musl nss-resolve) + $(meson_use !elibc_musl nss-systemd) + $(meson_feature pam) + ) + + # workaround for bug 969103 + if [[ ${CHOST} == riscv32* ]] ; then + myconf+=( -Dtests=true ) + else + myconf+=( $(meson_use test tests) ) + fi + + if multilib_is_native_abi; then + myconf+=( + --auto-features=enabled + -Dman=enabled + -Dxenctrl=disabled + + # Optional components/dependencies + $(meson_feature acl) + $(meson_feature apparmor) + $(meson_feature audit) + $(meson_feature boot bootloader) + $(meson_feature bpf bpf-framework) + $(meson_feature cryptsetup libcryptsetup) + $(meson_feature cryptsetup libcryptsetup-plugins) + $(meson_feature curl libcurl) + $(meson_use dns-over-tls dns-over-tls) + $(meson_feature elfutils) + $(meson_feature fido2 libfido2) + $(meson_feature gcrypt) + $(meson_feature gnutls) + $(meson_feature homed) + $(meson_use idn) + $(meson_feature imds) + $(meson_feature importd) + $(meson_feature importd bzip2) + $(meson_feature importd sysupdate) + $(meson_feature importd zlib) + $(meson_use kernel-install) + $(meson_feature kmod) + $(meson_feature libarchive) + $(meson_feature lz4) + $(meson_feature lzma xz) + $(meson_feature zstd) + $(meson_feature openssl) + $(meson_feature passwdqc) + $(meson_feature pkcs11 p11kit) + $(meson_feature pcre pcre2) + $(meson_feature policykit polkit) + $(meson_feature pwquality) + $(meson_feature qrcode qrencode) + $(meson_feature remote) + $(meson_feature remote microhttpd) + $(meson_feature seccomp) + $(meson_feature selinux) + $(meson_feature tpm tpm2) + $(meson_feature test dbus) + $(meson_feature test glib) + $(meson_feature ukify) + $(meson_feature xkb xkbcommon) + ) + + case $(tc-arch) in + amd64|arm|arm64|loong|ppc|ppc64|riscv|s390|x86) + # src/vmspawn/vmspawn-util.h: QEMU_MACHINE_TYPE + myconf+=( -Dvmspawn=enabled ) ;; + *) + myconf+=( -Dvmspawn=disabled ) ;; + esac + else + myconf+=( + --auto-features=disabled + ) + fi + + meson_src_configure "${myconf[@]}" +} + +multilib_src_compile() { + local args=() + if ! multilib_is_native_abi; then + args+=( + devel libsystemd libudev + $(usex elibc_musl '' nss) + $(usev pam) + ) + fi + meson_src_compile "${args[@]}" +} + +multilib_src_test() { + local args=( --timeout-multiplier=10 ) + if ! multilib_is_native_abi; then + args+=( + --suite libsystemd --suite libudev + $(usex elibc_musl '' '--suite nss') + $(usex pam '--suite pam' '') + ) + fi + ( + unset DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR + export COLUMNS=80 + addpredict /dev + addpredict /proc + addpredict /run + addpredict /sys/fs/cgroup + meson_src_test "${args[@]}" + ) || die +} + +multilib_src_install() { + local args=() + if ! multilib_is_native_abi; then + local tags=devel,libsystemd,libudev + use !elibc_musl && tags+=,nss + use pam && tags+=,pam + args+=( --tags "${tags}" ) + fi + meson_src_install "${args[@]}" +} + +multilib_src_install_all() { + einstalldocs + dodoc "${FILESDIR}"/nsswitch.conf + + insinto /usr/lib/tmpfiles.d + doins "${FILESDIR}"/legacy.conf + + if ! use resolvconf; then + rm -f "${ED}"/usr/bin/resolvconf || die + fi + + if ! use sysv-utils; then + rm "${ED}"/usr/bin/{halt,init,poweroff,reboot,shutdown} || die + rm "${ED}"/usr/share/man/man1/init.1 || die + rm "${ED}"/usr/share/man/man8/{halt,poweroff,reboot,shutdown}.8 || die + fi + + # https://bugs.gentoo.org/761763 + rm -r "${ED}"/usr/lib/sysusers.d || die + + # Preserve empty dirs in /etc & /var, bug #437008 + keepdir /etc/{binfmt.d,modules-load.d,tmpfiles.d} + keepdir /etc/kernel/install.d + keepdir /etc/systemd/{network,system,user} + keepdir /etc/udev/rules.d + + keepdir /etc/udev/hwdb.d + + keepdir /usr/lib/systemd/{system-sleep,system-shutdown} + keepdir /usr/lib/{binfmt.d,modules-load.d} + keepdir /usr/lib/systemd/user-generators + keepdir /var/lib/systemd + keepdir /var/log/journal + + if use pam; then + if use selinux; then + newpamd "${FILESDIR}"/systemd-user-selinux.pam systemd-user + else + newpamd "${FILESDIR}"/systemd-user.pam systemd-user + fi + fi + + if use kernel-install; then + # Dummy config, remove to make room for sys-kernel/installkernel + rm "${ED}/usr/lib/kernel/install.conf" || die + fi + + use ukify && python_fix_shebang "${ED}" + use boot && secureboot_auto_sign +} + +migrate_locale() { + local envd_locale_def="${EROOT}/etc/env.d/02locale" + local envd_locale=( "${EROOT}"/etc/env.d/??locale ) + local locale_conf="${EROOT}/etc/locale.conf" + + if [[ ! -L ${locale_conf} && ! -e ${locale_conf} ]]; then + # If locale.conf does not exist... + if [[ -e ${envd_locale} ]]; then + # ...either copy env.d/??locale if there's one + ebegin "Moving ${envd_locale} to ${locale_conf}" + mv "${envd_locale}" "${locale_conf}" + eend ${?} || FAIL=1 + else + # ...or create a dummy default + ebegin "Creating ${locale_conf}" + cat > "${locale_conf}" <<-EOF + # This file has been created by the sys-apps/systemd ebuild. + # See locale.conf(5) and localectl(1). + + # LANG=${LANG} + EOF + eend ${?} || FAIL=1 + fi + fi + + if [[ ! -L ${envd_locale} ]]; then + # now, if env.d/??locale is not a symlink (to locale.conf)... + if [[ -e ${envd_locale} ]]; then + # ...warn the user that he has duplicate locale settings + ewarn + ewarn "To ensure consistent behavior, you should replace ${envd_locale}" + ewarn "with a symlink to ${locale_conf}. Please migrate your settings" + ewarn "and create the symlink with the following command:" + ewarn "ln -s -n -f ../locale.conf ${envd_locale}" + ewarn + else + # ...or just create the symlink if there's nothing here + ebegin "Creating ${envd_locale_def} -> ../locale.conf symlink" + ln -n -s ../locale.conf "${envd_locale_def}" + eend ${?} || FAIL=1 + fi + fi +} + +pkg_preinst() { + if [[ -e ${EROOT}/etc/sysctl.conf ]]; then + # Symlink /etc/sysctl.conf for easy migration. + dosym ../../../etc/sysctl.conf /usr/lib/sysctl.d/99-sysctl.conf + fi + + if ! use boot && has_version "sys-apps/systemd[gnuefi(-)]"; then + ewarn "The 'gnuefi' USE flag has been renamed to 'boot'." + ewarn "Make sure to enable the 'boot' USE flag if you use systemd-boot." + fi +} + +pkg_postinst() { + xdg_mimeinfo_database_update + systemd_update_catalog + + # Keep this here in case the database format changes so it gets updated + # when required. + udev_hwdb_update || FAIL=1 + udev_reload || FAIL=1 + + # Bug 465468, make sure locales are respected, and ensure consistency + # between OpenRC & systemd + migrate_locale + + # Bug 971385, 974688 + local autovt=${EROOT}/etc/systemd/system/autovt@.service + if [[ ! -e ${autovt} && ! -L ${autovt} ]]; then + ln -s "${EPREFIX}/usr/lib/systemd/system/getty@.service" "${autovt}" || FAIL=1 + fi + + if [[ -z ${REPLACING_VERSIONS} ]]; then + if type systemctl &>/dev/null; then + systemctl --root="${ROOT:-/}" enable getty@.service remote-fs.target || FAIL=1 + fi + elog "To enable a useful set of services, run the following:" + elog " systemctl preset-all --preset-mode=enable-only" + fi + + if [[ -L ${EROOT}/var/lib/systemd/timesync ]]; then + rm "${EROOT}/var/lib/systemd/timesync" + fi + + if [[ -z ${ROOT} && -d /run/systemd/system ]]; then + ebegin "Reexecuting system manager (systemd)" + systemctl daemon-reexec + eend $? || FAIL=1 + + # https://lists.freedesktop.org/archives/systemd-devel/2024-June/050466.html + ebegin "Signaling user managers to reexec" + systemctl kill --kill-whom='main' --signal='SIGRTMIN+25' 'user@*.service' + eend $? + fi + + if [[ ${FAIL} ]]; then + eerror "One of the postinst commands failed. Please check the postinst output" + eerror "for errors. You may need to clean up your system and/or try installing" + eerror "systemd again." + eerror + fi + + if use boot; then + optfeature "installing kernels in systemd-boot's native layout and update loader entries" \ + "sys-kernel/installkernel[systemd-boot]" + fi + if use ukify; then + optfeature "generating unified kernel image on each kernel installation" \ + "sys-kernel/installkernel[ukify]" + fi +} + +pkg_prerm() { + # If removing systemd completely, remove the catalog database. + if [[ ! ${REPLACED_BY_VERSION} ]]; then + rm -f -v "${EROOT}"/var/lib/systemd/catalog/database + fi +} + +pkg_postrm() { + xdg_mimeinfo_database_update +} diff --git a/sys-devel/gcc/Manifest b/sys-devel/gcc/Manifest index 1ebd72f3bc9e..f613fa17ea58 100644 --- a/sys-devel/gcc/Manifest +++ b/sys-devel/gcc/Manifest @@ -8,54 +8,32 @@ DIST gcc-12.5.0-musl-patches-1.tar.xz 4460 BLAKE2B ba9635d32e63a18a617fab823fc03 DIST gcc-12.5.0-patches-1.tar.xz 16604 BLAKE2B 9525f38913d043fbf9be57032b2f7d947dd652581cef6fa908461762868d050d0e2d9a85fddfac1110e87549cff70838db465979a726c5478709303f32685501 SHA512 fafd37b7f5f0621cee214c23b7851a51cb6b6e7ef73b04786e95b0ad9a8349e5886a2eb156f8549990fcfc76506cc0eb0b1b3e86d4d132a6b6d97a77850af85f DIST gcc-12.5.0.tar.xz 85897368 BLAKE2B df2f87b407c5572d3590e9868a7597b98bc913669054e517fb2eb9ed82f635df6735a5cab0eab30ebec694e39e552806d837233f0ffe02aa90f5d8b61352c34f SHA512 c76020e4c844b53485502cb8a4e295221c9d37487d66c9f4559031fb14c85de20602e6387310005386cb0ef25e55067d2cfef141423bb445f3b77e7456a23533 DIST gcc-13-20260603.tar.xz 84612576 BLAKE2B 6b062015b61508359b6c29d1ccd1b5322404e18ead21aaec6acb687822147054250647c1fca6d1254f4cc27d4dd6f1a2477cc84bf66b2f4dab1aa6196d8de49e SHA512 c9da65861e766f7159624e512ab210551ef93d06b446fcc42df78ec3d31554335656a02086746ac300ec2cdf72443fd62acf49c742a760d63b6b0f88eca6f614 -DIST gcc-13-20260805.tar.xz 84623768 BLAKE2B c1a782650b46f84b4f24a53b941eb2a4c9e75b4c6cb2ff19b122de7409b1adb2b084ef03395e2deb7b97d18f41748be1af90bb96b02afa733aa0f467349d28d1 SHA512 0d33a88464b861554034d3dda2d224b14d2c44f93769c6bf283413b772e5015dc1ff49a43ffb3bbcccf0dd4b3aa5b39cdfad97aa23ebc0d99f2418fbfc31266b -DIST gcc-13-20260812.tar.xz 84623116 BLAKE2B 770fa8f44382f372f832d7abb786bbf5e5ff5597dfe611f33828cbab8c58fdef17177dfe5276f0e4bfe567254500b166ea9b13754e2fe1a2fcd9ef35ed200570 SHA512 a5be79cbbf53b6516f3e4174f18bfa14415a77fa5fb826c1ba58e1f6995d8498fe18faec7afff484dbf28f3487b751bcf9ef245d1304e4e141df17cc90fdec05 -DIST gcc-13-20260819.tar.xz 84617312 BLAKE2B 43ce5c2bc12cf5e72e6bf2d1ed167b407c69f2bd1c357f4a19e7c76d3cdd1aa5f29f11819486533fef0a754d52c7d77d530b15cac188f3862cec32536572a844 SHA512 00553bc019bf30d94d79d79fe2611ad8b7049ab3d2fde03cc41020e2b22a0e243c35b19e070ada6d6b1d687019debe7d1547e339cf5eec4d2589d640743a7428 -DIST gcc-13-20260826.tar.xz 84625896 BLAKE2B 87b352448a27fb69bf1ec344059398d81f853088bfad0cbf0659c378b4a25a623870eb4f64084f65b9cedc7b3e378b3c87732a686a04428c4fe417db5db69642 SHA512 58c68d84cac16cfc068bf4f9e13cbacef1dfc70bd8b50a3d9f7397894f06cebe8e23681af2b8a8f1b26c81652163f0d3b4a39647cd9ae122b49dc83523ce593b -DIST gcc-13-20260902.tar.xz 84623964 BLAKE2B 84bc20d96f9a7cfa8bd4769cca7ceadee7c5bb82349bc2f626810c5c8be63fb39d8b62a5dfa8db8fad97b8a4a0810f8616464ef305536a1dd908a43e38ebddc0 SHA512 3713f502e755dcea0340d24ae9c7da4055aefd85a8f6542d027b33e572c143b55b163f3613b71f4a4a37dca3bff3dda451ae487f9fc13eda6cdc768ac2b22dfd DIST gcc-13.2.0-musl-patches-2.tar.xz 5292 BLAKE2B c057d6574d03c05854edaa9f3fd40e9149662b04f3ac7a7db3eb078d73a7b535726d1bf52e5b12736dedb2f9898ad731f2e48a6421fcfbf7b90f929dee072fcb SHA512 a691da0c87c443a5e9d23731f4005f27871c5b12bc9102873ffa24d374aa7b9fbd187c4f5635d23fa9ffb17e351e76173c2d3fdf40646e355c4cb314b538de69 DIST gcc-13.2.0-patches-3.tar.xz 30956 BLAKE2B 29ce043b46645640ca1e983397af3e158588ad87575f0bc59451ea4a7dd5e3bb5b190ed031de6a22cd790d423ba111e95d222187dd09985dceb12db9f0a2d907 SHA512 4ffecae7be320124ad0c4e71e39e142b7aa8db0e70b5f486f491d7a33ea31efc6464c6abeea77df02a8bd5cf81f08225d625c8af5c27f9afa32c0d7d989f7a3c DIST gcc-13.2.0.tar.xz 87858592 BLAKE2B 0034b29d3d6cc05821f0c4253ce077805943aff7b370729dd203bda57d89c107edd657eeddc2fb1e69ea15c7b0323b961f46516c7f4af89a3ccf7fea84701be2 SHA512 d99e4826a70db04504467e349e9fbaedaa5870766cda7c5cab50cdebedc4be755ebca5b789e1232a34a20be1a0b60097de9280efe47bdb71c73251e30b0862a2 DIST gcc-13.3.0-musl-patches-3.tar.xz 8556 BLAKE2B 6f990c1337c6b52d61a5bfb54c2d17304cd8175470c065dbb81734edf7f6363cae2bc4a515bb941e045b838423cf1f9ad01df375044a6e4696b71da9dba2bc66 SHA512 1bbe4117f0b0dc0dad97fae187559d357872391410b54ae88903cc8a3ec244353b964291efe8e9ba420fd9e43134303b932804afa3450049aa3c30e4d5234123 DIST gcc-13.3.0-patches-9.tar.xz 69080 BLAKE2B 4933533a19c54972b18f91749ea6ac2f9f9963de8ebea1f16bfd7617fdea2e5f1df29b564c090c32ba6c53feee2f1f9107dfcf96e42050fc701f30bfa8a4c606 SHA512 4a8125f5021c5dff526ecd9bebeff7cfa4aa7d6dace23eacbfda54ea5bdc468d17503a0d8072f8561a72c887f8ce294c648fa802210a0d7e04aee8a585968ea3 -DIST gcc-13.5.0-RC-20260904.tar.xz 91099680 BLAKE2B 1b41fbfdcae7e3debd013ff6e58b1260c7584a5f61fd50554fa62c67a4aae91d804b39e5c9816189bc54eb7cb99b4779a145523cfa32388eaff1f8803adafc18 SHA512 be089f5168bdefefcaefe680adbc4c2ed8808cd02999819c63bdfb8923c569669fa42ff44b5b920e1191b252a99bfbc74c46ae6cbf5b7fad832eb9b7b0bc2e1b +DIST gcc-13.5.0.tar.xz 90977816 BLAKE2B 76080f85e48559264e0e2e9794654df4750ee5c5a23e878f81490e3d5cc743430190dcaa26bad410dd709c5dbb7540eac36b4e2ed5cbf1fa3bea46a4d3eb91ab SHA512 709237ff8f10d46eb10cad53a71bdcacbd3d56f4559e9a5bb3323f743fdba78b7e505586135560b27e88320927a065ec4f5e45273d5504b542f67c7326eb683c DIST gcc-14-20260604.tar.xz 88473776 BLAKE2B 0d022d76185b04d314b05ee0e7906b030df6ca13efa254e5c64e625286af6e361659a359406bc90658b3d3e5379f0408500dda86a0af0aad3df88193ebe736dc SHA512 654e5484fe25986f51a55b12a959fa6c36d3640cbb8f62c63adda3e7222224048ddfd3cb87cac081759e1a2cd3732cdf17af9e6a3948aba227ddd3a4c0c2e72f DIST gcc-14-20260716.tar.xz 88509636 BLAKE2B 1e31c1c969a3ee7184d6e466dc9bf627e67e98f2c61fc4d34a74b02d7128718f7e8d0eb3a178b4e9734665fe93eeccf42e9bf5ba80e62b583044dab93b7939b1 SHA512 c587f5568ae6e8b9089dcb5e4753ad3ef5d807c3c30d329407e6be093e0a0ef26906c8dbc33a5aef20168371c10ded69c067e05acf42696eee45ade981ade321 -DIST gcc-14-20260806.tar.xz 88523444 BLAKE2B d8edd13b6793f89f6f8e36c038cf4ba15b9ab9155d5891e97e8e8ee1753cff26240625f225f7c28f0a5bab3f33c16a6b10203cb6ad0ecf45d47dad299b4eceab SHA512 1476818de65a47b6fd643c3d742db7c57762df468e78ecd85dc1b37b90e736e98a389dfefc45f46adb96227b1fa1197d49e01a0bf926f5e3b29f1c67c61b5c52 -DIST gcc-14-20260813.tar.xz 88525820 BLAKE2B bf960bc625ceecfd0374427f1f2ebad800495380df7aed7c76eed55049be9ff84e1398a17bac3d235e707193eda3bc60f6f4f2718f154757c20ad77edd8892ae SHA512 7b1009064362a493df9839d4b25bca73fa1a77aca3fabc0d696e77c325d4e709d740a89aad4be2da08db41dbd28cc205a0c17a37a4ef79e8cd522a12807789dd -DIST gcc-14-20260820.tar.xz 88526340 BLAKE2B d02ebd7009f02c64769f828c947d5e41e94593456dacdbe172194dd2652b110e011a3d276bc5f3b072f130306b7ed7b809b9b24f87806373c4bb6bf61a150fff SHA512 1351dcdda61885024ae79d8f77f8e3a53ba87981daa543236165693c1edc014c21f68f5a74252e01deab085a4343e70ff16ff88fcccec5a46e14463424c61897 -DIST gcc-14-20260827.tar.xz 88530032 BLAKE2B b2abe50f37f5f2ab5ec893e4524d74214d98da9ce45cdecdb370ad345a7f216c5025ab9aad4f3f95dac6c117cf6909aef160b2f1bd3315754a40f821df356227 SHA512 cf7600ed78c1bffe970ed826a7d29da36235d05137bafa130d329c099b6b0faf23c38779ef837a3cec3cb8770674b7b5ddfae93af3d27e1d9077b60bd139beda DIST gcc-14-20260903.tar.xz 88538140 BLAKE2B b5fd80fd8addf04d296f12c26f4ce1feb7c223f0389534d02af0f303cded7f0380b12d64c7fb31f49b6a57fe21fa7721a604ad6448931624dddcdc69f9a87bb0 SHA512 5704a3edd2594a38f090a85675f51106a80472d375cd67f57fa3f644bfc5111ed43c45a64a3c158de68741b0c7ff90f4dc9017d27fe71378648f94232a3d4eeb DIST gcc-14.3.0-musl-patches-2.tar.xz 6888 BLAKE2B e2f9ce6d445b7ced8f78c18585887422ffdd32356368a456a7cfde5a1854515b32546c1d25a2ab8637ee62d04a2c0bda1afc8d53c44e5c80c12499918c3c18fc SHA512 0b59d228213024cd93d9ffbd4ae5947021db2dc71bd320cc0e4ccf523d39f72e61be25c1a49a343729fe7b9abf7181503de3e650b255d80ab6d969d0de317d19 DIST gcc-14.3.0-patches-6.tar.xz 28148 BLAKE2B ba80a00289da26d3b5a813a9878aae6b34640e5cf8f37431ef846894087096dc84869e120ed17f23062bd2702a8059d73ead3ba28115e9c3bad55f46e7f474ee SHA512 7ee900f327bd92484ffba03ff80827b42ffba75d7527e26e09ea07e6d61622d812e1a00f77f3d669d7bde0366bab43085552d6140b28bc319edab9eb0e9a73f5 DIST gcc-14.4.0.tar.xz 91586872 BLAKE2B 10a512f9f95fcc70a13f4eb2142927277d2e6c0a16bad76f01078dc0d7e5cb6831204f8beec22c83c1ff2d0ed1d9df8c8d0a4118ba657d1aefef2a6f15636a28 SHA512 725ed8bdd43ef1726ffe8b5e8615a13e247fac9575b7626ae013a2975d000ea213212dc414b2f2631ac4785c1c8beca85555222faf9904d3b2fa6a3807a83a15 DIST gcc-15-20260717.tar.xz 92482140 BLAKE2B ae84ad42a0f5a35a36c362340298c94c8e8a64c7695102bb3a29b394527033186bf3599323ae8b1a478e215806cee702bfa48740421c504eefbafacbe74d2086 SHA512 91aaf673637458ebf73df2b1d87c21c9cbf432211b98e6dff965ae0f073f2ea8be8921a9828711fb6c10b9b3ec2e20213d118a05c08f31b8192ab291b448375d -DIST gcc-15-20260731.tar.xz 92483472 BLAKE2B f4ed7d848417e02c22386209998048f1b89a6278af04546e217febb31199cde2f6df976942f9fc5bbe0999eff887c704a9187e55526c530be1b2d074fffe3ee9 SHA512 67c857097a52ff4654f21e0affeb075d22cca23702a12083b82850983bf7218c6e05b89ec53345dd104f85bed5dd5aa4a535b2d3f21cb07749ea2bd4f8bfb153 -DIST gcc-15-20260814.tar.xz 92494796 BLAKE2B 7e8e4ccd1f4d71387d72b7100cda115e8a067ff3e88f883d8b8df18546cb01b36b7d118fb89f3163769e4774e4bfe31754b410aef4ff3545fa64817b82c87e24 SHA512 2f8d5f189f9a4725197ec8906ec0f3c515023e6224c29369d098f1102d6ac0899d8fbaff346891f1299eef90ef13206eeff5fb06f40af284db18531f02cee9a6 -DIST gcc-15-20260821.tar.xz 92491084 BLAKE2B da19130fa2cab934c120406cba85e135cb1909f1be2c05a5b846b3997f1bf368858521cd8a4bfc0380013bca3196bbaac53c066aa69e26513a45b552e8639096 SHA512 e229f0245dac155c7fb93611d0b077c104c0c82993ea30cb36940ad973130a230f2206075e1da2e583a9df6cfc85315adbfffa341c35e357b1e0649947371892 -DIST gcc-15-20260828.tar.xz 92507836 BLAKE2B 8542fafedf1d684064f9ca3ad77b5086121c4687071060749bbe71011f82be4bd1f5e60f97c26c37fd902ad6e1b203a25a0d57bc9f47fbd424efb82fcefecf65 SHA512 61c612f2666ec9461a1572eddd0b9c4e6575954b4abd338d1c275873c7d34e40c83a5936b5cd99ebc5d8d9016335aa9d5344aef1a97af8935cec418353b9095b DIST gcc-15-20260904.tar.xz 92498536 BLAKE2B 4cf423cc30aebbd682504b252a45499e30ee3687adfcb0f4ae83fb3b638ebbde65591c14a3a873f163b76dd8811cb600ea936e751befabc4ff0e4d9bd4fa177c SHA512 3a0af0e7700b572d5dd034528c32ee06dc82ad2e80f93a2eb8324a77c7f25c575b848161b7cd8d04a9a3ebfcea356083d2dd5b1869bb7b44da1a00f6c172690b +DIST gcc-15-20260911.tar.xz 92514232 BLAKE2B fac0cdb3c6dbab3b156c5bd406e377f685970230278e6c6eb6a060543d03b8e7289138b12f105c1423c8aa3bf849d1061a20a88b3c6f0a5ddac86f2cf2461bc6 SHA512 476e68f1e673ba0121b8383ca5c44ff94442971cee980768b3aac4444c799bc64a74886aa72ac6fdfcd2f2b083820aba7e8e4aeb48d41a13c31354755e67e438 DIST gcc-15.2.0-musl-patches-1.tar.xz 7168 BLAKE2B 6b7cfb123c3a691693240db815e6852a1e6c3820baa499368c463e0a0c1490c701053cfea10bf1d33f89dd2ba7bbddf63c4e6e0976590e3aaf1fee78b9282079 SHA512 ab80ffd69b9ead1fe06a9433faaa97ae53947d214999e77ea363fa6435de080d031a1aa6869e1dc088e800317952f2dc249a9e872113db56fb76f0a432240871 DIST gcc-15.2.0-patches-8.tar.xz 17584 BLAKE2B e35d85b993fc2ad86924158cac893a815f70332335ed02d970bcdf89c1ceafc2972576bcd85b4912e6ada91bdd80e8f10cbc6be798c804438368bae60abe2731 SHA512 6440a792320037b746ba405469773b96c1d4272c5248ae3808e6d8a2d576564c0f52889a6f88c3271233c8c2fe7ecb974d31ced2141f16f2c5ca68b9e47ace8c DIST gcc-15.3.0.tar.xz 101253696 BLAKE2B 9e37d6560addf936b8dae6f34a2621004e888b1436c9b95d6a09c2a792f909c7ec4aa5e8d0e63baa1be742fd8dc8162b366b5c48766fc83e44b3842891af44df SHA512 0de9e296153b52c021b1c7e63c9c62151d7a0ac03f23ce6e9f772c1b0eb783f6acdd81cc4567bfe4128a6f64968c2cfc8eff40b36229cba7425349f7d637c654 -DIST gcc-16-20260808.tar.xz 99127060 BLAKE2B e2451ae29049179fe8cf60b39cd66c1381787cb41328cbad88e3a1cbd3f2caf3a5eed3979b6757c9cc6a7d943f075bffedf6418e934c4482a4ce8fb5a72e5e29 SHA512 20d9469d115f328d9e45d44c59b64ccdc50c6d26447978f93df99c5700454be3503d225562e07d14504ca096b75426907b83e33525f844e99e50e1b4f2bac84c -DIST gcc-16-20260815.tar.xz 99086124 BLAKE2B a6654163cdaacf17987844eb5887aafe3ed11bac88327cc785898b00c084243d0aff995879f0d10d3eedf5efdb33c495ce7ceb162d9348bab2acc72ac96fa78a SHA512 538607b769cb2166c61179e76178a5f9af1b6690bd446d99d77bfab3123e22f892e9d4f92890f2e620f1f0a226e464c3dd587f78e13f67c478a62ee41f15c890 -DIST gcc-16-20260822.tar.xz 99099752 BLAKE2B c9769a7748868de74a8e50e5a4d0ee359eac7b3ee4dfcf7a6e470353b5aad0447ec4edc9da9ba14791b6a9cfc2a4085af52cee6fa97f50c6e4a8f5b0a5b98287 SHA512 4b6d2f69d97155fd4f78fcf45051d2ec15001bdcad15af686890a27371e8f3cbe3072a9a45313caa4c10a12b2aa06d4db5cf3bcd1ba89dda9521d4348ab44522 -DIST gcc-16-20260829.tar.xz 99107172 BLAKE2B d642dfa2d388fdc02ed8e71aa42a8b72ccbf3d01d9786f544982bcb75b1020411e03f1775fd88db5acae20cf43fcfb7a7660ad28e30da4c27bdbcaa1e4be730b SHA512 af0f4005c69a95ab6ff6af513541683115edd2ee498a8a9f13a008634d5e6951a11b9f4abc6bb65acff14e479758d4954b6dbc8b18c64e46822252b4ddfc8c85 DIST gcc-16-20260905.tar.xz 99118908 BLAKE2B 1a65b1fbc842e153389840274a5a3f844e3a5a9693957b1227e5361f74ce831df244570f1e5edf844fc512b62b978460ed7861b8c8856056b8c1f9763bae130c SHA512 f15b09406e3788ffc3b1c380748ed9c087bba32448c4cece7a56930417bbe1dc34a72464ecb570dff781c8bbaa4eebf880274e5b4a9139aa5137c0623e03be66 DIST gcc-16.1.0-musl-patches-1.tar.xz 3036 BLAKE2B 348d0233c92e6b269011342a170989bb6375ff267b6ecfc00aafab2f793b925f1cccd654f438a4f88168a7999cab965aadfb6dfc9957a9b1a5bca62c326e0b84 SHA512 dc9c2d4a6e9088ad245039a962333ecba8476288844c686e7df9c867c8018451fccbd645a5690d554ee39809e6467285b3c619553edfed379c5f84c003bcb7e5 DIST gcc-16.1.0-patches-3.tar.xz 25156 BLAKE2B 874afd3239c0794082568738c837786fff71ad48c24677c11110630fc6e0c0baf17720aec53dc7cd6580102a3a3b7daa2b78c82488f758af8afcb6cd5621ee25 SHA512 dbead66ac0899e2833e88cd7a95b12d2f2dd1379ec3cc085701efd7f8e446feff4d6c00f1481026bb9c699487a143f6a429a8f95ad7228f8bbef5faf2d1b5a5e DIST gcc-16.2.0-musl-patches-1.tar.xz 3036 BLAKE2B 8545e2499a8af4af9483e0372f253db13ee296c77e8514d409c9a43a2fd8919bdca4791c2747579fc57c62b08c0e4054314b7511ddc921074a60ab9f192e7983 SHA512 d029857ffeae60fa5577dddc0136f04ceadf77a282a3ebda9dda1da67a17301978028aa6d768f46f4b0fa9778f5e8f0052a731d087fb4b841a4f30244ee41fec DIST gcc-16.2.0-patches-1.tar.xz 22984 BLAKE2B 2d069def99de0c3f1f2d47e5fa9cb6669825588f63f181a9c06af43e77fbf5c8a69b1ab26ae1d236ec030141a7bcb1789266d95845cc879e2765c523f560c266 SHA512 121cabc9a2d0249fb8b3b11185fee4c7f2466b2b460ff7ac0722aec185ba4afb23470cc7592adc2e73bb5f4a6f44ae0155b038b47b18961ecc669f223b1f4f3a DIST gcc-16.2.0.tar.xz 107200820 BLAKE2B ab3ffe16e042da767f3f1eac170da518d6d7de3b0f92e068f79e3bf25fdc0bdf56eea0cd586bd4b9b6e9baebadd110c2ebd77b75c99c45853814f4bea5a98ef0 SHA512 c51c30ca7422d0cbecf504b2e0f33c3aca31e0f90a76b65217f465163fa6fa17b3f5de39e145c47e5bab90ac0ce7fff3b03c8d553ae36e01faaea5a50f8648d1 -DIST gcc-17-20260809.tar.xz 99926544 BLAKE2B e566d4bcce8ee2e1a206e02292cc92f7f20c6a3f6a73a20aa42925e03507dbd03e71f817a5a4e5e019b4ad65399096ec5486a67a7b428afa2f9281c3a67a3cd5 SHA512 a562022f7192b4d026541f724fe20761a0e20087e983868e2020846e9cc0e74fb764670b2b0640098c0c347000d93d752a06bd7e4074aad665bf093d9028e168 -DIST gcc-17-20260816.tar.xz 100050972 BLAKE2B 19d8898c50160a07c3277c1a20ff427ba00ae25a986a18021f53a8a1b36ee56c1a9a244168238b9c7db62760f5f9565d0abed091010a89dcae243aa8cceaaaf7 SHA512 503b1936dfd7927d8141d35dfbc40f02723c0c56cabc95b8031666408f5e099c9037fbe6c9374961275d72675fccb4b0ec5247c20200fd4dac46a9d4c939648b -DIST gcc-17-20260823.tar.xz 100144396 BLAKE2B 267a87122c33f37186a40681dc7ec1386d4ad194fd2fd53ade4584bad6920b375a5be3e9008ee9b9333be7386ce2ea44d2e93363fc57c0a692a8e6dc189d5078 SHA512 ef6e5e50dfae128ca1e007b6aed0d3e8d7e8ebd96610181d565d2ffc6998ca0be9e844e17baefe7aeaa2fcc3f347bf13ecaa8c6cf02547d9dfa28e31457ed9df -DIST gcc-17-20260830.tar.xz 100202104 BLAKE2B b6f1fa175e293adcbfbf8e0bb4686611293bb14c5718f5ab5ddfefbaaf640e140addc58397ff3bf6256c715f0c69e00f207b575a41f25c0410e45c218fe290c2 SHA512 d1e2b40c3b364a6df6c9d60b1f71f63bec69fe8f10545b75467761925fd879d54ae224418951b65da6f42917fdcb9bce06779d2185e0f3af670b7cad3da069c9 DIST gcc-17-20260906.tar.xz 100281396 BLAKE2B 758c496b1ad1410479a5108c1d7f7f98b0b1b2962fe1df77e1687ef2d70e21037e422c2a6a4f8fda8b79e568b0f828e7674a7e1fde43df6f1c0ad2486a826fbb SHA512 49db076d7359bd6f08d4cfa04fd380a977e904431fc57d75ca3a06675a83046a61b103c9a48bdcb3972a15a609cb2b33d1a8dd2221540dc88f4ce0814e6b5fdc DIST gcc-17.0.0-musl-patches-1.tar.xz 3040 BLAKE2B cc39906facd9c395bae9f87c67124066b8081521df39857d752f1e398dca5113240d24a836ca0f793313f954d6c38ff39961bf71a8036a1d5bc62751e71eb7c9 SHA512 4e330ee1c87229ba30644ad7a6841683aba368ce00585b5a7af433f215e248534a8d81f6f95fcf7b348c7d9aeaf1eeae015d76601e3d918a0ca39d94ed7e521c -DIST gcc-17.0.0-patches-10.tar.xz 23180 BLAKE2B d0a6bcd57675fbd6090341896f0b8427f04ae1a19c1eba37109de08d474cc857283ea9a64e751710d8266e976c07e07f534b55a6c8b683fa7afb3810b2551f9f SHA512 5e7fb665b2468cd8bc68e573a3e883ed70d4f5688d416fd1c471e2441bad95b6117ebdd433b49c8fbc34c937bc291dc1bcc5f99e1913b611d8833445b2d816d1 -DIST gcc-17.0.0-patches-12.tar.xz 49824 BLAKE2B 4731763b8283fa9d503d4c67485a4e4305e8aaec564573a0db953f7f1a894c51b98855a8c2c727fe78fd3ede34dbbdc2018c431caa2a589ac810181ff72f67dc SHA512 84f696c4df21c605d92368a586b5e52cf70daa646d374405697004b7e31b5e5902c7024bbae05a24af4cdfc128764801650b72f37fd3af93afaff8305a412d6d DIST gcc-17.0.0-patches-13.tar.xz 23248 BLAKE2B e09e2a4a2e51ad7275fe7d3ac3981d5a9873ce1af1f9de60dde2aa5f3df31ef4d73f48553170333a73251614c9bf666a7a93dadcde59d9dde3a20d8b5b2e902a SHA512 3c1aac5abda361d3407ba02ca19ad24c038671254714e82ec6a96f49286a4c551346eaaa718ae340cbfde6515685e665c91f6252adbfff16322b8dfb70b92e47 DIST gcc-8.5.0-patches-5.tar.xz 20188 BLAKE2B 45b29161105edc6344bb48f5bdf17e1aad6e8d9edb4d9434816425996c1b12c10f1303963776adad9db866d845f864d80d198a30e35ee6c204ca3659cf7a1401 SHA512 f22ab5d8e3116e2e896a5dcbbf5cef67dc5090182af364ef64fc22d2b28c029da5ed39f126f446721e388e7b6848239d01f5fc0346e49b96d5c04068b557f8f8 DIST gcc-8.5.0.tar.xz 63841008 BLAKE2B aa81a1a730fd7371360f6abed6ba78b5843fd18c58d5de5687acc320741b9e430e85df3535a1ef7a26051409be8d2f0945f503e5968480d919103123a99d4b12 SHA512 92f599680e6b7fbce88bcdda810f468777d541e5fddfbb287f7977d51093de2a5178bd0e6a08dfe37090ea10a0508a43ccd00220041abbbec33f1179bfc174d8 diff --git a/sys-devel/gcc/gcc-13.4.1_p20260805.ebuild b/sys-devel/gcc/gcc-13.4.1_p20260805.ebuild deleted file mode 100644 index 1b48162dfa0d..000000000000 --- a/sys-devel/gcc/gcc-13.4.1_p20260805.ebuild +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="13.3.0" -MUSL_GCC_VER="13.3.0" -PATCH_VER="9" -MUSL_VER="3" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ ${PV} == *.9999 ]] ; then - MY_PV_2=$(ver_cut 2) - MY_PV_3=1 - if [[ ${MY_PV_2} == 0 ]] ; then - MY_PV_2=0 - MY_PV_3=0 - else - MY_PV_2=$((${MY_PV_2} - 1)) - fi - - # e.g. 12.2.9999 -> 12.1.1 - TOOLCHAIN_GCC_PV=$(ver_cut 1).${MY_PV_2}.${MY_PV_3} -elif [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=releases/gcc-$(ver_cut 1) -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-13.4.1_p20260812.ebuild b/sys-devel/gcc/gcc-13.4.1_p20260812.ebuild deleted file mode 100644 index 1b48162dfa0d..000000000000 --- a/sys-devel/gcc/gcc-13.4.1_p20260812.ebuild +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="13.3.0" -MUSL_GCC_VER="13.3.0" -PATCH_VER="9" -MUSL_VER="3" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ ${PV} == *.9999 ]] ; then - MY_PV_2=$(ver_cut 2) - MY_PV_3=1 - if [[ ${MY_PV_2} == 0 ]] ; then - MY_PV_2=0 - MY_PV_3=0 - else - MY_PV_2=$((${MY_PV_2} - 1)) - fi - - # e.g. 12.2.9999 -> 12.1.1 - TOOLCHAIN_GCC_PV=$(ver_cut 1).${MY_PV_2}.${MY_PV_3} -elif [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=releases/gcc-$(ver_cut 1) -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-13.4.1_p20260819.ebuild b/sys-devel/gcc/gcc-13.4.1_p20260819.ebuild deleted file mode 100644 index 1b48162dfa0d..000000000000 --- a/sys-devel/gcc/gcc-13.4.1_p20260819.ebuild +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="13.3.0" -MUSL_GCC_VER="13.3.0" -PATCH_VER="9" -MUSL_VER="3" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ ${PV} == *.9999 ]] ; then - MY_PV_2=$(ver_cut 2) - MY_PV_3=1 - if [[ ${MY_PV_2} == 0 ]] ; then - MY_PV_2=0 - MY_PV_3=0 - else - MY_PV_2=$((${MY_PV_2} - 1)) - fi - - # e.g. 12.2.9999 -> 12.1.1 - TOOLCHAIN_GCC_PV=$(ver_cut 1).${MY_PV_2}.${MY_PV_3} -elif [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=releases/gcc-$(ver_cut 1) -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-13.4.1_p20260826.ebuild b/sys-devel/gcc/gcc-13.4.1_p20260826.ebuild deleted file mode 100644 index 1b48162dfa0d..000000000000 --- a/sys-devel/gcc/gcc-13.4.1_p20260826.ebuild +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="13.3.0" -MUSL_GCC_VER="13.3.0" -PATCH_VER="9" -MUSL_VER="3" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ ${PV} == *.9999 ]] ; then - MY_PV_2=$(ver_cut 2) - MY_PV_3=1 - if [[ ${MY_PV_2} == 0 ]] ; then - MY_PV_2=0 - MY_PV_3=0 - else - MY_PV_2=$((${MY_PV_2} - 1)) - fi - - # e.g. 12.2.9999 -> 12.1.1 - TOOLCHAIN_GCC_PV=$(ver_cut 1).${MY_PV_2}.${MY_PV_3} -elif [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=releases/gcc-$(ver_cut 1) -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-13.4.1_p20260902.ebuild b/sys-devel/gcc/gcc-13.4.1_p20260902.ebuild deleted file mode 100644 index 1b48162dfa0d..000000000000 --- a/sys-devel/gcc/gcc-13.4.1_p20260902.ebuild +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="13.3.0" -MUSL_GCC_VER="13.3.0" -PATCH_VER="9" -MUSL_VER="3" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ ${PV} == *.9999 ]] ; then - MY_PV_2=$(ver_cut 2) - MY_PV_3=1 - if [[ ${MY_PV_2} == 0 ]] ; then - MY_PV_2=0 - MY_PV_3=0 - else - MY_PV_2=$((${MY_PV_2} - 1)) - fi - - # e.g. 12.2.9999 -> 12.1.1 - TOOLCHAIN_GCC_PV=$(ver_cut 1).${MY_PV_2}.${MY_PV_3} -elif [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=releases/gcc-$(ver_cut 1) -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-13.4.1_p20260904.ebuild b/sys-devel/gcc/gcc-13.4.1_p20260904.ebuild deleted file mode 100644 index 1b33c8f5354b..000000000000 --- a/sys-devel/gcc/gcc-13.4.1_p20260904.ebuild +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_GCC_RC=1 -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="13.3.0" -MUSL_GCC_VER="13.3.0" -PATCH_VER="9" -MUSL_VER="3" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ ${PV} == *.9999 ]] ; then - MY_PV_2=$(ver_cut 2) - MY_PV_3=1 - if [[ ${MY_PV_2} == 0 ]] ; then - MY_PV_2=0 - MY_PV_3=0 - else - MY_PV_2=$((${MY_PV_2} - 1)) - fi - - # e.g. 12.2.9999 -> 12.1.1 - TOOLCHAIN_GCC_PV=$(ver_cut 1).${MY_PV_2}.${MY_PV_3} -elif [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=releases/gcc-$(ver_cut 1) -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-13.5.9999.ebuild b/sys-devel/gcc/gcc-13.5.0.ebuild index 4f3fc8d25e96..f74391ae7ebe 100644 --- a/sys-devel/gcc/gcc-13.5.9999.ebuild +++ b/sys-devel/gcc/gcc-13.5.0.ebuild @@ -9,6 +9,8 @@ EAPI=8 TOOLCHAIN_HAS_TESTS=1 PATCH_GCC_VER="13.3.0" MUSL_GCC_VER="13.3.0" +PATCH_VER="9" +MUSL_VER="3" PYTHON_COMPAT=( python3_{13..14} ) if [[ ${PV} == *.9999 ]] ; then @@ -40,6 +42,7 @@ if tc_is_live ; then elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then # Don't keyword live ebuilds KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + :; fi if [[ ${CATEGORY} != cross-* ]] ; then diff --git a/sys-devel/gcc/gcc-14.4.1_p20260806.ebuild b/sys-devel/gcc/gcc-14.4.1_p20260806.ebuild deleted file mode 100644 index b4578274f0d3..000000000000 --- a/sys-devel/gcc/gcc-14.4.1_p20260806.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="14.3.0" -PATCH_VER="6" -MUSL_VER="2" -MUSL_GCC_VER="14.3.0" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=releases/gcc-$(ver_cut 1) -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # m68k doesnt build (ICE, bug 932733) - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-14.4.1_p20260813.ebuild b/sys-devel/gcc/gcc-14.4.1_p20260813.ebuild deleted file mode 100644 index b4578274f0d3..000000000000 --- a/sys-devel/gcc/gcc-14.4.1_p20260813.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="14.3.0" -PATCH_VER="6" -MUSL_VER="2" -MUSL_GCC_VER="14.3.0" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=releases/gcc-$(ver_cut 1) -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # m68k doesnt build (ICE, bug 932733) - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-14.4.1_p20260820.ebuild b/sys-devel/gcc/gcc-14.4.1_p20260820.ebuild deleted file mode 100644 index b4578274f0d3..000000000000 --- a/sys-devel/gcc/gcc-14.4.1_p20260820.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="14.3.0" -PATCH_VER="6" -MUSL_VER="2" -MUSL_GCC_VER="14.3.0" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=releases/gcc-$(ver_cut 1) -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # m68k doesnt build (ICE, bug 932733) - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-14.4.1_p20260827.ebuild b/sys-devel/gcc/gcc-14.4.1_p20260827.ebuild deleted file mode 100644 index b4578274f0d3..000000000000 --- a/sys-devel/gcc/gcc-14.4.1_p20260827.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="14.3.0" -PATCH_VER="6" -MUSL_VER="2" -MUSL_GCC_VER="14.3.0" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=releases/gcc-$(ver_cut 1) -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # m68k doesnt build (ICE, bug 932733) - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-15.3.1_p20260814.ebuild b/sys-devel/gcc/gcc-15.3.1_p20260814.ebuild deleted file mode 100644 index 13c1da8a4cb1..000000000000 --- a/sys-devel/gcc/gcc-15.3.1_p20260814.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="15.2.0" -PATCH_VER="8" -MUSL_VER="1" -MUSL_GCC_VER="15.2.0" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=master -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - [[ ${CHOST} == m68k-* ]] && eapply "${FILESDIR}"/${PN}-15-m68k-workaround.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-15.3.1_p20260821.ebuild b/sys-devel/gcc/gcc-15.3.1_p20260821.ebuild deleted file mode 100644 index 13c1da8a4cb1..000000000000 --- a/sys-devel/gcc/gcc-15.3.1_p20260821.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="15.2.0" -PATCH_VER="8" -MUSL_VER="1" -MUSL_GCC_VER="15.2.0" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=master -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - [[ ${CHOST} == m68k-* ]] && eapply "${FILESDIR}"/${PN}-15-m68k-workaround.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-15.3.1_p20260828.ebuild b/sys-devel/gcc/gcc-15.3.1_p20260828.ebuild deleted file mode 100644 index 13c1da8a4cb1..000000000000 --- a/sys-devel/gcc/gcc-15.3.1_p20260828.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="15.2.0" -PATCH_VER="8" -MUSL_VER="1" -MUSL_GCC_VER="15.2.0" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=master -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - [[ ${CHOST} == m68k-* ]] && eapply "${FILESDIR}"/${PN}-15-m68k-workaround.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-15.3.1_p20260731.ebuild b/sys-devel/gcc/gcc-15.3.1_p20260911.ebuild index 13c1da8a4cb1..13c1da8a4cb1 100644 --- a/sys-devel/gcc/gcc-15.3.1_p20260731.ebuild +++ b/sys-devel/gcc/gcc-15.3.1_p20260911.ebuild diff --git a/sys-devel/gcc/gcc-16.2.1_p20260808.ebuild b/sys-devel/gcc/gcc-16.2.1_p20260808.ebuild deleted file mode 100644 index 4b9f5cdea6d0..000000000000 --- a/sys-devel/gcc/gcc-16.2.1_p20260808.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="16.2.0" -PATCH_VER="1" -MUSL_VER="1" -MUSL_GCC_VER="16.2.0" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=master -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - [[ ${CHOST} == m68k-* ]] && eapply "${FILESDIR}"/${PN}-15-m68k-workaround.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-16.2.1_p20260815.ebuild b/sys-devel/gcc/gcc-16.2.1_p20260815.ebuild deleted file mode 100644 index 4b9f5cdea6d0..000000000000 --- a/sys-devel/gcc/gcc-16.2.1_p20260815.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="16.2.0" -PATCH_VER="1" -MUSL_VER="1" -MUSL_GCC_VER="16.2.0" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=master -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - [[ ${CHOST} == m68k-* ]] && eapply "${FILESDIR}"/${PN}-15-m68k-workaround.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-16.2.1_p20260822.ebuild b/sys-devel/gcc/gcc-16.2.1_p20260822.ebuild deleted file mode 100644 index 4b9f5cdea6d0..000000000000 --- a/sys-devel/gcc/gcc-16.2.1_p20260822.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="16.2.0" -PATCH_VER="1" -MUSL_VER="1" -MUSL_GCC_VER="16.2.0" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=master -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - [[ ${CHOST} == m68k-* ]] && eapply "${FILESDIR}"/${PN}-15-m68k-workaround.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-16.2.1_p20260829.ebuild b/sys-devel/gcc/gcc-16.2.1_p20260829.ebuild deleted file mode 100644 index 4b9f5cdea6d0..000000000000 --- a/sys-devel/gcc/gcc-16.2.1_p20260829.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="16.2.0" -PATCH_VER="1" -MUSL_VER="1" -MUSL_GCC_VER="16.2.0" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=master -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - [[ ${CHOST} == m68k-* ]] && eapply "${FILESDIR}"/${PN}-15-m68k-workaround.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-17.0.0_p20260809.ebuild b/sys-devel/gcc/gcc-17.0.0_p20260809.ebuild deleted file mode 100644 index 5111cc50e5fc..000000000000 --- a/sys-devel/gcc/gcc-17.0.0_p20260809.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="17.0.0" -PATCH_VER="10" -MUSL_GCC_VER="17.0.0" -MUSL_VER="1" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=master -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - [[ ${CHOST} == m68k-* ]] && eapply "${FILESDIR}"/${PN}-15-m68k-workaround.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-17.0.0_p20260816.ebuild b/sys-devel/gcc/gcc-17.0.0_p20260816.ebuild deleted file mode 100644 index 974309c4dd76..000000000000 --- a/sys-devel/gcc/gcc-17.0.0_p20260816.ebuild +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="17.0.0" -PATCH_VER="10" -MUSL_GCC_VER="17.0.0" -MUSL_VER="1" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=master -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - eapply "${FILESDIR}"/0001-path-solver-only-compute-ranges-at-the-current-path-.patch - eapply "${FILESDIR}"/0002-Provide-a-range_info-reset-method.patch - [[ ${CHOST} == m68k-* ]] && eapply "${FILESDIR}"/${PN}-15-m68k-workaround.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-17.0.0_p20260823.ebuild b/sys-devel/gcc/gcc-17.0.0_p20260823.ebuild deleted file mode 100644 index f7673057e534..000000000000 --- a/sys-devel/gcc/gcc-17.0.0_p20260823.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="17.0.0" -PATCH_VER="12" -MUSL_GCC_VER="17.0.0" -MUSL_VER="1" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=master -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - [[ ${CHOST} == m68k-* ]] && eapply "${FILESDIR}"/${PN}-15-m68k-workaround.patch - eapply_user -} diff --git a/sys-devel/gcc/gcc-17.0.0_p20260830.ebuild b/sys-devel/gcc/gcc-17.0.0_p20260830.ebuild deleted file mode 100644 index aa8002c82c88..000000000000 --- a/sys-devel/gcc/gcc-17.0.0_p20260830.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# Maintenance notes and explanations of GCC handling are on the wiki: -# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc - -TOOLCHAIN_HAS_TESTS=1 -PATCH_GCC_VER="17.0.0" -PATCH_VER="13" -MUSL_GCC_VER="17.0.0" -MUSL_VER="1" -PYTHON_COMPAT=( python3_{13..14} ) - -if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then - # Cheesy hack for RCs - MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 1)))-RC-$(ver_cut 5) - MY_P=${PN}-${MY_PV} - GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz" - TOOLCHAIN_SET_S=no - S="${WORKDIR}"/${MY_P} -fi - -inherit toolchain - -if tc_is_live ; then - # Needs to be after inherit (for now?), bug #830908 - EGIT_BRANCH=master -elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then - # Don't keyword live ebuilds - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" - :; -fi - -if [[ ${CATEGORY} != cross-* ]] ; then - # Technically only if USE=hardened *too* right now, but no point in complicating it further. - # If GCC is enabling CET by default, we need glibc to be built with support for it. - # bug #830454 - RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )" - DEPEND="${RDEPEND}" -fi - -src_prepare() { - local p upstreamed_patches=( - # add them here - ) - for p in "${upstreamed_patches[@]}"; do - rm -v "${WORKDIR}/patch/${p}" || die - done - - toolchain_src_prepare - eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch - [[ ${CHOST} == m68k-* ]] && eapply "${FILESDIR}"/${PN}-15-m68k-workaround.patch - eapply_user -} diff --git a/sys-devel/kgcc64/Manifest b/sys-devel/kgcc64/Manifest index 7a81f31fb36d..c3b64d222657 100644 --- a/sys-devel/kgcc64/Manifest +++ b/sys-devel/kgcc64/Manifest @@ -8,11 +8,22 @@ DIST gcc-12.4.0-musl-patches-3.tar.xz 3480 BLAKE2B ef230799427c10455b33e36fab1d8 DIST gcc-12.4.0-patches-3.tar.xz 14140 BLAKE2B cc73805b2c1f9f6a8d96b2a31d79ce0034ebc3ef1976e78e8ec4f2649c33cef48acee943773de5e03b891128f37e4d72c07d7f4c0bd6d473e484a4b6a9df9f25 SHA512 a93c6bc7d2bd1d7b80bfc6b16c042ac6d3cb6e15cada16041baa48b8023d857b4a1557f4620c46646136daece6566655523010366411aa9fad671398efb03b6f DIST gcc-12.5.0.tar.xz 85897368 BLAKE2B df2f87b407c5572d3590e9868a7597b98bc913669054e517fb2eb9ed82f635df6735a5cab0eab30ebec694e39e552806d837233f0ffe02aa90f5d8b61352c34f SHA512 c76020e4c844b53485502cb8a4e295221c9d37487d66c9f4559031fb14c85de20602e6387310005386cb0ef25e55067d2cfef141423bb445f3b77e7456a23533 DIST gcc-13.2.0-musl-patches-2.tar.xz 5292 BLAKE2B c057d6574d03c05854edaa9f3fd40e9149662b04f3ac7a7db3eb078d73a7b535726d1bf52e5b12736dedb2f9898ad731f2e48a6421fcfbf7b90f929dee072fcb SHA512 a691da0c87c443a5e9d23731f4005f27871c5b12bc9102873ffa24d374aa7b9fbd187c4f5635d23fa9ffb17e351e76173c2d3fdf40646e355c4cb314b538de69 +DIST gcc-13.3.0-musl-patches-3.tar.xz 8556 BLAKE2B 6f990c1337c6b52d61a5bfb54c2d17304cd8175470c065dbb81734edf7f6363cae2bc4a515bb941e045b838423cf1f9ad01df375044a6e4696b71da9dba2bc66 SHA512 1bbe4117f0b0dc0dad97fae187559d357872391410b54ae88903cc8a3ec244353b964291efe8e9ba420fd9e43134303b932804afa3450049aa3c30e4d5234123 DIST gcc-13.3.0-patches-5.tar.xz 52820 BLAKE2B 73759dc576aab9e5f66dc7f9a1e8eb1b79a98bdb85bfdac9d611baa82c85a5f433d5031876c6e0ee2f02dd1d874da1661b0dd0f05906b118502f17bfaf16eb1a SHA512 4e6b626a562657f2d928324b412d5033464c09d283ad3a2ebfebbb5245bffb09c2532318325c4c16f4206df5cede6758fe1031c55e64dfb9b9ea08ef2c1e90af +DIST gcc-13.3.0-patches-9.tar.xz 69080 BLAKE2B 4933533a19c54972b18f91749ea6ac2f9f9963de8ebea1f16bfd7617fdea2e5f1df29b564c090c32ba6c53feee2f1f9107dfcf96e42050fc701f30bfa8a4c606 SHA512 4a8125f5021c5dff526ecd9bebeff7cfa4aa7d6dace23eacbfda54ea5bdc468d17503a0d8072f8561a72c887f8ce294c648fa802210a0d7e04aee8a585968ea3 DIST gcc-13.4.0.tar.xz 88530720 BLAKE2B abbba220652d6e84c59554e754207be91d1250d7751c09163e3166a9da8c7eb4d538785697bb3aea65a8a433e8b82f9a969cf09bb0ecc5aa4a27c964f0acd7e8 SHA512 9b4b83ecf51ef355b868608b8d257b2fa435c06d2719cb86657a7c2c2a0828ff4ce04e9bac1055bbcad8ed5b4da524cafaef654785e23a50233d95d89201e35f +DIST gcc-13.5.0.tar.xz 90977816 BLAKE2B 76080f85e48559264e0e2e9794654df4750ee5c5a23e878f81490e3d5cc743430190dcaa26bad410dd709c5dbb7540eac36b4e2ed5cbf1fa3bea46a4d3eb91ab SHA512 709237ff8f10d46eb10cad53a71bdcacbd3d56f4559e9a5bb3323f743fdba78b7e505586135560b27e88320927a065ec4f5e45273d5504b542f67c7326eb683c DIST gcc-14.1.0-musl-patches-1.tar.xz 3600 BLAKE2B 4cd920b7ca1f122cae806707564d8e45bfd48e78c88788a12a301f6068b5a5f335d8885e67479ac536c66aeaa81f2ecb7240ae56e9fc821a7246ab66b453711f SHA512 61c48d90a55dfc2129d96aee69d939d6a89f6407f69f7bd12c1a619f28989f471fd219d731958f8e62b0fd650c32300f0ad8dc06d5df23d9fc8c1a77fe210c25 DIST gcc-14.2.0-patches-8.tar.xz 14540 BLAKE2B 09f66035343d4cab694b8ab382170f8e2d546ddffedf3477f26edbd6a798ddf94294f569c2661729d40088d590bc17a4eb651710d8d9f66f33703734a1a82b67 SHA512 7a9a2724ef8db3c57b033d90751192969c16e5eaa8f4777b7f16470222ff3a18771b461bd89feaad701e7f0d573b883b487981588129933c732fb76117728b86 +DIST gcc-14.3.0-musl-patches-2.tar.xz 6888 BLAKE2B e2f9ce6d445b7ced8f78c18585887422ffdd32356368a456a7cfde5a1854515b32546c1d25a2ab8637ee62d04a2c0bda1afc8d53c44e5c80c12499918c3c18fc SHA512 0b59d228213024cd93d9ffbd4ae5947021db2dc71bd320cc0e4ccf523d39f72e61be25c1a49a343729fe7b9abf7181503de3e650b255d80ab6d969d0de317d19 +DIST gcc-14.3.0-patches-6.tar.xz 28148 BLAKE2B ba80a00289da26d3b5a813a9878aae6b34640e5cf8f37431ef846894087096dc84869e120ed17f23062bd2702a8059d73ead3ba28115e9c3bad55f46e7f474ee SHA512 7ee900f327bd92484ffba03ff80827b42ffba75d7527e26e09ea07e6d61622d812e1a00f77f3d669d7bde0366bab43085552d6140b28bc319edab9eb0e9a73f5 DIST gcc-14.3.0.tar.xz 95212220 BLAKE2B 11c0e549b2e9b4bbbe4cd64782032d2ec783b3db8d4aa538ebd0a0c9760d8e521c32007891a608b081bc6dd353d4eb23030c5e2b9fe9a20c4894a8455dde47b6 SHA512 cb4e3259640721bbd275c723fe4df53d12f9b1673afb3db274c22c6aa457865dccf2d6ea20b4fd4c591f6152e6d4b87516c402015900f06ce9d43af66d3b7a93 +DIST gcc-14.4.0.tar.xz 91586872 BLAKE2B 10a512f9f95fcc70a13f4eb2142927277d2e6c0a16bad76f01078dc0d7e5cb6831204f8beec22c83c1ff2d0ed1d9df8c8d0a4118ba657d1aefef2a6f15636a28 SHA512 725ed8bdd43ef1726ffe8b5e8615a13e247fac9575b7626ae013a2975d000ea213212dc414b2f2631ac4785c1c8beca85555222faf9904d3b2fa6a3807a83a15 DIST gcc-15.2.0-musl-patches-1.tar.xz 7168 BLAKE2B 6b7cfb123c3a691693240db815e6852a1e6c3820baa499368c463e0a0c1490c701053cfea10bf1d33f89dd2ba7bbddf63c4e6e0976590e3aaf1fee78b9282079 SHA512 ab80ffd69b9ead1fe06a9433faaa97ae53947d214999e77ea363fa6435de080d031a1aa6869e1dc088e800317952f2dc249a9e872113db56fb76f0a432240871 DIST gcc-15.2.0-patches-1.tar.xz 17412 BLAKE2B b761d5c75e084724a80287adb0659286fa208d40b731fc562e9c555d178f2531ecd1e3ca85b674d83f7aabe774d12b382c0b12d0cd024d45e8b915d185f7e229 SHA512 15442890b5b077e3bb392b9cab5dc7a2379c6da7820dc54d25ae337cc5238f662d834ea531882a273f3aba36672f14600baca40a2f4580fceb0e396f56b15594 +DIST gcc-15.2.0-patches-8.tar.xz 17584 BLAKE2B e35d85b993fc2ad86924158cac893a815f70332335ed02d970bcdf89c1ceafc2972576bcd85b4912e6ada91bdd80e8f10cbc6be798c804438368bae60abe2731 SHA512 6440a792320037b746ba405469773b96c1d4272c5248ae3808e6d8a2d576564c0f52889a6f88c3271233c8c2fe7ecb974d31ced2141f16f2c5ca68b9e47ace8c DIST gcc-15.2.0.tar.xz 101056276 BLAKE2B e270320978ca690e6e8f5ef06414dc13caf561f16403a3783c76fbf3dcee57e755a2d5bba922bf7fcae0bb6120443755d819b003791ae823d54589dd799804de SHA512 89047a2e07bd9da265b507b516ed3635adb17491c7f4f67cf090f0bd5b3fc7f2ee6e4cc4008beef7ca884b6b71dffe2bb652b21f01a702e17b468cca2d10b2de +DIST gcc-15.3.0.tar.xz 101253696 BLAKE2B 9e37d6560addf936b8dae6f34a2621004e888b1436c9b95d6a09c2a792f909c7ec4aa5e8d0e63baa1be742fd8dc8162b366b5c48766fc83e44b3842891af44df SHA512 0de9e296153b52c021b1c7e63c9c62151d7a0ac03f23ce6e9f772c1b0eb783f6acdd81cc4567bfe4128a6f64968c2cfc8eff40b36229cba7425349f7d637c654 +DIST gcc-16.1.0-musl-patches-1.tar.xz 3036 BLAKE2B 348d0233c92e6b269011342a170989bb6375ff267b6ecfc00aafab2f793b925f1cccd654f438a4f88168a7999cab965aadfb6dfc9957a9b1a5bca62c326e0b84 SHA512 dc9c2d4a6e9088ad245039a962333ecba8476288844c686e7df9c867c8018451fccbd645a5690d554ee39809e6467285b3c619553edfed379c5f84c003bcb7e5 +DIST gcc-16.1.0-patches-3.tar.xz 25156 BLAKE2B 874afd3239c0794082568738c837786fff71ad48c24677c11110630fc6e0c0baf17720aec53dc7cd6580102a3a3b7daa2b78c82488f758af8afcb6cd5621ee25 SHA512 dbead66ac0899e2833e88cd7a95b12d2f2dd1379ec3cc085701efd7f8e446feff4d6c00f1481026bb9c699487a143f6a429a8f95ad7228f8bbef5faf2d1b5a5e +DIST gcc-16.2.0.tar.xz 107200820 BLAKE2B ab3ffe16e042da767f3f1eac170da518d6d7de3b0f92e068f79e3bf25fdc0bdf56eea0cd586bd4b9b6e9baebadd110c2ebd77b75c99c45853814f4bea5a98ef0 SHA512 c51c30ca7422d0cbecf504b2e0f33c3aca31e0f90a76b65217f465163fa6fa17b3f5de39e145c47e5bab90ac0ce7fff3b03c8d553ae36e01faaea5a50f8648d1 diff --git a/sys-devel/kgcc64/kgcc64-13.5.0.ebuild b/sys-devel/kgcc64/kgcc64-13.5.0.ebuild new file mode 100644 index 000000000000..d998b082d98f --- /dev/null +++ b/sys-devel/kgcc64/kgcc64-13.5.0.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +case ${CHOST} in + hppa*) CTARGET=hppa64-${CHOST#*-};; + mips*) CTARGET=${CHOST/mips/mips64};; + powerpc*) CTARGET=${CHOST/powerpc/powerpc64};; + s390*) CTARGET=${CHOST/s390/s390x};; + sparc*) CTARGET=${CHOST/sparc/sparc64};; + i?86*) CTARGET=x86_64-${CHOST#*-};; +esac +export CTARGET +TOOLCHAIN_ALLOWED_LANGS="c" +PATCH_GCC_VER="13.3.0" +MUSL_GCC_VER="13.3.0" +PATCH_VER="9" +MUSL_VER="3" +GCC_TARGET_NO_MULTILIB=true +inherit toolchain + +DESCRIPTION="64bit kernel compiler" + +# Works on hppa and mips; all other archs, refer to bug #228115 +KEYWORDS="~hppa" + +# unlike every other target, hppa has not unified the 32/64 bit +# ports in binutils yet +BDEPEND="hppa? ( sys-devel/binutils-hppa64 )" + +pkg_postinst() { + toolchain_pkg_postinst + + cd "${ROOT}"/usr/bin + local x + for x in gcc cpp ; do + cat <<-EOF >${CTARGET%%-*}-linux-${x} + #!/bin/sh + exec ${CTARGET}-${x} "\$@" + EOF + chmod a+rx ${CTARGET%%-*}-linux-${x} + done +} diff --git a/sys-devel/kgcc64/kgcc64-14.4.0.ebuild b/sys-devel/kgcc64/kgcc64-14.4.0.ebuild new file mode 100644 index 000000000000..d711ef846522 --- /dev/null +++ b/sys-devel/kgcc64/kgcc64-14.4.0.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +case ${CHOST} in + hppa*) CTARGET=hppa64-${CHOST#*-};; + mips*) CTARGET=${CHOST/mips/mips64};; + powerpc*) CTARGET=${CHOST/powerpc/powerpc64};; + s390*) CTARGET=${CHOST/s390/s390x};; + sparc*) CTARGET=${CHOST/sparc/sparc64};; + i?86*) CTARGET=x86_64-${CHOST#*-};; +esac +export CTARGET +TOOLCHAIN_ALLOWED_LANGS="c" +PATCH_VER="6" +PATCH_GCC_VER="14.3.0" +MUSL_VER="2" +MUSL_GCC_VER="14.3.0" +GCC_TARGET_NO_MULTILIB=true +inherit toolchain + +DESCRIPTION="64bit kernel compiler" + +# Works on hppa and mips; all other archs, refer to bug #228115 +KEYWORDS="~hppa" + +# unlike every other target, hppa has not unified the 32/64 bit +# ports in binutils yet +BDEPEND="hppa? ( sys-devel/binutils-hppa64 )" + +pkg_postinst() { + toolchain_pkg_postinst + + cd "${ROOT}"/usr/bin + local x + for x in gcc cpp ; do + cat <<-EOF >${CTARGET%%-*}-linux-${x} + #!/bin/sh + exec ${CTARGET}-${x} "\$@" + EOF + chmod a+rx ${CTARGET%%-*}-linux-${x} + done +} diff --git a/sys-devel/kgcc64/kgcc64-15.3.0.ebuild b/sys-devel/kgcc64/kgcc64-15.3.0.ebuild new file mode 100644 index 000000000000..f189802d7ae5 --- /dev/null +++ b/sys-devel/kgcc64/kgcc64-15.3.0.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +case ${CHOST} in + hppa*) CTARGET=hppa64-${CHOST#*-};; + mips*) CTARGET=${CHOST/mips/mips64};; + powerpc*) CTARGET=${CHOST/powerpc/powerpc64};; + s390*) CTARGET=${CHOST/s390/s390x};; + sparc*) CTARGET=${CHOST/sparc/sparc64};; + i?86*) CTARGET=x86_64-${CHOST#*-};; +esac +export CTARGET +TOOLCHAIN_ALLOWED_LANGS="c" +PATCH_VER="8" +PATCH_GCC_VER="15.2.0" +MUSL_VER="1" +MUSL_GCC_VER="15.2.0" +GCC_TARGET_NO_MULTILIB=true +inherit toolchain + +DESCRIPTION="64bit kernel compiler" + +# Works on hppa and mips; all other archs, refer to bug #228115 +KEYWORDS="~hppa" + +# unlike every other target, hppa has not unified the 32/64 bit +# ports in binutils yet +BDEPEND="hppa? ( sys-devel/binutils-hppa64 )" + +pkg_postinst() { + toolchain_pkg_postinst + + cd "${ROOT}"/usr/bin + local x + for x in gcc cpp ; do + cat <<-EOF >${CTARGET%%-*}-linux-${x} + #!/bin/sh + exec ${CTARGET}-${x} "\$@" + EOF + chmod a+rx ${CTARGET%%-*}-linux-${x} + done +} diff --git a/sys-devel/kgcc64/kgcc64-16.2.0.ebuild b/sys-devel/kgcc64/kgcc64-16.2.0.ebuild new file mode 100644 index 000000000000..342fc832359c --- /dev/null +++ b/sys-devel/kgcc64/kgcc64-16.2.0.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +case ${CHOST} in + hppa*) CTARGET=hppa64-${CHOST#*-};; + mips*) CTARGET=${CHOST/mips/mips64};; + powerpc*) CTARGET=${CHOST/powerpc/powerpc64};; + s390*) CTARGET=${CHOST/s390/s390x};; + sparc*) CTARGET=${CHOST/sparc/sparc64};; + i?86*) CTARGET=x86_64-${CHOST#*-};; +esac +export CTARGET +TOOLCHAIN_ALLOWED_LANGS="c" +PATCH_VER="3" +PATCH_GCC_VER="16.1.0" +MUSL_VER="1" +MUSL_GCC_VER="16.1.0" +GCC_TARGET_NO_MULTILIB=true +inherit toolchain + +DESCRIPTION="64bit kernel compiler" + +# Works on hppa and mips; all other archs, refer to bug #228115 +KEYWORDS="~hppa" + +# unlike every other target, hppa has not unified the 32/64 bit +# ports in binutils yet +BDEPEND="hppa? ( sys-devel/binutils-hppa64 )" + +pkg_postinst() { + toolchain_pkg_postinst + + cd "${ROOT}"/usr/bin + local x + for x in gcc cpp ; do + cat <<-EOF >${CTARGET%%-*}-linux-${x} + #!/bin/sh + exec ${CTARGET}-${x} "\$@" + EOF + chmod a+rx ${CTARGET%%-*}-linux-${x} + done +} diff --git a/sys-devel/mold/Manifest b/sys-devel/mold/Manifest index 8efcd22be831..8fda44894304 100644 --- a/sys-devel/mold/Manifest +++ b/sys-devel/mold/Manifest @@ -1,3 +1,4 @@ DIST mold-2.40.4.tar.gz 11039370 BLAKE2B 73686ad57eb5a17a1a617792c65eddddf070211b9c1592359760cd94f463b1ad8267b83bd4edd0897d6846e46072b787b8d3a8733eff9fcf68aa4919e7d6fca8 SHA512 d28501d827eca861179218566521c14b0f76cecc501145b34b3fbf7739b125e4ccd411358c8871e788ddbd8b4c7229cb8839018dc671db76db1aaa8defae0abe DIST mold-2.41.0.tar.gz 11048346 BLAKE2B fd9f1df13e5f12ba6cf96b5a7d25a8ae52c4145b5f3cdffa2e0a4a1eef2dbb604d28ab8f29ecaa6be7fe77d8aac0c8d604113d3d96f20c7767ac61a63fb6447e SHA512 5ba667bbf0e7829c55268de5b8276ecb4f54972d0459a856c1d8c26d95890adfc7be1f1b229871e722f63760b3a9fd859d45128535ecebc76fdd55da52ac52ef DIST mold-2.42.0.tar.gz 15290609 BLAKE2B db72cadeb13b4f46798f807bf01cc9e628b6ad9c8deaf1b22c27d82697f06bdabef1c1ae637b43b8ebf738cfd65777531caf386a0da03967a1ce2631a0ec2ce0 SHA512 a0ab118e22e8647bd113def9d7e907ecec70d6b3175593df496dc063722413bf60d5f5bc221c7b29e4ad61093451ba0e7ee16830118c91943db8b62b1d1a81ef +DIST mold-2.42.1.tar.gz 14727377 BLAKE2B e2dc3742eb085048061c4af519141dfc056710c3fa9b82342d537224d9d6e8e96a45024e47a531118b1bc90f1a5676e25393e5bcd535ef7e2676bd3eb44d19f6 SHA512 8c771a781c19c0df562a3dcb648f851b3a32f2ac10115693ab180fd5faae1be8056b299ea2199516bfbfaef2411b4ddc858c79a3eb2422615ede3b982271b83a diff --git a/sys-devel/mold/mold-2.42.1.ebuild b/sys-devel/mold/mold-2.42.1.ebuild new file mode 100644 index 000000000000..d2ffaed8c671 --- /dev/null +++ b/sys-devel/mold/mold-2.42.1.ebuild @@ -0,0 +1,128 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake flag-o-matic toolchain-funcs + +DESCRIPTION="A Modern Linker" +HOMEPAGE="https://github.com/rui314/mold" +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://github.com/rui314/mold.git" + inherit git-r3 +else + SRC_URI="https://github.com/rui314/mold/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + # -alpha: alpha support was dropped upstream: + # https://github.com/rui314/mold/commit/3711ddb95e23c12991f6b8c7bfeba4f1421d19d4 + KEYWORDS="-alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~riscv ~sparc ~x86" +fi + +# mold (MIT) +# - xxhash (BSD-2) +# - siphash ( MIT CC0-1.0 ) +LICENSE="MIT BSD-2 CC0-1.0" +SLOT="0" +IUSE="debug mimalloc test" + +RESTRICT="!test? ( test )" + +RDEPEND=" + app-arch/zstd:= + >=dev-cpp/tbb-2021.7.0-r1:= + dev-libs/blake3:= + dev-libs/xxhash:= + virtual/zlib:= + mimalloc? ( >=dev-libs/mimalloc-3:= ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + test? ( llvm-core/clang:* ) +" + +pkg_pretend() { + # Requires a c++20 compiler, see #831473 + if [[ ${MERGE_TYPE} != binary ]]; then + if tc-is-gcc && [[ $(gcc-major-version) -lt 10 ]]; then + die "${PN} needs at least gcc 10" + elif tc-is-clang && [[ $(clang-major-version) -lt 12 ]]; then + die "${PN} needs at least clang 12" + fi + fi +} + +src_prepare() { + # remove unused vendored deps to be sure we don't use them + # do this before running cmake_src_prepare to avoid warnings + # being picked up by tinderbox etc. (#964723) + # we keep rust-demangle for now as this isn't packaged in gentoo + rm -rf third-party/{blake3,mimalloc,tbb,xxhash,zlib,zstd} || die + + cmake_src_prepare + + # use dev-libs/xxhash instead of vendored lib + sed -i 's#../third-party/xxhash/##' lib/lib.h || die + + # Needs unpackaged dwarfdump + rm test/{{dead,compress}-debug-sections,compressed-debug-info}.sh || die + + # Heavy tests, need qemu + rm test/gdb-index-{compress-output,dwarf{2,3,4,5}}.sh || die + rm test/lto-{archive,dso,gcc,llvm,version-script}.sh || die + + # Sandbox sadness + rm test/run.sh || die + sed -i 's|`pwd`/mold-wrapper.so|"& ${LD_PRELOAD}"|' \ + test/mold-wrapper{,2}.sh || die + + # Fails if binutils errors out on textrels by default + rm test/textrel.sh test/textrel2.sh || die + + # Don't let the default linker config affect the tests, bug #974439 + sed -e 's:\(clang\|clang\+\+\):\1 --no-default-config:' -i test/*.sh || die + + # static-pie tests require glibc built with static-pie support + if ! has_version -d 'sys-libs/glibc[static-pie(+)]'; then + rm test/{,ifunc-}static-pie.sh || die + fi +} + +src_configure() { + use debug || append-cppflags "-DNDEBUG" + + local mycmakeargs=( + -DBUILD_TESTING=$(usex test) + -DMOLD_LTO=OFF # Should be up to the user to decide this with CXXFLAGS. + -DMOLD_USE_MIMALLOC=$(usex mimalloc) + -DMOLD_USE_SYSTEM_MIMALLOC=$(usex mimalloc) + -DMOLD_USE_SYSTEM_TBB=ON + ) + + if use test ; then + mycmakeargs+=( + -DMOLD_ENABLE_QEMU_TESTS=OFF + ) + fi + + cmake_src_configure +} + +src_test() { + export TEST_CC="$(tc-getCC)" TEST_GCC="$(tc-getCC)" \ + TEST_CXX="$(tc-getCXX)" TEST_GXX="$(tc-getCXX)" + cmake_src_test +} + +src_install() { + dobin "${BUILD_DIR}"/${PN} + + # https://bugs.gentoo.org/872773 + insinto /usr/$(get_libdir)/mold + doins "${BUILD_DIR}"/${PN}-wrapper.so + + dodoc docs/{design,execstack}.md + doman docs/${PN}.1 + + dosym ${PN} /usr/bin/ld.${PN} + dosym ${PN} /usr/bin/ld64.${PN} + dosym -r /usr/bin/${PN} /usr/libexec/${PN}/ld +} diff --git a/sys-kernel/gentoo-kernel-bin/Manifest b/sys-kernel/gentoo-kernel-bin/Manifest index 6d08e5e2735c..32a52051b828 100644 --- a/sys-kernel/gentoo-kernel-bin/Manifest +++ b/sys-kernel/gentoo-kernel-bin/Manifest @@ -30,6 +30,10 @@ DIST gentoo-kernel-6.18.50-1.amd64.gpkg.tar 468224000 BLAKE2B 011710990611853e0a DIST gentoo-kernel-6.18.50-1.arm64.gpkg.tar 453601280 BLAKE2B fe270f0eb051fd2df1cb6d87be78d1c07067cd9fbbef4f5b479a3cc092bf808283d34dbe729fc1297231c117bc4d1cfc669b2b025518e26a0f66def48d7a6e5a SHA512 3564f68582da2325b89c78284eb8c49cd682f269c896e5bdfcd4d1948701971c6f1c6b7ec9dacc41820f3646f658bf5fe514f16aa1662c4e86bd9b105e84d015 DIST gentoo-kernel-6.18.50-1.ppc64le.gpkg.tar 77271040 BLAKE2B 382cb5eb36a742e3215f232f66a7ea9329b08b8e30802a0fc9dbfc5e64224a628b5238f7e3ef3b2f9acd9969b1c5926632d05d688d22d5872aa3b8eb242e1977 SHA512 34907e951b0e36155380fe121007e5dbbbbf9fb0899476297949bbc20b0c3645e73dff71660ec41e9ba7f160e91a08b60856bc56bd197471e83dc4f94cbd6821 DIST gentoo-kernel-6.18.50-1.x86.gpkg.tar 83681280 BLAKE2B e42432ef083c756130175951672e4d5365168fc93c3d8629d5e30848ff71971332322459f6d222f87694edc863f09cfec0419cfbd753719a7c56693bf7d32b79 SHA512 60f29373c7a800ab1fd2b42a514e6ca500c2d836f5006ec740c2ff23e6807a67fa3436a84652213d29cf74b7afbea27e20e4319dd25e5889aa0905a870173177 +DIST gentoo-kernel-6.18.51-1.amd64.gpkg.tar 468264960 BLAKE2B d81268f870eb5ea2d376204132482ec0dc6f0c8d4975700744912939c926f0bd27d92bf190b4d736dcdba7b2d83c86d92e679d25539f5086e96994cc242b13f8 SHA512 78a8bfcaebd1c3a797777bdd4607753b2db65256fe1c89f38d476c6a149cf8412f87a61ee40078dd2e4f9e638f8398fb395de550e27366839de0c7b6228f8c43 +DIST gentoo-kernel-6.18.51-1.arm64.gpkg.tar 453621760 BLAKE2B 797c0b33dca64200d63e5c218710ba8ce1a974b2a8c51664a51ae4bfbf989b435b3feb72d2b9477e42371f02f3e41a17738385e6cb8dffe03c206c500f002297 SHA512 ddf5721c80525a4ec1936f516456f3744c2b887cfd8ff29590677932dcb5a0c9b2fb73c167bd7f09e881760fb4f02e01e19cab570848169b06c61639fe556142 +DIST gentoo-kernel-6.18.51-1.ppc64le.gpkg.tar 77291520 BLAKE2B 3103d6deabf33c509fd278c0750ec9fb934a69d45ee495277d444e33d34a8ee60af4725bf88da00e4afdecccf4bc69fd0b8348cdd51dc9d1f2ea6a365f944f99 SHA512 b7427d32eeee48f4ec38c54a8a1d4a58ad507c308d8e49b4df4ac593c467561010e039b6e8e7d6cdab36a3ad302b4d571bb7ffe392119a51f9d1984885bf54f8 +DIST gentoo-kernel-6.18.51-1.x86.gpkg.tar 83681280 BLAKE2B 34765a10847186ba40f1ef87a4f2a50d570c68d1498d7d9560786844d88ae66ec6cf515a0cc7c947a2dcd31e2b80f140df13cf1ca1448a9e91e97bb8c939dbcd SHA512 9cbd38b9252d63d6ef925e9afe68ac02516789d378c592d77a98b0f3f4c43ca2e4dff44134f434c88ba5153788bc62903bfd8207b1646fff2e2302c56f75a0c4 DIST gentoo-kernel-6.6.155-1.amd64.gpkg.tar 292065280 BLAKE2B 09b58a57e09e41a0ac8be8ff9895c6594d3c5edf5291618b4294b988ddefc77b6ea4d31821df54d12130fb833b743635cf21acdb244c78785358422ae72e9b99 SHA512 edcc9f8b1f1709b38344aa639575fe0e51fd056552fa1e45f246dcc30dd149626b00cd2eb56339a8b8fb40916500d1a4c5c9ee7403a1b8aeecfbf6c72731f59d DIST gentoo-kernel-6.6.155-1.arm64.gpkg.tar 261027840 BLAKE2B 300caea989edf2f85e4b98edc79fb3aec3c935ead4eafabbbef3e20ceafea5adae9a5a8c8b76b732988a4cd91aee348d90a1fd407a8bcab900cdf2e3e36cfce3 SHA512 871f9c8f141aedc54cde08bf42c5a9cc35eb6ef62a7c4b7bb85bfb272e3fd512f75c7dbdbf338b9008ad594eb3e3a28bda3ec42c21938b1fe10f28f7ebf78881 DIST gentoo-kernel-6.6.155-1.ppc64le.gpkg.tar 65331200 BLAKE2B c1ebc6c0b945c767f2c2871e484729d1dc94641df89a3d941eb2e4518f5f9bf5edcf4f82dbeb05ef3b4197ec5b85a69dd1f5ea7ae7518ced94f844b6fb0b82ad SHA512 b711f02d2597fd7ea3b7c8216b70d482f6c281f9ab5b1f9f594c686e9605ea0c65bc49a26751f113c0961662c25689829923e33bbd984b1852402363199f9ab1 @@ -58,6 +62,10 @@ DIST gentoo-kernel-7.2.4-1.amd64.gpkg.tar 363008000 BLAKE2B 1472f53d74ded26287f1 DIST gentoo-kernel-7.2.4-1.arm64.gpkg.tar 334366720 BLAKE2B 8bcb6a274a51fd28212148189763b00967b07e13dd4ead6e7ca9ec0b26fd3f62e8728d85344556c0f8d5f277841cfde9321ad2d00d09d3a56db00ea557e64efb SHA512 f2ef718dbb33e75d6f97e9051f584566b4ca177f692e53a9eab4250d226841b60eac13eb335beda860a76ea56de5a48626f0c52ef375c809b81d8d80ad5a83ac DIST gentoo-kernel-7.2.4-1.ppc64le.gpkg.tar 79872000 BLAKE2B e6d6bc5df2dff9ade9f99a2b338ea9b501ea31c525420f3fb00f926f313757c9821fffa7987c4c2063658b2a0fefaac6e0ba2f2e1d7bb74d08e169ae4d35f867 SHA512 7455de808fab5541a4efeea34db0870f5a12b7b57ebfc820539d850faea14d3d0bb7760cf1f2b5fc3eb6e03ef74e0e2c9de794416d1b03329425d153f8ed69d2 DIST gentoo-kernel-7.2.4-1.x86.gpkg.tar 87889920 BLAKE2B f22a39dc9fda1f38bed0cdf0d480feea5936df3d2c7b2918a25f333a0f41072f39e709819fba5e4aaade3ed24046c767069d6b610f5598e3cc61ea09ad779911 SHA512 1a8a0c2d850b2435a42ff35a763872c658d1920899a680f1362657e4542fa16bf205608bddbdc3acb205e0211eefaf1e21c9d25f8605ed13cae71998f131e6c2 +DIST gentoo-kernel-7.2.5-1.amd64.gpkg.tar 363151360 BLAKE2B 592915ade584723e8a1094d0f78c7a61a31b3e750e11a24db89cb152527119bb01d23eb4bfb02018d7f5396a7427c294a6b8c25755ba4ea043c905b5cb3cc03c SHA512 6bdf23af198d9aa77a222f009c4d79195fad052b031ff6db51c99916488f33371e979372e9356fd84ef827329df5b4ec7be3a1ab4c3ce497d1e640143ef8d47e +DIST gentoo-kernel-7.2.5-1.arm64.gpkg.tar 334417920 BLAKE2B 4249ecbfa81e572726f17b714a457967a12bcc807daa9c1a5dd388a06bdcb19a3236077826281f4c90c28b70a35d4aef26a895768eb14e618ebb1dd4c130520b SHA512 b722f379ba892646958d228b3e7efa8493b6173e1424451886368900f2f9702b916fae49c5703d49f746ec1616937f08fd2cd9118a17cd5aa96a24dc9cbf1d3d +DIST gentoo-kernel-7.2.5-1.ppc64le.gpkg.tar 79861760 BLAKE2B f380d88d74711b574c5f19249311b09cff4d7762833b1ba4d1b5722bb2771708a667e62d7c9f53c1eb8baf1cbfc65d7fccb450b7e15cb0beb20804d8d68c215a SHA512 fe7a82e2b278e8ab3d8b13541540045bce0f8d5b3c1b630a7c4fccfd8f7265950633f81b893ca47943c0f6a018a32efc85f90ad378b10e38c9b560709207c684 +DIST gentoo-kernel-7.2.5-1.x86.gpkg.tar 87900160 BLAKE2B 04644651dc0c36bdc3d15ae4cfc6264200580d8e6cad1eac95e548a04b47deca403306d3c86a164947e736741d2d53031153d274b3cc00b2b748af6ee97db36c SHA512 56dc85a80b01d6f70d2b9841a2eaafa5fa6a614169b362db403e58226d498fa0a22adc0b438fa7c6a57bb5c7510c7f1fabb4e182d355df3cc5c00aa3dfd1ef8a DIST linux-6.1.tar.xz 134728520 BLAKE2B ae60257860b2bd1bd708d183f0443afc60ebbd2b3d535c45e44c2e541bd0928530a3b62de6385dd4e4726ebbedcc0a871d4f3ffb4105b9f1f6d8ed7467f5688e SHA512 6ed2a73c2699d0810e54753715635736fc370288ad5ce95c594f2379959b0e418665cd71bc512a0273fe226fe90074d8b10d14c209080a6466498417a4fdda68 DIST linux-6.12.tar.xz 147906904 BLAKE2B b2ec2fc69218cacabbbe49f78384a5d259ca581b717617c12b000b16f4a4c59ee348ea886b37147f5f70fb9a7a01c1e2c8f19021078f6b23f5bc62d1c48d5e5e SHA512 a37b1823df7b4f72542f689b65882634740ba0401a42fdcf6601d9efd2e132e5a7650e70450ba76f6cd1f13ca31180f2ccee9d54fe4df89bc0000ade4380a548 DIST linux-6.18.tar.xz 154309096 BLAKE2B b94b7b9bf18aca0c3e50baf79b009a1448fc6cd9c3ee019f641cc247dcf53a4abef4274ee0608ad8cd4943af69854363a95d26e117ff23620bb07dccb158859f SHA512 88599ffdec96d150c1feb9b261ba93bb0301a9d0e1ad6bef7aeab1f5372cbfc57d8b43c7e902bd8f76921d1dbd8189663c142ea869e51d0e2b483b150ee00fe0 @@ -65,11 +73,13 @@ DIST linux-6.6.tar.xz 140064536 BLAKE2B 5f02fd8696d42f7ec8c5fbadec8e7270bdcfcb1f DIST linux-6.x-sha256sums-20260828.asc 246577 BLAKE2B f65a239c27ef241b753be638aff4def8dff63ccbd7e3fd9ee293fd797753a5d7f7758fa2ccb53d28a85038af15c948b1429103ac67b5dd4bf43e074da9ee35b7 SHA512 7c99c1b00c7f005875546128bd6b73ec2fb63efb3ee00c63ad41d1d40de596926784956db3a19164deb4562d2cfeefa5ebecb1e3b36bf25fde300b5203c60403 DIST linux-6.x-sha256sums-20260902.asc 247945 BLAKE2B 0b43813b97299dc604af7f6ac01a80c00ee11d5800d1354fb0613ee9fe16dbeab19c7453df242a89d7ee910f6ee9a3c713a030cc07fb085d4fce7c16f1f965e4 SHA512 91115918e6e772e7cd80775e4b360903de19eef6e7b945826a3492b7a95902eca5b3f5bf9d1b3e744f4d5ccefd82e47dee969b8c11d9bcfaec4393f0b277bf44 DIST linux-6.x-sha256sums-20260907.asc 248631 BLAKE2B 2f10a984a5d3b563258d041f6cec084e17d6c29d5f1cf905f7ff31cf5df3ec9aef50040bb0759b2d879eff80fec73f683bc4682940f1504b9afed77b32685279 SHA512 935ada72325fefeba6d134480c388c8cf7df12ab16d060ee50b5818ff4633795228d50aa2b36875d5af0acad8ebea70b0d8c049dd59caf2fd3556dbf9f3db1df +DIST linux-6.x-sha256sums-20260911.asc 248972 BLAKE2B d0a49a4346ba6c0f13d122c6fa68ee0e8f1436f51fc7212015d0cfb16fc5091df947d1abd4f8aa2e9388c22a0f64484c08ea21c320935b00f9cdf58a1ccd22c8 SHA512 4bdb652871ef916bd18b7e15fab9f4b110aa35c16fdc2d67de373e5ee811ae97afca7bc123ab9615ed5cf4dc15ef936d8f4ca5e34ab79031a63e1f06e2011879 DIST linux-7.1.tar.xz 158304768 BLAKE2B 5199b2057fd1b89f0275bdaff9d81035cf5e1e8e64318a4a67467399245628a0f8c5e82f9d80dfc54b094349a8cfcdc892b7a4ad4bdf5dd1daa268ff30c1cf38 SHA512 d4d9c45261813559341c67ea53d4a47f5a04d1ad15e3c2b8222a09b5483380d2bfd31b8c675e144db2eb91f560d6cb28f66187a5ea4f24f6dfb82a4ad48064cc DIST linux-7.2.tar.xz 160068116 BLAKE2B cf5f3d87b96f223034c47c6e5fc972fe52c2556310eb2f064632537b8727231135a8540179fd5d51343738c8a51f51f09c7e8da374324b68551c84a4124bb71b SHA512 47e63679363261a864d271277340a6f2d45f544e1a056be4159df081f4f6537d0efa865c4af26611ab33a3079ee65db88ec2f6bc0e5fff43e0c043cde0cd91e1 DIST linux-7.x-sha256sums-20260828.asc 11213 BLAKE2B 3be42484550c6e7863570a45175bf3260b4b27af99d129185ff002164571f09128f895d230cd9c0b96ffe6a24d7164d9e9352c7ec709c0752435cfc7616c0533 SHA512 d2e1aa002b6e2b49efedd594c56491d5563a4b1524c8c6e62802a50b49b8e586ef103ef134d56cb7891df9cd681ba194a5cf78e6cb2bb2c668d89dac78dd4d18 DIST linux-7.x-sha256sums-20260902.asc 11883 BLAKE2B 868477ba5aaf889713f97de4ac66157c95497f9abdd779e8090dd99b676d47e3aedb0fe32e77f2953c82c61397c0be1c60a7a1716a67a5709ce1152ed1392cef SHA512 5d5d9f7f21fc9b803cd5059341af090c4378bc871efde4380e7fd04958de89b67b74079b307740620c7e978cc6b7798e95320d0269ccf77266f275140af7034b DIST linux-7.x-sha256sums-20260907.asc 12216 BLAKE2B fc43cf1c26c2760c3f4fabf1af6edf4448cfe39527ecf9034ba87e5118356c9bf3af1698fd60f33afbae468959ba1f456d8a325446f0bee2b2a3ac76814d9b20 SHA512 0cf93af8453deb19c43875d61b118b6c93f7598d18e81368715ee069455ec5c3073495c238f219e3088f74268cea608d84866b0e490d04d2b483ae1cbb194015 +DIST linux-7.x-sha256sums-20260911.asc 12549 BLAKE2B 2c13002580813fec5b5a0cd69d5bd428886a0bae1fa5155e125e8a13adaba4c3b3bf4831532b348ef1581ac118a776d009ec1878747a8f679a0b36af28a4d2df SHA512 6b035fd353d94ca2a482d9c38fcf75a5e1e88e426f6c635237dae0a396929c87ca465554c9cd85a951ffefa48f84af4bd2896aa534fe94a46c938b7ee5fc2c82 DIST linux-gentoo-patches-6.1.178.tar.xz 14432 BLAKE2B fc278094f85f58b7aba5c3334503114d28aead086a1e62499111283f0410c02bc9db7f5187975fcf2a793a5ef32e323b9907bbd9e0fb4c0834dc1a823f36af52 SHA512 ae0606ab52f8d66f49cac198aada1cbcced465d8ae43e09ef02cee149125570e09eadfacc07f9ec0ad3b20b365df7b9718a478252771f7c6e09fecda6f701096 DIST linux-gentoo-patches-6.12.97.tar.xz 17192 BLAKE2B e0f09dd8ef2e6ebce9adcc2c050cb7e2c7ae08188e99635d3b541c6deca5bea792f4ec2c8d0c0dbc648b0c1f227b54a95d8d807a43859b3bf1b5f57767af2113 SHA512 af6b182d1e7661c35c215f4da63c8ab53b1ffffa7818a266b4c5639ed8d03428d050f1045d02e885c1b9bdc9fb2464c3f384dcd55d7536eddf2b90ffe1f8c530 DIST linux-gentoo-patches-6.18.42.tar.xz 10856 BLAKE2B 8d9de53163c26980f2097eac090f8add2f0f22707824c25493d24d53cc82ef5bc24dcbc7e1e324010315bd3cd05cf2abdd36c536f1457b311cc5208a1a49575d SHA512 01f3020aa34f0ee29c37473344f6dfe0180a12d20834f9c935575b98092b1c6ddd6c563aaef9e4ce6f14116e5d7386d2203f120d1c680ff617f581c867d4544c @@ -83,6 +93,7 @@ DIST patch-6.12.109.xz 5753324 BLAKE2B 9ddaebf8cb9e93e79ccf02efd4e65e8892ff751e3 DIST patch-6.18.48.xz 3258276 BLAKE2B 2065b089db773cd504b7e09e4fb111e68463ad2846368090a40466044fdb63e2db5ff1d069c7d0c83ce77a9f85c9c5507d78eec8bd79409f1990aa7c21c4ce8d SHA512 18b4d5a32a430f8599cf821e5f873e9d669e4994a21f0a98084f1780bc233a13250f69c162f440ec9ac62551b03532f99332ce9ef90b98b77e69b96c63a05a48 DIST patch-6.18.49.xz 3282948 BLAKE2B e1a030bfe327190d14a9d3eefa77c8823a276d7f84c112a01e1f99572f35e283296415fde0a8f3f92564682a7c86b046045bd4d57f66e940bb42bfc65beab4dc SHA512 6cf1fbc3cedb1a2ef11c6ec7d045aa0f8214cb06ecfdc30cca7724207a40fc896deb6dde269d8bd87750ffe07634e7429e076e80167755526d634698bc3980a8 DIST patch-6.18.50.xz 3404240 BLAKE2B 3b7794114d37bf1f5f0c95b5b6f44aa33c00096a162dcb6fc48006e22871d2f731626f8759f54bc30cddb8561d75896e0546124e5b11b9e6332ea121d55eb164 SHA512 2ebefa6d5c0102130ecc8445e58e674e581568b728e4b40e1dfdfa3039a10c9d1af533b2b95d3b56ae30a056838af7bfe58f78c1642c56e3db14a3c1228ffe75 +DIST patch-6.18.51.xz 3545252 BLAKE2B 1636bb5b2dfab15f9bafeb215f925acdb5c7df0fc544d7787ffbe76cd1efcaff7cb99d925e39997e7cff37266192dd07ad3d7de3a8a845a907de9d5cf72b2dcc SHA512 c5022b7b718093b791237599a00565bf37f7e6d256e136c88ddc9508163cea5993bb22cfbbf928c3604e12ecb76d7e2ce814a3634d5a65e7c84825eb4e773f9d DIST patch-6.6.155.xz 6891280 BLAKE2B 1df8fbf4aab980280a52f6199f44f3030f917872fc5bf719dcd6bfeb236cd340aaea6cfe1da06948bbfbbdf4f89232a577e11dd0e422fb544ed2824b12f1c9cb SHA512 09f9f30b4bb33a324e3237e7eef78fe0dca9dc5d28e4c432a6e6bffc2a02dd4828f19bd1f0572e4f98cba94df55f427e11248689f0ae16437d0ef4cdda1a977a DIST patch-6.6.156.xz 6914532 BLAKE2B 95bda8ed3689d35c3bb5410f3c33b80097f78b038d343c33df3699dfb9d216215560411b939f2c6e8cba8990aa1169e914617d2432e14674484bbcac0b47d175 SHA512 de670a00152147ff05f19a5d519917bf522dfe40b3b88619e76dc768ffbf8d4609ba761c600c9441521de6254f87a6a2cf6162218ae90b1e75d7f5825c5dda10 DIST patch-7.1.12.xz 1401192 BLAKE2B f78bbf6e2468cf5324d0ee1b9da26d57e605c1f51c83b7bce0c5cd4776d7496c5160d6877b9efa6a0c470c1f479220e5b40a309fafd85da0ac50dd0e2cda5273 SHA512 ec4443c4af0ca05597fc45241a6676179ff562f49b8c09639c123465ea357d48d74f05f5b4b229f056b5ac7f497a04c2fb864cdde5dacc2f466637d4eb8ca330 @@ -90,3 +101,4 @@ DIST patch-7.1.13.xz 1427684 BLAKE2B 6c80c845eee5e6b231aab8b3675eb25dee0a1257b11 DIST patch-7.2.2.xz 32596 BLAKE2B d3185df869fc6613476a9bfcae4ecbe8bc80891593df937d2ec76bf5c6a92ff0af2395abfbf52604d3083afbf41d49d1fbd8d7764bc5c6b76c87a05703b6809e SHA512 144f29bcdf647b4d90179ca4132c0e9fa1d88993bb29ac84236c10c790188d79c827e633cc6cc852ea4b6259b58c6f25a8fbb7073fedf7434e9b0f07f986c2fc DIST patch-7.2.3.xz 62920 BLAKE2B bfca37cdb0500afc3c369314e6cbd11871421a380e99436a3e59b689aed674f0eec7b1a605d2bebd3df84a68a2069a1ee05d437444776e0307a4d4535b88deff SHA512 b5c48b2b288bfe0e5aebe6889ae4fca078a33df5ed69444abf3da102ae5b34a0ff1747c3f141a3bb729177a97e19623dfcadb5b950f5cda7a559be0c5cdac898 DIST patch-7.2.4.xz 281532 BLAKE2B f8bc83a92f50b064328727d28d0bb06f660e9b0fe4ccea980a81804776040ce6e7c2d71dd01656dc5a833d53f0e80ec4af91c78df37d20b4f4118673af26708b SHA512 e5b244c7b7c652d55114e4f440be7ac8eca617bbcc704ce9528bdfd793934449c6fdca3424d8e17ef6b6c053952c2aec860e34701d2b6ff9a2d09b1e52d76773 +DIST patch-7.2.5.xz 425448 BLAKE2B ee8ab8753089280cbd9afc0e424a84099e4a88b95c383618a18e009712a5862e8f2b72c90a9737197fdd2fd5c844d8fd9083319c053e9065cbc769d1253e3d16 SHA512 60af2204eddf616e3e31cd4e5f6043afab3956443da3221b9048f1e2ed7a539ae5b69bdd0ea9a664938158d099c8d2648ef66a86763305ceb7a4db8286438fbb diff --git a/sys-kernel/gentoo-kernel-bin/gentoo-kernel-bin-6.18.51.ebuild b/sys-kernel/gentoo-kernel-bin/gentoo-kernel-bin-6.18.51.ebuild new file mode 100644 index 000000000000..13cc95e79f04 --- /dev/null +++ b/sys-kernel/gentoo-kernel-bin/gentoo-kernel-bin-6.18.51.ebuild @@ -0,0 +1,222 @@ +# Copyright 2020-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +KERNEL_IUSE_GENERIC_UKI=1 + +inherit kernel-install toolchain-funcs unpacker verify-sig + +BASE_P=linux-${PV%.*} +PATCH_PV=${PV%_p*} +PATCHSET=linux-gentoo-patches-6.18.42 +BINPKG=${P/-bin}-1 +SHA256SUM_DATE=20260911 + +DESCRIPTION="Pre-built Linux kernel with Gentoo patches" +HOMEPAGE=" + https://wiki.gentoo.org/wiki/Project:Distribution_Kernel + https://www.kernel.org/ +" +SRC_URI+=" + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/${BASE_P}.tar.xz + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/patch-${PATCH_PV}.xz + https://distfiles.gentoo.org/pub/proj/dist-kernel/patchsets/$(ver_cut 1-2)/${PATCHSET}.tar.xz + verify-sig? ( + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/sha256sums.asc + -> linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc + ) + amd64? ( + https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/amd64/$(ver_cut 1-2)/${BINPKG}.amd64.gpkg.tar + ) + arm64? ( + https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/arm64/$(ver_cut 1-2)/${BINPKG}.arm64.gpkg.tar + ) + ppc64? ( + https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/ppc64le/$(ver_cut 1-2)/${BINPKG}.ppc64le.gpkg.tar + ) + x86? ( + https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/x86/$(ver_cut 1-2)/${BINPKG}.x86.gpkg.tar + ) +" +S=${WORKDIR} + +KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" +IUSE="debug" + +PDEPEND=" + >=virtual/dist-kernel-${PV} +" +BDEPEND=" + app-alternatives/bc + app-alternatives/lex + app-alternatives/yacc + dev-util/pahole + virtual/libelf + amd64? ( app-crypt/sbsigntools ) + arm64? ( app-crypt/sbsigntools ) + verify-sig? ( >=sec-keys/openpgp-keys-kernel-20250702 ) +" + +KV_LOCALVERSION='-gentoo-dist-bin' +KV_FULL=${PV/_p/-p}${KV_LOCALVERSION} + +QA_PREBUILT='*' + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/kernel.org.asc + +src_unpack() { + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_signed_checksums \ + "linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc" \ + sha256 "${BASE_P}.tar.xz patch-${PATCH_PV}.xz" + cd "${WORKDIR}" || die + fi + + unpacker +} + +src_prepare() { + local patch + cd "${BASE_P}" || die + eapply "${WORKDIR}/patch-${PATCH_PV}" + eapply "${WORKDIR}/${PATCHSET}" + + default + + # add Gentoo patchset version + local extraversion=${PV#${PATCH_PV}} + sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${extraversion/_/-}:" Makefile || die +} + +src_configure() { + # force ld.bfd if we can find it easily + local HOSTLD="$(tc-getBUILD_LD)" + if type -P "${HOSTLD}.bfd" &>/dev/null; then + HOSTLD+=.bfd + fi + local LD="$(tc-getLD)" + if type -P "${LD}.bfd" &>/dev/null; then + LD+=.bfd + fi + tc-export_build_env + local makeargs=( + V=1 + WERROR=0 + + HOSTCC="$(tc-getBUILD_CC)" + HOSTCXX="$(tc-getBUILD_CXX)" + HOSTLD="${HOSTLD}" + HOSTAR="$(tc-getBUILD_AR)" + HOSTCFLAGS="${BUILD_CFLAGS}" + HOSTLDFLAGS="${BUILD_LDFLAGS}" + + CROSS_COMPILE=${CHOST}- + AS="$(tc-getAS)" + CC="$(tc-getCC)" + LD="${LD}" + AR="$(tc-getAR)" + NM="$(tc-getNM)" + STRIP="$(tc-getSTRIP)" + OBJCOPY="$(tc-getOBJCOPY)" + OBJDUMP="$(tc-getOBJDUMP)" + READELF="$(tc-getREADELF)" + + # we need to pass it to override colliding Gentoo envvar + ARCH="$(tc-arch-kernel)" + + O="${WORKDIR}"/modprep + ) + + local kernel_dir="${BINPKG}/image/usr/src/linux-${KV_FULL}" + + # If this is set it will have an effect on the name of the output + # image. Set this variable to track this setting. + if grep -q "CONFIG_EFI_ZBOOT=y" "${kernel_dir}/.config"; then + KERNEL_EFI_ZBOOT=1 + elif use arm64 && use generic-uki; then + die "USE=generic-uki requires a CONFIG_EFI_ZBOOT enabled build" + fi + + local image="${kernel_dir}/$(dist-kernel_get_image_path)" + local uki="${image%/*}/uki.efi" + + # Override user variable with the cert used during build + openssl x509 \ + -inform DER -in "${kernel_dir}/certs/signing_key.x509" \ + -outform PEM -out "${T}/cert.pem" || + die "Failed to convert pcrpkey to PEM format" + export SECUREBOOT_SIGN_CERT=${T}/cert.pem + + if [[ -s ${uki} ]]; then + # We need to extract the plain image for the test phase + # and USE=-generic-uki. + kernel-install_extract_from_uki linux "${uki}" "${image}" + fi + + mkdir modprep || die + cp "${kernel_dir}/.config" modprep/ || die + emake -C "${BASE_P}" "${makeargs[@]}" modules_prepare +} + +src_test() { + local kernel_dir="${BINPKG}/image/usr/src/linux-${KV_FULL}" + kernel-install_test "${KV_FULL}" \ + "${WORKDIR}/${kernel_dir}/$(dist-kernel_get_image_path)" \ + "${BINPKG}/image/lib/modules/${KV_FULL}" \ + "${WORKDIR}/${kernel_dir}/.config" +} + +src_install() { + local rel_kernel_dir=/usr/src/linux-${KV_FULL} + local kernel_dir="${BINPKG}/image${rel_kernel_dir}" + local image="${kernel_dir}/$(dist-kernel_get_image_path)" + local uki="${image%/*}/uki.efi" + if [[ -s ${uki} ]]; then + # Keep the kernel image type we don't want out of install tree + # Replace back with placeholder + if use generic-uki; then + > "${image}" || die + else + > "${uki}" || die + fi + fi + + # Overwrite the identifier in the prebuilt package + echo "${CATEGORY}/${PF}:${SLOT}" > "${kernel_dir}/dist-kernel" || die + + mv "${BINPKG}"/image/{lib,usr} "${ED}"/ || die + + # FIXME: requires proper mount-boot + if [[ -d ${BINPKG}/image/boot/dtbs ]]; then + mv "${BINPKG}"/image/boot "${ED}"/ || die + fi + + # strip out-of-source build stuffs from modprep + # and then copy built files + find modprep -type f '(' \ + -name Makefile -o \ + -name '*.[ao]' -o \ + '(' -name '.*' -a -not -name '.config' ')' \ + ')' -delete || die + rm modprep/source || die + cp -p -R modprep/. "${ED}${rel_kernel_dir}"/ || die + + # Update timestamps on all modules to ensure cleanup works correctly + # when switching USE=modules-compress. + find "${ED}/lib" -name '*.ko' -exec touch {} + || die + + # Modules were already stripped before signing + dostrip -x /lib/modules + kernel-install_compress_modules + + # Mirror the logic from kernel-build_src_install, for architectures + # where USE=debug is used. + if use ppc64; then + dostrip -x "${rel_kernel_dir}/$(dist-kernel_get_image_path)" + elif use debug && { use amd64 || use arm64; }; then + dostrip -x "${rel_kernel_dir}/vmlinux" + dostrip -x "${rel_kernel_dir}/vmlinux.ctfa" + fi +} diff --git a/sys-kernel/gentoo-kernel-bin/gentoo-kernel-bin-7.2.5.ebuild b/sys-kernel/gentoo-kernel-bin/gentoo-kernel-bin-7.2.5.ebuild new file mode 100644 index 000000000000..8169678f4e14 --- /dev/null +++ b/sys-kernel/gentoo-kernel-bin/gentoo-kernel-bin-7.2.5.ebuild @@ -0,0 +1,223 @@ +# Copyright 2020-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +KERNEL_IUSE_GENERIC_UKI=1 + +inherit kernel-install toolchain-funcs unpacker verify-sig + +BASE_P=linux-${PV%.*} +PATCH_PV=${PV%_p*} +PATCHSET=linux-gentoo-patches-7.1.9 +BINPKG=${P/-bin}-1 +SHA256SUM_DATE=20260911 + +DESCRIPTION="Pre-built Linux kernel with Gentoo patches" +HOMEPAGE=" + https://wiki.gentoo.org/wiki/Project:Distribution_Kernel + https://www.kernel.org/ +" +SRC_URI+=" + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/${BASE_P}.tar.xz + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/patch-${PATCH_PV}.xz + https://distfiles.gentoo.org/pub/proj/dist-kernel/patchsets/7.1/${PATCHSET}.tar.xz + verify-sig? ( + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/sha256sums.asc + -> linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc + ) + amd64? ( + https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/amd64/$(ver_cut 1-2)/${BINPKG}.amd64.gpkg.tar + ) + arm64? ( + https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/arm64/$(ver_cut 1-2)/${BINPKG}.arm64.gpkg.tar + ) + ppc64? ( + https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/ppc64le/$(ver_cut 1-2)/${BINPKG}.ppc64le.gpkg.tar + ) + x86? ( + https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/x86/$(ver_cut 1-2)/${BINPKG}.x86.gpkg.tar + ) +" +S=${WORKDIR} + +KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" +IUSE="debug" + +PDEPEND=" + >=virtual/dist-kernel-${PV} +" +BDEPEND=" + app-alternatives/bc + app-alternatives/lex + app-alternatives/yacc + dev-util/pahole + sys-libs/binutils-libs + virtual/libelf + amd64? ( app-crypt/sbsigntools ) + arm64? ( app-crypt/sbsigntools ) + verify-sig? ( >=sec-keys/openpgp-keys-kernel-20250702 ) +" + +KV_LOCALVERSION='-gentoo-dist-bin' +KV_FULL=${PV/_p/-p}${KV_LOCALVERSION} + +QA_PREBUILT='*' + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/kernel.org.asc + +src_unpack() { + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_signed_checksums \ + "linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc" \ + sha256 "${BASE_P}.tar.xz patch-${PATCH_PV}.xz" + cd "${WORKDIR}" || die + fi + + unpacker +} + +src_prepare() { + local patch + cd "${BASE_P}" || die + eapply "${WORKDIR}/patch-${PATCH_PV}" + eapply "${WORKDIR}/${PATCHSET}" + + default + + # add Gentoo patchset version + local extraversion=${PV#${PATCH_PV}} + sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${extraversion/_/-}:" Makefile || die +} + +src_configure() { + # force ld.bfd if we can find it easily + local HOSTLD="$(tc-getBUILD_LD)" + if type -P "${HOSTLD}.bfd" &>/dev/null; then + HOSTLD+=.bfd + fi + local LD="$(tc-getLD)" + if type -P "${LD}.bfd" &>/dev/null; then + LD+=.bfd + fi + tc-export_build_env + local makeargs=( + V=1 + WERROR=0 + + HOSTCC="$(tc-getBUILD_CC)" + HOSTCXX="$(tc-getBUILD_CXX)" + HOSTLD="${HOSTLD}" + HOSTAR="$(tc-getBUILD_AR)" + HOSTCFLAGS="${BUILD_CFLAGS}" + HOSTLDFLAGS="${BUILD_LDFLAGS}" + + CROSS_COMPILE=${CHOST}- + AS="$(tc-getAS)" + CC="$(tc-getCC)" + LD="${LD}" + AR="$(tc-getAR)" + NM="$(tc-getNM)" + STRIP="$(tc-getSTRIP)" + OBJCOPY="$(tc-getOBJCOPY)" + OBJDUMP="$(tc-getOBJDUMP)" + READELF="$(tc-getREADELF)" + + # we need to pass it to override colliding Gentoo envvar + ARCH="$(tc-arch-kernel)" + + O="${WORKDIR}"/modprep + ) + + local kernel_dir="${BINPKG}/image/usr/src/linux-${KV_FULL}" + + # If this is set it will have an effect on the name of the output + # image. Set this variable to track this setting. + if grep -q "CONFIG_EFI_ZBOOT=y" "${kernel_dir}/.config"; then + KERNEL_EFI_ZBOOT=1 + elif use arm64 && use generic-uki; then + die "USE=generic-uki requires a CONFIG_EFI_ZBOOT enabled build" + fi + + local image="${kernel_dir}/$(dist-kernel_get_image_path)" + local uki="${image%/*}/uki.efi" + + # Override user variable with the cert used during build + openssl x509 \ + -inform DER -in "${kernel_dir}/certs/signing_key.x509" \ + -outform PEM -out "${T}/cert.pem" || + die "Failed to convert pcrpkey to PEM format" + export SECUREBOOT_SIGN_CERT=${T}/cert.pem + + if [[ -s ${uki} ]]; then + # We need to extract the plain image for the test phase + # and USE=-generic-uki. + kernel-install_extract_from_uki linux "${uki}" "${image}" + fi + + mkdir modprep || die + cp "${kernel_dir}/.config" modprep/ || die + emake -C "${BASE_P}" "${makeargs[@]}" modules_prepare +} + +src_test() { + local kernel_dir="${BINPKG}/image/usr/src/linux-${KV_FULL}" + kernel-install_test "${KV_FULL}" \ + "${WORKDIR}/${kernel_dir}/$(dist-kernel_get_image_path)" \ + "${BINPKG}/image/lib/modules/${KV_FULL}" \ + "${WORKDIR}/${kernel_dir}/.config" +} + +src_install() { + local rel_kernel_dir=/usr/src/linux-${KV_FULL} + local kernel_dir="${BINPKG}/image${rel_kernel_dir}" + local image="${kernel_dir}/$(dist-kernel_get_image_path)" + local uki="${image%/*}/uki.efi" + if [[ -s ${uki} ]]; then + # Keep the kernel image type we don't want out of install tree + # Replace back with placeholder + if use generic-uki; then + > "${image}" || die + else + > "${uki}" || die + fi + fi + + # Overwrite the identifier in the prebuilt package + echo "${CATEGORY}/${PF}:${SLOT}" > "${kernel_dir}/dist-kernel" || die + + mv "${BINPKG}"/image/{lib,usr} "${ED}"/ || die + + # FIXME: requires proper mount-boot + if [[ -d ${BINPKG}/image/boot/dtbs ]]; then + mv "${BINPKG}"/image/boot "${ED}"/ || die + fi + + # strip out-of-source build stuffs from modprep + # and then copy built files + find modprep -type f '(' \ + -name Makefile -o \ + -name '*.[ao]' -o \ + '(' -name '.*' -a -not -name '.config' ')' \ + ')' -delete || die + rm modprep/source || die + cp -p -R modprep/. "${ED}${rel_kernel_dir}"/ || die + + # Update timestamps on all modules to ensure cleanup works correctly + # when switching USE=modules-compress. + find "${ED}/lib" -name '*.ko' -exec touch {} + || die + + # Modules were already stripped before signing + dostrip -x /lib/modules + kernel-install_compress_modules + + # Mirror the logic from kernel-build_src_install, for architectures + # where USE=debug is used. + if use ppc64; then + dostrip -x "${rel_kernel_dir}/$(dist-kernel_get_image_path)" + elif use debug && { use amd64 || use arm64; }; then + dostrip -x "${rel_kernel_dir}/vmlinux" + dostrip -x "${rel_kernel_dir}/vmlinux.ctfa" + fi +} diff --git a/sys-kernel/gentoo-kernel-modprep/Manifest b/sys-kernel/gentoo-kernel-modprep/Manifest index b52e263392f1..37ed63a840e8 100644 --- a/sys-kernel/gentoo-kernel-modprep/Manifest +++ b/sys-kernel/gentoo-kernel-modprep/Manifest @@ -6,6 +6,7 @@ DIST gentoo-kernel-modprep-6.12.109.tar.xz 8919720 BLAKE2B 8f22671562cf2f0aeed31 DIST gentoo-kernel-modprep-6.18.48.tar.xz 9565136 BLAKE2B c1ef2d8c14cf7ef7202bf1e3abe21e86e15973c7fb6843897d13d4396268b81b644f4c322ae3089c1868cefb72ad7cbea066114cdc4c3e87d8e917fa0220aa06 SHA512 7fd8776ab3aefc2ab25a0161f603b75384f61d99ae7d0abdb129e76d671526883860443909e64df688d5030d768ae6997c19b3ef6a2c942c400c53cded6455fa DIST gentoo-kernel-modprep-6.18.49.tar.xz 9559412 BLAKE2B a59b5a2d63125b31c4e4f2bbdbb1f0881112e42292d15248dc848db0591971498e77ac5873daf0a19b47dbb9eb8dcce1073eb82bf91dbc548fdb39eea15a5bf8 SHA512 41eac9696e333f8fadbf55872de7c2197b26326b99456609951efd4f3d05bf11bc59310c47d73ae505b96040ad6fc6a60fa5458ca5ead71a24a3aa3903731b98 DIST gentoo-kernel-modprep-6.18.50.tar.xz 9562696 BLAKE2B f070af33b770f4997ec5950cc5c42c9b8c6d2ad67fff6835654810107d89aac6edf176ea873eb3a8073527cd0eca027c531334749f82ae2405fe94d4f7cb0e8d SHA512 4913b3526b000fb99d639cfdad9ccfad9e118bffe747d20c00aec38381fcc988a348de1bd6349ff46f811a29e8f235e28b4946bbe8a8475192a050caffa77e50 +DIST gentoo-kernel-modprep-6.18.51.tar.xz 9561948 BLAKE2B 2acf6c234ea36df4f23c31995957ece21701c34a88a21ba32c2a80e5d1c29c13e8786d5e3afec366511ed16b634f909f55e9844f1ef5af9d0ddc603d0e9cda89 SHA512 a3af985501655ce376500596aace186709037beae5b3bf01c52e035e2a09fafd8dba8b3e8348ee26fe30aaaa728a4bc8c323ddf4767d58d7909a0b035c37396d DIST gentoo-kernel-modprep-6.6.155.tar.xz 8266584 BLAKE2B c43161f8d71304fc120bbac6d977250a8fb3e357dc5b8fa3b000cc8b26861c04be38c5e4b993d594985872623048dfb488f31aa21d39eed77cf5184c754ab91f SHA512 a1863dd79c9b4f780c4aed454d9d91731a8b6821b7a3ca89f8e4ebc95ddf13af726f36fff7bf1784099eb56add600e19c87afc9fd9404ed17c8520e211307083 DIST gentoo-kernel-modprep-6.6.156.tar.xz 8268364 BLAKE2B eae7d8caa7115c66d58d4dbba44f2a27903678e3fdabfa3fb9efafdacd48e4e6d7f49a2d59083912b8ae4aa1d41fcb483772bc18a8cac316b92be35757bdd195 SHA512 d81f8ed300b7b2a3eea0eacd4c19492d24d4091ac3b0db6ed0642e3b1c98feceeb5525d2287ed560e3d1bdda29b2c76a00f0c417dcc5278454e276f2c56230cf DIST gentoo-kernel-modprep-7.1.12.tar.xz 10040180 BLAKE2B d0b1087816698c140004b32d1d6de5c515d72f42a39d7dc843d7b6f435c6edabec92016599ac3c3910ad86836310086a3732a6822d2922d9dd69251be4565292 SHA512 fb7631a7414f48a8d5a2b11a8b065a4d7131e9584eb6a5cd8f9df0890ec5b1c7d35a1fc313a6f517e2eae8b3fe517e3a13488a27fed9e5353740f3930b9c2fae @@ -13,6 +14,7 @@ DIST gentoo-kernel-modprep-7.1.13.tar.xz 10032820 BLAKE2B 99fa16dea491148b59bd77 DIST gentoo-kernel-modprep-7.2.2.tar.xz 10241984 BLAKE2B 1763c1a696450162769e09503141b6d2086f069b3e8eefb7f0a09adcfd2e26b998688d8b95f61cfe936f7161b02503ca8514d494e02a75933fd54ad55c551511 SHA512 dd8ff9576d633b54936163cd81e6e7b8431ccee8d459c63684fbc168393061a6d8fd569a31c0c84cd92af96c259c246010fc04c34017a68f815fc912a9fa5035 DIST gentoo-kernel-modprep-7.2.3.tar.xz 10220140 BLAKE2B ba6f98b4db2b8b96d7f634282acbc5637fb8ea133c8203dc6b0f6c54b278090c2bf0d7a61e77963f4f423585a5712b72a1d4a4327bf9a2d2fa62fd19b27a4d9d SHA512 4f07813939275e2641f4a1cb596c12f944bbf5e48d353f725c27d9c3f7eb1197534bd7f378d6199fda51938d44e1dc7e61e9cf52490843628f8538339818fd75 DIST gentoo-kernel-modprep-7.2.4.tar.xz 10218780 BLAKE2B a843e51def99d4620ffdabc511bc8b4b1189c7c92685d123c0691b48693b77c089e89bfd5838ce75028bf380a3b4e256bf70f01c667a99fb52968c81c0fa0a54 SHA512 f40e72fda6ec782c45a90c60ca3ed8ea9bc971231b242c525d5d36b09a804d227a1ebc73ae7033fc16bdbf542f5cf0b485a634ec317b510ee533f36bfa2a6398 +DIST gentoo-kernel-modprep-7.2.5.tar.xz 10221628 BLAKE2B 1957923a424babf449f115cef460982fad88ae4c7a2fecfc1e02be69976b56b06f110175c4ec25d8d8fbe833359ad8e311f0012f1178e23f985c706449cd87dc SHA512 093046834c5a8fb75cb4d99b4b2f9779a73acc2c595b66b0d0e5d7114db49969176b1fd5096ce4c11bb526ebe3d1bb98040b8b518eb2827b35d42c3bd77ea4b5 DIST linux-6.1.tar.xz 134728520 BLAKE2B ae60257860b2bd1bd708d183f0443afc60ebbd2b3d535c45e44c2e541bd0928530a3b62de6385dd4e4726ebbedcc0a871d4f3ffb4105b9f1f6d8ed7467f5688e SHA512 6ed2a73c2699d0810e54753715635736fc370288ad5ce95c594f2379959b0e418665cd71bc512a0273fe226fe90074d8b10d14c209080a6466498417a4fdda68 DIST linux-6.12.tar.xz 147906904 BLAKE2B b2ec2fc69218cacabbbe49f78384a5d259ca581b717617c12b000b16f4a4c59ee348ea886b37147f5f70fb9a7a01c1e2c8f19021078f6b23f5bc62d1c48d5e5e SHA512 a37b1823df7b4f72542f689b65882634740ba0401a42fdcf6601d9efd2e132e5a7650e70450ba76f6cd1f13ca31180f2ccee9d54fe4df89bc0000ade4380a548 DIST linux-6.18.tar.xz 154309096 BLAKE2B b94b7b9bf18aca0c3e50baf79b009a1448fc6cd9c3ee019f641cc247dcf53a4abef4274ee0608ad8cd4943af69854363a95d26e117ff23620bb07dccb158859f SHA512 88599ffdec96d150c1feb9b261ba93bb0301a9d0e1ad6bef7aeab1f5372cbfc57d8b43c7e902bd8f76921d1dbd8189663c142ea869e51d0e2b483b150ee00fe0 @@ -20,11 +22,13 @@ DIST linux-6.6.tar.xz 140064536 BLAKE2B 5f02fd8696d42f7ec8c5fbadec8e7270bdcfcb1f DIST linux-6.x-sha256sums-20260828.asc 246577 BLAKE2B f65a239c27ef241b753be638aff4def8dff63ccbd7e3fd9ee293fd797753a5d7f7758fa2ccb53d28a85038af15c948b1429103ac67b5dd4bf43e074da9ee35b7 SHA512 7c99c1b00c7f005875546128bd6b73ec2fb63efb3ee00c63ad41d1d40de596926784956db3a19164deb4562d2cfeefa5ebecb1e3b36bf25fde300b5203c60403 DIST linux-6.x-sha256sums-20260902.asc 247945 BLAKE2B 0b43813b97299dc604af7f6ac01a80c00ee11d5800d1354fb0613ee9fe16dbeab19c7453df242a89d7ee910f6ee9a3c713a030cc07fb085d4fce7c16f1f965e4 SHA512 91115918e6e772e7cd80775e4b360903de19eef6e7b945826a3492b7a95902eca5b3f5bf9d1b3e744f4d5ccefd82e47dee969b8c11d9bcfaec4393f0b277bf44 DIST linux-6.x-sha256sums-20260907.asc 248631 BLAKE2B 2f10a984a5d3b563258d041f6cec084e17d6c29d5f1cf905f7ff31cf5df3ec9aef50040bb0759b2d879eff80fec73f683bc4682940f1504b9afed77b32685279 SHA512 935ada72325fefeba6d134480c388c8cf7df12ab16d060ee50b5818ff4633795228d50aa2b36875d5af0acad8ebea70b0d8c049dd59caf2fd3556dbf9f3db1df +DIST linux-6.x-sha256sums-20260911.asc 248972 BLAKE2B d0a49a4346ba6c0f13d122c6fa68ee0e8f1436f51fc7212015d0cfb16fc5091df947d1abd4f8aa2e9388c22a0f64484c08ea21c320935b00f9cdf58a1ccd22c8 SHA512 4bdb652871ef916bd18b7e15fab9f4b110aa35c16fdc2d67de373e5ee811ae97afca7bc123ab9615ed5cf4dc15ef936d8f4ca5e34ab79031a63e1f06e2011879 DIST linux-7.1.tar.xz 158304768 BLAKE2B 5199b2057fd1b89f0275bdaff9d81035cf5e1e8e64318a4a67467399245628a0f8c5e82f9d80dfc54b094349a8cfcdc892b7a4ad4bdf5dd1daa268ff30c1cf38 SHA512 d4d9c45261813559341c67ea53d4a47f5a04d1ad15e3c2b8222a09b5483380d2bfd31b8c675e144db2eb91f560d6cb28f66187a5ea4f24f6dfb82a4ad48064cc DIST linux-7.2.tar.xz 160068116 BLAKE2B cf5f3d87b96f223034c47c6e5fc972fe52c2556310eb2f064632537b8727231135a8540179fd5d51343738c8a51f51f09c7e8da374324b68551c84a4124bb71b SHA512 47e63679363261a864d271277340a6f2d45f544e1a056be4159df081f4f6537d0efa865c4af26611ab33a3079ee65db88ec2f6bc0e5fff43e0c043cde0cd91e1 DIST linux-7.x-sha256sums-20260828.asc 11213 BLAKE2B 3be42484550c6e7863570a45175bf3260b4b27af99d129185ff002164571f09128f895d230cd9c0b96ffe6a24d7164d9e9352c7ec709c0752435cfc7616c0533 SHA512 d2e1aa002b6e2b49efedd594c56491d5563a4b1524c8c6e62802a50b49b8e586ef103ef134d56cb7891df9cd681ba194a5cf78e6cb2bb2c668d89dac78dd4d18 DIST linux-7.x-sha256sums-20260902.asc 11883 BLAKE2B 868477ba5aaf889713f97de4ac66157c95497f9abdd779e8090dd99b676d47e3aedb0fe32e77f2953c82c61397c0be1c60a7a1716a67a5709ce1152ed1392cef SHA512 5d5d9f7f21fc9b803cd5059341af090c4378bc871efde4380e7fd04958de89b67b74079b307740620c7e978cc6b7798e95320d0269ccf77266f275140af7034b DIST linux-7.x-sha256sums-20260907.asc 12216 BLAKE2B fc43cf1c26c2760c3f4fabf1af6edf4448cfe39527ecf9034ba87e5118356c9bf3af1698fd60f33afbae468959ba1f456d8a325446f0bee2b2a3ac76814d9b20 SHA512 0cf93af8453deb19c43875d61b118b6c93f7598d18e81368715ee069455ec5c3073495c238f219e3088f74268cea608d84866b0e490d04d2b483ae1cbb194015 +DIST linux-7.x-sha256sums-20260911.asc 12549 BLAKE2B 2c13002580813fec5b5a0cd69d5bd428886a0bae1fa5155e125e8a13adaba4c3b3bf4831532b348ef1581ac118a776d009ec1878747a8f679a0b36af28a4d2df SHA512 6b035fd353d94ca2a482d9c38fcf75a5e1e88e426f6c635237dae0a396929c87ca465554c9cd85a951ffefa48f84af4bd2896aa534fe94a46c938b7ee5fc2c82 DIST linux-gentoo-patches-6.1.178.tar.xz 14432 BLAKE2B fc278094f85f58b7aba5c3334503114d28aead086a1e62499111283f0410c02bc9db7f5187975fcf2a793a5ef32e323b9907bbd9e0fb4c0834dc1a823f36af52 SHA512 ae0606ab52f8d66f49cac198aada1cbcced465d8ae43e09ef02cee149125570e09eadfacc07f9ec0ad3b20b365df7b9718a478252771f7c6e09fecda6f701096 DIST linux-gentoo-patches-6.12.97.tar.xz 17192 BLAKE2B e0f09dd8ef2e6ebce9adcc2c050cb7e2c7ae08188e99635d3b541c6deca5bea792f4ec2c8d0c0dbc648b0c1f227b54a95d8d807a43859b3bf1b5f57767af2113 SHA512 af6b182d1e7661c35c215f4da63c8ab53b1ffffa7818a266b4c5639ed8d03428d050f1045d02e885c1b9bdc9fb2464c3f384dcd55d7536eddf2b90ffe1f8c530 DIST linux-gentoo-patches-6.18.42.tar.xz 10856 BLAKE2B 8d9de53163c26980f2097eac090f8add2f0f22707824c25493d24d53cc82ef5bc24dcbc7e1e324010315bd3cd05cf2abdd36c536f1457b311cc5208a1a49575d SHA512 01f3020aa34f0ee29c37473344f6dfe0180a12d20834f9c935575b98092b1c6ddd6c563aaef9e4ce6f14116e5d7386d2203f120d1c680ff617f581c867d4544c @@ -38,6 +42,7 @@ DIST patch-6.12.109.xz 5753324 BLAKE2B 9ddaebf8cb9e93e79ccf02efd4e65e8892ff751e3 DIST patch-6.18.48.xz 3258276 BLAKE2B 2065b089db773cd504b7e09e4fb111e68463ad2846368090a40466044fdb63e2db5ff1d069c7d0c83ce77a9f85c9c5507d78eec8bd79409f1990aa7c21c4ce8d SHA512 18b4d5a32a430f8599cf821e5f873e9d669e4994a21f0a98084f1780bc233a13250f69c162f440ec9ac62551b03532f99332ce9ef90b98b77e69b96c63a05a48 DIST patch-6.18.49.xz 3282948 BLAKE2B e1a030bfe327190d14a9d3eefa77c8823a276d7f84c112a01e1f99572f35e283296415fde0a8f3f92564682a7c86b046045bd4d57f66e940bb42bfc65beab4dc SHA512 6cf1fbc3cedb1a2ef11c6ec7d045aa0f8214cb06ecfdc30cca7724207a40fc896deb6dde269d8bd87750ffe07634e7429e076e80167755526d634698bc3980a8 DIST patch-6.18.50.xz 3404240 BLAKE2B 3b7794114d37bf1f5f0c95b5b6f44aa33c00096a162dcb6fc48006e22871d2f731626f8759f54bc30cddb8561d75896e0546124e5b11b9e6332ea121d55eb164 SHA512 2ebefa6d5c0102130ecc8445e58e674e581568b728e4b40e1dfdfa3039a10c9d1af533b2b95d3b56ae30a056838af7bfe58f78c1642c56e3db14a3c1228ffe75 +DIST patch-6.18.51.xz 3545252 BLAKE2B 1636bb5b2dfab15f9bafeb215f925acdb5c7df0fc544d7787ffbe76cd1efcaff7cb99d925e39997e7cff37266192dd07ad3d7de3a8a845a907de9d5cf72b2dcc SHA512 c5022b7b718093b791237599a00565bf37f7e6d256e136c88ddc9508163cea5993bb22cfbbf928c3604e12ecb76d7e2ce814a3634d5a65e7c84825eb4e773f9d DIST patch-6.6.155.xz 6891280 BLAKE2B 1df8fbf4aab980280a52f6199f44f3030f917872fc5bf719dcd6bfeb236cd340aaea6cfe1da06948bbfbbdf4f89232a577e11dd0e422fb544ed2824b12f1c9cb SHA512 09f9f30b4bb33a324e3237e7eef78fe0dca9dc5d28e4c432a6e6bffc2a02dd4828f19bd1f0572e4f98cba94df55f427e11248689f0ae16437d0ef4cdda1a977a DIST patch-6.6.156.xz 6914532 BLAKE2B 95bda8ed3689d35c3bb5410f3c33b80097f78b038d343c33df3699dfb9d216215560411b939f2c6e8cba8990aa1169e914617d2432e14674484bbcac0b47d175 SHA512 de670a00152147ff05f19a5d519917bf522dfe40b3b88619e76dc768ffbf8d4609ba761c600c9441521de6254f87a6a2cf6162218ae90b1e75d7f5825c5dda10 DIST patch-7.1.12.xz 1401192 BLAKE2B f78bbf6e2468cf5324d0ee1b9da26d57e605c1f51c83b7bce0c5cd4776d7496c5160d6877b9efa6a0c470c1f479220e5b40a309fafd85da0ac50dd0e2cda5273 SHA512 ec4443c4af0ca05597fc45241a6676179ff562f49b8c09639c123465ea357d48d74f05f5b4b229f056b5ac7f497a04c2fb864cdde5dacc2f466637d4eb8ca330 @@ -45,3 +50,4 @@ DIST patch-7.1.13.xz 1427684 BLAKE2B 6c80c845eee5e6b231aab8b3675eb25dee0a1257b11 DIST patch-7.2.2.xz 32596 BLAKE2B d3185df869fc6613476a9bfcae4ecbe8bc80891593df937d2ec76bf5c6a92ff0af2395abfbf52604d3083afbf41d49d1fbd8d7764bc5c6b76c87a05703b6809e SHA512 144f29bcdf647b4d90179ca4132c0e9fa1d88993bb29ac84236c10c790188d79c827e633cc6cc852ea4b6259b58c6f25a8fbb7073fedf7434e9b0f07f986c2fc DIST patch-7.2.3.xz 62920 BLAKE2B bfca37cdb0500afc3c369314e6cbd11871421a380e99436a3e59b689aed674f0eec7b1a605d2bebd3df84a68a2069a1ee05d437444776e0307a4d4535b88deff SHA512 b5c48b2b288bfe0e5aebe6889ae4fca078a33df5ed69444abf3da102ae5b34a0ff1747c3f141a3bb729177a97e19623dfcadb5b950f5cda7a559be0c5cdac898 DIST patch-7.2.4.xz 281532 BLAKE2B f8bc83a92f50b064328727d28d0bb06f660e9b0fe4ccea980a81804776040ce6e7c2d71dd01656dc5a833d53f0e80ec4af91c78df37d20b4f4118673af26708b SHA512 e5b244c7b7c652d55114e4f440be7ac8eca617bbcc704ce9528bdfd793934449c6fdca3424d8e17ef6b6c053952c2aec860e34701d2b6ff9a2d09b1e52d76773 +DIST patch-7.2.5.xz 425448 BLAKE2B ee8ab8753089280cbd9afc0e424a84099e4a88b95c383618a18e009712a5862e8f2b72c90a9737197fdd2fd5c844d8fd9083319c053e9065cbc769d1253e3d16 SHA512 60af2204eddf616e3e31cd4e5f6043afab3956443da3221b9048f1e2ed7a539ae5b69bdd0ea9a664938158d099c8d2648ef66a86763305ceb7a4db8286438fbb diff --git a/sys-kernel/gentoo-kernel-modprep/gentoo-kernel-modprep-6.18.51.ebuild b/sys-kernel/gentoo-kernel-modprep/gentoo-kernel-modprep-6.18.51.ebuild new file mode 100644 index 000000000000..8be45dc5a623 --- /dev/null +++ b/sys-kernel/gentoo-kernel-modprep/gentoo-kernel-modprep-6.18.51.ebuild @@ -0,0 +1,177 @@ +# Copyright 2020-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit dist-kernel-utils toolchain-funcs verify-sig + +BASE_P=linux-${PV%.*} +PATCH_PV=${PV%_p*} +PATCHSET=linux-gentoo-patches-6.18.42 +SHA256SUM_DATE=20260911 + +DESCRIPTION="Minimal subset of gentoo-kernel-bin for building modules, for containers" +HOMEPAGE=" + https://wiki.gentoo.org/wiki/Project:Distribution_Kernel + https://www.kernel.org/ +" +SRC_URI+=" + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/${BASE_P}.tar.xz + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/patch-${PATCH_PV}.xz + https://distfiles.gentoo.org/pub/proj/dist-kernel/patchsets/$(ver_cut 1-2)/${PATCHSET}.tar.xz + https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/modprep/$(ver_cut 1-2)/${P}.tar.xz + verify-sig? ( + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/sha256sums.asc + -> linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc + ) +" +S=${WORKDIR} + +LICENSE="GPL-2" +SLOT=${PV} +KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" + +RDEPEND=" + virtual/libelf + !sys-kernel/gentoo-kernel-bin:${SLOT} +" +PDEPEND=" + >=virtual/dist-kernel-${PV} +" +BDEPEND=" + app-alternatives/bc + app-alternatives/lex + app-alternatives/yacc + dev-util/pahole + virtual/libelf + verify-sig? ( >=sec-keys/openpgp-keys-kernel-20250702 ) +" + +KV_LOCALVERSION='-gentoo-dist-bin' +KV_FULL=${PV/_p/-p}${KV_LOCALVERSION} + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/kernel.org.asc + +src_unpack() { + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_signed_checksums \ + "linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc" \ + sha256 "${BASE_P}.tar.xz patch-${PATCH_PV}.xz" + cd "${WORKDIR}" || die + fi + + unpack "${BASE_P}.tar.xz" "patch-${PATCH_PV}.xz" "${PATCHSET}.tar.xz" + local pkg_arch=${ARCH} + [[ ${ARCH} == ppc64 ]] && pkg_arch=ppc64le + tar -x -f "${DISTDIR}/${P}.tar.xz" "${P}/${pkg_arch}" || die +} + +src_prepare() { + local patch + cd "${BASE_P}" || die + eapply "${WORKDIR}/patch-${PATCH_PV}" + eapply "${WORKDIR}/${PATCHSET}" + + default + + # add Gentoo patchset version + local extraversion=${PV#${PATCH_PV}} + sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${extraversion/_/-}:" Makefile || die +} + +src_configure() { + # force ld.bfd if we can find it easily + local HOSTLD="$(tc-getBUILD_LD)" + if type -P "${HOSTLD}.bfd" &>/dev/null; then + HOSTLD+=.bfd + fi + local LD="$(tc-getLD)" + if type -P "${LD}.bfd" &>/dev/null; then + LD+=.bfd + fi + tc-export_build_env + local makeargs=( + V=1 + WERROR=0 + + HOSTCC="$(tc-getBUILD_CC)" + HOSTCXX="$(tc-getBUILD_CXX)" + HOSTLD="${HOSTLD}" + HOSTAR="$(tc-getBUILD_AR)" + HOSTCFLAGS="${BUILD_CFLAGS}" + HOSTLDFLAGS="${BUILD_LDFLAGS}" + + CROSS_COMPILE=${CHOST}- + AS="$(tc-getAS)" + CC="$(tc-getCC)" + LD="${LD}" + AR="$(tc-getAR)" + NM="$(tc-getNM)" + STRIP="$(tc-getSTRIP)" + OBJCOPY="$(tc-getOBJCOPY)" + OBJDUMP="$(tc-getOBJDUMP)" + READELF="$(tc-getREADELF)" + + # we need to pass it to override colliding Gentoo envvar + ARCH="$(tc-arch-kernel)" + + O="${WORKDIR}"/modprep + ) + + local kernel_dir=( "${P}"/*/usr/src/"linux-${KV_FULL}" ) + + mkdir modprep || die + cp "${kernel_dir}/.config" modprep/ || die + emake -C "${BASE_P}" "${makeargs[@]}" modules_prepare +} + +src_install() { + local rel_kernel_dir=/usr/src/linux-${KV_FULL} + local pkg_dir=( "${P}"/* ) + local kernel_dir="${pkg_dir}/usr/src/linux-${KV_FULL}" + local image="${kernel_dir}/$(dist-kernel_get_image_path)" + local uki="${image%/*}/uki.efi" + + mv "${pkg_dir}"/lib "${ED}"/ || die + cd "${kernel_dir}" || die + insinto "${rel_kernel_dir}" + doins System.map Module.symvers + doins -r certs include scripts + + local kern_arch=$(tc-arch-kernel) + insinto "${rel_kernel_dir}/arch/${kern_arch}" + doins -r "arch/${kern_arch}/include" + + # Add the identifier + echo "${CATEGORY}/${PF}:${SLOT}" > "${ED}${rel_kernel_dir}/dist-kernel" || die + + cd "${WORKDIR}/${BASE_P}" || die + insinto "${rel_kernel_dir}" + doins -r include + + # remove everything but Makefile* and Kconfig* + find -type f '!' '(' -name 'Makefile*' -o -name 'Kconfig*' ')' \ + -delete || die + find -type l -delete || die + cp -p -R * "${ED}${rel_kernel_dir}/" || die + + # strip out-of-source build stuffs from modprep + # and then copy built files + cd "${WORKDIR}" || die + find modprep -type f '(' \ + -name Makefile -o \ + -name '*.[ao]' -o \ + '(' -name '.*' -a -not -name '.config' ')' \ + ')' -delete || die + rm modprep/source || die + cp -p -R modprep/. "${ED}${rel_kernel_dir}"/ || die +} + +pkg_preinst() { + dist-kernel_update_lib_symlinks +} + +pkg_postinst() { + dist-kernel_update_src_symlink "${EROOT}/usr/src/linux" "${KV_FULL}" +} diff --git a/sys-kernel/gentoo-kernel-modprep/gentoo-kernel-modprep-7.2.5.ebuild b/sys-kernel/gentoo-kernel-modprep/gentoo-kernel-modprep-7.2.5.ebuild new file mode 100644 index 000000000000..e5df159016d7 --- /dev/null +++ b/sys-kernel/gentoo-kernel-modprep/gentoo-kernel-modprep-7.2.5.ebuild @@ -0,0 +1,178 @@ +# Copyright 2020-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit dist-kernel-utils toolchain-funcs verify-sig + +BASE_P=linux-${PV%.*} +PATCH_PV=${PV%_p*} +PATCHSET=linux-gentoo-patches-7.1.9 +SHA256SUM_DATE=20260911 + +DESCRIPTION="Minimal subset of gentoo-kernel-bin for building modules, for containers" +HOMEPAGE=" + https://wiki.gentoo.org/wiki/Project:Distribution_Kernel + https://www.kernel.org/ +" +SRC_URI+=" + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/${BASE_P}.tar.xz + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/patch-${PATCH_PV}.xz + https://distfiles.gentoo.org/pub/proj/dist-kernel/patchsets/7.1/${PATCHSET}.tar.xz + https://distfiles.gentoo.org/pub/proj/dist-kernel/binpkg/modprep/$(ver_cut 1-2)/${P}.tar.xz + verify-sig? ( + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/sha256sums.asc + -> linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc + ) +" +S=${WORKDIR} + +LICENSE="GPL-2" +SLOT=${PV} +KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" + +RDEPEND=" + virtual/libelf + !sys-kernel/gentoo-kernel-bin:${SLOT} +" +PDEPEND=" + >=virtual/dist-kernel-${PV} +" +BDEPEND=" + app-alternatives/bc + app-alternatives/lex + app-alternatives/yacc + dev-util/pahole + sys-libs/binutils-libs + virtual/libelf + verify-sig? ( >=sec-keys/openpgp-keys-kernel-20250702 ) +" + +KV_LOCALVERSION='-gentoo-dist-bin' +KV_FULL=${PV/_p/-p}${KV_LOCALVERSION} + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/kernel.org.asc + +src_unpack() { + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_signed_checksums \ + "linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc" \ + sha256 "${BASE_P}.tar.xz patch-${PATCH_PV}.xz" + cd "${WORKDIR}" || die + fi + + unpack "${BASE_P}.tar.xz" "patch-${PATCH_PV}.xz" "${PATCHSET}.tar.xz" + local pkg_arch=${ARCH} + [[ ${ARCH} == ppc64 ]] && pkg_arch=ppc64le + tar -x -f "${DISTDIR}/${P}.tar.xz" "${P}/${pkg_arch}" || die +} + +src_prepare() { + local patch + cd "${BASE_P}" || die + eapply "${WORKDIR}/patch-${PATCH_PV}" + eapply "${WORKDIR}/${PATCHSET}" + + default + + # add Gentoo patchset version + local extraversion=${PV#${PATCH_PV}} + sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${extraversion/_/-}:" Makefile || die +} + +src_configure() { + # force ld.bfd if we can find it easily + local HOSTLD="$(tc-getBUILD_LD)" + if type -P "${HOSTLD}.bfd" &>/dev/null; then + HOSTLD+=.bfd + fi + local LD="$(tc-getLD)" + if type -P "${LD}.bfd" &>/dev/null; then + LD+=.bfd + fi + tc-export_build_env + local makeargs=( + V=1 + WERROR=0 + + HOSTCC="$(tc-getBUILD_CC)" + HOSTCXX="$(tc-getBUILD_CXX)" + HOSTLD="${HOSTLD}" + HOSTAR="$(tc-getBUILD_AR)" + HOSTCFLAGS="${BUILD_CFLAGS}" + HOSTLDFLAGS="${BUILD_LDFLAGS}" + + CROSS_COMPILE=${CHOST}- + AS="$(tc-getAS)" + CC="$(tc-getCC)" + LD="${LD}" + AR="$(tc-getAR)" + NM="$(tc-getNM)" + STRIP="$(tc-getSTRIP)" + OBJCOPY="$(tc-getOBJCOPY)" + OBJDUMP="$(tc-getOBJDUMP)" + READELF="$(tc-getREADELF)" + + # we need to pass it to override colliding Gentoo envvar + ARCH="$(tc-arch-kernel)" + + O="${WORKDIR}"/modprep + ) + + local kernel_dir=( "${P}"/*/usr/src/"linux-${KV_FULL}" ) + + mkdir modprep || die + cp "${kernel_dir}/.config" modprep/ || die + emake -C "${BASE_P}" "${makeargs[@]}" modules_prepare +} + +src_install() { + local rel_kernel_dir=/usr/src/linux-${KV_FULL} + local pkg_dir=( "${P}"/* ) + local kernel_dir="${pkg_dir}/usr/src/linux-${KV_FULL}" + local image="${kernel_dir}/$(dist-kernel_get_image_path)" + local uki="${image%/*}/uki.efi" + + mv "${pkg_dir}"/lib "${ED}"/ || die + cd "${kernel_dir}" || die + insinto "${rel_kernel_dir}" + doins System.map Module.symvers + doins -r certs include scripts + + local kern_arch=$(tc-arch-kernel) + insinto "${rel_kernel_dir}/arch/${kern_arch}" + doins -r "arch/${kern_arch}/include" + + # Add the identifier + echo "${CATEGORY}/${PF}:${SLOT}" > "${ED}${rel_kernel_dir}/dist-kernel" || die + + cd "${WORKDIR}/${BASE_P}" || die + insinto "${rel_kernel_dir}" + doins -r include + + # remove everything but Makefile* and Kconfig* + find -type f '!' '(' -name 'Makefile*' -o -name 'Kconfig*' ')' \ + -delete || die + find -type l -delete || die + cp -p -R * "${ED}${rel_kernel_dir}/" || die + + # strip out-of-source build stuffs from modprep + # and then copy built files + cd "${WORKDIR}" || die + find modprep -type f '(' \ + -name Makefile -o \ + -name '*.[ao]' -o \ + '(' -name '.*' -a -not -name '.config' ')' \ + ')' -delete || die + rm modprep/source || die + cp -p -R modprep/. "${ED}${rel_kernel_dir}"/ || die +} + +pkg_preinst() { + dist-kernel_update_lib_symlinks +} + +pkg_postinst() { + dist-kernel_update_src_symlink "${EROOT}/usr/src/linux" "${KV_FULL}" +} diff --git a/sys-kernel/gentoo-kernel/Manifest b/sys-kernel/gentoo-kernel/Manifest index 9f11a9b5c401..6c6eb1c30d93 100644 --- a/sys-kernel/gentoo-kernel/Manifest +++ b/sys-kernel/gentoo-kernel/Manifest @@ -14,11 +14,13 @@ DIST linux-6.6.tar.xz 140064536 BLAKE2B 5f02fd8696d42f7ec8c5fbadec8e7270bdcfcb1f DIST linux-6.x-sha256sums-20260828.asc 246577 BLAKE2B f65a239c27ef241b753be638aff4def8dff63ccbd7e3fd9ee293fd797753a5d7f7758fa2ccb53d28a85038af15c948b1429103ac67b5dd4bf43e074da9ee35b7 SHA512 7c99c1b00c7f005875546128bd6b73ec2fb63efb3ee00c63ad41d1d40de596926784956db3a19164deb4562d2cfeefa5ebecb1e3b36bf25fde300b5203c60403 DIST linux-6.x-sha256sums-20260902.asc 247945 BLAKE2B 0b43813b97299dc604af7f6ac01a80c00ee11d5800d1354fb0613ee9fe16dbeab19c7453df242a89d7ee910f6ee9a3c713a030cc07fb085d4fce7c16f1f965e4 SHA512 91115918e6e772e7cd80775e4b360903de19eef6e7b945826a3492b7a95902eca5b3f5bf9d1b3e744f4d5ccefd82e47dee969b8c11d9bcfaec4393f0b277bf44 DIST linux-6.x-sha256sums-20260907.asc 248631 BLAKE2B 2f10a984a5d3b563258d041f6cec084e17d6c29d5f1cf905f7ff31cf5df3ec9aef50040bb0759b2d879eff80fec73f683bc4682940f1504b9afed77b32685279 SHA512 935ada72325fefeba6d134480c388c8cf7df12ab16d060ee50b5818ff4633795228d50aa2b36875d5af0acad8ebea70b0d8c049dd59caf2fd3556dbf9f3db1df +DIST linux-6.x-sha256sums-20260911.asc 248972 BLAKE2B d0a49a4346ba6c0f13d122c6fa68ee0e8f1436f51fc7212015d0cfb16fc5091df947d1abd4f8aa2e9388c22a0f64484c08ea21c320935b00f9cdf58a1ccd22c8 SHA512 4bdb652871ef916bd18b7e15fab9f4b110aa35c16fdc2d67de373e5ee811ae97afca7bc123ab9615ed5cf4dc15ef936d8f4ca5e34ab79031a63e1f06e2011879 DIST linux-7.1.tar.xz 158304768 BLAKE2B 5199b2057fd1b89f0275bdaff9d81035cf5e1e8e64318a4a67467399245628a0f8c5e82f9d80dfc54b094349a8cfcdc892b7a4ad4bdf5dd1daa268ff30c1cf38 SHA512 d4d9c45261813559341c67ea53d4a47f5a04d1ad15e3c2b8222a09b5483380d2bfd31b8c675e144db2eb91f560d6cb28f66187a5ea4f24f6dfb82a4ad48064cc DIST linux-7.2.tar.xz 160068116 BLAKE2B cf5f3d87b96f223034c47c6e5fc972fe52c2556310eb2f064632537b8727231135a8540179fd5d51343738c8a51f51f09c7e8da374324b68551c84a4124bb71b SHA512 47e63679363261a864d271277340a6f2d45f544e1a056be4159df081f4f6537d0efa865c4af26611ab33a3079ee65db88ec2f6bc0e5fff43e0c043cde0cd91e1 DIST linux-7.x-sha256sums-20260828.asc 11213 BLAKE2B 3be42484550c6e7863570a45175bf3260b4b27af99d129185ff002164571f09128f895d230cd9c0b96ffe6a24d7164d9e9352c7ec709c0752435cfc7616c0533 SHA512 d2e1aa002b6e2b49efedd594c56491d5563a4b1524c8c6e62802a50b49b8e586ef103ef134d56cb7891df9cd681ba194a5cf78e6cb2bb2c668d89dac78dd4d18 DIST linux-7.x-sha256sums-20260902.asc 11883 BLAKE2B 868477ba5aaf889713f97de4ac66157c95497f9abdd779e8090dd99b676d47e3aedb0fe32e77f2953c82c61397c0be1c60a7a1716a67a5709ce1152ed1392cef SHA512 5d5d9f7f21fc9b803cd5059341af090c4378bc871efde4380e7fd04958de89b67b74079b307740620c7e978cc6b7798e95320d0269ccf77266f275140af7034b DIST linux-7.x-sha256sums-20260907.asc 12216 BLAKE2B fc43cf1c26c2760c3f4fabf1af6edf4448cfe39527ecf9034ba87e5118356c9bf3af1698fd60f33afbae468959ba1f456d8a325446f0bee2b2a3ac76814d9b20 SHA512 0cf93af8453deb19c43875d61b118b6c93f7598d18e81368715ee069455ec5c3073495c238f219e3088f74268cea608d84866b0e490d04d2b483ae1cbb194015 +DIST linux-7.x-sha256sums-20260911.asc 12549 BLAKE2B 2c13002580813fec5b5a0cd69d5bd428886a0bae1fa5155e125e8a13adaba4c3b3bf4831532b348ef1581ac118a776d009ec1878747a8f679a0b36af28a4d2df SHA512 6b035fd353d94ca2a482d9c38fcf75a5e1e88e426f6c635237dae0a396929c87ca465554c9cd85a951ffefa48f84af4bd2896aa534fe94a46c938b7ee5fc2c82 DIST linux-b19b382f183d421a407f5d708dde1eff5009274d.tar.bz2 1401905 BLAKE2B fdb884e73fe206f91a39e76a76fdb1d703eb0529dc97b7f3129dacd3ae9f33c8acf14820a00facb07e99cee89acdad77b9cb43e95458656eabf375b1bb507b22 SHA512 1a9c210271a8a6b88a304b91a31caa693fbd289babfed8ee7767e834fc860f9a5cb52e457cbc548246cc7816d24490f7568389a71089975edfc4e31bd83f9490 DIST linux-gentoo-patches-6.1.178.tar.xz 14432 BLAKE2B fc278094f85f58b7aba5c3334503114d28aead086a1e62499111283f0410c02bc9db7f5187975fcf2a793a5ef32e323b9907bbd9e0fb4c0834dc1a823f36af52 SHA512 ae0606ab52f8d66f49cac198aada1cbcced465d8ae43e09ef02cee149125570e09eadfacc07f9ec0ad3b20b365df7b9718a478252771f7c6e09fecda6f701096 DIST linux-gentoo-patches-6.12.97.tar.xz 17192 BLAKE2B e0f09dd8ef2e6ebce9adcc2c050cb7e2c7ae08188e99635d3b541c6deca5bea792f4ec2c8d0c0dbc648b0c1f227b54a95d8d807a43859b3bf1b5f57767af2113 SHA512 af6b182d1e7661c35c215f4da63c8ab53b1ffffa7818a266b4c5639ed8d03428d050f1045d02e885c1b9bdc9fb2464c3f384dcd55d7536eddf2b90ffe1f8c530 @@ -33,6 +35,7 @@ DIST patch-6.12.109.xz 5753324 BLAKE2B 9ddaebf8cb9e93e79ccf02efd4e65e8892ff751e3 DIST patch-6.18.48.xz 3258276 BLAKE2B 2065b089db773cd504b7e09e4fb111e68463ad2846368090a40466044fdb63e2db5ff1d069c7d0c83ce77a9f85c9c5507d78eec8bd79409f1990aa7c21c4ce8d SHA512 18b4d5a32a430f8599cf821e5f873e9d669e4994a21f0a98084f1780bc233a13250f69c162f440ec9ac62551b03532f99332ce9ef90b98b77e69b96c63a05a48 DIST patch-6.18.49.xz 3282948 BLAKE2B e1a030bfe327190d14a9d3eefa77c8823a276d7f84c112a01e1f99572f35e283296415fde0a8f3f92564682a7c86b046045bd4d57f66e940bb42bfc65beab4dc SHA512 6cf1fbc3cedb1a2ef11c6ec7d045aa0f8214cb06ecfdc30cca7724207a40fc896deb6dde269d8bd87750ffe07634e7429e076e80167755526d634698bc3980a8 DIST patch-6.18.50.xz 3404240 BLAKE2B 3b7794114d37bf1f5f0c95b5b6f44aa33c00096a162dcb6fc48006e22871d2f731626f8759f54bc30cddb8561d75896e0546124e5b11b9e6332ea121d55eb164 SHA512 2ebefa6d5c0102130ecc8445e58e674e581568b728e4b40e1dfdfa3039a10c9d1af533b2b95d3b56ae30a056838af7bfe58f78c1642c56e3db14a3c1228ffe75 +DIST patch-6.18.51.xz 3545252 BLAKE2B 1636bb5b2dfab15f9bafeb215f925acdb5c7df0fc544d7787ffbe76cd1efcaff7cb99d925e39997e7cff37266192dd07ad3d7de3a8a845a907de9d5cf72b2dcc SHA512 c5022b7b718093b791237599a00565bf37f7e6d256e136c88ddc9508163cea5993bb22cfbbf928c3604e12ecb76d7e2ce814a3634d5a65e7c84825eb4e773f9d DIST patch-6.6.155.xz 6891280 BLAKE2B 1df8fbf4aab980280a52f6199f44f3030f917872fc5bf719dcd6bfeb236cd340aaea6cfe1da06948bbfbbdf4f89232a577e11dd0e422fb544ed2824b12f1c9cb SHA512 09f9f30b4bb33a324e3237e7eef78fe0dca9dc5d28e4c432a6e6bffc2a02dd4828f19bd1f0572e4f98cba94df55f427e11248689f0ae16437d0ef4cdda1a977a DIST patch-6.6.156.xz 6914532 BLAKE2B 95bda8ed3689d35c3bb5410f3c33b80097f78b038d343c33df3699dfb9d216215560411b939f2c6e8cba8990aa1169e914617d2432e14674484bbcac0b47d175 SHA512 de670a00152147ff05f19a5d519917bf522dfe40b3b88619e76dc768ffbf8d4609ba761c600c9441521de6254f87a6a2cf6162218ae90b1e75d7f5825c5dda10 DIST patch-7.1.12.xz 1401192 BLAKE2B f78bbf6e2468cf5324d0ee1b9da26d57e605c1f51c83b7bce0c5cd4776d7496c5160d6877b9efa6a0c470c1f479220e5b40a309fafd85da0ac50dd0e2cda5273 SHA512 ec4443c4af0ca05597fc45241a6676179ff562f49b8c09639c123465ea357d48d74f05f5b4b229f056b5ac7f497a04c2fb864cdde5dacc2f466637d4eb8ca330 @@ -40,3 +43,4 @@ DIST patch-7.1.13.xz 1427684 BLAKE2B 6c80c845eee5e6b231aab8b3675eb25dee0a1257b11 DIST patch-7.2.2.xz 32596 BLAKE2B d3185df869fc6613476a9bfcae4ecbe8bc80891593df937d2ec76bf5c6a92ff0af2395abfbf52604d3083afbf41d49d1fbd8d7764bc5c6b76c87a05703b6809e SHA512 144f29bcdf647b4d90179ca4132c0e9fa1d88993bb29ac84236c10c790188d79c827e633cc6cc852ea4b6259b58c6f25a8fbb7073fedf7434e9b0f07f986c2fc DIST patch-7.2.3.xz 62920 BLAKE2B bfca37cdb0500afc3c369314e6cbd11871421a380e99436a3e59b689aed674f0eec7b1a605d2bebd3df84a68a2069a1ee05d437444776e0307a4d4535b88deff SHA512 b5c48b2b288bfe0e5aebe6889ae4fca078a33df5ed69444abf3da102ae5b34a0ff1747c3f141a3bb729177a97e19623dfcadb5b950f5cda7a559be0c5cdac898 DIST patch-7.2.4.xz 281532 BLAKE2B f8bc83a92f50b064328727d28d0bb06f660e9b0fe4ccea980a81804776040ce6e7c2d71dd01656dc5a833d53f0e80ec4af91c78df37d20b4f4118673af26708b SHA512 e5b244c7b7c652d55114e4f440be7ac8eca617bbcc704ce9528bdfd793934449c6fdca3424d8e17ef6b6c053952c2aec860e34701d2b6ff9a2d09b1e52d76773 +DIST patch-7.2.5.xz 425448 BLAKE2B ee8ab8753089280cbd9afc0e424a84099e4a88b95c383618a18e009712a5862e8f2b72c90a9737197fdd2fd5c844d8fd9083319c053e9065cbc769d1253e3d16 SHA512 60af2204eddf616e3e31cd4e5f6043afab3956443da3221b9048f1e2ed7a539ae5b69bdd0ea9a664938158d099c8d2648ef66a86763305ceb7a4db8286438fbb diff --git a/sys-kernel/gentoo-kernel/gentoo-kernel-6.18.51.ebuild b/sys-kernel/gentoo-kernel/gentoo-kernel-6.18.51.ebuild new file mode 100644 index 000000000000..019e16ad3d0f --- /dev/null +++ b/sys-kernel/gentoo-kernel/gentoo-kernel-6.18.51.ebuild @@ -0,0 +1,191 @@ +# Copyright 2020-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +KERNEL_IUSE_GENERIC_UKI=1 + +inherit kernel-build toolchain-funcs verify-sig + +BASE_P=linux-${PV%.*} +PATCH_PV=${PV%_p*} +PATCHSET=linux-gentoo-patches-6.18.42 +# https://koji.fedoraproject.org/koji/packageinfo?packageID=8 +# forked to git.gentoo.org:fork/fedora/kernel +CONFIG_VER=6.18.12-gentoo +GENTOO_CONFIG_P=gentoo-kernel-config-g19 +SHA256SUM_DATE=20260911 +# Debian kconfig commit from: +# https://salsa.debian.org/kernel-team/linux/-/tree/debian/latest/debian/ +DEBIAN_COMMIT=b19b382f183d421a407f5d708dde1eff5009274d + +DESCRIPTION="Linux kernel built with Gentoo patches" +HOMEPAGE=" + https://wiki.gentoo.org/wiki/Project:Distribution_Kernel + https://www.kernel.org/ +" +SRC_URI+=" + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/${BASE_P}.tar.xz + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/patch-${PATCH_PV}.xz + https://distfiles.gentoo.org/pub/proj/dist-kernel/patchsets/$(ver_cut 1-2)/${PATCHSET}.tar.xz + https://gitweb.gentoo.org/proj/dist-kernel/gentoo-kernel-config.git/snapshot/${GENTOO_CONFIG_P}.tar.bz2 + https://gitweb.gentoo.org/fork/fedora/kernel.git/snapshot/kernel-${CONFIG_VER}.tar.bz2 + https://salsa.debian.org/kernel-team/linux/-/archive/${DEBIAN_COMMIT}/linux-${DEBIAN_COMMIT}.tar.bz2 + verify-sig? ( + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/sha256sums.asc + -> linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc + ) +" +S=${WORKDIR}/${BASE_P} + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="debug hardened" +REQUIRED_USE=" + hppa? ( savedconfig ) +" + +BDEPEND=" + debug? ( dev-util/pahole ) + verify-sig? ( >=sec-keys/openpgp-keys-kernel-20250702 ) +" +PDEPEND=" + >=virtual/dist-kernel-${PV} +" + +QA_FLAGS_IGNORED=" + usr/src/linux-.*/scripts/gcc-plugins/.*.so + usr/src/linux-.*/vmlinux + usr/src/linux-.*/arch/powerpc/kernel/vdso.*/vdso.*.so.dbg +" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/kernel.org.asc + +src_unpack() { + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_signed_checksums \ + "linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc" \ + sha256 "${BASE_P}.tar.xz patch-${PATCH_PV}.xz" + cd "${WORKDIR}" || die + fi + + default +} + +src_prepare() { + local patch + eapply "${WORKDIR}/patch-${PATCH_PV}" + eapply "${WORKDIR}/${PATCHSET}" + + default + + # add Gentoo patchset version + local extraversion=${PV#${PATCH_PV}} + sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${extraversion/_/-}:" Makefile || die + + local biendian=false + + # prepare the default config + case ${ARCH} in + hppa | mips) + > .config || die + ;; + alpha) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/alpha/config" \ + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/alpha/config.alpha-smp" + ) + ;; + amd64) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-x86_64-fedora.config" .config || die + ;; + arm) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/armhf/config" \ + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/armhf/config.armmp-lpae" + ) + ;; + arm64) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-aarch64-fedora.config" .config || die + biendian=true + ;; + loong) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/loong64/config" + ) + ;; + m68k) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/m68k/config" + ) + ;; + ppc) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/powerpc/config.powerpc" + ) + ;; + ppc64) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-ppc64le-fedora.config" .config || die + biendian=true + ;; + riscv) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-riscv64-fedora.config" .config || die + ;; + s390) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-s390x-fedora.config" .config || die + ;; + sparc) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/sparc64/config.sparc64" \ + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/sparc64/config.sparc64-smp" + ) + ;; + x86) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-i686-fedora.config" .config || die + ;; + *) + die "Unsupported arch ${ARCH}" + ;; + esac + + local myversion="-gentoo-dist" + use hardened && myversion+="-hardened" + echo "CONFIG_LOCALVERSION=\"${myversion}\"" > "${T}"/version.config || die + local dist_conf_path="${WORKDIR}/${GENTOO_CONFIG_P}" + + local merge_configs=( + "${T}"/version.config + "${dist_conf_path}"/base.config + "${dist_conf_path}"/6.12+.config + ) + use debug || merge_configs+=( + "${dist_conf_path}"/no-debug.config + ) + if use hardened; then + merge_configs+=( "${dist_conf_path}"/hardened-base.config ) + + tc-is-gcc && merge_configs+=( "${dist_conf_path}"/hardened-gcc-plugins.config ) + + if [[ -f "${dist_conf_path}/hardened-${ARCH}.config" ]]; then + merge_configs+=( "${dist_conf_path}/hardened-${ARCH}.config" ) + fi + fi + + # this covers ppc64 and aarch64_be only for now + if [[ ${biendian} == true && $(tc-endian) == big ]]; then + merge_configs+=( "${dist_conf_path}/big-endian.config" ) + fi + + use secureboot && merge_configs+=( + "${dist_conf_path}/secureboot.config" + "${dist_conf_path}/zboot.config" + ) + + kernel-build_merge_configs "${merge_configs[@]}" +} diff --git a/sys-kernel/gentoo-kernel/gentoo-kernel-7.2.5.ebuild b/sys-kernel/gentoo-kernel/gentoo-kernel-7.2.5.ebuild new file mode 100644 index 000000000000..8e85617edf7d --- /dev/null +++ b/sys-kernel/gentoo-kernel/gentoo-kernel-7.2.5.ebuild @@ -0,0 +1,192 @@ +# Copyright 2020-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +KERNEL_IUSE_GENERIC_UKI=1 + +inherit kernel-build toolchain-funcs verify-sig + +BASE_P=linux-${PV%.*} +PATCH_PV=${PV%_p*} +PATCHSET=linux-gentoo-patches-7.1.9 +# https://koji.fedoraproject.org/koji/packageinfo?packageID=8 +# forked to git.gentoo.org:fork/fedora/kernel +CONFIG_VER=7.2.2-gentoo +GENTOO_CONFIG_P=gentoo-kernel-config-g19 +SHA256SUM_DATE=20260911 +# Debian kconfig commit from: +# https://salsa.debian.org/kernel-team/linux/-/tree/debian/latest/debian/ +DEBIAN_COMMIT=31e70f1f469ef1ce4c910df1d12b7de09da561d1 + +DESCRIPTION="Linux kernel built with Gentoo patches" +HOMEPAGE=" + https://wiki.gentoo.org/wiki/Project:Distribution_Kernel + https://www.kernel.org/ +" +SRC_URI+=" + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/${BASE_P}.tar.xz + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/patch-${PATCH_PV}.xz + https://distfiles.gentoo.org/pub/proj/dist-kernel/patchsets/7.1/${PATCHSET}.tar.xz + https://gitweb.gentoo.org/proj/dist-kernel/gentoo-kernel-config.git/snapshot/${GENTOO_CONFIG_P}.tar.bz2 + https://gitweb.gentoo.org/fork/fedora/kernel.git/snapshot/kernel-${CONFIG_VER}.tar.bz2 + https://salsa.debian.org/kernel-team/linux/-/archive/${DEBIAN_COMMIT}/linux-${DEBIAN_COMMIT}.tar.bz2 + verify-sig? ( + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/sha256sums.asc + -> linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc + ) +" +S=${WORKDIR}/${BASE_P} + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="debug hardened" +REQUIRED_USE=" + hppa? ( savedconfig ) + mips? ( savedconfig ) +" + +BDEPEND=" + debug? ( dev-util/pahole ) + verify-sig? ( >=sec-keys/openpgp-keys-kernel-20250702 ) +" +PDEPEND=" + >=virtual/dist-kernel-${PV} +" + +QA_FLAGS_IGNORED=" + usr/src/linux-.*/scripts/gcc-plugins/.*.so + usr/src/linux-.*/vmlinux + usr/src/linux-.*/arch/powerpc/kernel/vdso.*/vdso.*.so.dbg +" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/kernel.org.asc + +src_unpack() { + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_signed_checksums \ + "linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc" \ + sha256 "${BASE_P}.tar.xz patch-${PATCH_PV}.xz" + cd "${WORKDIR}" || die + fi + + default +} + +src_prepare() { + local patch + eapply "${WORKDIR}/patch-${PATCH_PV}" + eapply "${WORKDIR}/${PATCHSET}" + + default + + # add Gentoo patchset version + local extraversion=${PV#${PATCH_PV}} + sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${extraversion/_/-}:" Makefile || die + + local biendian=false + + # prepare the default config + case ${ARCH} in + hppa | mips) + > .config || die + ;; + alpha) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/alpha/config" \ + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/alpha/config.alpha-smp" + ) + ;; + amd64) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-x86_64-fedora.config" .config || die + ;; + arm) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/armhf/config" \ + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/armhf/config.armmp-lpae" + ) + ;; + arm64) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-aarch64-fedora.config" .config || die + biendian=true + ;; + loong) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/loong64/config" + ) + ;; + m68k) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/m68k/config" + ) + ;; + ppc) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/powerpc/config.powerpc" + ) + ;; + ppc64) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-ppc64le-fedora.config" .config || die + biendian=true + ;; + riscv) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-riscv64-fedora.config" .config || die + ;; + s390) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-s390x-fedora.config" .config || die + ;; + sparc) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/sparc64/config.sparc64" \ + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/sparc64/config.sparc64-smp" + ) + ;; + x86) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-i686-fedora.config" .config || die + ;; + *) + die "Unsupported arch ${ARCH}" + ;; + esac + + local myversion="-gentoo-dist" + use hardened && myversion+="-hardened" + echo "CONFIG_LOCALVERSION=\"${myversion}\"" > "${T}"/version.config || die + local dist_conf_path="${WORKDIR}/${GENTOO_CONFIG_P}" + + local merge_configs=( + "${T}"/version.config + "${dist_conf_path}"/base.config + "${dist_conf_path}"/6.12+.config + ) + use debug || merge_configs+=( + "${dist_conf_path}"/no-debug.config + ) + if use hardened; then + merge_configs+=( "${dist_conf_path}"/hardened-base.config ) + + tc-is-gcc && merge_configs+=( "${dist_conf_path}"/hardened-gcc-plugins.config ) + + if [[ -f "${dist_conf_path}/hardened-${ARCH}.config" ]]; then + merge_configs+=( "${dist_conf_path}/hardened-${ARCH}.config" ) + fi + fi + + # this covers ppc64 and aarch64_be only for now + if [[ ${biendian} == true && $(tc-endian) == big ]]; then + merge_configs+=( "${dist_conf_path}/big-endian.config" ) + fi + + use secureboot && merge_configs+=( + "${dist_conf_path}/secureboot.config" + "${dist_conf_path}/zboot.config" + ) + + kernel-build_merge_configs "${merge_configs[@]}" +} diff --git a/sys-kernel/gentoo-sources/Manifest b/sys-kernel/gentoo-sources/Manifest index 903f15e69c6a..ecd8ecb327a5 100644 --- a/sys-kernel/gentoo-sources/Manifest +++ b/sys-kernel/gentoo-sources/Manifest @@ -22,6 +22,9 @@ DIST genpatches-6.18-56.extras.tar.xz 2176 BLAKE2B ecbd7a10a76e4ec28b7bad2a661ea DIST genpatches-6.18-57.base.tar.xz 3710308 BLAKE2B 66f5c5628f6448a36be37fb94033965fdd683db4c80a5b9a6ac94693ca42739958bd2ecb8d498d19d4e78cf18411c2519c90b1a7b0e3f642f14c0adec3539fab SHA512 fcf54c6b4eb48b766c6966cb521d2f5bf1e01b3ca5c5fb748a7c033f873a76e0f8abceae1a8d85904472cdb758623c3b5763034a0ad4082318d6a1c0406d6f62 DIST genpatches-6.18-57.experimental.tar.xz 6004 BLAKE2B 5ad78f7ce97050b9baaf26c2337e0a2d3491897ec6f39e5a9eba7dde167eaa8448b7c604ee4e81e14f20990eafede26c0b33c78d7b05cb3976c9d1e137688753 SHA512 986410b7c870a56bd1ef87eee0379d104a888e798ecc6974a49ef688e96fc9f26528fbfa848d264654fda77371caae207fb32a2b0012bd547befe68fc79c46d6 DIST genpatches-6.18-57.extras.tar.xz 2176 BLAKE2B a7b6bda82a3ec551394411ee8ba10b3f652e78e35193c29183c5a636d0e5c2ada8315654049b89dae20757fc90e5278837abdf6f03967651c6a8e1c5ab1ef854 SHA512 92fe9c4c31303daf03ef4d69220cfa4c1f928a73db569fd3a25f2d318131f5dde3ac523479bbab9f759f52c728c04fe3e574e4d1eb1b2d739254928110978ab3 +DIST genpatches-6.18-58.base.tar.xz 3872988 BLAKE2B 964fd4f7e975cbcedd17e937c453904e965795dc0da10d17957cbea7f023531d57709e159be3848fb3f994c89d8290d425baf9211c48a01de7abf3a777801e2c SHA512 c0b8f0a939feff82475116806649ed6d988853ddc020396ce0bbec37760f32394818d99c5e863b4db3bdd85d7c7b899db3f3e48fb60ce8c3adc6a3042ea4b84a +DIST genpatches-6.18-58.experimental.tar.xz 6000 BLAKE2B ed8e795605651f839dafe8a6078cf75f4965c8587bbc80e2ed7d37893cf093a5632085f85335efefce6046f720d48a8968e10d4e51869a99a2c31270ef81b234 SHA512 d9021a82cd4f376b27adeb4e86ec85f78ae384dfc9757e51065f088abfd02275c5f09e8eaf01bc9d38acf82a6e16844a739714c460b014dfb5754ff2269bec48 +DIST genpatches-6.18-58.extras.tar.xz 2176 BLAKE2B 00604e5274ecde3f299b5f1cbe47a1f04493fa5a677e394b1c448f1b08cf7411e2e7c7538cae7cd4367c3122596d44cbca1002448164772a2d3f74581e9d160d SHA512 9cc38d75ddbcf90faa04e4eaf871df3fcf2cb618b3d860535dc4a2e086900af511db39f4c1f3950552ee0a1eecd03e16e7d55a29a8583fe6f1b99e94dd23f182 DIST genpatches-6.6-169.base.tar.xz 8389116 BLAKE2B 0ccc10fa8b2626844997df44bff879e3f3913a2b0042ba84651c1580c4362d1c733b7cfaa0060e84c6cfc40aa99679c4904419c692c4bebbc77d0b54c8487e38 SHA512 2758b54d2d8dcc5caaa5a89fdf670c66b6124a98edd2431594c6e09f60c3a44a9fa41e7168b3a3559c4efcd73449a3b3bb53f2b35113d560497e97aa335a817e DIST genpatches-6.6-169.experimental.tar.xz 6052 BLAKE2B 1f24146a9dcecb58e393c55e897bcd0d6834b6834c8c5ab2d85faac0008bdb0ff324bdd9e628b57834e3e3b489c6c6418611e61b989e37c1f731b0e36d1823d7 SHA512 660cec2d1dbd492bf8fb2843085a797c4924a94d4e3541963ff383a4bd106470cefbf24ad9783993b5ccdd066e73b3ca9d1f47ce92ed5c4da549d0f9032194c5 DIST genpatches-6.6-169.extras.tar.xz 4028 BLAKE2B 30a8a55f8bece00a92a12aa53b03adab7b8d8941575e58777f62025cfb9e786e5196561a9ff51b6edaf7b703bdd84d987661d575d1a2c007730276e2b639081a SHA512 03fae8c9d0757d10ce68e5cb9c9aa684391692afba88ff0771ae4c0e813c2fa9ee42b8558404dc1782452e91a80ec2adcbad328cf68453a19be8c400d83b617d @@ -40,6 +43,9 @@ DIST genpatches-7.2-4.extras.tar.xz 2176 BLAKE2B a84c3da742f6018cc15cc55d0e3eeac DIST genpatches-7.2-5.base.tar.xz 290200 BLAKE2B 451503b27366c50f924947eba204e4e245e06245f642189747eef33f59a6f11a3d82bb2f8b2ec15f20849c7ee5dae9e37f5ed67b5a88a14cccc961b6c1879a8e SHA512 9aac4e9db856e9dbdb02a74318a9875934e495b990ef4267c1d7be2e0f4c1e4d66206cb9109f54ef5861a3a2431043b632f19ad60a9e2da9db5be9a6394c3904 DIST genpatches-7.2-5.experimental.tar.xz 76408 BLAKE2B c4233f563fc105ce25f36fe7b7364928e8203aad3c18bc47634b411922f15e0f27b28bd77f81cb1888dd8d8259148ad7b5d9a16db148f81d8d7a7204b74233ea SHA512 d0d2c91feb2ff64a95f10be169f7664a1731bbfe92eaf99c93c88f12509d54b38060374dffcef0acff9a4618d68e301383ab127f68c28e6b337017980783c85e DIST genpatches-7.2-5.extras.tar.xz 2176 BLAKE2B de52b3a4c63cc2bdb01b2aaf3f6800966c752cb3590fc9a4b7694d16cb8f7a617d600f5df68cd1b281f272423c08adf2bd21dcaa89e54579c9192177c15462f7 SHA512 ef21ede35666b442ca4c402bd36f66693739e4429b8961d25f8bfd7606cbcba6ce8112711f367c6454b4d4ebf43d78cd4bb80893cd91031530fd413d94bb340e +DIST genpatches-7.2-6.base.tar.xz 436380 BLAKE2B 0a9cb6cdb0b4356d4e17956de69b1b2bd3f5dd4f9e3288eff40e642e0542e7c2a12e35d0ff5731a03cb1ace1a15d0bfa83ff193f738298936d32471a3c2eb2b6 SHA512 687d159d94d7df919533f6ca12534c5432e162a0cf2072d07bb839c21c4a14675b1f4b615d35ede6533b4d2681a0c66b2573346e478f67bb130ee74bcaa049dc +DIST genpatches-7.2-6.experimental.tar.xz 76720 BLAKE2B 93388fb31e8f89559b95a230284408167eea45e034468f85eeca31541ff59cd9eb340e123ecbf047b22508f7fc8907f74d072b43cf1d3a6e9cb5f8d5f4da4c66 SHA512 19bb58b974f70bf1ae47c6f64be41b8121c88c3c444e68bcc20e451084e21aafe33dacc55a6387e96c233ce26a2143305b806cd89a95c7eb94d9fdd50fec9074 +DIST genpatches-7.2-6.extras.tar.xz 2176 BLAKE2B b8b6fe9c51dd55adfd62713061261e29becd28ef520a6e93a7a564d5bf5384ad73d62f980dcb940bcb05ffa8510cf4b68265a5f2ae6b49917790828461b5a9ea SHA512 cc40b842efcadcb5fce9715c9bfefbb7235f93a8e903be193aef38636f0a1e27e048ed71b453e578602b6e01e64b6a61e7257fbe88556a6640dc67c23e4a16ef DIST linux-6.1.tar.xz 134728520 BLAKE2B ae60257860b2bd1bd708d183f0443afc60ebbd2b3d535c45e44c2e541bd0928530a3b62de6385dd4e4726ebbedcc0a871d4f3ffb4105b9f1f6d8ed7467f5688e SHA512 6ed2a73c2699d0810e54753715635736fc370288ad5ce95c594f2379959b0e418665cd71bc512a0273fe226fe90074d8b10d14c209080a6466498417a4fdda68 DIST linux-6.12.tar.xz 147906904 BLAKE2B b2ec2fc69218cacabbbe49f78384a5d259ca581b717617c12b000b16f4a4c59ee348ea886b37147f5f70fb9a7a01c1e2c8f19021078f6b23f5bc62d1c48d5e5e SHA512 a37b1823df7b4f72542f689b65882634740ba0401a42fdcf6601d9efd2e132e5a7650e70450ba76f6cd1f13ca31180f2ccee9d54fe4df89bc0000ade4380a548 DIST linux-6.18.tar.xz 154309096 BLAKE2B b94b7b9bf18aca0c3e50baf79b009a1448fc6cd9c3ee019f641cc247dcf53a4abef4274ee0608ad8cd4943af69854363a95d26e117ff23620bb07dccb158859f SHA512 88599ffdec96d150c1feb9b261ba93bb0301a9d0e1ad6bef7aeab1f5372cbfc57d8b43c7e902bd8f76921d1dbd8189663c142ea869e51d0e2b483b150ee00fe0 diff --git a/sys-kernel/gentoo-sources/gentoo-sources-6.18.51.ebuild b/sys-kernel/gentoo-sources/gentoo-sources-6.18.51.ebuild new file mode 100644 index 000000000000..3f0004f01d66 --- /dev/null +++ b/sys-kernel/gentoo-sources/gentoo-sources-6.18.51.ebuild @@ -0,0 +1,28 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +ETYPE="sources" +K_WANT_GENPATCHES="base extras experimental" +K_GENPATCHES_VER="58" + +inherit kernel-2 +detect_version +detect_arch + +DESCRIPTION="Full sources including the Gentoo patchset for the ${KV_MAJOR}.${KV_MINOR} kernel tree" +HOMEPAGE="https://dev.gentoo.org/~mpagano/genpatches" +SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="experimental" + +pkg_postinst() { + kernel-2_pkg_postinst + einfo "For more info on this patchset, and how to report problems, see:" + einfo "${HOMEPAGE}" +} + +pkg_postrm() { + kernel-2_pkg_postrm +} diff --git a/sys-kernel/gentoo-sources/gentoo-sources-7.2.5.ebuild b/sys-kernel/gentoo-sources/gentoo-sources-7.2.5.ebuild new file mode 100644 index 000000000000..c7f1bebc79f4 --- /dev/null +++ b/sys-kernel/gentoo-sources/gentoo-sources-7.2.5.ebuild @@ -0,0 +1,29 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +ETYPE="sources" +K_WANT_GENPATCHES="base extras experimental" +K_GENPATCHES_VER="6" +K_NO_VERSION_CHECK=0 + +inherit kernel-2 +detect_version +detect_arch + +DESCRIPTION="Full sources including the Gentoo patchset for the ${KV_MAJOR}.${KV_MINOR} kernel tree" +HOMEPAGE="https://dev.gentoo.org/~mpagano/genpatches" +SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="experimental" + +pkg_postinst() { + kernel-2_pkg_postinst + einfo "For more info on this patchset, and how to report problems, see:" + einfo "${HOMEPAGE}" +} + +pkg_postrm() { + kernel-2_pkg_postrm +} diff --git a/sys-kernel/gnumach/gnumach-1.8_p20260630.ebuild b/sys-kernel/gnumach/gnumach-1.8_p20260630.ebuild index d779f29c39de..dc4ef2509e45 100644 --- a/sys-kernel/gnumach/gnumach-1.8_p20260630.ebuild +++ b/sys-kernel/gnumach/gnumach-1.8_p20260630.ebuild @@ -65,6 +65,11 @@ src_configure() { fi fi + # Make sure host make.conf doesn't pollute us + if target_is_not_host || tc-is-cross-compiler ; then + CHOST=${CTARGET} strip-unsupported-flags + fi + strip-flags # LTO confuses one of the assemble steps filter-lto diff --git a/sys-kernel/gnumach/gnumach-9999.ebuild b/sys-kernel/gnumach/gnumach-9999.ebuild index d779f29c39de..dc4ef2509e45 100644 --- a/sys-kernel/gnumach/gnumach-9999.ebuild +++ b/sys-kernel/gnumach/gnumach-9999.ebuild @@ -65,6 +65,11 @@ src_configure() { fi fi + # Make sure host make.conf doesn't pollute us + if target_is_not_host || tc-is-cross-compiler ; then + CHOST=${CTARGET} strip-unsupported-flags + fi + strip-flags # LTO confuses one of the assemble steps filter-lto diff --git a/sys-kernel/hurd/hurd-0.9_p20260630.ebuild b/sys-kernel/hurd/hurd-0.9_p20260630.ebuild index a328c8044a1f..e6d8cf0e61b3 100644 --- a/sys-kernel/hurd/hurd-0.9_p20260630.ebuild +++ b/sys-kernel/hurd/hurd-0.9_p20260630.ebuild @@ -3,7 +3,7 @@ EAPI=8 -inherit crossdev multilib flag-o-matic +inherit crossdev multilib flag-o-matic toolchain-funcs DESCRIPTION="GNU Hurd is the GNU project's replacement for UNIX" HOMEPAGE="https://www.gnu.org/software/hurd/hurd.html" @@ -100,6 +100,11 @@ src_configure() { --disable-profile ) + # Make sure host make.conf doesn't pollute us + if target_is_not_host || tc-is-cross-compiler ; then + CHOST=${CTARGET} strip-unsupported-flags + fi + if ! use custom-cflags ; then strip-flags filter-lto diff --git a/sys-kernel/hurd/hurd-9999.ebuild b/sys-kernel/hurd/hurd-9999.ebuild index a328c8044a1f..e6d8cf0e61b3 100644 --- a/sys-kernel/hurd/hurd-9999.ebuild +++ b/sys-kernel/hurd/hurd-9999.ebuild @@ -3,7 +3,7 @@ EAPI=8 -inherit crossdev multilib flag-o-matic +inherit crossdev multilib flag-o-matic toolchain-funcs DESCRIPTION="GNU Hurd is the GNU project's replacement for UNIX" HOMEPAGE="https://www.gnu.org/software/hurd/hurd.html" @@ -100,6 +100,11 @@ src_configure() { --disable-profile ) + # Make sure host make.conf doesn't pollute us + if target_is_not_host || tc-is-cross-compiler ; then + CHOST=${CTARGET} strip-unsupported-flags + fi + if ! use custom-cflags ; then strip-flags filter-lto diff --git a/sys-kernel/vanilla-kernel/Manifest b/sys-kernel/vanilla-kernel/Manifest index fbf0175c7d5a..b850a67aba34 100644 --- a/sys-kernel/vanilla-kernel/Manifest +++ b/sys-kernel/vanilla-kernel/Manifest @@ -16,11 +16,13 @@ DIST linux-6.6.tar.xz 140064536 BLAKE2B 5f02fd8696d42f7ec8c5fbadec8e7270bdcfcb1f DIST linux-6.x-sha256sums-20260828.asc 246577 BLAKE2B f65a239c27ef241b753be638aff4def8dff63ccbd7e3fd9ee293fd797753a5d7f7758fa2ccb53d28a85038af15c948b1429103ac67b5dd4bf43e074da9ee35b7 SHA512 7c99c1b00c7f005875546128bd6b73ec2fb63efb3ee00c63ad41d1d40de596926784956db3a19164deb4562d2cfeefa5ebecb1e3b36bf25fde300b5203c60403 DIST linux-6.x-sha256sums-20260902.asc 247945 BLAKE2B 0b43813b97299dc604af7f6ac01a80c00ee11d5800d1354fb0613ee9fe16dbeab19c7453df242a89d7ee910f6ee9a3c713a030cc07fb085d4fce7c16f1f965e4 SHA512 91115918e6e772e7cd80775e4b360903de19eef6e7b945826a3492b7a95902eca5b3f5bf9d1b3e744f4d5ccefd82e47dee969b8c11d9bcfaec4393f0b277bf44 DIST linux-6.x-sha256sums-20260907.asc 248631 BLAKE2B 2f10a984a5d3b563258d041f6cec084e17d6c29d5f1cf905f7ff31cf5df3ec9aef50040bb0759b2d879eff80fec73f683bc4682940f1504b9afed77b32685279 SHA512 935ada72325fefeba6d134480c388c8cf7df12ab16d060ee50b5818ff4633795228d50aa2b36875d5af0acad8ebea70b0d8c049dd59caf2fd3556dbf9f3db1df +DIST linux-6.x-sha256sums-20260911.asc 248972 BLAKE2B d0a49a4346ba6c0f13d122c6fa68ee0e8f1436f51fc7212015d0cfb16fc5091df947d1abd4f8aa2e9388c22a0f64484c08ea21c320935b00f9cdf58a1ccd22c8 SHA512 4bdb652871ef916bd18b7e15fab9f4b110aa35c16fdc2d67de373e5ee811ae97afca7bc123ab9615ed5cf4dc15ef936d8f4ca5e34ab79031a63e1f06e2011879 DIST linux-7.1.tar.xz 158304768 BLAKE2B 5199b2057fd1b89f0275bdaff9d81035cf5e1e8e64318a4a67467399245628a0f8c5e82f9d80dfc54b094349a8cfcdc892b7a4ad4bdf5dd1daa268ff30c1cf38 SHA512 d4d9c45261813559341c67ea53d4a47f5a04d1ad15e3c2b8222a09b5483380d2bfd31b8c675e144db2eb91f560d6cb28f66187a5ea4f24f6dfb82a4ad48064cc DIST linux-7.2.tar.xz 160068116 BLAKE2B cf5f3d87b96f223034c47c6e5fc972fe52c2556310eb2f064632537b8727231135a8540179fd5d51343738c8a51f51f09c7e8da374324b68551c84a4124bb71b SHA512 47e63679363261a864d271277340a6f2d45f544e1a056be4159df081f4f6537d0efa865c4af26611ab33a3079ee65db88ec2f6bc0e5fff43e0c043cde0cd91e1 DIST linux-7.x-sha256sums-20260828.asc 11213 BLAKE2B 3be42484550c6e7863570a45175bf3260b4b27af99d129185ff002164571f09128f895d230cd9c0b96ffe6a24d7164d9e9352c7ec709c0752435cfc7616c0533 SHA512 d2e1aa002b6e2b49efedd594c56491d5563a4b1524c8c6e62802a50b49b8e586ef103ef134d56cb7891df9cd681ba194a5cf78e6cb2bb2c668d89dac78dd4d18 DIST linux-7.x-sha256sums-20260902.asc 11883 BLAKE2B 868477ba5aaf889713f97de4ac66157c95497f9abdd779e8090dd99b676d47e3aedb0fe32e77f2953c82c61397c0be1c60a7a1716a67a5709ce1152ed1392cef SHA512 5d5d9f7f21fc9b803cd5059341af090c4378bc871efde4380e7fd04958de89b67b74079b307740620c7e978cc6b7798e95320d0269ccf77266f275140af7034b DIST linux-7.x-sha256sums-20260907.asc 12216 BLAKE2B fc43cf1c26c2760c3f4fabf1af6edf4448cfe39527ecf9034ba87e5118356c9bf3af1698fd60f33afbae468959ba1f456d8a325446f0bee2b2a3ac76814d9b20 SHA512 0cf93af8453deb19c43875d61b118b6c93f7598d18e81368715ee069455ec5c3073495c238f219e3088f74268cea608d84866b0e490d04d2b483ae1cbb194015 +DIST linux-7.x-sha256sums-20260911.asc 12549 BLAKE2B 2c13002580813fec5b5a0cd69d5bd428886a0bae1fa5155e125e8a13adaba4c3b3bf4831532b348ef1581ac118a776d009ec1878747a8f679a0b36af28a4d2df SHA512 6b035fd353d94ca2a482d9c38fcf75a5e1e88e426f6c635237dae0a396929c87ca465554c9cd85a951ffefa48f84af4bd2896aa534fe94a46c938b7ee5fc2c82 DIST linux-b19b382f183d421a407f5d708dde1eff5009274d.tar.bz2 1401905 BLAKE2B fdb884e73fe206f91a39e76a76fdb1d703eb0529dc97b7f3129dacd3ae9f33c8acf14820a00facb07e99cee89acdad77b9cb43e95458656eabf375b1bb507b22 SHA512 1a9c210271a8a6b88a304b91a31caa693fbd289babfed8ee7767e834fc860f9a5cb52e457cbc548246cc7816d24490f7568389a71089975edfc4e31bd83f9490 DIST patch-6.1.186.xz 8087268 BLAKE2B 5f78ce9b0b0cbddd71b4bd4489175c3e1a494c8d4e596bcc0785f7f7d9f1221c10eb5e35b6e687550363e7ee37968ee8fbb7c6fe60a0b2e4e882b4f265b2547b SHA512 5816e156eaa305543af1f06530fd42b9abd2b1b2e79b379800cc534e6bf1bbdfb31c693f411c15c444920b788f3bed1405abaecfdaa2d3e2d7cc34c1f508d8c2 DIST patch-6.1.187.xz 8109252 BLAKE2B 5ec497e8fc6f086140d425fd7b4ab122d8a579b4d7227711eb0c2493cbf03590e494de9ab1700a950eac3c962dba399c996d94aefe59fd9e6154f7ffb18618b8 SHA512 bc89dd895bbf1ad4900a1a044ca9858fab747c4b46758770426c9590d22d6048adaa08919563fc9b20e9f82ba99be9f99242d7845dcf9a2de707d48dd2de9fa1 @@ -30,6 +32,7 @@ DIST patch-6.12.109.xz 5753324 BLAKE2B 9ddaebf8cb9e93e79ccf02efd4e65e8892ff751e3 DIST patch-6.18.48.xz 3258276 BLAKE2B 2065b089db773cd504b7e09e4fb111e68463ad2846368090a40466044fdb63e2db5ff1d069c7d0c83ce77a9f85c9c5507d78eec8bd79409f1990aa7c21c4ce8d SHA512 18b4d5a32a430f8599cf821e5f873e9d669e4994a21f0a98084f1780bc233a13250f69c162f440ec9ac62551b03532f99332ce9ef90b98b77e69b96c63a05a48 DIST patch-6.18.49.xz 3282948 BLAKE2B e1a030bfe327190d14a9d3eefa77c8823a276d7f84c112a01e1f99572f35e283296415fde0a8f3f92564682a7c86b046045bd4d57f66e940bb42bfc65beab4dc SHA512 6cf1fbc3cedb1a2ef11c6ec7d045aa0f8214cb06ecfdc30cca7724207a40fc896deb6dde269d8bd87750ffe07634e7429e076e80167755526d634698bc3980a8 DIST patch-6.18.50.xz 3404240 BLAKE2B 3b7794114d37bf1f5f0c95b5b6f44aa33c00096a162dcb6fc48006e22871d2f731626f8759f54bc30cddb8561d75896e0546124e5b11b9e6332ea121d55eb164 SHA512 2ebefa6d5c0102130ecc8445e58e674e581568b728e4b40e1dfdfa3039a10c9d1af533b2b95d3b56ae30a056838af7bfe58f78c1642c56e3db14a3c1228ffe75 +DIST patch-6.18.51.xz 3545252 BLAKE2B 1636bb5b2dfab15f9bafeb215f925acdb5c7df0fc544d7787ffbe76cd1efcaff7cb99d925e39997e7cff37266192dd07ad3d7de3a8a845a907de9d5cf72b2dcc SHA512 c5022b7b718093b791237599a00565bf37f7e6d256e136c88ddc9508163cea5993bb22cfbbf928c3604e12ecb76d7e2ce814a3634d5a65e7c84825eb4e773f9d DIST patch-6.6.155.xz 6891280 BLAKE2B 1df8fbf4aab980280a52f6199f44f3030f917872fc5bf719dcd6bfeb236cd340aaea6cfe1da06948bbfbbdf4f89232a577e11dd0e422fb544ed2824b12f1c9cb SHA512 09f9f30b4bb33a324e3237e7eef78fe0dca9dc5d28e4c432a6e6bffc2a02dd4828f19bd1f0572e4f98cba94df55f427e11248689f0ae16437d0ef4cdda1a977a DIST patch-6.6.156.xz 6914532 BLAKE2B 95bda8ed3689d35c3bb5410f3c33b80097f78b038d343c33df3699dfb9d216215560411b939f2c6e8cba8990aa1169e914617d2432e14674484bbcac0b47d175 SHA512 de670a00152147ff05f19a5d519917bf522dfe40b3b88619e76dc768ffbf8d4609ba761c600c9441521de6254f87a6a2cf6162218ae90b1e75d7f5825c5dda10 DIST patch-7.1.12.xz 1401192 BLAKE2B f78bbf6e2468cf5324d0ee1b9da26d57e605c1f51c83b7bce0c5cd4776d7496c5160d6877b9efa6a0c470c1f479220e5b40a309fafd85da0ac50dd0e2cda5273 SHA512 ec4443c4af0ca05597fc45241a6676179ff562f49b8c09639c123465ea357d48d74f05f5b4b229f056b5ac7f497a04c2fb864cdde5dacc2f466637d4eb8ca330 @@ -37,3 +40,4 @@ DIST patch-7.1.13.xz 1427684 BLAKE2B 6c80c845eee5e6b231aab8b3675eb25dee0a1257b11 DIST patch-7.2.2.xz 32596 BLAKE2B d3185df869fc6613476a9bfcae4ecbe8bc80891593df937d2ec76bf5c6a92ff0af2395abfbf52604d3083afbf41d49d1fbd8d7764bc5c6b76c87a05703b6809e SHA512 144f29bcdf647b4d90179ca4132c0e9fa1d88993bb29ac84236c10c790188d79c827e633cc6cc852ea4b6259b58c6f25a8fbb7073fedf7434e9b0f07f986c2fc DIST patch-7.2.3.xz 62920 BLAKE2B bfca37cdb0500afc3c369314e6cbd11871421a380e99436a3e59b689aed674f0eec7b1a605d2bebd3df84a68a2069a1ee05d437444776e0307a4d4535b88deff SHA512 b5c48b2b288bfe0e5aebe6889ae4fca078a33df5ed69444abf3da102ae5b34a0ff1747c3f141a3bb729177a97e19623dfcadb5b950f5cda7a559be0c5cdac898 DIST patch-7.2.4.xz 281532 BLAKE2B f8bc83a92f50b064328727d28d0bb06f660e9b0fe4ccea980a81804776040ce6e7c2d71dd01656dc5a833d53f0e80ec4af91c78df37d20b4f4118673af26708b SHA512 e5b244c7b7c652d55114e4f440be7ac8eca617bbcc704ce9528bdfd793934449c6fdca3424d8e17ef6b6c053952c2aec860e34701d2b6ff9a2d09b1e52d76773 +DIST patch-7.2.5.xz 425448 BLAKE2B ee8ab8753089280cbd9afc0e424a84099e4a88b95c383618a18e009712a5862e8f2b72c90a9737197fdd2fd5c844d8fd9083319c053e9065cbc769d1253e3d16 SHA512 60af2204eddf616e3e31cd4e5f6043afab3956443da3221b9048f1e2ed7a539ae5b69bdd0ea9a664938158d099c8d2648ef66a86763305ceb7a4db8286438fbb diff --git a/sys-kernel/vanilla-kernel/vanilla-kernel-6.18.51.ebuild b/sys-kernel/vanilla-kernel/vanilla-kernel-6.18.51.ebuild new file mode 100644 index 000000000000..a21817b90e87 --- /dev/null +++ b/sys-kernel/vanilla-kernel/vanilla-kernel-6.18.51.ebuild @@ -0,0 +1,181 @@ +# Copyright 2020-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +KERNEL_IUSE_GENERIC_UKI=1 + +inherit kernel-build toolchain-funcs verify-sig + +BASE_P=linux-${PV%.*} +# https://koji.fedoraproject.org/koji/packageinfo?packageID=8 +# forked to git.gentoo.org:fork/fedora/kernel +CONFIG_VER=6.18.12-gentoo +GENTOO_CONFIG_P=gentoo-kernel-config-g19 +SHA256SUM_DATE=20260911 +# Debian kconfig commit from: +# https://salsa.debian.org/kernel-team/linux/-/tree/debian/latest/debian/ +DEBIAN_COMMIT=b19b382f183d421a407f5d708dde1eff5009274d + +DESCRIPTION="Linux kernel built from vanilla upstream sources" +HOMEPAGE=" + https://wiki.gentoo.org/wiki/Project:Distribution_Kernel + https://www.kernel.org/ +" +SRC_URI+=" + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/${BASE_P}.tar.xz + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/patch-${PV}.xz + https://gitweb.gentoo.org/proj/dist-kernel/gentoo-kernel-config.git/snapshot/${GENTOO_CONFIG_P}.tar.bz2 + https://gitweb.gentoo.org/fork/fedora/kernel.git/snapshot/kernel-${CONFIG_VER}.tar.bz2 + https://salsa.debian.org/kernel-team/linux/-/archive/${DEBIAN_COMMIT}/linux-${DEBIAN_COMMIT}.tar.bz2 + verify-sig? ( + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/sha256sums.asc + -> linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc + ) +" +S=${WORKDIR}/${BASE_P} + +KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="debug hardened" +REQUIRED_USE=" + hppa? ( savedconfig ) +" + +BDEPEND=" + debug? ( dev-util/pahole ) + verify-sig? ( >=sec-keys/openpgp-keys-kernel-20250702 ) +" +PDEPEND=" + >=virtual/dist-kernel-${PV} +" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/kernel.org.asc + +QA_FLAGS_IGNORED=" + usr/src/linux-.*/scripts/gcc-plugins/.*.so + usr/src/linux-.*/vmlinux + usr/src/linux-.*/arch/powerpc/kernel/vdso.*/vdso.*.so.dbg +" + +src_unpack() { + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_signed_checksums \ + "linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc" \ + sha256 "${BASE_P}.tar.xz patch-${PV}.xz" + cd "${WORKDIR}" || die + fi + + default +} + +src_prepare() { + eapply "${WORKDIR}/patch-${PV}" + default + + local biendian=false + + # prepare the default config + case ${ARCH} in + hppa | mips) + > .config || die + ;; + alpha) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/alpha/config" \ + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/alpha/config.alpha-smp" + ) + ;; + amd64) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-x86_64-fedora.config" .config || die + ;; + arm) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/armhf/config" \ + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/armhf/config.armmp-lpae" + ) + ;; + arm64) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-aarch64-fedora.config" .config || die + biendian=true + ;; + loong) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/loong64/config" + ) + ;; + m68k) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/m68k/config" + ) + ;; + ppc) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/powerpc/config.powerpc" + ) + ;; + ppc64) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-ppc64le-fedora.config" .config || die + biendian=true + ;; + riscv) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-riscv64-fedora.config" .config || die + ;; + s390) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-s390x-fedora.config" .config || die + ;; + sparc) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/sparc64/config.sparc64" \ + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/sparc64/config.sparc64-smp" + ) + ;; + x86) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-i686-fedora.config" .config || die + ;; + *) + die "Unsupported arch ${ARCH}" + ;; + esac + + local myversion="-dist" + use hardened && myversion+="-hardened" + echo "CONFIG_LOCALVERSION=\"${myversion}\"" > "${T}"/version.config || die + local dist_conf_path="${WORKDIR}/${GENTOO_CONFIG_P}" + + local merge_configs=( + "${T}"/version.config + "${dist_conf_path}"/base.config + "${dist_conf_path}"/6.12+.config + ) + use debug || merge_configs+=( + "${dist_conf_path}"/no-debug.config + ) + if use hardened; then + merge_configs+=( "${dist_conf_path}"/hardened-base.config ) + + tc-is-gcc && merge_configs+=( "${dist_conf_path}"/hardened-gcc-plugins.config ) + + if [[ -f "${dist_conf_path}/hardened-${ARCH}.config" ]]; then + merge_configs+=( "${dist_conf_path}/hardened-${ARCH}.config" ) + fi + fi + + # this covers ppc64 and aarch64_be only for now + if [[ ${biendian} == true && $(tc-endian) == big ]]; then + merge_configs+=( "${dist_conf_path}/big-endian.config" ) + fi + + use secureboot && merge_configs+=( + "${dist_conf_path}/secureboot.config" + "${dist_conf_path}/zboot.config" + ) + + kernel-build_merge_configs "${merge_configs[@]}" +} diff --git a/sys-kernel/vanilla-kernel/vanilla-kernel-7.2.5.ebuild b/sys-kernel/vanilla-kernel/vanilla-kernel-7.2.5.ebuild new file mode 100644 index 000000000000..35e8090a395d --- /dev/null +++ b/sys-kernel/vanilla-kernel/vanilla-kernel-7.2.5.ebuild @@ -0,0 +1,182 @@ +# Copyright 2020-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +KERNEL_IUSE_GENERIC_UKI=1 + +inherit kernel-build toolchain-funcs verify-sig + +BASE_P=linux-${PV%.*} +# https://koji.fedoraproject.org/koji/packageinfo?packageID=8 +# forked to git.gentoo.org:fork/fedora/kernel +CONFIG_VER=7.2.2-gentoo +GENTOO_CONFIG_P=gentoo-kernel-config-g19 +SHA256SUM_DATE=20260911 +# Debian kconfig commit from: +# https://salsa.debian.org/kernel-team/linux/-/tree/debian/latest/debian/ +DEBIAN_COMMIT=31e70f1f469ef1ce4c910df1d12b7de09da561d1 + +DESCRIPTION="Linux kernel built from vanilla upstream sources" +HOMEPAGE=" + https://wiki.gentoo.org/wiki/Project:Distribution_Kernel + https://www.kernel.org/ +" +SRC_URI+=" + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/${BASE_P}.tar.xz + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/patch-${PV}.xz + https://gitweb.gentoo.org/proj/dist-kernel/gentoo-kernel-config.git/snapshot/${GENTOO_CONFIG_P}.tar.bz2 + https://gitweb.gentoo.org/fork/fedora/kernel.git/snapshot/kernel-${CONFIG_VER}.tar.bz2 + https://salsa.debian.org/kernel-team/linux/-/archive/${DEBIAN_COMMIT}/linux-${DEBIAN_COMMIT}.tar.bz2 + verify-sig? ( + https://cdn.kernel.org/pub/linux/kernel/v$(ver_cut 1).x/sha256sums.asc + -> linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc + ) +" +S=${WORKDIR}/${BASE_P} + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="debug hardened" +REQUIRED_USE=" + hppa? ( savedconfig ) + mips? ( savedconfig ) +" + +BDEPEND=" + debug? ( dev-util/pahole ) + verify-sig? ( >=sec-keys/openpgp-keys-kernel-20250702 ) +" +PDEPEND=" + >=virtual/dist-kernel-${PV} +" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/kernel.org.asc + +QA_FLAGS_IGNORED=" + usr/src/linux-.*/scripts/gcc-plugins/.*.so + usr/src/linux-.*/vmlinux + usr/src/linux-.*/arch/powerpc/kernel/vdso.*/vdso.*.so.dbg +" + +src_unpack() { + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_signed_checksums \ + "linux-$(ver_cut 1).x-sha256sums-${SHA256SUM_DATE}.asc" \ + sha256 "${BASE_P}.tar.xz patch-${PV}.xz" + cd "${WORKDIR}" || die + fi + + default +} + +src_prepare() { + eapply "${WORKDIR}/patch-${PV}" + default + + local biendian=false + + # prepare the default config + case ${ARCH} in + hppa | mips ) + > .config || die + ;; + alpha) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/alpha/config" \ + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/alpha/config.alpha-smp" + ) + ;; + arm) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/armhf/config" \ + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/armhf/config.armmp-lpae" + ) + ;; + amd64) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-x86_64-fedora.config" .config || die + ;; + arm64) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-aarch64-fedora.config" .config || die + biendian=true + ;; + loong) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/loong64/config" + ) + ;; + m68k) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/m68k/config" + ) + ;; + ppc) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/powerpc/config.powerpc" + ) + ;; + ppc64) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-ppc64le-fedora.config" .config || die + biendian=true + ;; + riscv) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-riscv64-fedora.config" .config || die + ;; + s390) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-s390x-fedora.config" .config || die + ;; + sparc) + cp "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/config" .config || die + merge_configs+=( + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/sparc64/config.sparc64" \ + "${WORKDIR}/linux-${DEBIAN_COMMIT}/debian/config/sparc64/config.sparc64-smp" + ) + ;; + x86) + cp "${WORKDIR}/kernel-${CONFIG_VER}/kernel-i686-fedora.config" .config || die + ;; + *) + die "Unsupported arch ${ARCH}" + ;; + esac + + local myversion="-dist" + use hardened && myversion+="-hardened" + echo "CONFIG_LOCALVERSION=\"${myversion}\"" > "${T}"/version.config || die + local dist_conf_path="${WORKDIR}/${GENTOO_CONFIG_P}" + + local merge_configs=( + "${T}"/version.config + "${dist_conf_path}"/base.config + "${dist_conf_path}"/6.12+.config + ) + use debug || merge_configs+=( + "${dist_conf_path}"/no-debug.config + ) + if use hardened; then + merge_configs+=( "${dist_conf_path}"/hardened-base.config ) + + tc-is-gcc && merge_configs+=( "${dist_conf_path}"/hardened-gcc-plugins.config ) + + if [[ -f "${dist_conf_path}/hardened-${ARCH}.config" ]]; then + merge_configs+=( "${dist_conf_path}/hardened-${ARCH}.config" ) + fi + fi + + # this covers ppc64 and aarch64_be only for now + if [[ ${biendian} == true && $(tc-endian) == big ]]; then + merge_configs+=( "${dist_conf_path}/big-endian.config" ) + fi + + use secureboot && merge_configs+=( + "${dist_conf_path}/secureboot.config" + "${dist_conf_path}/zboot.config" + ) + + kernel-build_merge_configs "${merge_configs[@]}" +} diff --git a/sys-kernel/vanilla-sources/Manifest b/sys-kernel/vanilla-sources/Manifest index 924b6572e2bd..2c885d9c53e3 100644 --- a/sys-kernel/vanilla-sources/Manifest +++ b/sys-kernel/vanilla-sources/Manifest @@ -6,7 +6,7 @@ DIST linux-7.1.tar.xz 158304768 BLAKE2B 5199b2057fd1b89f0275bdaff9d81035cf5e1e8e DIST linux-7.2.tar.xz 160068116 BLAKE2B cf5f3d87b96f223034c47c6e5fc972fe52c2556310eb2f064632537b8727231135a8540179fd5d51343738c8a51f51f09c7e8da374324b68551c84a4124bb71b SHA512 47e63679363261a864d271277340a6f2d45f544e1a056be4159df081f4f6537d0efa865c4af26611ab33a3079ee65db88ec2f6bc0e5fff43e0c043cde0cd91e1 DIST patch-6.1.187.xz 8109252 BLAKE2B 5ec497e8fc6f086140d425fd7b4ab122d8a579b4d7227711eb0c2493cbf03590e494de9ab1700a950eac3c962dba399c996d94aefe59fd9e6154f7ffb18618b8 SHA512 bc89dd895bbf1ad4900a1a044ca9858fab747c4b46758770426c9590d22d6048adaa08919563fc9b20e9f82ba99be9f99242d7845dcf9a2de707d48dd2de9fa1 DIST patch-6.12.109.xz 5753324 BLAKE2B 9ddaebf8cb9e93e79ccf02efd4e65e8892ff751e3e660f00f8032c42ac275d72ba4aac1d61b8f628a52c064a5bc54c34d05a9510b6a9c9d90f79097c4f7e41c8 SHA512 bede54fa2db04d3bcb4b1e30369a897135a8fa6637b339a94e21cd6e198f1404109bb52626bdb3f88406e002c6f4430de8e05fc20bfeec37bc4ef434120e707f -DIST patch-6.18.50.xz 3404240 BLAKE2B 3b7794114d37bf1f5f0c95b5b6f44aa33c00096a162dcb6fc48006e22871d2f731626f8759f54bc30cddb8561d75896e0546124e5b11b9e6332ea121d55eb164 SHA512 2ebefa6d5c0102130ecc8445e58e674e581568b728e4b40e1dfdfa3039a10c9d1af533b2b95d3b56ae30a056838af7bfe58f78c1642c56e3db14a3c1228ffe75 +DIST patch-6.18.51.xz 3545252 BLAKE2B 1636bb5b2dfab15f9bafeb215f925acdb5c7df0fc544d7787ffbe76cd1efcaff7cb99d925e39997e7cff37266192dd07ad3d7de3a8a845a907de9d5cf72b2dcc SHA512 c5022b7b718093b791237599a00565bf37f7e6d256e136c88ddc9508163cea5993bb22cfbbf928c3604e12ecb76d7e2ce814a3634d5a65e7c84825eb4e773f9d DIST patch-6.6.156.xz 6914532 BLAKE2B 95bda8ed3689d35c3bb5410f3c33b80097f78b038d343c33df3699dfb9d216215560411b939f2c6e8cba8990aa1169e914617d2432e14674484bbcac0b47d175 SHA512 de670a00152147ff05f19a5d519917bf522dfe40b3b88619e76dc768ffbf8d4609ba761c600c9441521de6254f87a6a2cf6162218ae90b1e75d7f5825c5dda10 DIST patch-7.1.13.xz 1427684 BLAKE2B 6c80c845eee5e6b231aab8b3675eb25dee0a1257b1138501634af31d4aead57102794d155dc012498b424e523d6a472e3ca7aead4a7573aaa4e30ef1e27f7784 SHA512 b858b8594d0bb2b401a947d1c3bd3d25e4d2c07b6e07b5585a8fd84011fbca4c23f3f0424dd74a338358dc42aa53eef2d88205e1b4ddcdc8abe382b922f8d461 -DIST patch-7.2.4.xz 281532 BLAKE2B f8bc83a92f50b064328727d28d0bb06f660e9b0fe4ccea980a81804776040ce6e7c2d71dd01656dc5a833d53f0e80ec4af91c78df37d20b4f4118673af26708b SHA512 e5b244c7b7c652d55114e4f440be7ac8eca617bbcc704ce9528bdfd793934449c6fdca3424d8e17ef6b6c053952c2aec860e34701d2b6ff9a2d09b1e52d76773 +DIST patch-7.2.5.xz 425448 BLAKE2B ee8ab8753089280cbd9afc0e424a84099e4a88b95c383618a18e009712a5862e8f2b72c90a9737197fdd2fd5c844d8fd9083319c053e9065cbc769d1253e3d16 SHA512 60af2204eddf616e3e31cd4e5f6043afab3956443da3221b9048f1e2ed7a539ae5b69bdd0ea9a664938158d099c8d2648ef66a86763305ceb7a4db8286438fbb diff --git a/sys-kernel/vanilla-sources/vanilla-sources-6.18.50.ebuild b/sys-kernel/vanilla-sources/vanilla-sources-6.18.51.ebuild index fad89ec105d7..99d9dcaf656f 100644 --- a/sys-kernel/vanilla-sources/vanilla-sources-6.18.50.ebuild +++ b/sys-kernel/vanilla-sources/vanilla-sources-6.18.51.ebuild @@ -2,6 +2,7 @@ # Distributed under the terms of the GNU General Public License v2 EAPI="8" + K_NOUSENAME="yes" K_NOSETEXTRAVERSION="yes" K_SECURITY_UNSUPPORTED="1" diff --git a/sys-kernel/vanilla-sources/vanilla-sources-7.2.4.ebuild b/sys-kernel/vanilla-sources/vanilla-sources-7.2.5.ebuild index fad89ec105d7..99d9dcaf656f 100644 --- a/sys-kernel/vanilla-sources/vanilla-sources-7.2.4.ebuild +++ b/sys-kernel/vanilla-sources/vanilla-sources-7.2.5.ebuild @@ -2,6 +2,7 @@ # Distributed under the terms of the GNU General Public License v2 EAPI="8" + K_NOUSENAME="yes" K_NOSETEXTRAVERSION="yes" K_SECURITY_UNSUPPORTED="1" diff --git a/virtual/dist-kernel/dist-kernel-6.18.51.ebuild b/virtual/dist-kernel/dist-kernel-6.18.51.ebuild new file mode 100644 index 000000000000..3e0fb5394edd --- /dev/null +++ b/virtual/dist-kernel/dist-kernel-6.18.51.ebuild @@ -0,0 +1,16 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Virtual to depend on any Distribution Kernel" +SLOT="0/${PVR}" +KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + +RDEPEND=" + || ( + ~sys-kernel/gentoo-kernel-${PV} + ~sys-kernel/gentoo-kernel-bin-${PV} + ~sys-kernel/vanilla-kernel-${PV%_p*} + ) +" diff --git a/virtual/dist-kernel/dist-kernel-7.2.5.ebuild b/virtual/dist-kernel/dist-kernel-7.2.5.ebuild new file mode 100644 index 000000000000..c6e96ed25616 --- /dev/null +++ b/virtual/dist-kernel/dist-kernel-7.2.5.ebuild @@ -0,0 +1,17 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Virtual to depend on any Distribution Kernel" +SLOT="0/${PVR}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + +RDEPEND=" + || ( + ~sys-kernel/gentoo-kernel-${PV} + ~sys-kernel/gentoo-kernel-bin-${PV} + ~sys-kernel/vanilla-kernel-${PV%_p*} + ~sys-kernel/gentoo-kernel-modprep-${PV} + ) +" diff --git a/www-apps/nextcloud-notify_push/Manifest b/www-apps/nextcloud-notify_push/Manifest index ee28f7779964..b0d0b93d7d52 100644 --- a/www-apps/nextcloud-notify_push/Manifest +++ b/www-apps/nextcloud-notify_push/Manifest @@ -1,2 +1,2 @@ -DIST nextcloud-notify_push-1.3.3-crates.tar.xz 34298112 BLAKE2B f90febe34992105af61019a555f75f4645e887ac18a2217846570b64d955b66b38e19f583be5e8a6a6414ceb38e868508ac87bfa2b1212990c6de70f48046b9d SHA512 9dbb88acd192af1d92a3d47d735836f3dfd157ee754add992e026b46caf30d477dcc6987540c666d874285e4a3cc026a5bfc69bfbc2100edfa18e2833fcdfb8f -DIST nextcloud-notify_push-1.3.3.tar.gz 142683 BLAKE2B 4ebbdf6b6df1ff2664528e12847ccffbccfbc9c37c385e1e1e6cbcc45ba3121e108197dd3fc61eb4d0959ce32ae441ba987705715b3d4d11cf172b1f470847d3 SHA512 113dbe604ae42edb32a00ff4d45213baeaedf897a310d2ffea42ad7837162c21ee98ce6da5759333863b7542510b7bc23cf72edc7db48575fcb8ec2b099b27ff +DIST nextcloud-notify_push-1.4.0-crates.tar.xz 30946408 BLAKE2B 14954e573cfadcda53d1b2dce0825dae2479066df828f591bdddd92ce2beb7b4e25ecc4971a0730c3cec5b3d96e2554970090d2ed5330e8482a92713ec50e04e SHA512 27d202574443f7db86c7963b4174cf8822a7c672710f5919163933bb8298797e7efdc159ea5489a638ef40c3a2a28a791717fc6777f1ff2230ef1a6ff3d39799 +DIST nextcloud-notify_push-1.4.0.tar.gz 145466 BLAKE2B 834bd774752457a28d121384f55746a9c43e07d829e5550830acc3ea12fd8578d269791479acc1f39dae40e581dde763e1a47f111dcedca4e2a6204ab8487479 SHA512 8d7263a1097e29ffbc4dfcf07ab838b257105bf1b60334382e72b913c4bb014ff512ba9e8bc7e633b0ac8b8cca987e8007c7ed2f9602e63f986d549819e14e41 diff --git a/www-apps/nextcloud-notify_push/nextcloud-notify_push-1.3.3.ebuild b/www-apps/nextcloud-notify_push/nextcloud-notify_push-1.4.0.ebuild index 562ae7b8ee17..a1fdc664a100 100644 --- a/www-apps/nextcloud-notify_push/nextcloud-notify_push-1.3.3.ebuild +++ b/www-apps/nextcloud-notify_push/nextcloud-notify_push-1.4.0.ebuild @@ -3,9 +3,9 @@ EAPI=8 -RUST_MIN_VER="1.88.0" +RUST_MIN_VER="1.94.0" CRATES="" -inherit eapi9-ver cargo systemd +inherit cargo systemd DESCRIPTION="Push daemon for Nextcloud clients" HOMEPAGE="https://github.com/nextcloud/notify_push" @@ -41,7 +41,7 @@ src_install() { newconfd "${FILESDIR}/${PN}-r1.confd" "${PN}" newinitd "${FILESDIR}/${PN}-r2.init" "${PN}" systemd_newunit "${FILESDIR}/${PN}.service-r1" "${PN}.service" - systemd_install_serviced "${FILESDIR}/${PN}.service.conf" "${PN}" + #systemd_install_serviced "${FILESDIR}/${PN}.service.conf" "${PN}" # restrict access because conf.d entry could contain # database credentials @@ -49,12 +49,22 @@ src_install() { } pkg_postinst() { - if ver_replacing -lt "0.6.6"; then - ewarn "You are upgrading to ${PVR}" - ewarn "The systemd unit file for nextcloud-notify_push no longer sources ${EPREFIX}/etc/conf.d/nextcloud-notify_push ." - ewarn "Configuration is still done via ${EPREFIX}/etc/conf.d/nextcloud-notify_push for OpenRC systems" - ewarn "while for systemd systems, a systemd drop-in file located at" - ewarn "${EPREFIX}/etc/systemd/system/nextcloud-notify_push.d/00gentoo.conf" - ewarn "is used for configuration." + if has_version sys-apps/systemd; then + elog "Configure nextcloud-notify_push before you start the service:" + elog + elog "systemctl edit --drop-in=nextcloud nextcloud-notify_push.service" + elog + elog "add a section [Service], add the path to the nextcloud config file" + elog "as well as the user and group your webserver runs as (apache, nginx)." + elog + elog "Exapmle:" + elog "[Service]" + elog 'Environment=NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE="/var/www/cloud.example.com/htdocs/config/config.php' + elog "User=apache" + elog "Group=apache" + elog + elog "If you need options for the notify_push process, you can override ExecStart. Just add (adjust to your needs):" + elog "ExecStart=" + elog "ExecStart=/usr/bin/nextcloud-notify_push $NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE --bind 127.0.0.1 --nextcloud-url https://cloud.example.com" fi } diff --git a/x11-misc/safeeyes/Manifest b/x11-misc/safeeyes/Manifest index 47b47ff9df58..a4b38e8a8b4d 100644 --- a/x11-misc/safeeyes/Manifest +++ b/x11-misc/safeeyes/Manifest @@ -1,8 +1,2 @@ -DIST safeeyes-3.2.0.tar.gz 337410 BLAKE2B 065e25cd71719d62715fecbd76ae879f54e77fa720ff17937f72e2b6ff296348e7deb4837ae0a610bb4d8a9069e5aba560115a169acd96ac76154d39c2955308 SHA512 b1c1b31be23832481e3b9ef11b869183e395ef5c2d610338e42bc5731de687726c48d1afa69e52f414b36833a2c1fa34f9fb8357eec92a325a99a3f81874b3ae -DIST safeeyes-3.3.0.tar.gz 339320 BLAKE2B f88d5c55e96b674779d7fe995d83b072dc1b96a4132c4219f8ca9026c1e59d73bf35e2e62f90f8673dc4a4afea4f2df5f79058405e33d209ea6b1dd7e368d51f SHA512 6b34428248127adf8cccb875b07934dd6449f827d02e2aae8edca64b5bf291258f54b7fedaf96a26520fa3907f815a87356210700d882d5b859667387e154070 -DIST safeeyes-3.3.1.tar.gz 339707 BLAKE2B d0d0c5e4352223860583fa918e39cd26b2591f5ef49ecc992fcb425ad5e2f2391223b1fcc8520d0ec71b1914ab3bcd8d9cd0a72841d0970d31d14837758768fa SHA512 2a57b7ff6894e8ab9a405484e6611758b2d6191c49f618b51257e944f46903d31bee38bfc42b3adf084bc7219e9b35852c70edfee4aee4ad16be67c3b6f4c0ac -DIST safeeyes-3.3.2.tar.gz 341290 BLAKE2B 672c7976fa9033d7bb34e9f5263435b8928aa9568852e6ca263e6da72de3aa98a054377fca06b59689b0c57a67429d61a77570eb239b75e70e0680dad7dbb549 SHA512 e4beea0f556adfe18afe85697154398cc672de0d5f9a1011af82b9edea51ad8a56c94e8306b0f7f7b50c3fa33eb5a97d4576785b6bb938df57be0c01135f86eb -DIST safeeyes-3.3.3.tar.gz 342099 BLAKE2B 1f152b0c349e1317ebac543b19cc7ce4a0cf8f6d7d4a0ab46ee389333b2a3439f59eb8b633a740ec309bb68f3cc04f727f9082b55e29396330ae4be1cbed29e5 SHA512 7cfdb22629a375fbeeacfb8fa3094f079de76e751516a6448b28d49f553b616deae7e6b6e509630c5d648ea7bd2be2cde73a04bac1eb2e28c4286abddfa2ef0a -DIST safeeyes-3.4.0.tar.gz 342845 BLAKE2B b8040ff1016d8c6145971144ee33a730ec0ade8164a533474908fe5caf84f44331e6bf8f08a809d85620e0c89f2c2f68edfe9be171f15ed41a4cf45c31043b5c SHA512 654849c9b8925788c2fda9d275c0381c25a6cb6c434aaea4a1d2e4c65e6012b0c09536431be7294e7a63c9527336fe25d4ebcd0734be04c054805bef2d9c2eda -DIST safeeyes-3.4.1.tar.gz 344269 BLAKE2B 9d3b941e50ac18922a5621f94c4a0c386814760abea6698e0c34bd4dd4f707bdb68c2689db1de1805befa129a15cb48dc04c360e3888d9159fb633418c734e93 SHA512 8c3963f3c4a60c099bc7901fa3d81a6410df985d35b3a4f700d1febe963362f6481ae3123ec1b771b3d1e5b11ef6726820e36b206e3f2ecae8740d09e6eb587a DIST safeeyes-3.5.0.tar.gz 348967 BLAKE2B f0bcf5cc93f5b3d47bb192dc3274f43408ed20730d2cd6fe2a25200d4efe735775c5373c7aeda37982dab083c4fe1a74745670583e59580a5f04524fc797a961 SHA512 8ba1068825eec9d62afe3a6c519c0a77b2b255734ff4380e9c8e489d9aabf566c75c169dbcd3a42bdc3e8b4f022d76145ab0c16ee01f00e9acee64e73b197e7c +DIST safeeyes-3.5.1.tar.gz 351880 BLAKE2B a892333b52ef09618923758a2d24ce797d8a00645935fd86655ebba2456c1948c5bd3cbbf1dbf75d722045d85956dfaab68494e3990cdaca09dfcccadfa1ea89 SHA512 b3380195659fc6afdde53f1c5eee3636426a10ca86ee593677a861b16c744b3e3cfe2c122a8cf0da0818f972d8987bd7a7c6f59391fe3cae05b62bf3a5c4c3ab diff --git a/x11-misc/safeeyes/safeeyes-3.2.0.ebuild b/x11-misc/safeeyes/safeeyes-3.2.0.ebuild deleted file mode 100644 index cbb238136b6c..000000000000 --- a/x11-misc/safeeyes/safeeyes-3.2.0.ebuild +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{13..14} ) -PYTHON_REQ_USE="tk" # for site-packages/Xlib/ext/randr.py -DISTUTILS_USE_PEP517=setuptools - -inherit desktop xdg distutils-r1 pypi - -DESCRIPTION="Linux alternative to EyeLeo" -HOMEPAGE="https://github.com/slgobinath/safeeyes" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64 ~riscv ~x86" - -RDEPEND=" - gui-libs/gtk:4[introspection] - dev-libs/libayatana-appindicator - dev-python/babel[${PYTHON_USEDEP}] - dev-python/croniter[${PYTHON_USEDEP}] - dev-python/packaging[${PYTHON_USEDEP}] - dev-python/pygobject:3[${PYTHON_USEDEP}] - dev-python/python-xlib[${PYTHON_USEDEP}] - media-sound/alsa-utils - x11-apps/xprop - x11-libs/gtk+:3[introspection] - x11-libs/libnotify[introspection] - x11-misc/xprintidle - " - -python_install() { - distutils-r1_python_install - - insinto /usr/share/icons/ - doins -r safeeyes/platform/icons/hicolor - - domenu safeeyes/platform/io.github.slgobinath.SafeEyes.desktop || die -} - -pkg_postinst() { - xdg_desktop_database_update - xdg_icon_cache_update -} - -pkg_postrm() { - xdg_desktop_database_update - xdg_icon_cache_update -} diff --git a/x11-misc/safeeyes/safeeyes-3.3.0.ebuild b/x11-misc/safeeyes/safeeyes-3.3.0.ebuild deleted file mode 100644 index cbb238136b6c..000000000000 --- a/x11-misc/safeeyes/safeeyes-3.3.0.ebuild +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{13..14} ) -PYTHON_REQ_USE="tk" # for site-packages/Xlib/ext/randr.py -DISTUTILS_USE_PEP517=setuptools - -inherit desktop xdg distutils-r1 pypi - -DESCRIPTION="Linux alternative to EyeLeo" -HOMEPAGE="https://github.com/slgobinath/safeeyes" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64 ~riscv ~x86" - -RDEPEND=" - gui-libs/gtk:4[introspection] - dev-libs/libayatana-appindicator - dev-python/babel[${PYTHON_USEDEP}] - dev-python/croniter[${PYTHON_USEDEP}] - dev-python/packaging[${PYTHON_USEDEP}] - dev-python/pygobject:3[${PYTHON_USEDEP}] - dev-python/python-xlib[${PYTHON_USEDEP}] - media-sound/alsa-utils - x11-apps/xprop - x11-libs/gtk+:3[introspection] - x11-libs/libnotify[introspection] - x11-misc/xprintidle - " - -python_install() { - distutils-r1_python_install - - insinto /usr/share/icons/ - doins -r safeeyes/platform/icons/hicolor - - domenu safeeyes/platform/io.github.slgobinath.SafeEyes.desktop || die -} - -pkg_postinst() { - xdg_desktop_database_update - xdg_icon_cache_update -} - -pkg_postrm() { - xdg_desktop_database_update - xdg_icon_cache_update -} diff --git a/x11-misc/safeeyes/safeeyes-3.3.1.ebuild b/x11-misc/safeeyes/safeeyes-3.3.1.ebuild deleted file mode 100644 index c68ae920800f..000000000000 --- a/x11-misc/safeeyes/safeeyes-3.3.1.ebuild +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{13..14} ) -PYTHON_REQ_USE="tk" # for site-packages/Xlib/ext/randr.py -DISTUTILS_USE_PEP517=setuptools - -inherit desktop xdg distutils-r1 pypi - -DESCRIPTION="Linux alternative to EyeLeo" -HOMEPAGE="https://github.com/slgobinath/safeeyes" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64 ~riscv ~x86" - -RDEPEND=" - gui-libs/gtk:4[introspection] - dev-libs/libayatana-appindicator - dev-python/babel[${PYTHON_USEDEP}] - dev-python/croniter[${PYTHON_USEDEP}] - dev-python/packaging[${PYTHON_USEDEP}] - dev-python/pygobject:3[${PYTHON_USEDEP}] - dev-python/python-xlib[${PYTHON_USEDEP}] - media-sound/alsa-utils - x11-apps/xprop - x11-libs/gtk+:3[introspection] - x11-libs/libnotify[introspection] - x11-misc/xprintidle - " - -python_install() { - distutils-r1_python_install - - insinto /usr/share/icons/ - doins -r safeeyes/platform/icons/hicolor - - domenu safeeyes/platform/io.github.slgobinath.SafeEyes.desktop || die -} - -pkg_postinst() { - xdg_desktop_database_update - xdg_icon_cache_update -} - -pkg_postrm() { - xdg_desktop_database_update - xdg_icon_cache_update -} diff --git a/x11-misc/safeeyes/safeeyes-3.3.2.ebuild b/x11-misc/safeeyes/safeeyes-3.3.2.ebuild deleted file mode 100644 index c68ae920800f..000000000000 --- a/x11-misc/safeeyes/safeeyes-3.3.2.ebuild +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{13..14} ) -PYTHON_REQ_USE="tk" # for site-packages/Xlib/ext/randr.py -DISTUTILS_USE_PEP517=setuptools - -inherit desktop xdg distutils-r1 pypi - -DESCRIPTION="Linux alternative to EyeLeo" -HOMEPAGE="https://github.com/slgobinath/safeeyes" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64 ~riscv ~x86" - -RDEPEND=" - gui-libs/gtk:4[introspection] - dev-libs/libayatana-appindicator - dev-python/babel[${PYTHON_USEDEP}] - dev-python/croniter[${PYTHON_USEDEP}] - dev-python/packaging[${PYTHON_USEDEP}] - dev-python/pygobject:3[${PYTHON_USEDEP}] - dev-python/python-xlib[${PYTHON_USEDEP}] - media-sound/alsa-utils - x11-apps/xprop - x11-libs/gtk+:3[introspection] - x11-libs/libnotify[introspection] - x11-misc/xprintidle - " - -python_install() { - distutils-r1_python_install - - insinto /usr/share/icons/ - doins -r safeeyes/platform/icons/hicolor - - domenu safeeyes/platform/io.github.slgobinath.SafeEyes.desktop || die -} - -pkg_postinst() { - xdg_desktop_database_update - xdg_icon_cache_update -} - -pkg_postrm() { - xdg_desktop_database_update - xdg_icon_cache_update -} diff --git a/x11-misc/safeeyes/safeeyes-3.3.3.ebuild b/x11-misc/safeeyes/safeeyes-3.3.3.ebuild deleted file mode 100644 index c68ae920800f..000000000000 --- a/x11-misc/safeeyes/safeeyes-3.3.3.ebuild +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{13..14} ) -PYTHON_REQ_USE="tk" # for site-packages/Xlib/ext/randr.py -DISTUTILS_USE_PEP517=setuptools - -inherit desktop xdg distutils-r1 pypi - -DESCRIPTION="Linux alternative to EyeLeo" -HOMEPAGE="https://github.com/slgobinath/safeeyes" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64 ~riscv ~x86" - -RDEPEND=" - gui-libs/gtk:4[introspection] - dev-libs/libayatana-appindicator - dev-python/babel[${PYTHON_USEDEP}] - dev-python/croniter[${PYTHON_USEDEP}] - dev-python/packaging[${PYTHON_USEDEP}] - dev-python/pygobject:3[${PYTHON_USEDEP}] - dev-python/python-xlib[${PYTHON_USEDEP}] - media-sound/alsa-utils - x11-apps/xprop - x11-libs/gtk+:3[introspection] - x11-libs/libnotify[introspection] - x11-misc/xprintidle - " - -python_install() { - distutils-r1_python_install - - insinto /usr/share/icons/ - doins -r safeeyes/platform/icons/hicolor - - domenu safeeyes/platform/io.github.slgobinath.SafeEyes.desktop || die -} - -pkg_postinst() { - xdg_desktop_database_update - xdg_icon_cache_update -} - -pkg_postrm() { - xdg_desktop_database_update - xdg_icon_cache_update -} diff --git a/x11-misc/safeeyes/safeeyes-3.4.0.ebuild b/x11-misc/safeeyes/safeeyes-3.4.0.ebuild deleted file mode 100644 index c68ae920800f..000000000000 --- a/x11-misc/safeeyes/safeeyes-3.4.0.ebuild +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{13..14} ) -PYTHON_REQ_USE="tk" # for site-packages/Xlib/ext/randr.py -DISTUTILS_USE_PEP517=setuptools - -inherit desktop xdg distutils-r1 pypi - -DESCRIPTION="Linux alternative to EyeLeo" -HOMEPAGE="https://github.com/slgobinath/safeeyes" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64 ~riscv ~x86" - -RDEPEND=" - gui-libs/gtk:4[introspection] - dev-libs/libayatana-appindicator - dev-python/babel[${PYTHON_USEDEP}] - dev-python/croniter[${PYTHON_USEDEP}] - dev-python/packaging[${PYTHON_USEDEP}] - dev-python/pygobject:3[${PYTHON_USEDEP}] - dev-python/python-xlib[${PYTHON_USEDEP}] - media-sound/alsa-utils - x11-apps/xprop - x11-libs/gtk+:3[introspection] - x11-libs/libnotify[introspection] - x11-misc/xprintidle - " - -python_install() { - distutils-r1_python_install - - insinto /usr/share/icons/ - doins -r safeeyes/platform/icons/hicolor - - domenu safeeyes/platform/io.github.slgobinath.SafeEyes.desktop || die -} - -pkg_postinst() { - xdg_desktop_database_update - xdg_icon_cache_update -} - -pkg_postrm() { - xdg_desktop_database_update - xdg_icon_cache_update -} diff --git a/x11-misc/safeeyes/safeeyes-3.4.1.ebuild b/x11-misc/safeeyes/safeeyes-3.4.1.ebuild deleted file mode 100644 index c68ae920800f..000000000000 --- a/x11-misc/safeeyes/safeeyes-3.4.1.ebuild +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{13..14} ) -PYTHON_REQ_USE="tk" # for site-packages/Xlib/ext/randr.py -DISTUTILS_USE_PEP517=setuptools - -inherit desktop xdg distutils-r1 pypi - -DESCRIPTION="Linux alternative to EyeLeo" -HOMEPAGE="https://github.com/slgobinath/safeeyes" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64 ~riscv ~x86" - -RDEPEND=" - gui-libs/gtk:4[introspection] - dev-libs/libayatana-appindicator - dev-python/babel[${PYTHON_USEDEP}] - dev-python/croniter[${PYTHON_USEDEP}] - dev-python/packaging[${PYTHON_USEDEP}] - dev-python/pygobject:3[${PYTHON_USEDEP}] - dev-python/python-xlib[${PYTHON_USEDEP}] - media-sound/alsa-utils - x11-apps/xprop - x11-libs/gtk+:3[introspection] - x11-libs/libnotify[introspection] - x11-misc/xprintidle - " - -python_install() { - distutils-r1_python_install - - insinto /usr/share/icons/ - doins -r safeeyes/platform/icons/hicolor - - domenu safeeyes/platform/io.github.slgobinath.SafeEyes.desktop || die -} - -pkg_postinst() { - xdg_desktop_database_update - xdg_icon_cache_update -} - -pkg_postrm() { - xdg_desktop_database_update - xdg_icon_cache_update -} diff --git a/x11-misc/safeeyes/safeeyes-3.3.0-r1.ebuild b/x11-misc/safeeyes/safeeyes-3.5.1.ebuild index c68ae920800f..c68ae920800f 100644 --- a/x11-misc/safeeyes/safeeyes-3.3.0-r1.ebuild +++ b/x11-misc/safeeyes/safeeyes-3.5.1.ebuild diff --git a/x11-misc/stalonetray/Manifest b/x11-misc/stalonetray/Manifest index cb3e07b9da5a..d3ace296740c 100644 --- a/x11-misc/stalonetray/Manifest +++ b/x11-misc/stalonetray/Manifest @@ -1,3 +1,5 @@ DIST stalonetray-0.8.5.tar.gz 102899 BLAKE2B abf70916cb762041c5eaaa3faaa3e96a89f0aa31bd72f285209bb29cc5138f2517d1fa00fda1c39da5ca12028b2e78a813fd15d62dfe7c6d312da52559eb3a2d SHA512 7fe1c2fcc5de06b89f4a5c182baeb0a98f0328ae6bf03a79e76c4af7ee4d86cd8f6967ec8b0123a831998cb075ef2b2f6bc6478bde0b73883fe37d2bd6a471d3 DIST stalonetray-1.0.1.tar.xz 82624 BLAKE2B 8bd906e56da50239898db266e2fe8da55263a4ca3e0fd911b00caece8a1945200bad96e5b2a517f36e4246e66c5bb7a1b089446ab462e5455cf70318011b9d96 SHA512 95742cf870dca3da9273d9fc59fd57181f2e2c3412055d6a2838e622cba7062acc30dd64c4f08da44a8931f1e48625de8717ab8be1e859c3385b304cba16cb9a DIST stalonetray-1.3.0.tar.xz 92396 BLAKE2B 355e9ffc25e992475707b0845daf77b6f453543263695c7019513d8d4333ece0557a4744ca0740e2b1634a455f46e81a6f5ab37522a865f055e46e1e855148c9 SHA512 7906b3b743fbf44c4654e038c51c5762228647981a32293fa426f5193a200c8053b5a40e3163bba99b726f8ffffc0cc68a790da15829700b54bd5e3b2bd0080d +DIST stalonetray-1.4.0.tar.xz 101076 BLAKE2B a84b762f5fb1b1abbc3082d4c5fa5eb41c47bdafeb84d62997e40d1b8a450a242887fea0e742f2216b86213e4b3fcd61005f07bcab4ec9591381d7893e48407d SHA512 ecc1958390f8e13fd374f1b299a16686b2a96574fefdf0f754fe16a2902292076aa4e653f1f612b2c798b5d81a6e372137dafe83d08f1ef497c82a3cfcec399f +DIST stalonetray-1.5.0.tar.xz 101876 BLAKE2B 0e534d47d5c5edc0a24e7c391c667cb8d37a06105d2b6743c31566c7738e70ea4d20036570ce9d0ebc1849ef3ad551bdbf6b87fce4a62b2316e1ed7a037c13f5 SHA512 43590fa90012780707e852dbdefcd33159ee2229fc05db513a445e2f0222075b21cf2c71d16d74bd0ec489ddd9cfca1201d2bbe33660e46faf6be2797d0b0917 diff --git a/x11-misc/stalonetray/stalonetray-1.4.0.ebuild b/x11-misc/stalonetray/stalonetray-1.4.0.ebuild new file mode 100644 index 000000000000..0382269e2dd6 --- /dev/null +++ b/x11-misc/stalonetray/stalonetray-1.4.0.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit meson + +DESCRIPTION="System tray utility including support for KDE system tray icons" +HOMEPAGE="https://d3adb5.github.io/stalonetray/index.html" +LICENSE="GPL-2" + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/d3adb5/stalonetray.git" +else + KEYWORDS="~amd64 ~riscv ~x86" + SRC_URI="https://github.com/d3adb5/${PN}/releases/download/${PV}/${P}.tar.xz" +fi + +SLOT="0" +IUSE="debug +graceful-exit kde +xinerama +xpm +xrandr" + +RDEPEND="x11-libs/libX11 + xinerama? ( x11-libs/libXinerama ) + xpm? ( x11-libs/libXpm )" +DEPEND="${RDEPEND} + x11-base/xorg-proto" +BDEPEND="app-text/docbook-xml-dtd + dev-libs/libxslt" + +REQUIRED_USE="xrandr? ( xinerama )" + +DOCS=( AUTHORS README.md stalonetrayrc.sample ) + +src_configure() { + meson_src_configure \ + $(meson_use debug dump_window_information) \ + $(meson_use debug trace_events) \ + $(meson_use graceful-exit exit_gracefully) \ + $(meson_feature kde native_kde) \ + $(meson_feature xinerama) \ + $(meson_feature xpm) \ + $(meson_feature xrandr randr) +} diff --git a/x11-misc/stalonetray/stalonetray-1.5.0.ebuild b/x11-misc/stalonetray/stalonetray-1.5.0.ebuild new file mode 100644 index 000000000000..0382269e2dd6 --- /dev/null +++ b/x11-misc/stalonetray/stalonetray-1.5.0.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit meson + +DESCRIPTION="System tray utility including support for KDE system tray icons" +HOMEPAGE="https://d3adb5.github.io/stalonetray/index.html" +LICENSE="GPL-2" + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/d3adb5/stalonetray.git" +else + KEYWORDS="~amd64 ~riscv ~x86" + SRC_URI="https://github.com/d3adb5/${PN}/releases/download/${PV}/${P}.tar.xz" +fi + +SLOT="0" +IUSE="debug +graceful-exit kde +xinerama +xpm +xrandr" + +RDEPEND="x11-libs/libX11 + xinerama? ( x11-libs/libXinerama ) + xpm? ( x11-libs/libXpm )" +DEPEND="${RDEPEND} + x11-base/xorg-proto" +BDEPEND="app-text/docbook-xml-dtd + dev-libs/libxslt" + +REQUIRED_USE="xrandr? ( xinerama )" + +DOCS=( AUTHORS README.md stalonetrayrc.sample ) + +src_configure() { + meson_src_configure \ + $(meson_use debug dump_window_information) \ + $(meson_use debug trace_events) \ + $(meson_use graceful-exit exit_gracefully) \ + $(meson_feature kde native_kde) \ + $(meson_feature xinerama) \ + $(meson_feature xpm) \ + $(meson_feature xrandr randr) +} diff --git a/x11-misc/xtermcontrol/Manifest b/x11-misc/xtermcontrol/Manifest index 9aa30ede4142..e2a6a607859d 100644 --- a/x11-misc/xtermcontrol/Manifest +++ b/x11-misc/xtermcontrol/Manifest @@ -1 +1,2 @@ DIST xtermcontrol-3.10.tar.gz 187902 BLAKE2B 781ae40aa17cc57e9ac52544e1d04282a04024a489881577bbbcb782155612f9504eb58d4e80050535ac286180327a1469c5049d701f431d3f93557e5c29d509 SHA512 a7d4b3d5e7f9e7cd0c7a85c11584528d73507d258d3c48b832e2f842c88967d40a867c4ea75503dfd5288949992a6f6ead2a9fd73e9695c490e2935a133a92d2 +DIST xtermcontrol-3.11.tar.gz 184443 BLAKE2B 237957c0a16dc840f6c4a5b56b61990848b7b56bab3133f77cd45b891d338cd56279b36e83dce0d41c6527cffe2958a80968645cda023a307a469fd5acb7f1e2 SHA512 5f3b39c35bae05bb9bdbc3c74604607df050354ccd73554a69a4501b69ad0ce8e588d2ea4f037fa2f74d2312bd354a0aaacdd4600f015bb19ca8df896d342e4c diff --git a/x11-misc/xtermcontrol/xtermcontrol-3.11.ebuild b/x11-misc/xtermcontrol/xtermcontrol-3.11.ebuild new file mode 100644 index 000000000000..55c7baf4684b --- /dev/null +++ b/x11-misc/xtermcontrol/xtermcontrol-3.11.ebuild @@ -0,0 +1,12 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="xtermcontrol enables dynamic control of XFree86 xterm properties" +HOMEPAGE="https://www.thrysoee.dk/xtermcontrol/" +SRC_URI="https://www.thrysoee.dk/${PN}/${P}.tar.gz" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~ppc ~sparc ~x86" |
