Merge pull request #6128 from SupervisedThinking/up_wayland

[le11] Wayland improvements - Sway & Nvidia
This commit is contained in:
CvH 2022-02-03 11:18:48 +01:00 committed by GitHub
commit f4fab12465
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
49 changed files with 1587 additions and 161 deletions

View File

@ -34,7 +34,7 @@ get_graphicdrivers() {
V4L2_SUPPORT="no"
if [ "${GRAPHIC_DRIVERS}" = "all" ]; then
GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi nvidia nvidia-legacy vmware virtio vc4"
GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi nvidia nvidia-legacy nvidia-ng vmware virtio vc4"
fi
if listcontains "${GRAPHIC_DRIVERS}" "crocus"; then
@ -93,6 +93,11 @@ get_graphicdrivers() {
VDPAU_SUPPORT="yes"
fi
if listcontains "${GRAPHIC_DRIVERS}" "nvidia-ng"; then
VULKAN_DRIVERS_CONFIG+=" nvidia-ng"
VAAPI_SUPPORT="yes"
fi
if listcontains "${GRAPHIC_DRIVERS}" "panfrost"; then
GALLIUM_DRIVERS+=" kmsro panfrost"
VULKAN_DRIVERS_MESA+=" panfrost"

View File

@ -8,11 +8,14 @@ PKG_SHA256="c4a6b75b7ed8f58ca48da830b9fa00ed96d668d3ab4b1f723dcf902f78bde77f"
PKG_LICENSE="OSS"
PKG_SITE="http://www.gtk.org/"
PKG_URL="https://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/${PKG_VERSION:0:4}/gdk-pixbuf-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain glib libjpeg-turbo libpng jasper shared-mime-info tiff libX11"
PKG_DEPENDS_TARGET="toolchain glib libjpeg-turbo libpng jasper shared-mime-info tiff"
PKG_DEPENDS_CONFIG="shared-mime-info"
PKG_LONGDESC="GdkPixbuf is a a GNOME library for image loading and manipulation."
PKG_MESON_OPTS_TARGET="-Ddocs=false \
PKG_MESON_OPTS_TARGET="-Dbuiltin_loaders=all \
-Dgtk_doc=false \
-Ddocs=false \
-Dintrospection=disabled \
-Dman=false \
-Drelocatable=false"
-Drelocatable=false \
-Dinstalled_tests=false"

View File

@ -0,0 +1,16 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="json-glib"
PKG_VERSION="1.6.6"
PKG_SHA256="bf4d1cd6c343ce13b9258e6703a0411a3b659887b65877e85a2aa488ae18b865"
PKG_LICENSE="LGPL-2.1"
PKG_SITE="https://github.com/GNOME/json-glib"
PKG_URL="https://github.com/GNOME/json-glib/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain glib"
PKG_LONGDESC="JSON-GLib implements a full suite of JSON-related tools using GLib and GObject."
PKG_MESON_OPTS_TARGET="-Dintrospection=disabled \
-Dgtk_doc=disabled \
-Dman=false \
-Dtests=false"

View File

@ -8,11 +8,20 @@ PKG_SHA256="4add05edf51c1fb375a1ccde7498914120e23cb280dd7395b1aeb441f1838a4c"
PKG_LICENSE="GPL"
PKG_SITE="http://www.pango.org/"
PKG_URL="https://download.gnome.org/sources/pango/${PKG_VERSION:0:4}/pango-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain cairo freetype fontconfig fribidi glib harfbuzz libX11 libXft"
PKG_DEPENDS_CONFIG="libXft cairo"
PKG_DEPENDS_TARGET="toolchain cairo freetype fontconfig fribidi glib json-glib harfbuzz"
PKG_DEPENDS_CONFIG="cairo"
PKG_LONGDESC="The Pango library for layout and rendering of internationalized text."
PKG_TOOLCHAIN="meson"
PKG_BUILD_FLAGS="-sysroot"
PKG_MESON_OPTS_TARGET="-Dgtk_doc=false \
-Dintrospection=disabled"
configure_package() {
# Build with X11 support
if [ ${DISPLAYSERVER} = "x11" ]; then
PKG_DEPENDS_TARGET+=" libX11 libXft"
PKG_DEPENDS_CONFIG+=" libXft"
PKG_BUILD_FLAGS="-sysroot"
fi
}
pre_configure_target() {
PKG_MESON_OPTS_TARGET="-Dgtk_doc=false \
-Dintrospection=disabled"
}

View File

@ -7,8 +7,24 @@ PKG_SHA256="37df6475da31a8b5fc63a54ba0770a3eefa0a708b778cb6366dccee96393cb60"
PKG_LICENSE="GPL2"
PKG_SITE="https://freedesktop.org/wiki/Software/shared-mime-info/"
PKG_URL="https://gitlab.freedesktop.org/xdg/${PKG_NAME}/-/archive/${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
PKG_DEPENDS_TARGET="toolchain glib libxml2 gettext itstool:host"
PKG_DEPENDS_HOST="toolchain:host glib:host libxml2:host gettext:host itstool:host"
PKG_DEPENDS_TARGET="toolchain glib libxml2 gettext shared-mime-info:host"
PKG_LONGDESC="The shared-mime-info package contains the core database of common types."
PKG_BUILD_FLAGS="-parallel -sysroot"
PKG_BUILD_FLAGS="-parallel"
configure_package() {
# Sway Support
if [ ! "${WINDOWMANAGER}" = "sway" ]; then
PKG_BUILD_FLAGS+=" -sysroot"
fi
}
PKG_MESON_OPTS_HOST="-Dupdate-mimedb=false"
PKG_MESON_OPTS_TARGET="-Dupdate-mimedb=false"
post_makeinstall_target() {
# Create /usr/share/mime/mime.cache
if [ "${WINDOWMANAGER}" = "sway" ]; then
${TOOLCHAIN}/bin/update-mime-database ${INSTALL}/usr/share/mime
fi
}

View File

@ -1,37 +0,0 @@
diff -Nur shared-mime-info-2.1.orig/data/meson.build shared-mime-info-2.1/data/meson.build
--- shared-mime-info-2.1.orig/data/meson.build 2021-01-01 06:12:16.000000000 +1100
+++ shared-mime-info-2.1/data/meson.build 2021-01-14 00:25:58.299790452 +1100
@@ -1,6 +1,4 @@
-install_man('update-mime-database.1')
-
freedesktop_org_xml = i18n.merge_file(
input: 'freedesktop.org.xml.in',
output: 'freedesktop.org.xml',
@@ -15,15 +13,3 @@
[ 'its/shared-mime-info.loc', 'its/shared-mime-info.its', ],
install_dir : get_option('datadir') / 'gettext/its'
)
-
-custom_target('shared-mime-info-spec-html',
- input : 'shared-mime-info-spec.xml',
- output: 'shared-mime-info-spec-html',
- command: [
- xmlto,
- '-o', '@OUTPUT@',
- 'html-nochunks',
- '@INPUT@',
- ],
- build_by_default: true,
-)
diff -Nur shared-mime-info-2.1.orig/meson.build shared-mime-info-2.1/meson.build
--- shared-mime-info-2.1.orig/meson.build 2021-01-01 06:12:16.000000000 +1100
+++ shared-mime-info-2.1/meson.build 2021-01-14 00:24:18.552142696 +1100
@@ -22,7 +22,6 @@
itstool = find_program('itstool')
xmllint = find_program('xmllint')
-xmlto = find_program('xmlto')
###############################################################################
# Find xdgmime

View File

@ -0,0 +1,58 @@
From baeb49e36bc162bcbd243e733d2a9f1eb9abfefb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ville=20Skytt=C3=A4?= <ville.skytta@iki.fi>
Date: Sun, 24 Jan 2021 11:45:52 +0200
Subject: [PATCH] meson: make xmlto optional, build spec only if found
Refs https://gitlab.freedesktop.org/xdg/shared-mime-info/-/issues/150
---
data/meson.build | 22 ++++++++++++----------
meson.build | 2 +-
2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/data/meson.build b/data/meson.build
index 263567d..24361c9 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -22,14 +22,16 @@ install_data(
install_dir : get_option('datadir') / 'gettext/its'
)
-custom_target('shared-mime-info-spec-html',
- input : 'shared-mime-info-spec.xml',
- output: 'shared-mime-info-spec-html',
- command: [
- xmlto,
- '-o', '@OUTPUT@',
- 'html-nochunks',
- '@INPUT@',
- ],
- build_by_default: true,
+if xmlto.found()
+ custom_target('shared-mime-info-spec-html',
+ input : 'shared-mime-info-spec.xml',
+ output: 'shared-mime-info-spec-html',
+ command: [
+ xmlto,
+ '-o', '@OUTPUT@',
+ 'html-nochunks',
+ '@INPUT@',
+ ],
+ build_by_default: true,
)
+endif
diff --git a/meson.build b/meson.build
index 9a28573..0d08c8a 100644
--- a/meson.build
+++ b/meson.build
@@ -22,7 +22,7 @@ config.set_quoted('VERSION', meson.project_version())
itstool = find_program('itstool')
xmllint = find_program('xmllint')
-xmlto = find_program('xmlto')
+xmlto = find_program('xmlto', required: false)
###############################################################################
# Find xdgmime
--
GitLab

View File

@ -4,17 +4,29 @@
PKG_NAME="glmark2"
PKG_VERSION="2021.12"
PKG_SHA256="9f111284b2ef1d3fce91928e249e6ca00796a036831b063a549a0f3b03557a95"
PKG_LICENSE="GPLv3"
PKG_LICENSE="GPL-3.0-or-later"
PKG_SITE="https://github.com/glmark2/glmark2"
PKG_URL="https://github.com/glmark2/glmark2/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain"
PKG_DEPENDS_TARGET="toolchain libjpeg-turbo libpng"
PKG_LONGDESC="glmark2 is an OpenGL 2.0 and ES 2.0 benchmark"
if [ "${OPENGLES_SUPPORT}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
PKG_MESON_OPTS_TARGET="-Dflavors=drm-glesv2"
elif [ "${OPENGL_SUPPORT}" = "yes" ]; then
if [ "${OPENGL_SUPPORT}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL}"
PKG_MESON_OPTS_TARGET="-Dflavors=drm-gl"
elif [ "${OPENGLES_SUPPORT}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
fi
case ${DISPLAYSERVER} in
wl)
PKG_DEPENDS_TARGET+=" wayland wayland-protocols"
PKG_MESON_OPTS_TARGET="-Dflavors=wayland-glesv2"
;;
x11)
PKG_DEPENDS_TARGET+=" libX11"
PKG_MESON_OPTS_TARGET="-Dflavors=x11-gl"
;;
*)
PKG_DEPENDS_TARGET+=" systemd libdrm"
PKG_MESON_OPTS_TARGET="-Dflavors=drm-glesv2"
;;
esac

View File

@ -2,18 +2,27 @@
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="libglvnd"
PKG_VERSION="1.3.4"
PKG_SHA256="8f4218d7cdaf89d5b7eced818e810ccbc76f4bb9cba36d66eddac5a7ca892bab"
PKG_VERSION="1.4.0"
PKG_SHA256="1eb5c2be8d213ad5d31cfb4efbb331d42f3d9f5617c885ce7e89f572ec2bb4b8"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/NVIDIA/libglvnd"
PKG_URL="https://github.com/NVIDIA/libglvnd/archive/v${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain libX11 libXext xorgproto"
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="libglvnd is a vendor-neutral dispatch layer for arbitrating OpenGL API calls between multiple vendors."
if [ "${OPENGLES_SUPPORT}" = "no" ]; then
PKG_MESON_OPTS_TARGET="-Dgles1=false \
-Dgles2=false"
fi
configure_package() {
if [ "${DISPLAYSERVER}" = "x11" ]; then
PKG_DEPENDS_TARGET+=" libX11 libXext xorgproto"
fi
}
pre_configure_target(){
PKG_MESON_OPTS_TARGET="-Dgles1=false"
if [ "${OPENGLES_SUPPORT}" = "no" ]; then
PKG_MESON_OPTS_TARGET+=" -Dgles2=false"
fi
}
post_makeinstall_target() {
if [ "${DISPLAYSERVER}" = "x11" ]; then

View File

@ -38,8 +38,8 @@ if [ "${DISPLAYSERVER}" = "x11" ]; then
export X11_INCLUDES=
PKG_MESON_OPTS_TARGET+=" -Dplatforms=x11 -Ddri3=enabled -Dglx=dri -Dglvnd=true"
elif [ "${DISPLAYSERVER}" = "wl" ]; then
PKG_DEPENDS_TARGET+=" wayland wayland-protocols"
PKG_MESON_OPTS_TARGET+=" -Dplatforms=wayland -Ddri3=disabled -Dglx=disabled -Dglvnd=false"
PKG_DEPENDS_TARGET+=" wayland wayland-protocols libglvnd"
PKG_MESON_OPTS_TARGET+=" -Dplatforms=wayland -Ddri3=disabled -Dglx=disabled -Dglvnd=true"
else
PKG_MESON_OPTS_TARGET+=" -Dplatforms="" -Ddri3=disabled -Dglx=disabled -Dglvnd=false"
fi

View File

@ -0,0 +1 @@
options nvidia-drm modeset=1

View File

@ -0,0 +1,129 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="nvidia"
PKG_VERSION="510.47.03"
PKG_SHA256="694cda690ecffde7e9987f1fc0985d796a624185a2f5bda0a7e804ca791bf227"
PKG_ARCH="x86_64"
PKG_LICENSE="nonfree"
PKG_SITE="https://www.nvidia.com/en-us/drivers/unix/"
PKG_URL="http://us.download.nvidia.com/XFree86/Linux-x86_64/${PKG_VERSION}/NVIDIA-Linux-x86_64-${PKG_VERSION}-no-compat32.run"
PKG_DEPENDS_TARGET="toolchain util-macros libglvnd"
PKG_LONGDESC="The GBM/Wayland graphic driver for NVIDIA GPUs supporting the GeForce 700 Series & above."
PKG_TOOLCHAIN="manual"
PKG_IS_KERNEL_PKG="yes"
if [ "${VULKAN_SUPPORT}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${VULKAN} vulkan-tools"
fi
unpack() {
[ -d ${PKG_BUILD} ] && rm -rf ${PKG_BUILD}
sh ${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME} --extract-only --target ${PKG_BUILD}
}
make_target() {
unset LDFLAGS
cd kernel
make module CC=${CC} LD=${LD} SYSSRC=$(kernel_path) SYSOUT=$(kernel_path)
${STRIP} --strip-debug nvidia.ko
cd ..
}
makeinstall_target() {
# Linux kernel modules
mkdir -p ${INSTALL}/$(get_full_module_dir)/nvidia
cp -P kernel/nvidia.ko ${INSTALL}/$(get_full_module_dir)/nvidia
cp -P kernel/nvidia-drm.ko ${INSTALL}/$(get_full_module_dir)/nvidia
cp -P kernel/nvidia-uvm.ko ${INSTALL}/$(get_full_module_dir)/nvidia
cp -P kernel/nvidia-modeset.ko ${INSTALL}/$(get_full_module_dir)/nvidia
# GBM
mkdir -p ${INSTALL}/usr/lib/gbm
cp -p libnvidia-allocator.so.${PKG_VERSION} ${INSTALL}/usr/lib
ln -sf libnvidia-allocator.so.${PKG_VERSION} ${INSTALL}/usr/lib/liballocator.so.0
ln -sf ../libnvidia-allocator.so.${PKG_VERSION} ${INSTALL}/usr/lib/gbm/nvidia-drm_gbm.so
mkdir -p ${INSTALL}/usr/share/egl/egl_external_platform.d
cp -p 15_nvidia_gbm.json ${INSTALL}/usr/share/egl/egl_external_platform.d
cp -p libnvidia-egl-gbm.so.1.1.0 ${INSTALL}/usr/lib
ln -sf libnvidia-egl-gbm.so.1.1.0 ${INSTALL}/usr/lib/libnvidia-egl-gbm.so.1
ln -sf libnvidia-egl-gbm.so.1 ${INSTALL}/usr/lib/libnvidia-egl-gbm.so
# GLVND
mkdir -p ${INSTALL}/usr/share/glvnd/egl_vendor.d
cp -p 10_nvidia.json ${INSTALL}/usr/share/glvnd/egl_vendor.d
# Wayland
mkdir -p ${INSTALL}/usr/lib
cp -p libnvidia-egl-wayland.so.1.1.9 ${INSTALL}/usr/lib/
ln -sf libnvidia-egl-wayland.so.1.1.9 ${INSTALL}/usr/lib/libnvidia-egl-wayland.so.1
ln -sf libnvidia-egl-wayland.so.1 ${INSTALL}/usr/lib/libnvidia-egl-wayland.so
mkdir -p ${INSTALL}/usr/share/egl/egl_external_platform.d
cp -p 10_nvidia_wayland.json ${INSTALL}/usr/share/egl/egl_external_platform.d
# OpenGL / EGL
mkdir -p ${INSTALL}/usr/lib
cp -p libEGL_nvidia.so.${PKG_VERSION} ${INSTALL}/usr/lib/
ln -sf libEGL_nvidia.so.${PKG_VERSION} ${INSTALL}/usr/lib/libEGL_nvidia.so.0
ln -sf libEGL_nvidia.so.0 ${INSTALL}/usr/lib/libEGL_nvidia.so
# OpenGL core
mkdir -p ${INSTALL}/usr/lib
cp -p libnvidia-eglcore.so.${PKG_VERSION} ${INSTALL}/usr/lib/
ln -sf libnvidia-eglcore.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-eglcore.so
cp -p libnvidia-glsi.so.${PKG_VERSION} ${INSTALL}/usr/lib
ln -sf libnvidia-glsi.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-glsi.so
# OpenGL ES
mkdir -p ${INSTALL}/usr/lib
cp -p libGLESv2_nvidia.so.${PKG_VERSION} ${INSTALL}/usr/lib
ln -sf libGLESv2_nvidia.so.${PKG_VERSION} ${INSTALL}/usr/lib/libGLESv2_nvidia.so.2
ln -sf libGLESv2_nvidia.so.2 ${INSTALL}/usr/lib/libGLESv2_nvidia.so
# Vulkan
if [ "${VULKAN_SUPPORT}" = "yes" ]; then
mkdir -p ${INSTALL}/usr/lib
cp -P libnvidia-glvkspirv.so.${PKG_VERSION} ${INSTALL}/usr/lib
ln -sf libnvidia-glvkspirv.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-glvkspirv.so
mkdir -p ${INSTALL}/usr/share/vulkan/implicit_layer.d
cp -P nvidia_layers.json ${INSTALL}/usr/share/vulkan/implicit_layer.d
mkdir -p ${INSTALL}/usr/share/vulkan/icd.d
cp -P nvidia_icd.json ${INSTALL}/usr/share/vulkan/icd.d
fi
# CUDA
mkdir -p ${INSTALL}/usr/lib
cp -p libcuda.so.${PKG_VERSION} ${INSTALL}/usr/lib
ln -sf libcuda.so.${PKG_VERSION} ${INSTALL}/usr/lib/libcuda.so.1
ln -sf libcuda.so.1 ${INSTALL}/usr/lib/libcuda.so
# NVDEC
mkdir -p ${INSTALL}/usr/lib
cp -p libnvcuvid.so.${PKG_VERSION} ${INSTALL}/usr/lib
ln -sf libnvcuvid.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvcuvid.so.1
ln -sf libnvcuvid.so.1 ${INSTALL}/usr/lib/libnvcuvid.so
# nvidia-tls
mkdir -p ${INSTALL}/usr/lib
cp -P libnvidia-tls.so.${PKG_VERSION} ${INSTALL}/usr/lib
ln -sf libnvidia-tls.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-tls.so
# NVML
mkdir -p ${INSTALL}/usr/bin
cp -P nvidia-smi ${INSTALL}/usr/bin
mkdir -p ${INSTALL}/usr/lib
cp -P libnvidia-ml.so.${PKG_VERSION} ${INSTALL}/usr/lib
ln -sf libnvidia-ml.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-ml.so.1
ln -sf libnvidia-ml.so.1 ${INSTALL}/usr/lib/libnvidia-ml.so
# App profiles
mkdir -p ${INSTALL}/usr/share/nvidia
cp -P nvidia-application-profiles-${PKG_VERSION}-rc ${INSTALL}/usr/share/nvidia
}

View File

@ -0,0 +1,66 @@
From 81a2fb65100b88c31bb0168acc0c3b7bab09475a Mon Sep 17 00:00:00 2001
From: Dominique Martinet <asmadeus@codewreck.org>
Date: Sun, 5 Dec 2021 23:46:25 +0900
Subject: [PATCH] windowing: base m_bFullScreenRoot setting on res info's
bFullScreen
on wayland, the compositor can ignore fullscreen requests, so even if
application's InitWindow created a window with res >= DESKTOP we have
no guarantee that the actual window created is actually fullscreen.
CreateNewWindow will fill GetResolutionInfo(res) so we can check that
for bFullScreen and use this information... in theory.
wayland was inconditionally setting it to the requested fullscreen
state, so also make sure it's set based on the real state by keeping
m_bFullScreen up to date and using that instead.
Fixes: #20629
---
xbmc/windowing/GraphicContext.cpp | 2 +-
xbmc/windowing/wayland/WinSystemWayland.cpp | 5 +++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/xbmc/windowing/GraphicContext.cpp b/xbmc/windowing/GraphicContext.cpp
index 6a90ee28fc05c..83fedbabe1856 100644
--- a/xbmc/windowing/GraphicContext.cpp
+++ b/xbmc/windowing/GraphicContext.cpp
@@ -409,7 +409,7 @@ void CGraphicContext::SetVideoResolutionInternal(RESOLUTION res, bool forceUpdat
return;
}
- if (res >= RES_DESKTOP)
+ if (CDisplaySettings::GetInstance().GetResolutionInfo(res).bFullScreen)
{
CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_fullScreen = true;
m_bFullScreenRoot = true;
diff --git a/xbmc/windowing/wayland/WinSystemWayland.cpp b/xbmc/windowing/wayland/WinSystemWayland.cpp
index bd17b44a19e50..02ba323d64817 100644
--- a/xbmc/windowing/wayland/WinSystemWayland.cpp
+++ b/xbmc/windowing/wayland/WinSystemWayland.cpp
@@ -343,7 +343,7 @@ bool CWinSystemWayland::CreateNewWindow(const std::string& name,
// Update resolution with real size as it could have changed due to configure()
UpdateDesktopResolution(res, res.strOutput, m_bufferSize.Width(), m_bufferSize.Height(), res.fRefreshRate, 0);
- res.bFullScreen = fullScreen;
+ res.bFullScreen = m_bFullScreen;
// Now start processing events
//
@@ -787,7 +787,7 @@ void CWinSystemWayland::OnConfigure(std::uint32_t serial, CSizeInt size, IShellS
CLog::LogF(LOGDEBUG, "Initial configure serial {}: size {}x{} state {}", serial, size.Width(),
size.Height(), IShellSurface::StateToString(state));
m_shellSurfaceState = state;
- if (!size.IsZero())
+ if (!size.IsZero() || state.test(IShellSurface::STATE_FULLSCREEN))
{
UpdateSizeVariables(size, m_scale, m_shellSurfaceState, true);
}
@@ -1015,6 +1015,7 @@ CWinSystemWayland::SizeUpdateInformation CWinSystemWayland::UpdateSizeVariables(
m_surfaceSize = sizes.surfaceSize;
m_bufferSize = sizes.bufferSize;
m_configuredSize = sizes.configuredSize;
+ m_bFullScreen = state.test(IShellSurface::STATE_FULLSCREEN);
SizeUpdateInformation changes{m_surfaceSize != oldSurfaceSize, m_bufferSize != oldBufferSize, m_configuredSize != oldConfiguredSize, m_scale != oldBufferScale};

View File

@ -0,0 +1,201 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="gst-plugins-bad"
PKG_VERSION="1.18.5"
PKG_SHA256="a164923b94f0d08578a6fcaeaac6e0c05da788a46903a1086870e9ca45ad678e"
PKG_LICENSE="LGPL-2.1-or-later"
PKG_SITE="https://gstreamer.freedesktop.org/modules/gst-plugins-bad.html"
PKG_URL="https://gstreamer.freedesktop.org/src/gst-plugins-bad/${PKG_NAME}-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain gst-plugins-base"
PKG_LONGDESC="GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared to the rest."
pre_configure_target() {
PKG_MESON_OPTS_TARGET="-Dgst_player_tests=false \
-Daccurip=disabled \
-Dadpcmdec=disabled \
-Dadpcmenc=disabled \
-Daiff=disabled \
-Dasfmux=disabled \
-Daudiobuffersplit=disabled \
-Daudiofxbad=disabled \
-Daudiolatency=disabled \
-Daudiomixmatrix=disabled \
-Daudiovisualizers=disabled \
-Dautoconvert=disabled \
-Dbayer=disabled \
-Dcamerabin2=disabled \
-Dcoloreffects=disabled \
-Ddebugutils=disabled \
-Ddvbsubenc=disabled \
-Ddvbsuboverlay=disabled \
-Ddvdspu=disabled \
-Dfaceoverlay=disabled \
-Dfestival=disabled \
-Dfieldanalysis=disabled \
-Dfreeverb=disabled \
-Dfrei0r=disabled \
-Dgaudieffects=disabled \
-Dgdp=disabled \
-Dgeometrictransform=disabled \
-Did3tag=disabled \
-Dinter=disabled \
-Dinterlace=disabled \
-Divfparse=disabled \
-Divtc=disabled \
-Djp2kdecimator=disabled \
-Djpegformat=disabled \
-Dlibrfb=disabled \
-Dmidi=disabled \
-Dmpegdemux=disabled \
-Dmpegpsmux=disabled \
-Dmpegtsdemux=disabled \
-Dmpegtsmux=disabled \
-Dmxf=disabled \
-Dnetsim=disabled \
-Donvif=disabled \
-Dpcapparse=disabled \
-Dpnm=disabled \
-Dproxy=disabled \
-Drawparse=disabled \
-Dremovesilence=disabled \
-Drist=disabled \
-Drtmp2=disabled \
-Drtp=disabled \
-Dsdp=disabled \
-Dsegmentclip=disabled \
-Dsiren=disabled \
-Dsmooth=disabled \
-Dspeed=disabled \
-Dsubenc=disabled \
-Dswitchbin=disabled \
-Dtimecode=disabled \
-Dvideofilters=disabled \
-Dvideoframe_audiolevel=disabled \
-Dvideoparsers=enabled \
-Dvideosignal=disabled \
-Dvmnc=disabled \
-Dy4m=disabled \
-Dopencv=disabled \
-Dwayland=disabled \
-Dx11=disabled \
-Daom=disabled \
-Davtp=disabled \
-Dandroidmedia=disabled \
-Dapplemedia=disabled \
-Dassrender=disabled \
-Dbluez=disabled \
-Dbs2b=disabled \
-Dbz2=disabled \
-Dchromaprint=disabled \
-Dclosedcaption=disabled \
-Dcolormanagement=disabled \
-Dcurl=disabled \
-Dcurl-ssh2=disabled \
-Dd3dvideosink=disabled \
-Dd3d11=disabled \
-Ddash=disabled \
-Ddc1394=disabled \
-Ddecklink=disabled \
-Ddirectfb=disabled \
-Ddirectsound=disabled \
-Ddtls=disabled \
-Ddts=disabled \
-Ddvb=disabled \
-Dfaac=disabled \
-Dfaad=disabled \
-Dfbdev=disabled \
-Dfdkaac=disabled \
-Dflite=disabled \
-Dfluidsynth=disabled \
-Dgl=disabled \
-Dgme=disabled \
-Dgsm=disabled \
-Dipcpipeline=disabled \
-Diqa=disabled \
-Dkate=disabled \
-Dkms=disabled \
-Dladspa=disabled \
-Dlibde265=disabled \
-Dlibmms=disabled \
-Dlv2=disabled \
-Dmediafoundation=disabled \
-Dmicrodns=disabled \
-Dmodplug=disabled \
-Dmpeg2enc=disabled \
-Dmplex=disabled \
-Dmsdk=disabled \
-Dmusepack=disabled \
-Dneon=disabled \
-Dnvcodec=disabled \
-Dofa=disabled \
-Dopenal=disabled \
-Dopenexr=disabled \
-Dopenh264=disabled \
-Dopenjpeg=disabled \
-Dopenmpt=disabled \
-Dopenni2=disabled \
-Dopensles=disabled \
-Dopus=disabled \
-Dresindvd=disabled \
-Drsvg=disabled \
-Drtmp=disabled \
-Dsbc=disabled \
-Dsctp=disabled \
-Dshm=disabled \
-Dsmoothstreaming=disabled \
-Dsndfile=disabled \
-Dsoundtouch=disabled \
-Dspandsp=disabled \
-Dsrt=disabled \
-Dsrtp=disabled \
-Dsvthevcenc=disabled \
-Dteletext=disabled \
-Dtinyalsa=disabled \
-Dtranscode=disabled \
-Dttml=disabled \
-Duvch264=disabled \
-Dva=disabled \
-Dvoaacenc=disabled \
-Dvoamrwbenc=disabled \
-Dvulkan=disabled \
-Dwasapi=disabled \
-Dwasapi2=disabled \
-Dwebp=disabled \
-Dwebrtc=disabled \
-Dwebrtcdsp=disabled \
-Dwildmidi=disabled \
-Dwinks=disabled \
-Dwinscreencap=disabled \
-Dx265=disabled \
-Dzbar=disabled \
-Dzxing=disabled \
-Dwpe=disabled \
-Dmagicleap=disabled \
-Dv4l2codecs=disabled \
-Dhls=disabled \
-Dsctp-internal-usrsctp=disabled \
-Dexamples=disabled \
-Dtests=disabled \
-Dintrospection=disabled \
-Dnls=disabled \
-Dorc=disabled \
-Dgobject-cast-checks=disabled \
-Dglib-asserts=disabled \
-Dglib-checks=disabled \
-Dpackage-name="gst-plugins-bad"
-Dpackage-origin="LibreELEC.tv"
-Ddoc=disabled"
}
post_makeinstall_target(){
# clean up
safe_remove ${INSTALL}/usr/bin
for PKG_GST_PLUGINS_BAD in \
libgstadaptivedemux libgstbadaudio libgstbasecamerabinsrc libgstcodecs libgstinsertbin libgstisoff libgstmpegts libgstphotography libgstplayer \
libgstsctp libgsttranscoder libgsturidownloader libgstwebrtc
do
safe_remove ${INSTALL}/usr/lib/${PKG_GST_PLUGINS_BAD}-1.0*
done
safe_remove ${INSTALL}/usr/share
}

View File

@ -0,0 +1,68 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="gst-plugins-base"
PKG_VERSION="1.18.5"
PKG_SHA256="960b7af4585700db0fdd5b843554e11e2564fed9e061f591fae88a7be6446fa3"
PKG_LICENSE="GPL-2.1-or-later"
PKG_SITE="https://gstreamer.freedesktop.org/modules/gst-plugins-base.html"
PKG_URL="https://gstreamer.freedesktop.org/src/gst-plugins-base/${PKG_NAME}-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain gstreamer"
PKG_LONGDESC="Base GStreamer plugins and helper libraries"
PKG_BUILD_FLAGS="-gold"
pre_configure_target() {
PKG_MESON_OPTS_TARGET="-Dgl=disabled \
-Dadder=disabled \
-Dapp=disabled \
-Daudioconvert=disabled \
-Daudiomixer=disabled \
-Daudiorate=disabled \
-Daudioresample=disabled \
-Daudiotestsrc=disabled \
-Dcompositor=disabled \
-Dencoding=disabled \
-Dgio=disabled \
-Dgio-typefinder=disabled \
-Doverlaycomposition=disabled \
-Dpbtypes=disabled \
-Dplayback=disabled \
-Drawparse=enabled \
-Dsubparse=enabled \
-Dtcp=disabled \
-Dtypefind=disabled \
-Dvideoconvert=disabled \
-Dvideorate=disabled \
-Dvideoscale=disabled \
-Dvideotestsrc=disabled \
-Dvolume=disabled \
-Dalsa=disabled \
-Dcdparanoia=disabled \
-Dlibvisual=disabled \
-Dogg=disabled \
-Dopus=disabled \
-Dpango=disabled \
-Dtheora=disabled \
-Dtremor=disabled \
-Dvorbis=disabled \
-Dx11=disabled \
-Dxshm=disabled \
-Dxvideo=disabled \
-Dexamples=disabled \
-Dtests=disabled \
-Dtools=disabled \
-Dintrospection=disabled \
-Dnls=disabled \
-Dorc=disabled \
-Dgobject-cast-checks=disabled \
-Dglib-asserts=disabled \
-Dglib-checks=disabled \
-Dpackage-name="gst-plugins-base"
-Dpackage-origin="LibreELEC.tv"
-Ddoc=disabled"
}
post_makeinstall_target(){
# clean up
safe_remove ${INSTALL}
}

View File

@ -0,0 +1,46 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="gstreamer"
PKG_VERSION="1.18.5"
PKG_SHA256="55862232a63459bbf56abebde3085ca9aec211b478e891dacea4d6df8cafe80a"
PKG_LICENSE="GPL-2.1-or-later"
PKG_SITE="https://gstreamer.freedesktop.org"
PKG_URL="https://gstreamer.freedesktop.org/src/gstreamer/${PKG_NAME}-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="GStreamer open-source multimedia framework core library"
pre_configure_target() {
PKG_MESON_OPTS_TARGET="-Dgst_debug=false \
-Dgst_parse=true \
-Dregistry=false \
-Dtracer_hooks=false \
-Doption-parsing=true \
-Dpoisoning=false \
-Dcheck=disabled \
-Dlibunwind=disabled \
-Dlibdw=disabled \
-Ddbghelp=disabled \
-Dbash-completion=disabled \
-Dcoretracers=disabled \
-Dexamples=disabled \
-Dtests=disabled \
-Dbenchmarks=disabled \
-Dtools=disabled \
-Dgtk_doc=disabled \
-Dintrospection=disabled \
-Dnls=disabled \
-Dgobject-cast-checks=disabled \
-Dglib-asserts=disabled \
-Dglib-checks=disabled \
-Dextra-checks=disabled \
-Dpackage-name="gstreamer"
-Dpackage-origin="LibreELEC.tv"
-Ddoc=disabled"
}
post_makeinstall_target() {
# clean up
safe_remove ${INSTALL}/usr/share
safe_remove ${INSTALL}/usr/lib/{libgstcontroller-1.0*,libgstnet-1.0*}
}

View File

@ -0,0 +1,21 @@
From f342855b2b489de4141f7d23cfd66b7f243b74b7 Mon Sep 17 00:00:00 2001
From: Stephen <elfarto@elfarto.com>
Date: Tue, 23 Nov 2021 09:10:01 +0000
Subject: [PATCH] Add nvidia-drm to the drm driver map
---
va/drm/va_drm_utils.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/va/drm/va_drm_utils.c b/va/drm/va_drm_utils.c
index 467d9ac9..b3422d19 100644
--- a/va/drm/va_drm_utils.c
+++ b/va/drm/va_drm_utils.c
@@ -45,6 +45,7 @@ static const struct driver_name_map g_driver_name_map[] = {
{ "nouveau", 7, "nouveau" }, // Mesa Gallium driver
{ "radeon", 6, "r600" }, // Mesa Gallium driver
{ "amdgpu", 6, "radeonsi" }, // Mesa Gallium driver
+ { "nvidia-drm",10, "nvidia" }, // NVIDIA driver
{ NULL, 0, NULL }
};

View File

@ -0,0 +1,16 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="nv-codec-headers"
PKG_VERSION="11.1.5.1"
PKG_SHA256="d095fbd56aa93772471a323be0ebe65504a0f43f06c76a30b6d25da77b06ae9c"
PKG_LICENSE="MIT"
PKG_SITE="https://github.com/FFmpeg/nv-codec-headers"
PKG_URL="https://github.com/FFmpeg/nv-codec-headers/archive/n${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="FFmpeg version of headers required to interface with Nvidias codec APIs."
PKG_TOOLCHAIN="make"
makeinstall_target(){
make DESTDIR=${SYSROOT_PREFIX} PREFIX=/usr install
}

View File

@ -0,0 +1,11 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="nvidia-vaapi-driver"
PKG_VERSION="0.0.4"
PKG_SHA256="8b99c618f530ea388964cdb3e8454de2d89f4354de8d0a0ea7941e88576d7e2a"
PKG_LICENSE="MIT"
PKG_SITE="https://github.com/elFarto/nvidia-vaapi-driver"
PKG_URL="https://github.com/elFarto/nvidia-vaapi-driver/archive/v${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain nv-codec-headers gst-plugins-bad"
PKG_LONGDESC="A VA-API implemention using NVIDIA's NVDEC"

View File

@ -43,4 +43,7 @@ if [ "${MEDIACENTER}" = "kodi" ]; then
PKG_DEPENDS_TARGET+=" intel-vaapi-driver media-driver"
fi
if listcontains "${GRAPHIC_DRIVERS}" "nvidia-ng"; then
PKG_DEPENDS_TARGET+=" nvidia-vaapi-driver"
fi
fi

View File

@ -14,3 +14,13 @@ PKG_LONGDESC="Wayland is intended as a simpler replacement for X, easier to deve
if [ -n "${WINDOWMANAGER}" -a "${WINDOWMANAGER}" != "no" ]; then
PKG_DEPENDS_TARGET+=" ${WINDOWMANAGER}"
fi
# Tools for wlroots based compositors
if [ "${WINDOWMANAGER}" = "sway" ]; then
PKG_DEPENDS_TARGET+=" wlr-randr"
fi
# NVIDIA drivers for Linux
if listcontains "${GRAPHIC_DRIVERS}" "nvidia-ng"; then
PKG_DEPENDS_TARGET+=" nvidia"
fi

View File

@ -0,0 +1,20 @@
## Base16 Black Metal (Dark Funeral)
# Author: metalelf0 (https://github.com/metalelf0)
# Source: base16-sway (https://github.com/rkubosz/base16-sway)
set $base00 #000000
set $base01 #121212
set $base02 #222222
set $base03 #333333
set $base04 #999999
set $base05 #c1c1c1
set $base06 #999999
set $base07 #c1c1c1
set $base08 #5f8787
set $base09 #aaaaaa
set $base0A #5f81a5
set $base0B #d0dfee
set $base0C #aaaaaa
set $base0D #888888
set $base0E #999999
set $base0F #444444

View File

@ -0,0 +1,243 @@
# Default config for sway
#
# Copy this to ~/.config/sway/config and edit it to your liking.
#
# Read `man 5 sway` for a complete reference.
# Load prefered color scheme
include colorscheme
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Home row direction keys, like vim
set $left h
set $down j
set $up k
set $right l
# Your preferred terminal emulator
set $term foot.sh
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
set $highlight $base0A
set $prompt $base0B
set $menu bemenu-run -p "#" -l 10 --scrollbar autohide -i -w --tf "$prompt" --hf "$highlight" --sf "$highlight" --scf "$highlight" --no-exec | xargs swaymsg exec --
### Output configuration
#
# Default wallpaper (more resolutions are available in /usr/share/sway/)
output * bg /usr/share/sway/libreelec-wallpaper-2160.png fill
# hide_cursor hides the cursor image after the specified timeout (in milliseconds) has elapsed with no activity on that cursor
seat * hide_cursor 3000
#
# Example configuration:
#
# output HDMI-A-1 resolution 1920x1080 position 1920,0
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
### Idle configuration
#
# Example configuration:
#
# exec swayidle -w \
# timeout 300 'swaylock -f -c 000000' \
# timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
# before-sleep 'swaylock -f -c 000000'
#
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.
### Input configuration
#
# Example configuration:
#
# input "2:14:SynPS/2_Synaptics_TouchPad" {
# dwt enabled
# tap enabled
# natural_scroll enabled
# middle_emulation enabled
# }
#
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
# Set keyboard layout (default US)
input * {
xkb_layout "us"
}
### Key bindings
#
# Basics:
#
# Start a terminal
bindsym $mod+Return exec $term
# Kill focused window
bindsym $mod+Shift+q kill
# Start your launcher
bindsym $mod+d exec $menu
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging.
floating_modifier $mod normal
# Reload the configuration file
bindsym $mod+Shift+c reload
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
#
# Moving around:
#
# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# Move the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# Ditto, with arrow keys
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
#
# Workspaces:
#
# Switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.
#
# Layout stuff:
#
# You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+b splith
bindsym $mod+v splitv
# Switch the current container between different layout styles
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# Make the current focus fullscreen
bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area
bindsym $mod+space focus mode_toggle
# Move focus to the parent container
bindsym $mod+a focus parent
#
# Scratchpad:
#
# Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later.
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
#
# Resizing containers:
#
mode "resize" {
# left will shrink the containers width
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# Ditto, with arrow keys
bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px
bindsym Up resize shrink height 10px
bindsym Right resize grow width 10px
# Return to default mode
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
#
# Status Bar:
#
# Read `man 5 sway-bar` for more information about this section.
bar {
position top
# When the status_command prints a new line to stdout, swaybar updates.
# The default just shows the current date and time.
status_command while date +'%a %e %b %G - %k:%M'; do sleep 1; done
colors {
background $base00
separator $base01
statusline $base04
# State Border BG Text
focused_workspace $base05 $base0D $base00
active_workspace $base05 $base03 $base00
inactive_workspace $base03 $base01 $base05
urgent_workspace $base08 $base08 $base00
binding_mode $base00 $base0A $base00 }
}
# Basic color configuration using the Base16 variables for windows and borders.
# Property Name Border BG Text Indicator Child Border
client.focused $base05 $base0D $base00 $base0D $base0D
client.focused_inactive $base01 $base01 $base05 $base03 $base01
client.unfocused $base01 $base00 $base05 $base01 $base01
client.urgent $base08 $base08 $base00 $base08 $base08
client.placeholder $base00 $base00 $base05 $base00 $base00
client.background $base07
# Load etc config
include /etc/sway/config.d/*

View File

@ -0,0 +1,4 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
# Pass config args to Sway e.g. --unsupported-gpu for NVIDIA GPUs
SWAY_DAEMON_CONF=""

View File

@ -0,0 +1,47 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="sway"
PKG_VERSION="1.7"
PKG_SHA256="0c64536fb2883ec518e75cfb119f9300115fb49b084e3fde62b794fe2c6c8d84"
PKG_LICENSE="MIT"
PKG_SITE="https://swaywm.org/"
PKG_URL="https://github.com/swaywm/sway/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain wayland wayland-protocols libdrm libxkbcommon libinput cairo pango libjpeg-turbo dbus json-c wlroots gdk-pixbuf swaybg foot bemenu"
PKG_LONGDESC="i3-compatible Wayland compositor"
PKG_MESON_OPTS_TARGET="-Ddefault-wallpaper=false \
-Dzsh-completions=false \
-Dbash-completions=false \
-Dfish-completions=false \
-Dswaybar=true \
-Dswaynag=true \
-Dxwayland=disabled \
-Dtray=disabled \
-Dgdk-pixbuf=enabled \
-Dman-pages=disabled \
-Dsd-bus-provider=auto"
pre_configure_target() {
# sway does not build without -Wno flags as all warnings being treated as errors
export TARGET_CFLAGS=$(echo "${TARGET_CFLAGS} -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-function -Wno-maybe-uninitialized")
}
post_makeinstall_target() {
mkdir -p ${INSTALL}/usr/lib/sway
cp ${PKG_DIR}/scripts/sway.sh ${INSTALL}/usr/bin
cp ${PKG_DIR}/scripts/sway-config ${INSTALL}/usr/lib/sway
# install config & wallpaper
mkdir -p ${INSTALL}/usr/share/sway
cp ${PKG_DIR}/config/* ${INSTALL}/usr/share/sway
find_file_path "splash/splash-2160.png" && cp ${FOUND_PATH} ${INSTALL}/usr/share/sway/libreelec-wallpaper-2160.png
# clean up
safe_remove ${INSTALL}/etc
safe_remove ${INSTALL}/usr/share/wayland-sessions
}
post_install() {
enable_service sway.service
}

View File

@ -0,0 +1,11 @@
--- a/sway/ipc-server.c
+++ b/sway/ipc-server.c
@@ -140,7 +140,7 @@ struct sockaddr_un *ipc_user_sockaddr(vo
dir = "/tmp";
}
if (path_size <= snprintf(ipc_sockaddr->sun_path, path_size,
- "%s/sway-ipc.%u.%i.sock", dir, getuid(), getpid())) {
+ "%s/sway-ipc.%u.sock", dir, getuid())) {
sway_abort("Socket path won't fit into ipc_sockaddr->sun_path");
}

View File

@ -0,0 +1,13 @@
--- a/sway/main.c
+++ b/sway/main.c
@@ -152,6 +152,10 @@ static void log_kernel(void) {
static bool drop_permissions(void) {
+ if (getuid() == 0 || getgid() == 0) {
+ sway_log(SWAY_INFO, "Running sway as root user");
+ return true;
+ }
if (getuid() != geteuid() || getgid() != getegid()) {
sway_log(SWAY_ERROR, "!!! DEPRECATION WARNING: "
"SUID privilege drop will be removed in a future release, please migrate to seatd-launch");

View File

@ -0,0 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
export WAYLAND_DISPLAY=wayland-1
export XDG_RUNTIME_DIR=/var/run/0-runtime-dir
export SWAYSOCK="${XDG_RUNTIME_DIR}/sway-ipc.0.sock"

View File

@ -0,0 +1,47 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
export XDG_RUNTIME_DIR=/var/run/0-runtime-dir
export WAYLAND_DISPLAY=wayland-1
SWAY_DAEMON_ARGS=""
SWAY_RUNTIME_DIR=/var/run/sway
SWAY_CONFIG_BASEDIR=/storage/.config/sway
SWAY_CONFIG_SHAREDIR=/usr/share/sway
SWAY_CONFIG_COLOR=${SWAY_CONFIG_BASEDIR}/colorscheme
SWAY_CONFIG_COLOR_DEFAULT=${SWAY_CONFIG_SHAREDIR}/colorscheme
SWAY_CONFIG_DAEMON=${SWAY_CONFIG_BASEDIR}/sway-daemon.conf
SWAY_CONFIG_DAEMON_DEFAULT=${SWAY_CONFIG_SHAREDIR}/sway-daemon.conf
SWAY_CONFIG_USER=${SWAY_CONFIG_BASEDIR}/config
SWAY_CONFIG_USER_DEFAULT=${SWAY_CONFIG_SHAREDIR}/config
SWAY_CONFIG_RUN=${SWAY_RUNTIME_DIR}/sway-daemon.conf
if [ ! -d "$XDG_RUNTIME_DIR" ]; then
mkdir "$XDG_RUNTIME_DIR"
chmod 0700 "$XDG_RUNTIME_DIR"
fi
if [ ! -d "$SWAY_RUNTIME_DIR" ]; then
mkdir "$SWAY_RUNTIME_DIR"
fi
if [ ! -f ${SWAY_CONFIG_USER} ]; then
mkdir -p ${SWAY_CONFIG_BASEDIR}
cp ${SWAY_CONFIG_USER_DEFAULT} ${SWAY_CONFIG_BASEDIR}
fi
if [ ! -f ${SWAY_CONFIG_COLOR} ]; then
cp ${SWAY_CONFIG_COLOR_DEFAULT} ${SWAY_CONFIG_BASEDIR}
fi
if [ ! -f ${SWAY_CONFIG_DAEMON} ]; then
cp ${SWAY_CONFIG_DAEMON_DEFAULT} ${SWAY_CONFIG_BASEDIR}
fi
if [ -f ${SWAY_CONFIG_DAEMON} ] ; then
SWAY_DAEMON_CONF=$(cat ${SWAY_CONFIG_DAEMON} | grep -E '^SWAY_DAEMON_CONF=' | cut -d "\"" -f2)
fi
echo SWAY_DAEMON_ARGS=\"${SWAY_DAEMON_CONF} ${SWAY_DAEMON_ARGS}\" > ${SWAY_CONFIG_RUN}

View File

@ -0,0 +1,14 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
. /run/sway/sway-daemon.conf
SWAY_LOG_FILE=/var/log/sway.log
if [ ! -z "$(lsmod | grep 'nvidia')" ]; then
export WLR_NO_HARDWARE_CURSORS=1
SWAY_GPU_ARGS="--unsupported-gpu"
fi
logger -t Sway "### Starting Sway with -V ${SWAY_GPU_ARGS} ${SWAY_DAEMON_ARGS}"
/usr/bin/sway -V ${SWAY_GPU_ARGS} ${SWAY_DAEMON_ARGS} > ${SWAY_LOG_FILE} 2>&1

View File

@ -0,0 +1,20 @@
[Unit]
Description=Sway Wayland Compositor
Before=graphical.target kodi.service
After=multi-user.target
ConditionKernelCommandLine=!installer
[Service]
Environment=HOME=/storage
Environment=XDG_RUNTIME_DIR=/var/run/0-runtime-dir
EnvironmentFile=/usr/share/sway/sway-daemon.conf
EnvironmentFile=-/run/sway/sway-daemon.conf
WorkingDirectory=/storage
ExecStartPre=-/usr/lib/sway/sway-config
ExecStart=/usr/bin/sway.sh
Restart=always
RestartSec=5
[Install]
Alias=display-manager.service
WantedBy=graphical.target

View File

@ -0,0 +1,17 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="fcft"
PKG_VERSION="2.5.1"
PKG_SHA256="1b9e9346c884f16bce9548806ea89c5e34ccc98ce27ec6ecff1f5011235de112"
PKG_LICENSE="MIT"
PKG_SITE="https://codeberg.org/dnkl/fcft"
PKG_URL="https://codeberg.org/dnkl/fcft/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain pixman fontconfig freetype tllist"
PKG_LONGDESC="A simple library for font loading and glyph rasterization using FontConfig, FreeType and pixman."
PKG_MESON_OPTS_TARGET="-Ddocs=disabled \
-Dgrapheme-shaping=disabled \
-Drun-shaping=disabled \
-Dtest-text-shaping=false \
-Dexamples=false"

View File

@ -0,0 +1,27 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="seatd"
PKG_VERSION="0.6.3"
PKG_SHA256="5226850c163b485aebe71da0d3f4941761637e146a5c9393cb40c52617ad84a8"
PKG_LICENSE="MIT"
PKG_SITE="https://git.sr.ht/~kennylevinsen/seatd"
PKG_URL="https://git.sr.ht/~kennylevinsen/seatd/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain systemd"
PKG_LONGDESC="A minimal seat management daemon, and a universal seat management library."
PKG_MESON_OPTS_TARGET="-Dlibseat-logind=systemd \
-Dlibseat-seatd=enabled \
-Dlibseat-builtin=disabled \
-Dserver=enabled \
-Dexamples=disabled \
-Dman-pages=disabled"
pre_configure_target() {
# seatd does not build without -Wno flags as all warnings being treated as errors
export TARGET_CFLAGS=$(echo "${TARGET_CFLAGS} -Wno-unused-parameter")
}
post_install() {
enable_service seatd.service
}

View File

@ -0,0 +1,14 @@
[Unit]
Description=Seat Management Daemon
Before=graphical.target sway.service
After=multi-user.target
ConditionKernelCommandLine=!installer
[Service]
ExecStart=/usr/bin/seatd -u root -s /var/run/seatd.sock
Restart=always
RestartSec=1
[Install]
Alias=seat-management-daemon.service
WantedBy=graphical.target

View File

@ -0,0 +1,11 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="tllist"
PKG_VERSION="1.0.5"
PKG_SHA256="b0f32c9b2c2015c8d8dd068fd4e8b586aa91ca1670badc274ec962559ee0aadd"
PKG_LICENSE="MIT"
PKG_SITE="https://codeberg.org/dnkl/tllist"
PKG_URL="https://codeberg.org/dnkl/tllist/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="A C header file only implementation of a typed linked list."

View File

@ -0,0 +1,28 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="wlroots"
PKG_VERSION="0.15.0"
PKG_SHA256="fcb9e9dbbb112f5c527c1c4155994fd97b6b1eb3950316e186e3c293e7a07fc4"
PKG_LICENSE="MIT"
PKG_SITE="https://gitlab.freedesktop.org/wlroots/wlroots/"
PKG_URL="https://gitlab.freedesktop.org/wlroots/wlroots/-/archive/${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
PKG_DEPENDS_TARGET="toolchain libinput libxkbcommon pixman libdrm wayland wayland-protocols seatd"
PKG_LONGDESC="A modular Wayland compositor library"
configure_package() {
# OpenGLES Support
if [ "${OPENGLES_SUPPORT}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
fi
}
PKG_MESON_OPTS_TARGET="-Dxcb-errors=disabled \
-Dxwayland=disabled \
-Dexamples=false \
-Drenderers=gles2"
pre_configure_target() {
# wlroots does not build without -Wno flags as all warnings being treated as errors
export TARGET_CFLAGS=$(echo "${TARGET_CFLAGS} -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-function")
}

View File

@ -0,0 +1,22 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="bemenu"
PKG_VERSION="0.6.4"
PKG_SHA256="9b1ad6768a37e3b526ac31e05903b4fc8d95d28870c8fecbe803ccfc8eae1bbe"
PKG_LICENSE="MIT"
PKG_SITE="https://github.com/Cloudef/bemenu"
PKG_URL="https://github.com/Cloudef/bemenu/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain glib wayland wayland-protocols cairo pango libxkbcommon"
PKG_LONGDESC="Dynamic menu library and client program inspired by dmenu"
PKG_TOOLCHAIN="make"
PKG_MAKE_OPTS_TARGET="PREFIX=/usr clients wayland"
makeinstall_target(){
make DESTDIR=${INSTALL} PREFIX=/usr install-libs install-bins install-wayland install-pkgconfig
}
post_makeinstall_target(){
ln -sf libbemenu.so.${PKG_VERSION} ${INSTALL}/usr/lib/libbemenu.so.0
}

View File

@ -0,0 +1,197 @@
# -*- conf -*-
# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
term=xterm
# login-shell=no
# app-id=foot
title=foo terminal
# locked-title=no
font=monospace:size=12
# font-bold=<bold variant of regular font>
# font-italic=<italic variant of regular font>
# font-bold-italic=<bold+italic variant of regular font>
# line-height=<font metrics>
# letter-spacing=0
# horizontal-letter-offset=0
# vertical-letter-offset=0
# underline-offset=<font metrics>
# box-drawings-uses-font-glyphs=no
dpi-aware=auto
# initial-window-size-pixels=700x500 # Or,
# initial-window-size-chars=<COLSxROWS>
# initial-window-mode=windowed
# pad=2x2 # optionally append 'center'
# resize-delay-ms=100
# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
# bold-text-in-bright=no
# bell=none
# word-delimiters=,│`|:"'()[]{}<>
# selection-target=primary
# workers=<number of logical CPUs>
[bell]
# urgent=no
# notify=no
# command=
# command-focused=no
[scrollback]
# lines=1000
# multiplier=3.0
# indicator-position=relative
# indicator-format=
[url]
# launch=xdg-open ${url}
# label-letters=sadfjklewcmpgh
# osc8-underline=url-mode
# protocols=http, https, ftp, ftps, file, gemini, gopher
# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'
[cursor]
style=beam
color=000000 eeeeee
blink=yes
# beam-thickness=1.5
# underline-thickness=<font underline thickness>
[mouse]
# hide-when-typing=no
# alternate-scroll-mode=yes
[colors]
alpha=0.95
background=000000
foreground=eeeeee
regular0=1c1c1c # black
regular1=af005f # red
regular2=5faf00 # green
regular3=d7af5f # yellow
regular4=5fafd7 # blue
regular5=808080 # magenta
regular6=d7875f # cyan
regular7=d0d0d0 # white
bright0=bcbcbc # bright black
bright1=5faf5f # bright red
bright2=afd700 # bright green
bright3=af87d7 # bright yellow
bright4=ffaf00 # bright blue
bright5=ff5faf # bright magenta
bright6=00afaf # bright cyan
bright7=5f8787 # bright white
#selection-foreground=1c1c1c
#selection-background=af87d7
## Normal/regular colors (color palette 0-7)
# regular0=222222 # black
# regular1=cc9393 # red
# regular2=7f9f7f # green
# regular3=d0bf8f # yellow
# regular4=6ca0a3 # blue
# regular5=dc8cc3 # magenta
# regular6=93e0e3 # cyan
# regular7=dcdccc # white
## Bright colors (color palette 8-15)
# bright0=666666 # bright black
# bright1=dca3a3 # bright red
# bright2=bfebbf # bright green
# bright3=f0dfaf # bright yellow
# bright4=8cd0d3 # bright blue
# bright5=fcace3 # bright magenta
# bright6=b3ffff # bright cyan
# bright7=ffffff # bright white
## dimmed colors (see foot.ini(5) man page)
# dim0=<not set>
# ...
# dim7=<not-set>
## The remaining 256-color palette
# 16 = <256-color palette #16>
# ...
# 255 = <256-color palette #255>
## Misc colors
# selection-foreground=<inverse foreground/background>
# selection-background=<inverse foreground/background>
# jump-labels=<regular0> <regular3>
# urls=<regular3>
# scrollback-indicator=<regular0> <bright4>
[csd]
# preferred=server
# size=26
# font=<primary font>
# color=<foreground color>
# border-width=0
# border-color=<csd.color>
# button-width=26
# button-color=<background color>
# button-minimize-color=<regular4>
# button-maximize-color=<regular2>
# button-close-color=<regular1>
[key-bindings]
# scrollback-up-page=Shift+Page_Up
# scrollback-up-half-page=none
# scrollback-up-line=none
# scrollback-down-page=Shift+Page_Down
# scrollback-down-half-page=none
# scrollback-down-line=none
# clipboard-copy=Control+Shift+c
# clipboard-paste=Control+Shift+v
# primary-paste=Shift+Insert
# search-start=Control+Shift+r
# font-increase=Control+plus Control+equal Control+KP_Add
# font-decrease=Control+minus Control+KP_Subtract
# font-reset=Control+0 Control+KP_0
# spawn-terminal=Control+Shift+n
# minimize=none
# maximize=none
# fullscreen=none
# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
# pipe-selected=[xargs -r firefox] none
# show-urls-launch=Control+Shift+u
# show-urls-copy=none
# noop=none
[search-bindings]
# cancel=Control+g Control+c Escape
# commit=Return
# find-prev=Control+r
# find-next=Control+s
# cursor-left=Left Control+b
# cursor-left-word=Control+Left Mod1+b
# cursor-right=Right Control+f
# cursor-right-word=Control+Right Mod1+f
# cursor-home=Home Control+a
# cursor-end=End Control+e
# delete-prev=BackSpace
# delete-prev-word=Mod1+BackSpace Control+BackSpace
# delete-next=Delete
# delete-next-word=Mod1+d Control+Delete
# extend-to-word-boundary=Control+w
# extend-to-next-whitespace=Control+Shift+w
# clipboard-paste=Control+v Control+y
# primary-paste=Shift+Insert
[url-bindings]
# cancel=Control+g Control+c Control+d Escape
# toggle-url-visible=t
[mouse-bindings]
# primary-paste=BTN_MIDDLE
# select-begin=BTN_LEFT
# select-begin-block=Control+BTN_LEFT
# select-extend=BTN_RIGHT
# select-extend-character-wise=Control+BTN_RIGHT
# select-word=BTN_LEFT-2
# select-word-whitespace=Control+BTN_LEFT-2
# select-row=BTN_LEFT-3

View File

@ -0,0 +1,31 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="foot"
PKG_VERSION="1.10.3"
PKG_SHA256="24f57d9926ead7bea491f1bdd97eaceae5fdc10c1cb3435ee588a8f9c9af805a"
PKG_LICENSE="MIT"
PKG_SITE="https://codeberg.org/dnkl/foot/"
PKG_URL="https://codeberg.org/dnkl/foot/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain ncurses wayland wayland-protocols pixman fontconfig libxkbcommon fcft"
PKG_LONGDESC="A fast, lightweight and minimalistic Wayland terminal emulator"
PKG_MESON_OPTS_TARGET="-Ddocs=disabled \
-Dthemes=false \
-Dime=false \
-Dgrapheme-clustering=auto \
-Dterminfo=disabled \
-Ddefault-terminfo=xterm"
post_makeinstall_target(){
# clean up
safe_remove ${INSTALL}/usr/share/*
# install scripts
mkdir -p ${INSTALL}/usr/bin
cp ${PKG_DIR}/scripts/foot.sh ${INSTALL}/usr/bin
# install config
mkdir -p ${INSTALL}/usr/share/foot
cp ${PKG_DIR}/config/foot.ini ${INSTALL}/usr/share/foot
}

View File

@ -0,0 +1,18 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
FOOT_CONFIG_DIR=/storage/.config/foot
FOOT_CONFIG_DEFAULT=/usr/share/foot/foot.ini
FOOT_LOG_FILE=/var/log/foot.log
if [ ! -f ${FOOT_CONFIG_DIR}/foot.ini ]; then
mkdir -p ${FOOT_CONFIG_DIR}
cp ${FOOT_CONFIG_DEFAULT} ${FOOT_CONFIG_DIR}
fi
if [ -z "${LOCPATH}" ]; then
export LOCPATH="/storage/.cache/locpath"
fi
/usr/bin/foot > ${FOOT_LOG_FILE} 2>&1

View File

@ -0,0 +1,19 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="swaybg"
PKG_VERSION="1.1"
PKG_SHA256="958f425310514ae2aae064595c3e7efba2187b0d2947136c49188558fdb367b1"
PKG_LICENSE="MIT"
PKG_SITE="https://swaywm.org/"
PKG_URL="https://github.com/swaywm/swaybg/archive/v${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain wayland wayland-protocols cairo pango gdk-pixbuf"
PKG_LONGDESC="Wallpaper tool for Wayland compositors"
PKG_MESON_OPTS_TARGET="-Dgdk-pixbuf=enabled \
-Dman-pages=disabled"
pre_configure_target() {
# swaybg does not build without -Wno flags as all warnings being treated as errors
export TARGET_CFLAGS=$(echo "${TARGET_CFLAGS} -Wno-maybe-uninitialized")
}

View File

@ -0,0 +1,11 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="wlr-randr"
PKG_VERSION="0.2.0"
PKG_SHA256="12745bc8050a56603bf9bdee70c798b5d6502cf00a795c59fd03e1d786c17ce3"
PKG_LICENSE="MIT"
PKG_SITE="https://git.sr.ht/~emersion/wlr-randr"
PKG_URL="https://git.sr.ht/~emersion/wlr-randr/archive/v${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain wayland"
PKG_LONGDESC="Utility to manage outputs of a Wayland compositor."

View File

@ -2,8 +2,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="wayland-protocols"
PKG_VERSION="1.24"
PKG_SHA256="bff0d8cffeeceb35159d6f4aa6bab18c807b80642c9d50f66cba52ecf7338bc2"
PKG_VERSION="1.25"
PKG_SHA256="f1ff0f7199d0a0da337217dd8c99979967808dc37731a1e759e822b75b571460"
PKG_LICENSE="OSS"
PKG_SITE="https://wayland.freedesktop.org/"
PKG_URL="https://wayland.freedesktop.org/releases/${PKG_NAME}-${PKG_VERSION}.tar.xz"

View File

@ -2,8 +2,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="waylandpp"
PKG_VERSION="0.2.8"
PKG_SHA256="e7f486165d3568c3558b5c7099133aea4a285b82820eeafad329fc10271c654d"
PKG_VERSION="0.2.9"
PKG_SHA256="9d34acd88149897d587b979fc454fd8e5be8021ba3d09ad24c77a4b7acff2ebd"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/NilsBrause/waylandpp"
PKG_URL="https://github.com/NilsBrause/waylandpp/archive/${PKG_VERSION}.tar.gz"

View File

@ -2,10 +2,12 @@
idle-time=0
[shell]
locking=false
background-color=0x00000000
background-image=/usr/share/weston/splash-2160.png
background-image=/usr/share/weston/libreelec-wallpaper-2160.png
background-type=scale-crop
background-color=0x00000000
clock-format=minutes-24h
locking=false
[launcher]
path=/usr/lib/kodi/kodi.bin

View File

@ -2,34 +2,50 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="weston"
PKG_VERSION="9.0.0"
PKG_SHA256="5cf5d6ce192e0eb15c1fc861a436bf21b5bb3b91dbdabbdebe83e1f83aa098fe"
PKG_LICENSE="OSS"
PKG_VERSION="10.0.0"
PKG_SHA256="5c23964112b90238bed39e5dd1e41cd71a79398813cdc3bbb15a9fdc94e547ae"
PKG_LICENSE="MIT"
PKG_SITE="https://wayland.freedesktop.org/"
PKG_URL="https://wayland.freedesktop.org/releases/${PKG_NAME}-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain wayland wayland-protocols libdrm libxkbcommon libinput cairo libjpeg-turbo dbus"
PKG_DEPENDS_TARGET="toolchain wayland wayland-protocols libdrm libxkbcommon libinput cairo pango libjpeg-turbo dbus seatd"
PKG_LONGDESC="Reference implementation of a Wayland compositor"
PKG_MESON_OPTS_TARGET="-Dbackend-drm-screencast-vaapi=false \
PKG_MESON_OPTS_TARGET="-Dbackend-drm=true \
-Dbackend-drm-screencast-vaapi=false \
-Dbackend-headless=false \
-Dbackend-rdp=false \
-Dscreenshare=false \
-Dbackend-wayland=false \
-Dbackend-x11=false \
-Dbackend-fbdev=false \
-Ddeprecated-backend-fbdev=false \
-Dbackend-default=drm \
-Drenderer-gl=true \
-Dweston-launch=false \
-Dxwayland=false \
-Dsystemd=true \
-Dremoting=false \
-Dpipewire=false \
-Dshell-desktop=true \
-Dshell-fullscreen=false \
-Dshell-ivi=false \
-Dshell-kiosk=false \
-Ddesktop-shell-client-default="weston-desktop-shell" \
-Ddeprecated-wl-shell=false \
-Dcolor-management-lcms=false \
-Dcolor-management-colord=false \
-Dlauncher-logind=false \
-Dlauncher-libseat=true \
-Dimage-jpeg=true \
-Dimage-webp=false \
-Dtools=['terminal']
-Ddemo-clients=false \
-Dsimple-clients=egl \
-Dsimple-clients=[] \
-Dresize-pool=false \
-Dwcap-decode=false \
-Dtest-junit-xml=false"
-Dtest-junit-xml=false \
-Dtest-skip-is-failure=false \
-Dtest-gl-renderer=false \
-Ddoc=false"
pre_configure_target() {
# weston does not build with NDEBUG (requires assert for tests)
@ -42,12 +58,9 @@ post_makeinstall_target() {
mkdir -p ${INSTALL}/usr/share/weston
cp ${PKG_DIR}/config/weston.ini ${INSTALL}/usr/share/weston
find_file_path "splash/splash-2160.png" && cp ${FOUND_PATH} ${INSTALL}/usr/share/weston
find_file_path "splash/splash-2160.png" && cp ${FOUND_PATH} ${INSTALL}/usr/share/weston/libreelec-wallpaper-2160.png
safe_remove ${INSTALL}/usr/share/wayland-sessions
safe_remove ${INSTALL}/usr/bin/weston-calibrator
safe_remove ${INSTALL}/usr/bin/weston-simple-*
safe_remove ${INSTALL}/usr/bin/weston-touch-calibrator
}
post_install() {

View File

@ -1,73 +0,0 @@
From ae69381b6eb43ab63992906d1bf29ffd2b4df10d Mon Sep 17 00:00:00 2001
From: Manuel Stoeckl <code@mstoeckl.com>
Date: Sun, 30 Aug 2020 18:49:18 -0400
Subject: [PATCH] compositor: avoid setting WAYLAND_DISPLAY=wayland-0
This commit alters the way that Weston picks a Wayland display socket
name. Instead of using wl_display_add_socket_auto to look for the first
available name in wayland-0, wayland-1, .... to wayland-32, the code now
checks names wayland-1, wayland-2, .... up to wayland-32.
This change is a workaround for a suboptimal behavior of
libwayland-client. If a client program calls wl_display_connect(NULL) and
the WAYLAND_DISPLAY environment variable is not set, then the program will
by default try to connect to 'wayland-0'. This is a problem when a
computer has a running Wayland compositor but is being accessed in some
other fashion, such as through an X session on a different virtual
terminal, over ssh, etc. Client programs launched through those means may
attempt to connect to an unrelated compositor. Changing libwayland
behavior to remove the default would also work, but a) libraries have
stronger backward compatibility expectations b) that would likely break
more people's setups than just changing Weston would.
Signed-off-by: Manuel Stoeckl <code@mstoeckl.com>
---
compositor/main.c | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/compositor/main.c b/compositor/main.c
index 2554b7627..0c8c8e027 100644
--- a/compositor/main.c
+++ b/compositor/main.c
@@ -825,24 +825,29 @@ handle_primary_client_destroyed(struct wl_listener *listener, void *data)
static int
weston_create_listening_socket(struct wl_display *display, const char *socket_name)
{
+ char name_candidate[16];
+
if (socket_name) {
if (wl_display_add_socket(display, socket_name)) {
weston_log("fatal: failed to add socket: %s\n",
strerror(errno));
return -1;
}
+
+ setenv("WAYLAND_DISPLAY", socket_name, 1);
+ return 0;
} else {
- socket_name = wl_display_add_socket_auto(display);
- if (!socket_name) {
- weston_log("fatal: failed to add socket: %s\n",
- strerror(errno));
- return -1;
+ for (int i = 1; i <= 32; i++) {
+ sprintf(name_candidate, "wayland-%d", i);
+ if (wl_display_add_socket(display, name_candidate) >= 0) {
+ setenv("WAYLAND_DISPLAY", name_candidate, 1);
+ return 0;
+ }
}
+ weston_log("fatal: failed to add socket: %s\n",
+ strerror(errno));
+ return -1;
}
-
- setenv("WAYLAND_DISPLAY", socket_name, 1);
-
- return 0;
}
WL_EXPORT void *
--
GitLab

View File

@ -1,4 +1,5 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
export WAYLAND_DISPLAY=wayland-1
export XDG_RUNTIME_DIR=/var/run/0-runtime-dir

View File

@ -10,8 +10,8 @@
# Displayserver to use (wl / x11 / no)
DISPLAYSERVER="wl"
# Windowmanager to use (fluxbox / weston / no)
WINDOWMANAGER="weston"
# Windowmanager to use (fluxbox / sway / weston / no)
WINDOWMANAGER="sway"
# KODI Player implementation to use (mesa / default)
KODIPLAYER_DRIVER="mesa"
@ -19,7 +19,7 @@
# set the addon project
ADDON_PROJECT="Generic"
# Mesa 3D Graphic drivers to use (all / crocus,i915,iris,r300,r600,radeonsi,vmware,virtio)
# Mesa 3D Graphic / NVIDIA drivers to use (all / crocus,i915,iris,nvidia-ng,r300,r600,radeonsi,vmware,virtio)
# Space separated list is supported,
# e.g. GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi vmware virtio"
GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi vmware virtio"
GRAPHIC_DRIVERS="crocus i915 iris nvidia-ng r300 r600 radeonsi vmware virtio"