chore(sync): frawhide -> el10

This commit is contained in:
madonuko
2025-02-14 00:18:50 +08:00
parent 8f6903ca6d
commit 9fee4fdd26
657 changed files with 29285 additions and 6961 deletions
+3
View File
@@ -3,4 +3,7 @@ project pkg {
rpm {
spec = "anki-bin.spec"
}
labels {
subrepo = "extras"
}
}
+1 -1
View File
@@ -1,5 +1,5 @@
Name: anki-qt5
Version: 24.06.3
Version: 25.02
Release: 1%?dist
Summary: Flashcard program for using space repetition learning
License: AGPL-3.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-or-later AND MIT AND BSD-3-Clause AND CC-BY-SA-3.0 AND CC-BY-3.0 AND Apache-2.0 AND CC-BY-2.5
+3
View File
@@ -3,4 +3,7 @@ project pkg {
rpm {
spec = "anki.spec"
}
labels {
subrepo = "extras"
}
}
+3 -3
View File
@@ -1,6 +1,6 @@
Name: anki
Version: 24.06.3
Release: 2%?dist
Version: 25.02
Release: 1%?dist
Summary: Flashcard program for using space repetition learning
License: AGPL-3.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-or-later AND MIT AND BSD-3-Clause AND CC-BY-SA-3.0 AND CC-BY-3.0 AND Apache-2.0 AND CC-BY-2.5
URL: https://apps.ankiweb.net/
@@ -9,7 +9,7 @@ BuildRequires: python3-distro python3-flask-cors python3-jsonschema python3-sen
BuildRequires: python3-installer make mold cargo git rsync ninja-build libxcrypt-compat nodejs python3.9 python-unversioned-command gcc python3-pyqt6-webengine
Requires: hicolor-icon-theme python3-sqlalchemy python3-simplejson python3-matplotlib python3-decorator python3-markdown python3-send2trash
Requires: python3-requests python3-pygame python3-beautifulsoup4 python3-httplib2 python3-pyaudio python3-jsonschema sox libxcrypt-compat python3-pyqt6-webengine
Recommends: mpv
Recommends: (mpv or mpv-nightly)
Obsoletes: anki <= 2.1.15
Conflicts: anki-qt5
Patch0: 0001-No-update.patch
-5
View File
@@ -1,5 +0,0 @@
project pkg {
rpm {
spec = "armcord-bin.spec"
}
}
-78
View File
@@ -1,78 +0,0 @@
%define debug_package %nil
%global _build_id_links none
%ifarch x86_64
%global src ArmCord-%version-linux-x64
%elifarch aarch64
%global src ArmCord-%version-linux-arm64
%elifarch armv7l
%global src ArmCord-%version-linux-armv7l
%endif
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/armcord/.*\\.so
Name: armcord-bin
Version: 3.3.1
Release: 1%?dist
License: OSL-3.0
Summary: Custom lightweight Discord client designed to enhance your experience
URL: https://github.com/ArmCord/ArmCord
Group: Applications/Internet
Source0: %url/releases/download/v%version/%src.tar.gz
Source1: armcord.png
Source2: https://raw.githubusercontent.com/ArmCord/ArmCord/v%version/README.md
Requires: electron xdg-utils
ExclusiveArch: x86_64 aarch64 armv7l
Conflicts: armcord
BuildRequires: add-determinism
%description
ArmCord is a custom client designed to enhance your Discord experience
while keeping everything lightweight.
%prep
%autosetup -n %src
cat <<EOF > .armcord.desktop
[Desktop Entry]
Name=ArmCord
Comment=%summary
GenericName=Internet Messenger
Type=Application
Exec=%_bindir/armcord
Icon=armcord
Categories=Network;InstantMessaging;
StartupWMClass=armcord
Keywords=discord;armcord;vencord;shelter;electron;
EOF
%build
%install
mkdir -p %buildroot%_bindir %buildroot%_datadir/applications %buildroot%_datadir/pixmaps %buildroot%_datadir/armcord %buildroot%_docdir/%name
cp -a * %buildroot%_datadir/armcord/
ln -s %_datadir/armcord/armcord %buildroot%_bindir/armcord
chmod +x -R %buildroot%_datadir/armcord/*
chmod 755 %buildroot%_datadir/armcord/armcord
install -Dm644 .armcord.desktop %buildroot%_datadir/applications/ArmCord.desktop
install -Dm644 %SOURCE1 %buildroot%_datadir/pixmaps/armcord.png
install -Dm644 %SOURCE2 %buildroot%_docdir/%name/
%files
%doc README.md
%_datadir/armcord
%_bindir/armcord
%_datadir/applications/ArmCord.desktop
%_datadir/pixmaps/armcord.png
%changelog
* Sat Jun 17 2023 windowsboy111 <windowsboy111@fyralabs.com> - 3.2.0-2
- Remove libnotify dependency.
- Fix desktop entry.
- Set as noarch package because there are not binary files.
- Use /usr/share/ instead of /opt/
* Sat May 6 2023 windowsboy111 <windowsboy111@fyralabs.com> - 3.1.7-1
- Initial package
-1
View File
@@ -1 +0,0 @@
rpm.version(gh("ArmCord/ArmCord"));
-70
View File
@@ -1,70 +0,0 @@
%define debug_package %nil
Name: armcord
Version: 3.3.1
Release: 1%?dist
License: OSL-3.0
Summary: Custom lightweight Discord client designed to enhance your experience
URL: https://github.com/ArmCord/ArmCord
Group: Applications/Internet
Source1: launch.sh
Packager: madonuko <mado@fyralabs.com>
Requires: electron xdg-utils
BuildRequires: git-core add-determinism pnpm
Conflicts: armcord-bin
BuildArch: noarch
%description
ArmCord is a custom client designed to enhance your Discord experience
while keeping everything lightweight.
%prep
rm -rf *
git clone %url .
git checkout v%version
cat <<EOF > armcord.desktop
[Desktop Entry]
Name=ArmCord
Comment=%summary
GenericName=Internet Messenger
Type=Application
Exec=/usr/bin/armcord
Icon=armcord
Categories=Network;InstantMessaging;
StartupWMClass=armcord
Keywords=discord;armcord;vencord;shelter;electron;
EOF
%build
pnpm install --no-frozen-lockfile
pnpm run packageQuick
%install
install -Dm644 dist/*-unpacked/resources/app.asar %buildroot/usr/share/armcord/app.asar
install -Dm755 %SOURCE1 %buildroot/usr/bin/armcord
install -Dm644 armcord.desktop %buildroot/usr/share/applications/ArmCord.desktop
install -Dm644 build/icon.png %buildroot/usr/share/pixmaps/armcord.png
%files
%doc README.md
%license license.txt
/usr/bin/armcord
/usr/share/applications/ArmCord.desktop
/usr/share/pixmaps/armcord.png
/usr/share/armcord/app.asar
%changelog
* Mon Aug 26 2024 madonuko <mado@fyralabs.com> - 3.3.0-1
- Update to license.txt
* Sat Jun 17 2023 windowsboy111 <windowsboy111@fyralabs.com> - 3.2.0-2
- Remove libnotify dependency.
- Fix desktop entry.
- Set as noarch package because there are not binary files.
* Sat May 6 2023 windowsboy111 <windowsboy111@fyralabs.com> - 3.1.7-1
- Initial package
-1
View File
@@ -1 +0,0 @@
rpm.version(gh("ArmCord/ArmCord"));
@@ -2,8 +2,8 @@
%global __provides_exclude ^lib-.*.so
Name: audacity-freeworld
Version: 3.7.1
Release: 1%{?dist}
Version: Audacity.3.7.1
Release: 1%?dist
Summary: Multitrack audio editor
License: GPLv2
URL: https://www.audacityteam.org/
+1 -1
View File
@@ -8,7 +8,7 @@ for background device management, as well as a GUI to expertly customize your se
%global __brp_mangle_shebangs %{nil}
Name: coolercontrol
Version: 1.4.0
Version: 1.4.5
Release: 1%?dist
Summary: Cooling device control for Linux
License: GPL-3.0-or-later
@@ -6,7 +6,7 @@
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: discord-canary-openasar
Version: 0.0.483
Version: 0.0.589
Release: 1%?dist
Summary: A snappier Discord rewrite with features like further customization and theming
License: MIT AND https://discord.com/terms
@@ -1,3 +1 @@
let html = get("https://discordapp.com/api/download/canary?platform=linux&format=tar.gz");
let newver = find("https://dl-canary\\.discordapp\\.net/apps/linux/([\\.\\d]+)/", html, 1);
rpm.version(newver);
rpm.version(get("https://discord.com/api/canary/updates?platform=linux").json().name);
+1 -1
View File
@@ -6,7 +6,7 @@
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: discord-canary
Version: 0.0.483
Version: 0.0.589
Release: 1%?dist
Summary: Free Voice and Text Chat for Gamers
URL: discord.com
+1 -3
View File
@@ -1,3 +1 @@
let html = get("https://discordapp.com/api/download/canary?platform=linux&format=tar.gz");
let newver = find("https://dl-canary\\.discordapp\\.net/apps/linux/([\\.\\d]+)/", html, 1);
rpm.version(newver);
rpm.version(get("https://discord.com/api/canary/updates?platform=linux").json().name);
@@ -6,7 +6,7 @@
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: discord-openasar
Version: 0.0.68
Version: 0.0.85
Release: 1%?dist
Summary: A snappier Discord rewrite with features like further customization and theming
License: MIT AND https://discord.com/terms
+1 -3
View File
@@ -1,3 +1 @@
let html = get("https://discordapp.com/api/download?platform=linux&format=tar.gz");
let newver = find("https://dl\\.discordapp\\.net/apps/linux/([\\.\\d]+)/", html, 1);
rpm.version(newver);
rpm.version(get("https://discord.com/api/stable/updates?platform=linux").json().name);
@@ -6,7 +6,7 @@
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: discord-ptb-openasar
Version: 0.0.103
Version: 0.0.130
Release: 1%?dist
Summary: A snappier Discord rewrite with features like further customization and theming
License: MIT AND https://discord.com/terms
+1 -3
View File
@@ -1,3 +1 @@
let html = get("https://discordapp.com/api/download/ptb?platform=linux&format=tar.gz");
let newver = find("https://dl-ptb\\.discordapp\\.net/apps/linux/([\\.\\d]+)/", html, 1);
rpm.version(newver);
rpm.version(get("https://discord.com/api/ptb/updates?platform=linux").json().name);
+1 -1
View File
@@ -6,7 +6,7 @@
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: discord-ptb
Version: 0.0.103
Version: 0.0.130
Release: 1%?dist
Summary: Free Voice and Text Chat for Gamers.
URL: https://discord.com
+1 -3
View File
@@ -1,3 +1 @@
let html = get("https://discordapp.com/api/download/ptb?platform=linux&format=tar.gz");
let newver = find("https://dl-ptb\\.discordapp\\.net/apps/linux/([\\.\\d]+)/", html, 1);
rpm.version(newver);
rpm.version(get("https://discord.com/api/ptb/updates?platform=linux").json().name);
+1 -1
View File
@@ -6,7 +6,7 @@
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: discord
Version: 0.0.68
Version: 0.0.85
Release: 1%?dist
Summary: Free Voice and Text Chat for Gamers
URL: https://discord.com
+1 -3
View File
@@ -1,3 +1 @@
let html = get("https://discordapp.com/api/download?platform=linux&format=tar.gz");
let newver = find("https://dl\\.discordapp\\.net/apps/linux/([\\.\\d]+)/", html, 1);
rpm.version(newver);
rpm.version(get("https://discord.com/api/stable/updates?platform=linux").json().name);
+4 -3
View File
@@ -1,8 +1,8 @@
%global commit f8a18e96f049f2fd51409aac011e1aa09eaac2db
%global commit_date 20240910
%global commit 3680e305a9824f851a441bc96fc7654ef849b01a
%global commit_date 20250127
%global shortcommit %(c=%{commit}; echo ${c:0:7})
Name: envision
Name: envision-nightly
Version: %commit_date.%shortcommit
Release: 1%?dist
Summary: UI for building, configuring and running Monado, the open source OpenXR runtime
@@ -23,6 +23,7 @@ BuildRequires: desktop-file-utils
BuildRequires: glib2-devel
BuildRequires: git-core
Recommends: android-tools
Conflicts: envision
%description
%summary.
+1 -1
View File
@@ -6,7 +6,7 @@
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: feishin
Version: 0.8.1
Version: 0.12.2
Release: 1%?dist
Summary: A modern self-hosted music player
License: GPL-3.0
+7 -10
View File
@@ -1,23 +1,19 @@
%global commit f215a218d8145cb86d50fc7a8dd81563fff83955
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global commit_date 20241217
Name: fontviewer
Version: %{commit_date}.git~%{shortcommit}
Epoch: 1
Version: 1.1.0
Release: 1%?dist
Summary: View and install fonts
License: GPL-2.0
URL: https://github.com/chocolateimage/%{name}
Source0: %{url}/archive/%{commit}.tar.gz
Source0: %{url}/archive/v%{version}.tar.gz
BuildRequires: gcc-c++
BuildRequires: meson
BuildRequires: pkgconfig(cairomm-1.0)
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(gtkmm-3.0)
BuildRequires: pkgconfig(libcurl)
BuildRequires: json-glib-devel
Requires: gtk3 fontconfig
@@ -27,7 +23,7 @@ Packager: sadlerm <sad_lerm@hotmail.com>
A platform-agnostic GTK+ 3 alternative to GNOME's Font Viewer
%prep
%autosetup -n %{name}-%{commit} -p1
%autosetup
%build
%meson
@@ -41,3 +37,4 @@ A platform-agnostic GTK+ 3 alternative to GNOME's Font Viewer
%doc README.md
%{_bindir}/%{name}
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/scalable/actions/%{name}-google-symbolic.svg
+2 -3
View File
@@ -1,5 +1,4 @@
rpm.global("commit", gh_commit("chocolateimage/fontviewer"));
rpm.version(gh("chocolateimage/fontviewer"));
if rpm.changed() {
rpm.release();
rpm.global("commit_date", date());
rpm.release();
}
+1 -1
View File
@@ -5,7 +5,7 @@
%global pure_protobuf_version 2.0.0
Name: komikku
Version: 1.57.0
Version: 1.70.0
%forgemeta
Release: 1%?dist
Summary: A manga reader for GNOME
+5
View File
@@ -0,0 +1,5 @@
project pkg {
rpm {
spec = "legcord-bin.spec"
}
}
@@ -0,0 +1,96 @@
%define debug_package %nil
%global _build_id_links none
%ifarch x86_64
%global src LegCord-%version-linux-x64
%elifarch aarch64
%global src LegCord-%version-linux-arm64
%elifarch armv7l
%global src LegCord-%version-linux-armv7l
%endif
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/(armcord|legcord)/.*\\.so
Name: legcord-bin
Version: 1.1.0
Release: 1%?dist
License: OSL-3.0
Summary: Custom lightweight Discord client designed to enhance your experience
URL: https://github.com/LegCord/LegCord
Group: Applications/Internet
Source0: %url/releases/download/v%version/%src.zip
Source1: legcord.png
Source2: https://raw.githubusercontent.com/LegCord/LegCord/v%version/README.md
Requires: xdg-utils
BuildRequires: unzip
ExclusiveArch: x86_64 aarch64 armv7l
Conflicts: legcord
Conflicts: legcord-nightly
BuildRequires: add-determinism
Obsoletes: armcord < 3.3.2-1
%description
LegCord is a custom client designed to enhance your Discord experience
while keeping everything lightweight.
%prep
mkdir legcord
cd legcord
unzip %SOURCE0
cat <<EOF > .legcord.desktop
[Desktop Entry]
Name=LegCord
Comment=%summary
GenericName=Internet Messenger
Type=Application
Exec=%_bindir/legcord
Icon=legcord
Categories=Network;InstantMessaging;
StartupWMClass=legcord
Keywords=discord;armcord;legcord;vencord;shelter;electron;
EOF
%build
%install
cd legcord
mkdir -p %buildroot%_bindir %buildroot%_datadir/applications %buildroot%_datadir/pixmaps %buildroot%_datadir/legcord %buildroot%_docdir/%name
cp -a * %buildroot%_datadir/legcord/
ln -s %_datadir/legcord/legcord %buildroot%_bindir/legcord
ln -s %_datadir/legcord %buildroot%_datadir/armcord
chmod +x -R %buildroot%_datadir/legcord/*
chmod 755 %buildroot%_datadir/legcord/legcord
install -Dm644 .legcord.desktop %buildroot%_datadir/applications/LegCord.desktop
install -Dm644 %SOURCE1 %buildroot%_datadir/pixmaps/legcord.png
install -Dm644 %SOURCE2 %buildroot%_docdir/%name/
# HACK: rpm bug for unability to replace existing files on system.
%pre
if [ -d %_datadir/armcord ] && [ ! -L %_datadir/armcord ]; then
echo "Found old %_datadir/armcord directory, removing"
rm -rf %_datadir/armcord
fi
%files
%doc README.md
%_datadir/legcord
%_datadir/armcord
%_bindir/legcord
%_datadir/applications/LegCord.desktop
%_datadir/pixmaps/legcord.png
%changelog
* Mon Oct 21 2024 madonuko <mado@fyralabs.com> - 1.0.2-2
- Rename to LegCord.
* Sat Jun 17 2023 madonuko <mado@fyralabs.com> - 3.2.0-2
- Remove libnotify dependency.
- Fix desktop entry.
- Set as noarch package because there are not binary files.
- Use /usr/share/ instead of /opt/
* Sat May 6 2023 madonuko <mado@fyralabs.com> - 3.1.7-1
- Initial package

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

@@ -0,0 +1 @@
rpm.version(gh("LegCord/LegCord"));
+9
View File
@@ -0,0 +1,9 @@
project pkg {
arches = ["x86_64"]
rpm {
spec = "legcord-nightly.spec"
}
labels {
nightly = 1
}
}
@@ -0,0 +1,91 @@
%global commit 07451f0d7e110cf6d31d0e32abedcefcff256d78
%global commit_date 20250213
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%define debug_package %nil
Name: legcord-nightly
Version: %commit_date.%shortcommit
Release: 1%?dist
License: OSL-3.0
Summary: Custom lightweight Discord client designed to enhance your experience
URL: https://github.com/LegCord/LegCord
Group: Applications/Internet
Source0: %url/archive/%commit/legcord-%commit.tar.gz
Source1: launch.sh
Packager: Owen <owen@fyralabs.com>
Requires: electron xdg-utils
Provides: armcord-nightly
Obsoletes: armcord < 3.3.2-1
Conflicts: legcord-bin
Conflicts: legcord
BuildArch: noarch
BuildRequires: anda-srpm-macros pnpm
%description
legcord is a custom client designed to enhance your Discord experience
while keeping everything lightweight.
%prep
%autosetup -n Legcord-%commit
cat <<EOF > legcord.desktop
[Desktop Entry]
Name=LegCord
Comment=%summary
GenericName=Internet Messenger
Type=Application
Exec=/usr/bin/legcord
Icon=legcord
Categories=Network;InstantMessaging;
StartupWMClass=legcord
Keywords=discord;armcord;legcord;vencord;shelter;electron;
EOF
%build
pnpm install --no-frozen-lockfile
pnpm run packageQuick
%install
install -Dm644 dist/*-unpacked/resources/app.asar %buildroot/usr/share/legcord/app.asar
install -Dm755 %SOURCE1 %buildroot/usr/bin/legcord
install -Dm644 legcord.desktop %buildroot/usr/share/applications/LegCord.desktop
install -Dm644 build/icon.png %buildroot/usr/share/pixmaps/legcord.png
ln -s %_datadir/legcord %buildroot%_datadir/armcord
# HACK: rpm bug for unability to replace existing files on system.
%pre
if [ -d %_datadir/armcord ] && [ ! -L %_datadir/armcord ]; then
echo "Found old %_datadir/armcord directory, removing"
rm -rf %_datadir/armcord
fi
%files
%doc README.md
%license license.txt
/usr/bin/legcord
/usr/share/applications/LegCord.desktop
/usr/share/pixmaps/legcord.png
/usr/share/legcord/app.asar
/usr/share/armcord
%changelog
* Fri Nov 22 2024 owen <owen@fyralabs.com> - 1.0.2-2
- Add nightly package.
* Mon Oct 21 2024 madonuko <mado@fyralabs.com> - 1.0.2-2
- Rename to LegCord.
* Mon Aug 26 2024 madonuko <mado@fyralabs.com> - 3.3.0-1
- Update to license.txt
* Sat Jun 17 2023 windowsboy111 <windowsboy111@fyralabs.com> - 3.2.0-2
- Remove libnotify dependency.
- Fix desktop entry.
- Set as noarch package because there are not binary files.
* Sat May 6 2023 windowsboy111 <windowsboy111@fyralabs.com> - 3.1.7-1
- Initial package
+5
View File
@@ -0,0 +1,5 @@
rpm.global("commit", gh_commit("Legcord/Legcord"));
if rpm.changed() {
rpm.release();
rpm.global("commit_date", date());
}
@@ -1,6 +1,6 @@
project pkg {
arches = ["x86_64"]
rpm {
spec = "armcord.spec"
spec = "legcord.spec"
}
}
+13
View File
@@ -0,0 +1,13 @@
#!/bin/sh
electron=/usr/bin/electron
CONFIG=${XDG_CONFIG_HOME:-~/.config}
FLAGS="$CONFIG/armcord-flags.conf"
# Allow users to override command-line options
if [ -f "$FLAGS" ]; then
USER_FLAGS="$(cat "$FLAGS")"
fi
# shellcheck disable=SC2086 # USER_FLAGS has to be unquoted
"$electron" /usr/share/armcord/app.asar $USER_FLAGS "$@"
+88
View File
@@ -0,0 +1,88 @@
%define debug_package %nil
# Exclude private libraries
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/(armcord|legcord)/.*\\.so
Name: legcord
Version: 1.1.0
Release: 1%?dist
License: OSL-3.0
Summary: Custom lightweight Discord client designed to enhance your experience
URL: https://github.com/LegCord/LegCord
Group: Applications/Internet
Source1: launch.sh
Packager: madonuko <mado@fyralabs.com>
Requires: electron xdg-utils
Provides: armcord
Obsoletes: armcord < 3.3.2-1
Conflicts: legcord-bin
Conflicts: legcord-nightly
BuildArch: noarch
BuildRequires: anda-srpm-macros pnpm
%description
legcord is a custom client designed to enhance your Discord experience
while keeping everything lightweight.
%prep
%git_clone %url v%version
cat <<EOF > legcord.desktop
[Desktop Entry]
Name=Legcord
Comment=%summary
GenericName=Internet Messenger
Type=Application
Exec=/usr/bin/legcord
Icon=legcord
Categories=Network;InstantMessaging;
StartupWMClass=legcord
Keywords=discord;armcord;legcord;vencord;shelter;electron;
EOF
%build
pnpm install --no-frozen-lockfile
pnpm run packageQuick
%install
install -Dm644 dist/*-unpacked/resources/app.asar %buildroot/usr/share/legcord/app.asar
install -Dm755 %SOURCE1 %buildroot/usr/bin/legcord
install -Dm644 legcord.desktop %buildroot/usr/share/applications/LegCord.desktop
install -Dm644 build/icon.png %buildroot/usr/share/pixmaps/legcord.png
ln -s %_datadir/legcord %buildroot%_datadir/armcord
# HACK: rpm bug for unability to replace existing files on system.
%pre
if [ -d %_datadir/armcord ] && [ ! -L %_datadir/armcord ]; then
echo "Found old %_datadir/armcord directory, removing"
rm -rf %_datadir/armcord
fi
%files
%doc README.md
%license license.txt
/usr/bin/legcord
/usr/share/applications/LegCord.desktop
/usr/share/pixmaps/legcord.png
/usr/share/legcord/app.asar
/usr/share/armcord
%changelog
* Mon Oct 21 2024 madonuko <mado@fyralabs.com> - 1.0.2-2
- Rename to LegCord.
* Mon Aug 26 2024 madonuko <mado@fyralabs.com> - 3.3.0-1
- Update to license.txt
* Sat Jun 17 2023 windowsboy111 <windowsboy111@fyralabs.com> - 3.2.0-2
- Remove libnotify dependency.
- Fix desktop entry.
- Set as noarch package because there are not binary files.
* Sat May 6 2023 windowsboy111 <windowsboy111@fyralabs.com> - 3.1.7-1
- Initial package
+1
View File
@@ -0,0 +1 @@
rpm.version(gh("LegCord/LegCord"));
+3 -3
View File
@@ -1,7 +1,7 @@
%global commit f6d931301bd226239d95f59e3f18abfeab692ee9
%global commit f7a681b3624fe95bd9b8bcb390f3259481a18532
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global commit_date 20240909
%global ver 0.38.0
%global commit_date 20250213
%global ver 0.39.0
Name: mpv-nightly
Version: %ver^%commit_date.%shortcommit
+9 -21
View File
@@ -1,4 +1,4 @@
%global ver 2024-09-10
%global ver 2025-02-13
%global goodver %(echo %ver | sed 's/-//g')
%global __brp_mangle_shebangs %{nil}
%bcond_without mold
@@ -16,7 +16,7 @@ URL: https://ruffle.rs/
Source0: https://github.com/ruffle-rs/ruffle/archive/refs/tags/nightly-%ver.tar.gz
Provides: ruffle
BuildRequires: cargo-rpm-macros >= 24
BuildRequires: anda-srpm-macros
BuildRequires: anda-srpm-macros mold
BuildRequires: gcc-c++ cmake java
BuildRequires: java-latest-openjdk-headless
BuildRequires: pkgconfig(alsa)
@@ -32,37 +32,25 @@ Packager: madonuko <mado@fyralabs.com>
%license LICENSE.md
%license LICENSE.dependencies
%_bindir/ruffle_desktop
%_datadir/applications/ruffle_desktop.desktop
%_iconsdir/hicolor/scalable/apps/ruffle_desktop.svg
%_datadir/applications/rs.ruffle.Ruffle.desktop
%_iconsdir/hicolor/scalable/apps/rs.ruffle.Ruffle.svg
%_metainfodir/rs.ruffle.Ruffle.metainfo.xml
%prep
%autosetup -n ruffle-nightly-%ver
%autosetup -n ruffle-nightly-%ver -p1
%cargo_prep_online
sed -iE 's@^Exec=ruffle %%u$@Exec=ruffle_desktop %%u@' desktop/packages/linux/rs.ruffle.Ruffle.desktop
cat desktop/packages/linux/rs.ruffle.Ruffle.desktop
cat<<EOF > ruffle_desktop.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Ruffle Desktop
Comment=%summary
Exec=%_bindir/ruffle_desktop
Icon=ruffle_desktop
Terminal=false
StartupNotify=false
Categories=Application;
MimeType=application/x-shockwave-flash;
EOF
%build
%{cargo_license_online} > LICENSE.dependencies
%install
cd desktop
%cargo_install
install -Dm644 assets/icon.svg %buildroot%_iconsdir/hicolor/scalable/apps/ruffle_desktop.svg
install -Dm644 ../ruffle_desktop.desktop %buildroot%_datadir/applications/ruffle_desktop.desktop
install -Dm644 packages/linux/rs.ruffle.Ruffle.svg %buildroot%_iconsdir/hicolor/scalable/apps/rs.ruffle.Ruffle.svg
install -Dm644 packages/linux/rs.ruffle.Ruffle.desktop %buildroot%_datadir/applications/rs.ruffle.Ruffle.desktop
install -Dm644 packages/linux/rs.ruffle.Ruffle.metainfo.xml %buildroot%_metainfodir/rs.ruffle.Ruffle.metainfo.xml
%changelog
* Mon Jul 29 2024 madonuko <mado@fyralabs.com>
@@ -0,0 +1,27 @@
From 44046bfbcb30a19c45416113a2a82a4d17a1a998 Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Mon, 14 Aug 2023 14:06:45 +0200
Subject: [PATCH 01/10] main: update GPUs comment for dbus property
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
src/net.hadess.SwitcherooControl.xml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/net.hadess.SwitcherooControl.xml b/src/net.hadess.SwitcherooControl.xml
index e52bc1a..59a8896 100644
--- a/src/net.hadess.SwitcherooControl.xml
+++ b/src/net.hadess.SwitcherooControl.xml
@@ -38,7 +38,8 @@
will contain a user-facing name for the GPU, the "Environment" (as) key will
contain an array of even number of strings, each being an environment
variable to set to use the GPU, followed by its value, the "Default" (b) key
- will tag the default (usually integrated) GPU.
+ will tag the default GPU, the "Discrete" (b) key tags if the GPU is a
+ dedicated component.
-->
<property name="GPUs" type="aa{sv}" access="read"/>
--
2.46.0
@@ -0,0 +1,379 @@
From 4f31415cb61a50c2bcba1510a7511518417d0970 Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Mon, 11 Sep 2023 15:21:46 +0200
Subject: [PATCH 02/10] main: add Discrete key
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
.gitlab-ci.yml | 1 +
data/30-discrete-gpu.rules.in | 3 +
data/meson.build | 7 ++
meson.build | 9 +++
meson_options.txt | 24 +++++++
src/discrete-detection/amdgpu.c | 46 +++++++++++++
src/discrete-detection/meson.build | 18 +++++
src/discrete-detection/nouveau.c | 105 +++++++++++++++++++++++++++++
src/meson.build | 4 +-
src/switcheroo-control.c | 16 +++++
10 files changed, 232 insertions(+), 1 deletion(-)
create mode 100644 data/30-discrete-gpu.rules.in
create mode 100644 src/discrete-detection/amdgpu.c
create mode 100644 src/discrete-detection/meson.build
create mode 100644 src/discrete-detection/nouveau.c
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a6aa3c7..a09fe20 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,6 +3,7 @@ image: fedora:rawhide
variables:
DEPENDENCIES: glib2-devel
libgudev-devel
+ libdrm-devel
gtk-doc
gcc
gcc-c++
diff --git a/data/30-discrete-gpu.rules.in b/data/30-discrete-gpu.rules.in
new file mode 100644
index 0000000..a803ed4
--- /dev/null
+++ b/data/30-discrete-gpu.rules.in
@@ -0,0 +1,3 @@
+DRIVERS=="amdgpu", SUBSYSTEM=="drm", PROGRAM="@libexecdir@/check-discrete-amdgpu $env{DEVNAME}", TAG+="switcheroo-discrete-gpu"
+DRIVERS=="nouveau", SUBSYSTEM=="drm", PROGRAM="@libexecdir@/check-discrete-nouveau $env{DEVNAME}", TAG+="switcheroo-discrete-gpu"
+DRIVERS=="nvidia", TAG+="switcheroo-discrete-gpu"
diff --git a/data/meson.build b/data/meson.build
index 85e5c93..38cf96c 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -17,3 +17,10 @@ install_data(
'30-pci-intel-gpu.hwdb',
install_dir: hwdb_dir,
)
+
+configure_file(
+ input: '30-discrete-gpu.rules.in',
+ output: '30-discrete-gpu.rules',
+ configuration: data_conf,
+ install_dir: rules_dir,
+)
diff --git a/meson.build b/meson.build
index b8f4bff..b3aaf0c 100644
--- a/meson.build
+++ b/meson.build
@@ -20,6 +20,9 @@ gnome = import('gnome')
glib = dependency('glib-2.0', version: '>= 2.56.0')
gio = dependency('gio-2.0', version: '>= 2.56.0')
gudev = dependency('gudev-1.0', version: '>= 232')
+libdrm = dependency('libdrm', version: '>= 2.4.97', required: get_option('libdrm'))
+libdrm_nouveau = dependency('libdrm_nouveau', version: '>= 2.4.97', required: get_option('libdrm_nouveau'))
+libdrm_amdgpu = dependency('libdrm_amdgpu', version: '>= 2.4.97', required: get_option('libdrm_amdgpu'))
systemd_systemunitdir = get_option('systemdsystemunitdir')
if systemd_systemunitdir == ''
@@ -32,6 +35,12 @@ if hwdb_dir == ''
hwdb_dir = udevdir / 'hwdb.d'
endif
+rules_dir = get_option('rulesdir')
+if rules_dir == ''
+ udevdir = dependency('udev').get_pkgconfig_variable('udevdir')
+ rules_dir = udevdir / 'rules.d'
+endif
+
# Make like license available in the build root for docs
configure_file(
input: 'COPYING',
diff --git a/meson_options.txt b/meson_options.txt
index c8d9619..b8d671a 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -10,6 +10,12 @@ option('hwdbdir',
description: 'Directory for hwdb files',
)
+option('rulesdir',
+ type: 'string',
+ value: '',
+ description: 'Directory for ruke files',
+)
+
option('gtk_doc',
type: 'boolean',
value: false,
@@ -21,3 +27,21 @@ option('tests',
type: 'boolean',
value: false
)
+
+option('libdrm',
+ description: 'Whether libdrm should be used to probe GPUs',
+ type: 'feature',
+ value: 'auto'
+)
+
+option('libdrm_nouveau',
+ description: 'Whether libdrm_nouveau should be used to probe Nvidia GPUs',
+ type: 'feature',
+ value: 'auto'
+)
+
+option('libdrm_amdgpu',
+ description: 'Whether libdrm_amdgpu should be used to probe AMD GPUs',
+ type: 'feature',
+ value: 'auto'
+)
diff --git a/src/discrete-detection/amdgpu.c b/src/discrete-detection/amdgpu.c
new file mode 100644
index 0000000..2d9804f
--- /dev/null
+++ b/src/discrete-detection/amdgpu.c
@@ -0,0 +1,46 @@
+
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <gio/gio.h>
+#include <gudev/gudev.h>
+
+#include <amdgpu.h>
+#include <amdgpu_drm.h>
+
+typedef int handle;
+G_DEFINE_AUTO_CLEANUP_FREE_FUNC(handle, close, -1)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(amdgpu_device_handle, free);
+
+int main(int argc, char** argv)
+{
+ if (argc < 2)
+ {
+ puts ("check-discrete-amdgpu [DEVNAME]");
+ return EXIT_FAILURE;
+ }
+
+ const char *devname;
+ g_auto(handle) fd = -1;
+ g_autoptr(GUdevDevice) parent = NULL;
+ struct drm_amdgpu_info_device device_info = {0};
+ amdgpu_device_handle device = NULL;
+ uint32_t drm_major, drm_minor;
+
+ devname = argv[1];
+ fd = open (devname, O_RDWR);
+ if (fd < 0)
+ return EXIT_FAILURE;
+
+ if (amdgpu_device_initialize (fd, &drm_major, &drm_minor, &device))
+ return EXIT_FAILURE;
+
+ if (amdgpu_query_info (device, AMDGPU_INFO_DEV_INFO, sizeof(device_info), &device_info))
+ return EXIT_FAILURE;
+
+ /* AMDGPU_IDS_FLAGS_FUSION is set for all APUs */
+ if (device_info.ids_flags & AMDGPU_IDS_FLAGS_FUSION)
+ return EXIT_FAILURE;
+
+ return EXIT_SUCCESS;
+}
diff --git a/src/discrete-detection/meson.build b/src/discrete-detection/meson.build
new file mode 100644
index 0000000..3a6c03f
--- /dev/null
+++ b/src/discrete-detection/meson.build
@@ -0,0 +1,18 @@
+
+if libdrm_amdgpu.found()
+ executable('check-discrete-amdgpu',
+ files('amdgpu.c'),
+ dependencies: deps,
+ install: true,
+ install_dir: libexecdir,
+ )
+endif
+
+if libdrm.found() and libdrm_nouveau.found()
+ executable('check-discrete-nouveau',
+ files('nouveau.c'),
+ dependencies: deps,
+ install: true,
+ install_dir: libexecdir,
+ )
+endif
diff --git a/src/discrete-detection/nouveau.c b/src/discrete-detection/nouveau.c
new file mode 100644
index 0000000..0a1f220
--- /dev/null
+++ b/src/discrete-detection/nouveau.c
@@ -0,0 +1,105 @@
+
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <gio/gio.h>
+#include <gudev/gudev.h>
+
+#include <xf86drm.h>
+#include <nouveau_drm.h>
+#include <nouveau/nvif/ioctl.h>
+#include <nvif/cl0080.h>
+#include <nvif/class.h>
+
+typedef int handle;
+G_DEFINE_AUTO_CLEANUP_FREE_FUNC(handle, close, -1)
+
+int main(int argc, char** argv)
+{
+ if (argc < 2)
+ {
+ puts ("check-discrete-nouveau [DEVNAME]");
+ return EXIT_FAILURE;
+ }
+
+ const char *devname;
+ g_auto(handle) fd = -1;
+
+ devname = argv[1];
+ fd = open (devname, O_RDWR);
+ if (fd < 0)
+ return EXIT_FAILURE;
+
+ g_autofree void *device = malloc(352);
+
+ /* Init device */
+ {
+ struct {
+ struct nvif_ioctl_v0 ioctl;
+ struct nvif_ioctl_new_v0 new;
+ struct nv_device_v0 dev;
+ } init_args = {
+ .ioctl = {
+ .object = 0,
+ .owner = NVIF_IOCTL_V0_OWNER_ANY,
+ .route = 0x00,
+ .type = NVIF_IOCTL_V0_NEW,
+ .version = 0,
+ },
+ .new = {
+ .handle = 0,
+ .object = (uintptr_t)device,
+ .oclass = NV_DEVICE,
+ .route = NVIF_IOCTL_V0_ROUTE_NVIF,
+ .token = (uintptr_t)device,
+ .version = 0,
+ },
+ .dev = {
+ .device = ~0ULL,
+ },
+ };
+
+ if (drmCommandWrite (fd, DRM_NOUVEAU_NVIF, &init_args, sizeof(init_args)))
+ return EXIT_FAILURE;
+ }
+
+ /* Query device info */
+ struct {
+ struct nvif_ioctl_v0 ioctl;
+ struct nvif_ioctl_mthd_v0 mthd;
+ struct nv_device_info_v0 info;
+ } args = {
+ .ioctl = {
+ .object = (uintptr_t)device,
+ .owner = NVIF_IOCTL_V0_OWNER_ANY,
+ .route = 0x00,
+ .type = NVIF_IOCTL_V0_MTHD,
+ .version = 0,
+ },
+ .mthd = {
+ .method = NV_DEVICE_V0_INFO,
+ .version = 0,
+ },
+ .info = {
+ .version = 0,
+ },
+ };
+
+ if (drmCommandWriteRead (fd, DRM_NOUVEAU_NVIF, &args, sizeof(args)))
+ return EXIT_FAILURE;
+
+
+ switch (args.info.platform)
+ {
+ case NV_DEVICE_INFO_V0_IGP:
+ case NV_DEVICE_INFO_V0_SOC:
+ return EXIT_FAILURE;
+
+ case NV_DEVICE_INFO_V0_PCI:
+ case NV_DEVICE_INFO_V0_AGP:
+ case NV_DEVICE_INFO_V0_PCIE:
+ default:
+ return EXIT_SUCCESS;
+ }
+ return EXIT_FAILURE;
+}
diff --git a/src/meson.build b/src/meson.build
index ab3a77d..da4267f 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,4 +1,4 @@
-deps = [glib, gio, gudev]
+deps = [glib, gio, gudev, libdrm, libdrm_nouveau, libdrm_amdgpu]
sources = [
'info-cleanup.c',
@@ -34,3 +34,5 @@ configure_file(
configuration: switcherooctl_conf,
install_dir: get_option('bindir')
)
+
+subdir('discrete-detection')
diff --git a/src/switcheroo-control.c b/src/switcheroo-control.c
index abd8154..e407bfb 100644
--- a/src/switcheroo-control.c
+++ b/src/switcheroo-control.c
@@ -31,6 +31,7 @@ typedef struct {
char *name;
GPtrArray *env;
gboolean is_default;
+ gboolean is_discrete;
} CardData;
typedef struct {
@@ -94,6 +95,8 @@ build_gpus_variant (ControlData *data)
g_variant_new_strv ((const gchar * const *) card->env->pdata, card->env->len));
g_variant_builder_add (&asv_builder, "{sv}", "Default",
g_variant_new_boolean (card->is_default));
+ g_variant_builder_add (&asv_builder, "{sv}", "Discrete",
+ g_variant_new_boolean (card->is_discrete));
g_variant_builder_add (&builder, "a{sv}", &asv_builder);
}
@@ -312,6 +315,18 @@ get_card_is_default (GUdevDevice *d)
return g_udev_device_get_sysfs_attr_as_boolean (parent, "boot_vga");
}
+static gboolean
+get_card_is_discrete (GUdevDevice *d)
+{
+ const char * const * tags;
+ g_autoptr (GUdevDevice) platform_device = NULL;
+
+ tags = g_udev_device_get_tags (d);
+ if (tags && g_strv_contains (tags, "switcheroo-discrete-gpu"))
+ return TRUE;
+ return FALSE;
+}
+
static CardData *
get_card_data (GUdevClient *client,
GUdevDevice *d)
@@ -328,6 +343,7 @@ get_card_data (GUdevClient *client,
data->name = get_card_name (d);
data->env = env;
data->is_default = get_card_is_default (d);
+ data->is_discrete = get_card_is_discrete (d);
return data;
}
--
2.46.0
@@ -0,0 +1,27 @@
From 1b115ed72e03ff1169cbfddd79ef10890baca133 Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Tue, 12 Sep 2023 15:53:40 +0200
Subject: [PATCH 03/10] tests: fix integration tests without UMockdev
`gi.require_version` throws ValueError if the dependency cannot be found
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
tests/integration-test.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/integration-test.py b/tests/integration-test.py
index d8dea16..e3dd996 100755
--- a/tests/integration-test.py
+++ b/tests/integration-test.py
@@ -37,7 +37,7 @@ except ImportError as e:
try:
gi.require_version('UMockdev', '1.0')
from gi.repository import UMockdev
-except ImportError:
+except (ImportError, ValueError):
sys.stderr.write('Skipping tests, umockdev not available (https://github.com/martinpitt/umockdev)\n')
sys.exit(0)
--
2.46.0
@@ -0,0 +1,278 @@
From d933e96bdb15679ae7653f929461982aa66973ba Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Tue, 12 Sep 2023 15:58:16 +0200
Subject: [PATCH 04/10] tests: add tests for discrete detection with mock libs
Both tests have 4 different ways of testing: - Invalid Device - Unexpected
Device - Non Discrete GPU (iGPU/APU) - Discrete GPU
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
src/discrete-detection/meson.build | 4 +-
tests/discrete-detection/libdrm_amdgpu_mock.c | 57 +++++++++++++
.../discrete-detection/libdrm_nouveau_mock.c | 68 ++++++++++++++++
tests/discrete-detection/meson.build | 80 +++++++++++++++++++
tests/meson.build | 2 +
5 files changed, 209 insertions(+), 2 deletions(-)
create mode 100644 tests/discrete-detection/libdrm_amdgpu_mock.c
create mode 100644 tests/discrete-detection/libdrm_nouveau_mock.c
create mode 100644 tests/discrete-detection/meson.build
diff --git a/src/discrete-detection/meson.build b/src/discrete-detection/meson.build
index 3a6c03f..8eb8437 100644
--- a/src/discrete-detection/meson.build
+++ b/src/discrete-detection/meson.build
@@ -1,6 +1,6 @@
if libdrm_amdgpu.found()
- executable('check-discrete-amdgpu',
+ amdgpu_discrete = executable('check-discrete-amdgpu',
files('amdgpu.c'),
dependencies: deps,
install: true,
@@ -9,7 +9,7 @@ if libdrm_amdgpu.found()
endif
if libdrm.found() and libdrm_nouveau.found()
- executable('check-discrete-nouveau',
+ nouveau_discrete = executable('check-discrete-nouveau',
files('nouveau.c'),
dependencies: deps,
install: true,
diff --git a/tests/discrete-detection/libdrm_amdgpu_mock.c b/tests/discrete-detection/libdrm_amdgpu_mock.c
new file mode 100644
index 0000000..20fa4aa
--- /dev/null
+++ b/tests/discrete-detection/libdrm_amdgpu_mock.c
@@ -0,0 +1,57 @@
+#include <string.h>
+#include <stdint.h>
+#include <stdio.h>
+
+#include <amdgpu_drm.h>
+
+enum {
+ OTHER_GPU,
+ AMD_APU,
+ AMD_GPU,
+};
+
+/* Mock open(2) so we can test multiple devices configurations */
+int open(const char *pathname, int flags)
+{
+ if (!strcmp(pathname, "OTHER_GPU"))
+ return OTHER_GPU;
+ if (!strcmp (pathname, "AMD_APU"))
+ return AMD_APU;
+ if (!strcmp (pathname, "AMD_GPU"))
+ return AMD_GPU;
+
+ return -1;
+}
+
+/* open64 may be used for large file support */
+int open64(const char *pathname, int flags)
+{
+ return open (pathname, flags);
+}
+
+int amdgpu_device_initialize(int fd, uint32_t *major_version, uint32_t *minor_version, int *device_handle)
+{
+ // Store the fd in the device handle for access in query_info
+ *device_handle = fd;
+
+ if (fd != AMD_GPU && fd != AMD_APU)
+ return 1;
+
+ return 0;
+}
+
+int amdgpu_query_info(int device_handle, unsigned info_id, unsigned size, void *value)
+{
+ struct drm_amdgpu_info_device* device_info = value;
+
+ if (device_handle == AMD_GPU) {
+ device_info->ids_flags = 0;
+ return 0;
+ }
+ if (device_handle == AMD_APU) {
+ device_info->ids_flags = AMDGPU_IDS_FLAGS_FUSION;
+ return 0;
+ }
+
+ return 1;
+}
diff --git a/tests/discrete-detection/libdrm_nouveau_mock.c b/tests/discrete-detection/libdrm_nouveau_mock.c
new file mode 100644
index 0000000..cdbfda8
--- /dev/null
+++ b/tests/discrete-detection/libdrm_nouveau_mock.c
@@ -0,0 +1,68 @@
+#include <string.h>
+#include <stdint.h>
+#include <stdio.h>
+
+#include <xf86drm.h>
+#include <nouveau_drm.h>
+#include <nouveau/nvif/ioctl.h>
+#include <nvif/cl0080.h>
+#include <nvif/class.h>
+
+enum {
+ OTHER_GPU,
+ NVIDIA_IGPU,
+ NVIDIA_GPU,
+};
+
+/* Mock open(2) so we can test multiple devices configurations */
+int open(const char *pathname, int flags)
+{
+ if (!strcmp(pathname, "OTHER_GPU"))
+ return OTHER_GPU;
+ if (!strcmp (pathname, "NVIDIA_IGPU"))
+ return NVIDIA_IGPU;
+ if (!strcmp (pathname, "NVIDIA_GPU"))
+ return NVIDIA_GPU;
+
+ return -1;
+}
+
+/* open64 may be used for large file support */
+int open64(const char *pathname, int flags)
+{
+ return open (pathname, flags);
+}
+
+int drmCommandWrite(int fd, unsigned long drmCommandIndex, void *data, unsigned long size)
+{
+ if (drmCommandIndex != DRM_NOUVEAU_NVIF)
+ return 1;
+
+ if (fd != NVIDIA_GPU && fd != NVIDIA_IGPU)
+ return 1;
+
+ return 0;
+}
+
+int drmCommandWriteRead(int fd, unsigned long drmCommandIndex, void *data, unsigned long size)
+{
+ if (drmCommandIndex != DRM_NOUVEAU_NVIF)
+ return 1;
+
+ struct {
+ struct nvif_ioctl_v0 ioctl;
+ struct nvif_ioctl_mthd_v0 mthd;
+ struct nv_device_info_v0 info;
+ } *args = data;
+
+ if (fd == NVIDIA_GPU) {
+ args->info.platform = NV_DEVICE_INFO_V0_PCIE;
+ return 0;
+ }
+ if (fd == NVIDIA_IGPU) {
+ args->info.platform = NV_DEVICE_INFO_V0_IGP;
+ return 0;
+ }
+
+ return 1;
+}
\ No newline at end of file
diff --git a/tests/discrete-detection/meson.build b/tests/discrete-detection/meson.build
new file mode 100644
index 0000000..f01a014
--- /dev/null
+++ b/tests/discrete-detection/meson.build
@@ -0,0 +1,80 @@
+
+if libdrm_amdgpu.found()
+ amdgpu_mock_lib = shared_library(
+ 'drm_amdgpu_mock',
+ files('libdrm_amdgpu_mock.c'),
+ dependencies: libdrm_amdgpu
+ )
+
+ test(
+ 'test amdgpu detection with invalid device',
+ amdgpu_discrete,
+ args: ['NO_GPU'],
+ env: environment({'LD_PRELOAD': amdgpu_mock_lib.full_path()}),
+ should_fail: true
+ )
+
+ test(
+ 'test amdgpu detection with non-AMD GPU',
+ amdgpu_discrete,
+ args: ['OTHER_GPU'],
+ env: environment({'LD_PRELOAD': amdgpu_mock_lib.full_path()}),
+ should_fail: true
+ )
+
+ test(
+ 'test amdgpu detection with AMD APU',
+ amdgpu_discrete,
+ args: ['AMD_APU'],
+ env: environment({'LD_PRELOAD': amdgpu_mock_lib.full_path()}),
+ should_fail: true
+ )
+
+ test(
+ 'test amdgpu detection with AMD GPU',
+ amdgpu_discrete,
+ args: ['AMD_GPU'],
+ env: environment({'LD_PRELOAD': amdgpu_mock_lib.full_path()}),
+ should_fail: false
+ )
+endif
+
+if libdrm.found() and libdrm_nouveau.found()
+ nouveau_mock_lib = shared_library(
+ 'drm_nouveau_mock',
+ files('libdrm_nouveau_mock.c'),
+ dependencies: [libdrm, libdrm_nouveau]
+ )
+
+ test(
+ 'test nouveau detection with invalid device',
+ nouveau_discrete,
+ args: ['NO_GPU'],
+ env: environment({'LD_PRELOAD': nouveau_mock_lib.full_path()}),
+ should_fail: true
+ )
+
+ test(
+ 'test nouveau detection with non-Nvidia GPU',
+ nouveau_discrete,
+ args: ['OTHER_GPU'],
+ env: environment({'LD_PRELOAD': nouveau_mock_lib.full_path()}),
+ should_fail: true
+ )
+
+ test(
+ 'test nouveau detection with Nvidia iGPU',
+ nouveau_discrete,
+ args: ['NVIDIA_IGPU'],
+ env: environment({'LD_PRELOAD': nouveau_mock_lib.full_path()}),
+ should_fail: true
+ )
+
+ test(
+ 'test nouveau detection with Nvidia GPU',
+ nouveau_discrete,
+ args: ['NVIDIA_GPU'],
+ env: environment({'LD_PRELOAD': nouveau_mock_lib.full_path()}),
+ should_fail: false
+ )
+endif
\ No newline at end of file
diff --git a/tests/meson.build b/tests/meson.build
index b0b7476..61ef00c 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -15,3 +15,5 @@ foreach ut: unit_tests
env: envs,
)
endforeach
+
+subdir('discrete-detection')
--
2.46.0
@@ -0,0 +1,39 @@
From c102b643945dc076d881497dd2ca5865938f7053 Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Tue, 12 Sep 2023 15:57:47 +0200
Subject: [PATCH 05/10] main: remove leftover and fix typo
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
meson_options.txt | 2 +-
src/switcheroo-control.c | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/meson_options.txt b/meson_options.txt
index b8d671a..c77fea8 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -13,7 +13,7 @@ option('hwdbdir',
option('rulesdir',
type: 'string',
value: '',
- description: 'Directory for ruke files',
+ description: 'Directory for rule files',
)
option('gtk_doc',
diff --git a/src/switcheroo-control.c b/src/switcheroo-control.c
index e407bfb..0f6a548 100644
--- a/src/switcheroo-control.c
+++ b/src/switcheroo-control.c
@@ -319,7 +319,6 @@ static gboolean
get_card_is_discrete (GUdevDevice *d)
{
const char * const * tags;
- g_autoptr (GUdevDevice) platform_device = NULL;
tags = g_udev_device_get_tags (d);
if (tags && g_strv_contains (tags, "switcheroo-discrete-gpu"))
--
2.46.0
@@ -0,0 +1,48 @@
From f764db4eb565c19ba14155791fbfced3fb5d34c8 Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Tue, 12 Sep 2023 15:58:27 +0200
Subject: [PATCH 06/10] main: move discrete dependencies out of main deps
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
src/discrete-detection/meson.build | 5 +++--
src/meson.build | 2 +-
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/discrete-detection/meson.build b/src/discrete-detection/meson.build
index 8eb8437..353316f 100644
--- a/src/discrete-detection/meson.build
+++ b/src/discrete-detection/meson.build
@@ -1,8 +1,9 @@
+discrete_deps = deps + [libdrm, libdrm_nouveau, libdrm_amdgpu]
if libdrm_amdgpu.found()
amdgpu_discrete = executable('check-discrete-amdgpu',
files('amdgpu.c'),
- dependencies: deps,
+ dependencies: discrete_deps,
install: true,
install_dir: libexecdir,
)
@@ -11,7 +12,7 @@ endif
if libdrm.found() and libdrm_nouveau.found()
nouveau_discrete = executable('check-discrete-nouveau',
files('nouveau.c'),
- dependencies: deps,
+ dependencies: discrete_deps,
install: true,
install_dir: libexecdir,
)
diff --git a/src/meson.build b/src/meson.build
index da4267f..22d69e7 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,4 +1,4 @@
-deps = [glib, gio, gudev, libdrm, libdrm_nouveau, libdrm_amdgpu]
+deps = [glib, gio, gudev]
sources = [
'info-cleanup.c',
--
2.46.0
@@ -0,0 +1,137 @@
From d2ecc29469d5572fd171926c9d1dbb1b851c7b09 Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Tue, 12 Sep 2023 17:12:00 +0200
Subject: [PATCH 07/10] main: use glib for discrete command-line arguments
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
src/discrete-detection/amdgpu.c | 29 ++++++++++++++++++++---------
src/discrete-detection/nouveau.c | 29 ++++++++++++++++++++---------
2 files changed, 40 insertions(+), 18 deletions(-)
diff --git a/src/discrete-detection/amdgpu.c b/src/discrete-detection/amdgpu.c
index 2d9804f..5a9a4ab 100644
--- a/src/discrete-detection/amdgpu.c
+++ b/src/discrete-detection/amdgpu.c
@@ -1,9 +1,10 @@
-
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
+#include <locale.h>
#include <gio/gio.h>
#include <gudev/gudev.h>
+#include <glib.h>
#include <amdgpu.h>
#include <amdgpu_drm.h>
@@ -12,22 +13,32 @@ typedef int handle;
G_DEFINE_AUTO_CLEANUP_FREE_FUNC(handle, close, -1)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(amdgpu_device_handle, free);
-int main(int argc, char** argv)
+int main (int argc, char** argv)
{
- if (argc < 2)
- {
- puts ("check-discrete-amdgpu [DEVNAME]");
- return EXIT_FAILURE;
- }
-
const char *devname;
g_auto(handle) fd = -1;
- g_autoptr(GUdevDevice) parent = NULL;
struct drm_amdgpu_info_device device_info = {0};
amdgpu_device_handle device = NULL;
uint32_t drm_major, drm_minor;
+ g_autoptr(GOptionContext) option_context = NULL;
+ g_autoptr(GError) error = NULL;
+ setlocale (LC_ALL, "");
+ option_context = g_option_context_new ("");
+
+ if (!g_option_context_parse (option_context, &argc, &argv, &error)) {
+ g_print ("Failed to parse arguments: %s\n", error->message);
+ return EXIT_FAILURE;
+ }
+
+ if (argc < 2)
+ {
+ g_print ("%s\n", g_option_context_get_help (option_context, TRUE, NULL));
+ return EXIT_FAILURE;
+ }
devname = argv[1];
+;
+
fd = open (devname, O_RDWR);
if (fd < 0)
return EXIT_FAILURE;
diff --git a/src/discrete-detection/nouveau.c b/src/discrete-detection/nouveau.c
index 0a1f220..1d61cbb 100644
--- a/src/discrete-detection/nouveau.c
+++ b/src/discrete-detection/nouveau.c
@@ -1,9 +1,10 @@
-
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
+#include <locale.h>
#include <gio/gio.h>
#include <gudev/gudev.h>
+#include <glib.h>
#include <xf86drm.h>
#include <nouveau_drm.h>
@@ -14,23 +15,34 @@
typedef int handle;
G_DEFINE_AUTO_CLEANUP_FREE_FUNC(handle, close, -1)
-int main(int argc, char** argv)
+int main (int argc, char** argv)
{
+ const gchar *devname = NULL;
+ g_auto(handle) fd = -1;
+ g_autofree void *device = NULL;
+ g_autoptr(GOptionContext) option_context = NULL;
+ g_autoptr(GError) error = NULL;
+
+ setlocale (LC_ALL, "");
+ option_context = g_option_context_new ("");
+
+ if (!g_option_context_parse (option_context, &argc, &argv, &error)) {
+ g_print ("Failed to parse arguments: %s\n", error->message);
+ return EXIT_FAILURE;
+ }
+
if (argc < 2)
{
- puts ("check-discrete-nouveau [DEVNAME]");
+ g_print ("%s\n", g_option_context_get_help (option_context, TRUE, NULL));
return EXIT_FAILURE;
}
-
- const char *devname;
- g_auto(handle) fd = -1;
-
devname = argv[1];
+
fd = open (devname, O_RDWR);
if (fd < 0)
return EXIT_FAILURE;
- g_autofree void *device = malloc(352);
+ device = malloc(352);
/* Init device */
{
@@ -88,7 +100,6 @@ int main(int argc, char** argv)
if (drmCommandWriteRead (fd, DRM_NOUVEAU_NVIF, &args, sizeof(args)))
return EXIT_FAILURE;
-
switch (args.info.platform)
{
case NV_DEVICE_INFO_V0_IGP:
--
2.46.0
@@ -0,0 +1,25 @@
From 462b09f02de37dfd2965d23cc7c4137bcf45a4ae Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Wed, 14 Feb 2024 20:25:42 +0100
Subject: [PATCH 08/10] main: add udev rule for i915 checking a lot of systems
has shown that the intel iGPU will always be available at `0000:00:02.0`.
Using ID_PATH would have been cleaner, but I couldn't get it to work.
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
data/30-discrete-gpu.rules.in | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/data/30-discrete-gpu.rules.in b/data/30-discrete-gpu.rules.in
index a803ed4..f30f315 100644
--- a/data/30-discrete-gpu.rules.in
+++ b/data/30-discrete-gpu.rules.in
@@ -1,3 +1,4 @@
DRIVERS=="amdgpu", SUBSYSTEM=="drm", PROGRAM="@libexecdir@/check-discrete-amdgpu $env{DEVNAME}", TAG+="switcheroo-discrete-gpu"
DRIVERS=="nouveau", SUBSYSTEM=="drm", PROGRAM="@libexecdir@/check-discrete-nouveau $env{DEVNAME}", TAG+="switcheroo-discrete-gpu"
-DRIVERS=="nvidia", TAG+="switcheroo-discrete-gpu"
+DRIVERS=="nvidia", SUBSYSTEM=="drm", TAG+="switcheroo-discrete-gpu"
+DRIVERS=="i915", SUBSYSTEM=="drm", DEVPATH!="/devices/pci0000:00/0000:00:02.0/drm/*", TAG+="switcheroo-discrete-gpu"
--
2.46.0
@@ -0,0 +1,34 @@
From 55db3aeaeb962952881f73e94432f750cfb64fc8 Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Thu, 15 Feb 2024 16:24:00 +0100
Subject: [PATCH 09/10] main: use Discrete key in switcherooctl
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
src/switcherooctl.in | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/switcherooctl.in b/src/switcherooctl.in
index 96c21cc..c0e3f07 100755
--- a/src/switcherooctl.in
+++ b/src/switcherooctl.in
@@ -77,6 +77,7 @@ def print_gpu(gpu, index):
print('Device:', index)
print(' Name: ', gpu['Name'])
print(' Default: ', "yes" if gpu['Default'] else "no")
+ print(' Discrete: ', "yes" if gpu['Discrete'] else "no")
print(' Environment:', env_to_str(gpu['Environment']))
def _list():
@@ -126,7 +127,7 @@ def get_discrete_gpu():
return None
try:
- gpu = next(gpu for gpu in gpus if not gpu['Default'])
+ gpu = next(gpu for gpu in gpus if gpu['Discrete'])
except StopIteration:
return None
else:
--
2.46.0
@@ -0,0 +1,45 @@
From 4232c75fe41158bb5063d630d36b3ffd6a8a57ec Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Fri, 6 Sep 2024 22:31:56 +0200
Subject: [PATCH 10/10] main: use new GPU list on uevent the amount of GPUs may
still be the same but underlying attributes may have changed On the ASUS TUF
Dash F15 running Fedora 40 6.10.7-200.fc40.x86_64 the udev tags are not
applied at the time switcheroo-control starts but at a later uevent they are
correct. Memory gets allocated anyways to check if the GPU count has changed,
so this shouldn't affect memory usage.
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
src/switcheroo-control.c | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/src/switcheroo-control.c b/src/switcheroo-control.c
index 0f6a548..01954c7 100644
--- a/src/switcheroo-control.c
+++ b/src/switcheroo-control.c
@@ -438,16 +438,12 @@ uevent_cb (GUdevClient *client,
cards = get_drm_cards (data);
num_gpus = cards->len;
- if (num_gpus != data->num_gpus) {
- g_debug ("GPUs added or removed (old: %d new: %d)",
- data->num_gpus, num_gpus);
- g_ptr_array_free (data->cards, TRUE);
- data->cards = cards;
- data->num_gpus = cards->len;
- send_dbus_event (data);
- } else {
- g_ptr_array_free (cards, TRUE);
- }
+ g_debug ("GPUs updated (old: %d new: %d)",
+ data->num_gpus, num_gpus);
+ g_ptr_array_free (data->cards, TRUE);
+ data->cards = cards;
+ data->num_gpus = cards->len;
+ send_dbus_event (data);
}
static void
--
2.46.0
+8
View File
@@ -0,0 +1,8 @@
project pkg {
rpm {
spec = "switcheroo-control.spec"
}
labels {
subrepo = "extras"
}
}
@@ -0,0 +1,194 @@
Name: switcheroo-control
Version: 2.6
Release: 8%{?dist}
Summary: D-Bus service to check the availability of dual-GPU
License: GPLv3
URL: https://gitlab.freedesktop.org/hadess/switcheroo-control/
# URL from https://gitlab.freedesktop.org/hadess/switcheroo-control/-/releases
Source0: https://gitlab.freedesktop.org/hadess/switcheroo-control/uploads/86ea54ac7ddb901b6bf6e915209151f8/switcheroo-control-2.6.tar.xz
Patch: 0001-main-update-GPUs-comment-for-dbus-property.patch
Patch: 0002-main-add-Discrete-key.patch
Patch: 0003-tests-fix-integration-tests-without-UMockdev.patch
Patch: 0004-tests-add-tests-for-discrete-detection-with-mock-lib.patch
Patch: 0005-main-remove-leftover-and-fix-typo.patch
Patch: 0006-main-move-discrete-dependencies-out-of-main-deps.patch
Patch: 0007-main-use-glib-for-discrete-command-line-arguments.patch
Patch: 0008-main-add-udev-rule-for-i915.patch
Patch: 0009-main-use-Discrete-key-in-switcherooctl.patch
Patch: 0010-main-use-new-GPU-list-on-uevent.patch
BuildRequires: gcc
BuildRequires: pkgconfig(gudev-1.0)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: gtk-doc
BuildRequires: meson
BuildRequires: systemd
BuildRequires: libdrm-devel
BuildRequires: python3-dbusmock
BuildRequires: umockdev
%{?systemd_requires}
%description
D-Bus service to check the availability of dual-GPU.
%package docs
Summary: Documentation for %{name}
BuildArch: noarch
%description docs
This package contains the documentation for %{name}.
%prep
%autosetup -p1
%build
%meson -Dgtk_doc=true
%meson_build
%install
%meson_install
%post
if [ $1 -eq 2 ] && [ -x /usr/bin/systemctl ] ; then
/usr/bin/systemctl daemon-reload
fi
%systemd_post switcheroo-control.service
%udev_hwdb_update
%preun
%systemd_preun switcheroo-control.service
%postun
%systemd_postun_with_restart switcheroo-control.service
%udev_hwdb_update
%files
%license COPYING
%doc NEWS README.md
%{_bindir}/switcherooctl
%{_datadir}/dbus-1/system.d/net.hadess.SwitcherooControl.conf
%{_unitdir}/switcheroo-control.service
%{_libexecdir}/switcheroo-control
%{_udevhwdbdir}/30-pci-intel-gpu.hwdb
%{_mandir}/man1/switcherooctl.1*
%{_libexecdir}/check-discrete-amdgpu
%{_libexecdir}/check-discrete-nouveau
%{_udevrulesdir}/30-discrete-gpu.rules
%files docs
%dir %{_datadir}/gtk-doc/
%dir %{_datadir}/gtk-doc/html/
%{_datadir}/gtk-doc/html/%{name}/
%changelog
* Fri Sep 06 2024 Jan200101 <sentrycraft123@gmail.com> - 2.6-8
- Update discrete patch
* Thu Feb 15 2024 Jan Drögehoff <sentrycraft123@gmail.com> - 2.6-7
- Update discrete patch
* Wed Feb 14 2024 Jan Drögehoff <sentrycraft123@gmail.com> - 2.6-6
- Add discrete patch
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.6-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Fri Jul 01 2022 Bastien Nocera <bnocera@redhat.com> - 2.6-1
+ switcheroo-control-2.6-1
- Update to 2.6
* Fri Apr 29 2022 Bastien Nocera <bnocera@redhat.com> - 2.5-1
+ switcheroo-control-2.5-1
- Update to 2.5
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.4-3
- Rebuilt for updated systemd-rpm-macros
See https://pagure.io/fesco/issue/2583.
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Mon Jan 04 2021 Bastien Nocera <bnocera@redhat.com> - 2.4-1
+ switcheroo-control-2.4-1
- Update to 2.4
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Apr 27 2020 Bastien Nocera <bnocera@redhat.com> - 2.2-1
+ switcheroo-control-2.2-1
- Update to 2.2
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Jan 02 2020 Bastien Nocera <bnocera@redhat.com> - 2.1-1
+ switcheroo-control-2.1-1
- Update to 2.1
- Fix crasher on startup (#1786846)
* Thu Nov 21 2019 Bastien Nocera <bnocera@redhat.com> - 2.0-2
+ switcheroo-control-2.0-2
- Fix post scripts not reloading service file
* Tue Nov 05 2019 Bastien Nocera <bnocera@redhat.com> - 2.0-1
+ switcheroo-control-2.0-1
- Update to 2.0
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Mon Jun 17 2019 Bastien Nocera <bnocera@redhat.com> - 1.3.1-1
+ switcheroo-control-1.3.1-1
- Fix Secure Boot work-around
* Wed Jun 12 2019 Bastien Nocera <bnocera@redhat.com> - 1.3-1
+ switcheroo-control-1.3-1
- Update to 1.3
- Fix operation with SecureBoot enabled
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.1-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Fri Nov 04 2016 Bastien Nocera <bnocera@redhat.com> - 1.1-1
+ switcheroo-control-1.1-1
- Update to 1.1
- Don't throw errors when the machine doesn't have dual-GPU (#1391212)
* Fri Oct 21 2016 Kalev Lember <klember@redhat.com> - 1.0-1
- Initial Fedora packaging
@@ -6,7 +6,7 @@
Name: vencord-desktop
Provides: VencordDesktop = %{version}-%{release}
Version: 1.5.3
Version: 1.5.5
Release: 1%?dist
License: GPL-3.0
Summary: Vesktop is a cross platform desktop app aiming to give you a snappier Discord experience with Vencord pre-installed
+1 -1
View File
@@ -13,7 +13,7 @@
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: voicevox
Version: 0.20.0
Version: 0.22.4
Release: 1%?dist
Summary: Free Japanese text-to-speech editor
License: LGPL-3.0
+4
View File
@@ -2,4 +2,8 @@ project pkg {
rpm {
spec = "youtube-music.spec"
}
labels = {
mock = 1
}
}
+16 -3
View File
@@ -1,12 +1,19 @@
%define debug_package %nil
# Exclude private libraries since this is bundled with electron
%global __requires_exclude libffmpeg.so
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
# macro shorthand for calling pnpm
%global pnpm npx pnpm@%{pnpm_version}
# Try to vendor PNPM directly from Fedora
# but if this fails, you can try setting this to 1 to vendor PNPM directly from upstream
%global vendor_pnpm 0
Name: youtube-music
Version: 3.5.2
Release: 1%?dist
Version: 3.7.2
Release: 2%?dist
Summary: YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)
Source1: youtube-music.desktop
License: MIT
@@ -21,6 +28,10 @@ BuildRequires: git-core gcc make
# Required for usocket native module built with node-gyp
BuildRequires: python3 gcc-c++
%if !0%{?vendor_pnpm}
BuildRequires: pnpm nodejs20
%endif
%description
YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)
@@ -35,9 +46,11 @@ git checkout v%{version}
%build
# Vendor PNPM directly instead of installing from packages, because we need to somehow force PNPM to use Node.js 20
# We are not using Fedora's PNPM because we need to use `pnpm env`, which PNPM does not support when not vendored directly from upstream
%if 0%{?vendor_pnpm}
curl -fsSL https://get.pnpm.io/install.sh | sh -
source /builddir/.bashrc
source $HOME/.bashrc
pnpm env use --global 20
%endif
pnpm install
pnpm build
pnpm electron-builder --linux --dir
@@ -1,115 +1,113 @@
Name: budgie-extras
Version: 1.8.0
Release: 1%{?dist}
Name: budgie-extras
Version: 1.9.0
Release: 1%?dist
License: GPL-3.0
Summary: Additional Budgie Desktop enhancements for user experience
URL: https://ubuntubudgie.org/
License: GPL-3.0
Summary: Additional Budgie Desktop enhancements for user experience
URL: https://ubuntubudgie.org/
Source0: https://github.com/UbuntuBudgie/budgie-extras/releases/download/v%{version}/budgie-extras-%{version}.tar.xz
Patch0: 0001-fix-weathershow-desktop-widget-icon-path.patch
Source0: https://github.com/UbuntuBudgie/budgie-extras/releases/download/v%{version}/budgie-extras-%{version}.tar.xz
BuildRequires: rpm_macro(fdupes)
BuildRequires: cmake
BuildRequires: meson
BuildRequires: vala
BuildRequires: intltool
BuildRequires: rpm_macro(fdupes)
BuildRequires: cmake
BuildRequires: meson
BuildRequires: vala
BuildRequires: intltool
BuildRequires: pkgconfig(budgie-1.0)
BuildRequires: pkgconfig(gee-0.8)
BuildRequires: pkgconfig(gnome-settings-daemon)
BuildRequires: pkgconfig(json-glib-1.0)
BuildRequires: pkgconfig(keybinder-3.0)
BuildRequires: pkgconfig(libgnome-menu-3.0)
BuildRequires: pkgconfig(libnm)
BuildRequires: pkgconfig(libnma)
BuildRequires: pkgconfig(libnotify)
BuildRequires: pkgconfig(libsoup-2.4)
BuildRequires: pkgconfig(libwnck-3.0)
BuildRequires: pkgconfig(budgie-1.0)
BuildRequires: pkgconfig(gee-0.8)
BuildRequires: pkgconfig(gnome-settings-daemon)
BuildRequires: pkgconfig(json-glib-1.0)
BuildRequires: pkgconfig(keybinder-3.0)
BuildRequires: pkgconfig(libgnome-menu-3.0)
BuildRequires: pkgconfig(libnm)
BuildRequires: pkgconfig(libnma)
BuildRequires: pkgconfig(libnotify)
BuildRequires: pkgconfig(libsoup-2.4)
BuildRequires: pkgconfig(libwnck-3.0)
BuildRequires: pkgconfig(appstream)
BuildRequires: pkgconfig(granite)
BuildRequires: pkgconfig(libhandy-1)
BuildRequires: pkgconfig(zeitgeist-2.0)
BuildRequires: pkgconfig(appstream)
BuildRequires: pkgconfig(granite)
BuildRequires: pkgconfig(libhandy-1)
BuildRequires: pkgconfig(zeitgeist-2.0)
Requires: budgie-applet-applications-menu
Requires: budgie-applet-weathershow
Requires: budgie-applet-app-launcher
Requires: budgie-applet-brightness-controller
Requires: budgie-applet-clockworks
Requires: budgie-applet-countdown
Requires: budgie-applet-dropby
Requires: budgie-applet-fuzzyclock
Requires: budgie-applet-hotcorners
Requires: budgie-applet-kangaroo
Requires: budgie-applet-keyboard-autoswitch
Requires: budgie-applet-network-manager
Requires: budgie-applet-quickchar
Requires: budgie-applet-quicknote
Requires: budgie-applet-recentlyused
Requires: budgie-applet-rotation-lock
Requires: budgie-applet-showtime
Requires: budgie-applet-takeabreak
Requires: budgie-applet-visualspace
Requires: budgie-applet-wallstreet
Requires: budgie-applet-window-shuffler
Requires: budgie-applet-workspace-stopwatch
Requires: budgie-applet-wpreviews
Requires: budgie-applet-wswitcher
Requires: budgie-applet-app-launcher
Requires: budgie-applet-applications-menu
Requires: budgie-applet-brightness-controller
Requires: budgie-applet-clockworks
Requires: budgie-applet-countdown
Requires: budgie-applet-dropby
Requires: budgie-applet-fuzzyclock
Requires: budgie-applet-hotcorners
Requires: budgie-applet-kangaroo
Requires: budgie-applet-keyboard-autoswitch
Requires: budgie-applet-network-manager
Requires: budgie-applet-quickchar
Requires: budgie-applet-quicknote
Requires: budgie-applet-recentlyused
Requires: budgie-applet-rotation-lock
Requires: budgie-applet-showtime
Requires: budgie-applet-takeabreak
Requires: budgie-applet-visualspace
Requires: budgie-applet-wallstreet
Requires: budgie-applet-weathershow
Requires: budgie-applet-window-shuffler
Requires: budgie-applet-workspace-stopwatch
Requires: budgie-applet-wpreviews
Requires: budgie-applet-wswitcher
# Fix for https://github.com/UbuntuBudgie/budgie-extras/issues/233, don't know how stenstorp did not notice this
Requires: xinput
Requires: xinput
%description
This is part of a suite of python3 and Vala based applets for the Budgie
Desktop that provide additional user orientated capabilities.
The applets can be used individually or as a set.
%package common
Requires: budgie-desktop
Summary: Shared component of budgie-extras applets
BuildArch: noarch
%description common
%package common
Requires: budgie-desktop
Summary: Shared component of budgie-extras applets
BuildArch: noarch
%description common
The shared component provides for capabilities that are utilised between
budgie-extra applets.
%package daemon
Summary: Manages keyboard shortcuts
Requires: budgie-extras-common
%description daemon
%package daemon
Summary: Manages keyboard shortcuts
Requires: budgie-extras-common
%description daemon
This on logon process manages keyboard shortcuts delivered via .bde files for
various extras-plugins.
%package -n budgie-applet-app-launcher
Requires: budgie-extras-common
Summary: Applet to provide an alternative means to launch applications
Requires: budgie-extras-common
Summary: Applet to provide an alternative means to launch applications
%description -n budgie-applet-app-launcher
The app-launcher applet allows the ability to add favorite apps to the
panel as well as finding and launching applications. The list of
applications listed can be easily configured to be visible or hidden.
%package -n budgie-applet-applications-menu
Requires: budgie-extras-common
Summary: Lightweight and stylish app launcher
Requires: budgie-extras-common
Summary: Lightweight and stylish app launcher
%description -n budgie-applet-applications-menu
%{summary}
%package -n budgie-applet-brightness-controller
Requires: budgie-extras-common
Summary: A Budgie Desktop applet for productivity
Requires: budgie-extras-common
Summary: A Budgie Desktop applet for productivity
%description -n budgie-applet-brightness-controller
%{summary}
%package -n budgie-applet-clockworks
Requires: budgie-extras-common
Summary: Applet to display clock across multiple time zones
Requires: budgie-extras-common
Summary: Applet to display clock across multiple time zones
%description -n budgie-applet-clockworks
The Clockworks applet displays the current time across multiple
time zones.
%package -n budgie-applet-countdown
Requires: budgie-extras-common
Summary: Applet providing a countdown capability on the Budgie Desktop
Requires: budgie-extras-common
Summary: Applet providing a countdown capability on the Budgie Desktop
%description -n budgie-applet-countdown
The Countdown applet provides the user the ability to start an
action when the countdown reaches 0 seconds. Actions include flashing
@@ -117,8 +115,8 @@ an icon in the panel, opening a notification window, sounding a
bell or running a custom command.
%package -n budgie-applet-dropby
Requires: budgie-extras-common
Summary: Applet to popup when a USB device is connected
Requires: budgie-extras-common
Summary: Applet to popup when a USB device is connected
%description -n budgie-applet-dropby
The DropBy applet pops up in the panel when connecting a usb device.
The applet subsequently offers the option(s) to mount, unmount/eject
@@ -126,29 +124,29 @@ and in case of a flash drive, to make a local copy of the drive's
content. The info shows the free space on the volume.
%package -n budgie-applet-fuzzyclock
Requires: budgie-extras-common
Summary: Shows the time in a Fuzzy Way
Requires: budgie-extras-common
Summary: Shows the time in a Fuzzy Way
%description -n budgie-applet-fuzzyclock
%{summary}
%package -n budgie-applet-hotcorners
Requires: budgie-extras-common
Summary: Applet providing hotcorners capabilities for the Budgie Desktop
Requires: budgie-extras-common
Summary: Applet providing hotcorners capabilities for the Budgie Desktop
%description -n budgie-applet-hotcorners
The hotcorners applet allow user defined commands to be executed
when the mouse cursor is pushed into a corner of the main desktop.
%package -n budgie-applet-kangaroo
Requires: budgie-extras-common
Summary: Applet to allow quick file-browsing
Requires: budgie-extras-common
Summary: Applet to allow quick file-browsing
%description -n budgie-applet-kangaroo
The kangaroo applet allows for quick & easy browsing, across
(possibly) many directory layers, without having to do a single mouse
click.
%package -n budgie-applet-keyboard-autoswitch
Requires: budgie-extras-common
Summary: Applet adding the ability to set a different keyboard layout per application
Requires: budgie-extras-common
Summary: Applet adding the ability to set a different keyboard layout per application
%description -n budgie-applet-keyboard-autoswitch
The Keyboard Auto Switcher applet provides the user the ability to set
a different keyboard layout per application. Exceptions to the default
@@ -156,50 +154,51 @@ layout can be set by simply choosing a different layout using the
Keyboard Layout applet.
%package -n budgie-applet-network-manager
Requires: budgie-extras-common
Summary: A fork of Wingpanel Network Indicator, ported to budgie desktop
Requires: budgie-extras-common
Summary: A fork of Wingpanel Network Indicator, ported to budgie desktop
%description -n budgie-applet-network-manager
%{summary}
%package -n budgie-applet-quickchar
Requires: budgie-extras-common
Summary: A mini-app to quickly choose and insert equivalents of ascii characters
Requires: budgie-extras-common
Requires: budgie-extras-daemon
Summary: A mini-app to quickly choose and insert equivalents of ascii characters
%description -n budgie-applet-quickchar
QuickChar is a mini-app to quickly choose and insert equivalents of ascii
characters. QuickChar is activated via the Budgie Menu.
%package -n budgie-applet-quicknote
Requires: budgie-extras-common
Summary: Applet providing simple notes capability for the Budgie Desktop
Requires: budgie-extras-common
Summary: Applet providing simple notes capability for the Budgie Desktop
%description -n budgie-applet-quicknote
The quicknote applet allows a user to record a text based note.
The applet supports multiple undo and redo capabilities.
%package -n budgie-applet-recentlyused
Requires: budgie-extras-common
Summary: Applet displays files recently accessed for the Budgie Desktop
Requires: budgie-extras-common
Summary: Applet displays files recently accessed for the Budgie Desktop
%description -n budgie-applet-recentlyused
The recentlyused applet displays the users files that have been opened
or created within a configurable period of time.
%package -n budgie-applet-rotation-lock
Requires: budgie-extras-common
Summary: Applet to lock or unlock the screen rotation
Requires: budgie-extras-common
Summary: Applet to lock or unlock the screen rotation
%description -n budgie-applet-rotation-lock
The Rotation Lock applet provides the user an easy way to lock or
unlock the screen rotation.
%package -n budgie-applet-showtime
Requires: budgie-extras-common
Summary: Applet displaying date and time on the Budgie Desktop
Requires: budgie-extras-common
Summary: Applet displaying date and time on the Budgie Desktop
%description -n budgie-applet-showtime
The ShowTime applet is a digital desktop clock, showing time and/or
date. Text color of both the displayed time and date can be set
separately from the applet's menu
%package -n budgie-applet-takeabreak
Requires: budgie-extras-common
Summary: A pomodoro-like applet, to make sure to take regular breaks from working
Requires: budgie-extras-common
Summary: A pomodoro-like applet, to make sure to take regular breaks from working
%description -n budgie-applet-takeabreak
Budgie TakeaBreak is a pomodoro- like applet, to make sure to take regular
breaks from working. Options from Budgie Settings include turning the screen
@@ -208,35 +207,36 @@ time. The applet can be accessed quickly from the panel to temporarily switch
it off.
%package -n budgie-applet-visualspace
Requires: budgie-extras-common
Summary: Shows the current workspace(s), as bullet(s)
Requires: budgie-extras-common
Summary: Shows the current workspace(s), as bullet(s)
%description -n budgie-applet-visualspace
Budgie VisualSpace shows the current workspace(s), as bullet(s). The applet
includes a menu to navigate to either one of the windows or their
corresponding workspace.
%package -n budgie-applet-wallstreet
Requires: budgie-extras-common
Summary: A mini-app to switch wallpapers on regular intervalls
Requires: budgie-extras-common
Summary: A mini-app to switch wallpapers on regular intervalls
%description -n budgie-applet-wallstreet
Budgie WallStreet is a mini-app to switch wallpapers on regular intervalls.
%package -n budgie-applet-weathershow
Requires: budgie-extras-common
Summary: Applet to display the weather and forecast
Requires: budgie-extras-common
Summary: Applet to display the weather and forecast
%description -n budgie-applet-weathershow
The weathershow applet displays daily and three hourly weather
forecasts on both the desktop and a Popover.
%package -n budgie-applet-window-shuffler
Requires: budgie-extras-common
Summary: Budgie Window Shuffler
Requires: budgie-extras-common
Requires: budgie-extras-daemon
Summary: Budgie Window Shuffler
%description -n budgie-applet-window-shuffler
%{summary}
%package -n budgie-applet-workspace-stopwatch
Requires: budgie-extras-common
Summary: An applet to keep track of usage per workspace
Requires: budgie-extras-common
Summary: An applet to keep track of usage per workspace
%description -n budgie-applet-workspace-stopwatch
Workspace Timer Applet is an applet to keep track of usage per workspace, e.g.
to find out how much minutes/hours were actually spent on a job. Workspaces can
@@ -246,14 +246,16 @@ onworkspace switch/clicking the icon for popup or else every 30 seconds. Time
during suspend is automatically retracted from a workspace' time.
%package -n budgie-applet-wpreviews
Requires: budgie-extras-common
Requires: budgie-extras-common
Requires: budgie-extras-daemon
Summary: Applet providing window previews capabilities for the Budgie Desktop
%description -n budgie-applet-wpreviews
The Previews applet shows an overview of windows in an expose like way.
%package -n budgie-applet-wswitcher
Requires: budgie-extras-common
Summary: An applet to show a different wallpaper on each of the workspaces
Requires: budgie-extras-common
Requires: budgie-extras-daemon
Summary: An applet to show a different wallpaper on each of the workspaces
%description -n budgie-applet-wswitcher
Budgie Wallpaper Workspace Switcher is an application (applet) to show a
different wallpaper on each of the workspaces. Usage is simple: add the applet
@@ -274,7 +276,7 @@ workspaces.
# Remove absolute symlink and replace with relative symlink
rm -f %{buildroot}%{_bindir}/quickchar
%fdupes %_libdir/budgie-desktop/plugins/budgie-weathershow/weather_icons
%fdupes %{buildroot}%{_datadir}/budgie-desktop/budgie-weathershow/weather_icons
%post
@@ -400,6 +402,8 @@ rm -f %{buildroot}%{_bindir}/quickchar
%files -n budgie-applet-weathershow
%{_libdir}/budgie-desktop/plugins/budgie-weathershow
%{_datadir}/budgie-desktop/budgie-weathershow/cities
%{_datadir}/budgie-desktop/budgie-weathershow/weather_icons/*
%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.weathershow.gschema.xml
%{_datadir}/pixmaps/budgie-wticon-symbolic.svg
@@ -0,0 +1,67 @@
From ff73f820b1398e5d60b8984b0003db46ad70b8ec Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com>
Date: Wed, 28 Apr 2021 16:50:03 +0200
Subject: [PATCH] gdm: Work around failing fingerprint auth
On Fedora we have the problem that fingerprint auth fails immediately if
the PAM configuration has not been updated and no prints are enrolled.
So, consider a verification failure within one second to be a service
failure instead.
---
js/gdm/util.js | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/js/gdm/util.js b/js/gdm/util.js
index 97df6d687e..371953cb25 100644
--- a/js/gdm/util.js
+++ b/js/gdm/util.js
@@ -109,6 +109,7 @@ export class ShellUserVerifier extends Signals.EventEmitter {
this._defaultService = null;
this._preemptingService = null;
this._fingerprintReaderType = FingerprintReaderType.NONE;
+ this._fprintStartTime = -1;
this._messageQueue = [];
this._messageQueueTimeoutId = 0;
@@ -669,6 +670,10 @@ export class ShellUserVerifier extends Signals.EventEmitter {
this._hold.acquire();
try {
this._activeServices.add(serviceName);
+
+ if (serviceName == FINGERPRINT_SERVICE_NAME)
+ this._fprintStartTime = GLib.get_monotonic_time();
+
if (this._userName) {
await this._userVerifier.call_begin_verification_for_user(
serviceName, this._userName, this._cancellable);
@@ -763,6 +768,7 @@ export class ShellUserVerifier extends Signals.EventEmitter {
const cancellable = this._cancellable;
this._fingerprintFailedId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
FINGERPRINT_ERROR_TIMEOUT_WAIT, () => {
+ log("Generating _verificationFailed!");
this._fingerprintFailedId = 0;
if (!cancellable.is_cancelled())
this._verificationFailed(serviceName, false);
@@ -829,6 +835,18 @@ export class ShellUserVerifier extends Signals.EventEmitter {
if (serviceName === FINGERPRINT_SERVICE_NAME) {
if (this._fingerprintFailedId)
GLib.source_remove(this._fingerprintFailedId);
+
+ // On Fedora we have the problem that fingerprint auth fails
+ // immediately if the PAM configuration has not been updated and no
+ // prints are enrolled.
+ // So, consider a verification failure within one second to be a service
+ // failure instead.
+ if (this._fprintStartTime > GLib.get_monotonic_time() - GLib.USEC_PER_SEC) {
+ log("Fingerprint service failed almost immediately, considering it unavailable.");
+ log("Please fix your configuration by running: authselect select --force sssd with-fingerprint with-silent-lastlog");
+ this._onServiceUnavailable(this._client, serviceName, null);
+ return;
+ }
}
// For Not Listed / enterprise logins, immediately reset
--
2.43.2
@@ -0,0 +1,35 @@
From 78a733bae62f8af15f0771d7efde55473f295e46 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Wed, 16 Aug 2023 18:46:54 -0400
Subject: [PATCH 1/3] status/keyboard: Add a catch around reload call
Now that system input settings can get used in the user session
they're getting seen by the tests and the tests are complaining:
Unhandled promise rejection. To suppress this warning, add an
error handler to your promise chain with .catch() or a try-catch block
around your await expression.
This commit adds the catch it's asking for.
---
js/ui/status/keyboard.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index cfc0a01f6b..4ef2f355d3 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -204,7 +204,9 @@ class InputSourceSystemSettings extends InputSourceSettings {
this._options = '';
this._model = '';
- this._reload();
+ this._reload().catch(error => {
+ logError(error, 'Could not reload system input settings');
+ });
Gio.DBus.system.signal_subscribe(this._BUS_NAME,
this._BUS_PROPS_IFACE,
--
2.43.1
@@ -0,0 +1,136 @@
From 0c0cc4ce1d3e08eba3e701d565398e01aa479ff7 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Wed, 16 Aug 2023 11:13:39 -0400
Subject: [PATCH 2/3] status/keyboard: Load keyboard from system settings if
gsettings unconfigured
Right now if a user hasn't configured their input sources, the code
falls back to
using the current layout on Xorg and the mutter default with wayland.
This commit changes the code to instead fall back to using the system
default (as configured by localed).
---
js/ui/status/keyboard.js | 62 +++++++++++++++++++++++++++++++---------
1 file changed, 48 insertions(+), 14 deletions(-)
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index 4ef2f355d3..d91eb41bc6 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -22,6 +22,9 @@ import * as Util from '../../misc/util.js';
export const INPUT_SOURCE_TYPE_XKB = 'xkb';
export const INPUT_SOURCE_TYPE_IBUS = 'ibus';
+const DESKTOP_INPUT_SOURCES_SCHEMA = 'org.gnome.desktop.input-sources';
+const KEY_INPUT_SOURCES = 'sources';
+
export const LayoutMenuItem = GObject.registerClass(
class LayoutMenuItem extends PopupMenu.PopupBaseMenuItem {
_init(displayName, shortName) {
@@ -278,18 +281,16 @@ class InputSourceSystemSettings extends InputSourceSettings {
}
class InputSourceSessionSettings extends InputSourceSettings {
- constructor() {
+ constructor(settings) {
super();
- this._DESKTOP_INPUT_SOURCES_SCHEMA = 'org.gnome.desktop.input-sources';
- this._KEY_INPUT_SOURCES = 'sources';
this._KEY_MRU_SOURCES = 'mru-sources';
this._KEY_KEYBOARD_OPTIONS = 'xkb-options';
this._KEY_KEYBOARD_MODEL = 'xkb-model';
this._KEY_PER_WINDOW = 'per-window';
- this._settings = new Gio.Settings({schema_id: this._DESKTOP_INPUT_SOURCES_SCHEMA});
- this._settings.connect(`changed::${this._KEY_INPUT_SOURCES}`, this._emitInputSourcesChanged.bind(this));
+ this._settings = settings;
+ this._settings.connect(`changed::${KEY_INPUT_SOURCES}`, this._emitInputSourcesChanged.bind(this));
this._settings.connect(`changed::${this._KEY_KEYBOARD_OPTIONS}`, this._emitKeyboardOptionsChanged.bind(this));
this._settings.connect(`changed::${this._KEY_KEYBOARD_MODEL}`, this._emitKeyboardModelChanged.bind(this));
this._settings.connect(`changed::${this._KEY_PER_WINDOW}`, this._emitPerWindowChanged.bind(this));
@@ -308,7 +309,7 @@ class InputSourceSessionSettings extends InputSourceSettings {
}
get inputSources() {
- return this._getSourcesList(this._KEY_INPUT_SOURCES);
+ return this._getSourcesList(KEY_INPUT_SOURCES);
}
get mruSources() {
@@ -363,13 +364,6 @@ export class InputSourceManager extends Signals.EventEmitter {
Meta.KeyBindingFlags.IS_REVERSED,
Shell.ActionMode.ALL,
this._switchInputSource.bind(this));
- if (Main.sessionMode.isGreeter)
- this._settings = new InputSourceSystemSettings();
- else
- this._settings = new InputSourceSessionSettings();
- this._settings.connect('input-sources-changed', this._inputSourcesChanged.bind(this));
- this._settings.connect('keyboard-options-changed', this._keyboardOptionsChanged.bind(this));
- this._settings.connect('keyboard-model-changed', this._keyboardModelChanged.bind(this));
this._xkbInfo = KeyboardManager.getXkbInfo();
this._keyboardManager = KeyboardManager.getKeyboardManager();
@@ -381,16 +375,56 @@ export class InputSourceManager extends Signals.EventEmitter {
this._ibusManager.connect('property-updated', this._ibusPropertyUpdated.bind(this));
this._ibusManager.connect('set-content-type', this._ibusSetContentType.bind(this));
+ this._inputSettings = new Gio.Settings({schema_id: DESKTOP_INPUT_SOURCES_SCHEMA});
+ this._setupInputSettings();
+
global.display.connect('modifiers-accelerator-activated', this._modifiersSwitcher.bind(this));
this._sourcesPerWindow = false;
this._focusWindowNotifyId = 0;
- this._settings.connect('per-window-changed', this._sourcesPerWindowChanged.bind(this));
this._sourcesPerWindowChanged();
this._disableIBus = false;
this._reloading = false;
}
+ _sessionHasNoInputSettings() {
+ return this._inputSettings.get_user_value(KEY_INPUT_SOURCES) === null;
+ }
+
+ _reloadInputSettings() {
+ const hadNoSessionInputSettings = this._hasNoSessionInputSettings;
+
+ if (Main.sessionMode.isGreeter)
+ this._hasNoSessionInputSettings = true;
+ else
+ this._hasNoSessionInputSettings = this._sessionHasNoInputSettings();
+
+ if (this._settings && hadNoSessionInputSettings === this._hasNoSessionInputSettings)
+ return;
+
+ this._settings?.disconnectObject(this);
+
+ if (this._hasNoSessionInputSettings)
+ this._settings = new InputSourceSystemSettings();
+ else
+ this._settings = new InputSourceSessionSettings(this._inputSettings);
+
+ this._settings.connectObject(
+ 'input-sources-changed', this._inputSourcesChanged.bind(this),
+ 'keyboard-options-changed', this._keyboardOptionsChanged.bind(this),
+ 'keyboard-model-changed', this._keyboardModelChanged.bind(this),
+ 'per-window-changed', this._sourcesPerWindowChanged.bind(this),
+ this);
+ this.reload();
+ }
+
+ _setupInputSettings() {
+ if (!Main.sessionMode.isGreeter)
+ this._inputSettings.connect(`changed::${KEY_INPUT_SOURCES}`, this._reloadInputSettings.bind(this));
+
+ this._reloadInputSettings();
+ }
+
reload() {
this._reloading = true;
this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions);
--
2.43.1
@@ -0,0 +1,128 @@
From d060baeb69a2a7d80fe403fc8eec90e20aa6cb7f Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Wed, 16 Aug 2023 14:09:50 -0400
Subject: [PATCH 3/3] status/keyboard: Use gnome-desktop API for getting
default input sources list
At the moment, gnome-shell tries to figure out the default input sources
from localed. It fails to take into account the system locale and input
methods.
This commit switches it to use a new function in gnome-desktop,
gnome_get_default_input_sources, which does most of the heavy
lifting itself, instead.
---
js/ui/status/keyboard.js | 59 ++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 32 deletions(-)
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index d91eb41bc6..19c36031f6 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -3,6 +3,7 @@
import Clutter from 'gi://Clutter';
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
+import GnomeDesktop from 'gi://GnomeDesktop';
import GObject from 'gi://GObject';
import IBus from 'gi://IBus';
import Meta from 'gi://Meta';
@@ -25,6 +26,8 @@ export const INPUT_SOURCE_TYPE_IBUS = 'ibus';
const DESKTOP_INPUT_SOURCES_SCHEMA = 'org.gnome.desktop.input-sources';
const KEY_INPUT_SOURCES = 'sources';
+Gio._promisify(GnomeDesktop, 'get_default_input_sources');
+
export const LayoutMenuItem = GObject.registerClass(
class LayoutMenuItem extends PopupMenu.PopupBaseMenuItem {
_init(displayName, shortName) {
@@ -202,9 +205,9 @@ class InputSourceSystemSettings extends InputSourceSettings {
this._BUS_IFACE = 'org.freedesktop.locale1';
this._BUS_PROPS_IFACE = 'org.freedesktop.DBus.Properties';
- this._layouts = '';
- this._variants = '';
- this._options = '';
+ this._inputSourceIds = [];
+ this._inputSourceTypes = [];
+ this._options = [];
this._model = '';
this._reload().catch(error => {
@@ -221,30 +224,22 @@ class InputSourceSystemSettings extends InputSourceSettings {
}
async _reload() {
- let props;
+ let inputSourceIds;
+ let inputSourceTypes;
+ let options;
+ let model;
try {
- const result = await Gio.DBus.system.call(
- this._BUS_NAME,
- this._BUS_PATH,
- this._BUS_PROPS_IFACE,
- 'GetAll',
- new GLib.Variant('(s)', [this._BUS_IFACE]),
- null, Gio.DBusCallFlags.NONE, -1, null);
- [props] = result.deepUnpack();
+ [inputSourceIds, inputSourceTypes, options, model] =
+ await GnomeDesktop.get_default_input_sources(null);
} catch (e) {
- log(`Could not get properties from ${this._BUS_NAME}`);
+ logError(e, 'Could not get default input sources');
return;
}
- const layouts = props['X11Layout'].unpack();
- const variants = props['X11Variant'].unpack();
- const options = props['X11Options'].unpack();
- const model = props['X11Model'].unpack();
-
- if (layouts !== this._layouts ||
- variants !== this._variants) {
- this._layouts = layouts;
- this._variants = variants;
+ if (inputSourceIds !== this._inputSourceIds ||
+ inputSourceTypes !== this._inputSourceTypes) {
+ this._inputSourceIds = inputSourceIds;
+ this._inputSourceTypes = inputSourceTypes;
this._emitInputSourcesChanged();
}
if (options !== this._options) {
@@ -258,21 +253,21 @@ class InputSourceSystemSettings extends InputSourceSettings {
}
get inputSources() {
- let sourcesList = [];
- let layouts = this._layouts.split(',');
- let variants = this._variants.split(',');
-
- for (let i = 0; i < layouts.length && !!layouts[i]; i++) {
- let id = layouts[i];
- if (variants[i])
- id += `+${variants[i]}`;
- sourcesList.push({type: INPUT_SOURCE_TYPE_XKB, id});
+ let sourcesList;
+
+ if (this._inputSourceIds) {
+ sourcesList = this._inputSourceIds.map((id, index) => {
+ return {type: this._inputSourceTypes[index], id};
+ });
+ } else {
+ sourcesList = [];
}
+
return sourcesList;
}
get keyboardOptions() {
- return this._options.split(',');
+ return this._options;
}
get keyboardModel() {
--
2.43.1
@@ -0,0 +1,98 @@
From c8c05c4a142f3de9c17a9ca83692dda364abccc8 Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Thu, 15 Feb 2024 16:05:40 +0100
Subject: [PATCH] shell-app: Improve discrete GPU detection
---
.../net.hadess.SwitcherooControl.xml | 3 +-
src/shell-app.c | 60 +++++++++++++++++++
2 files changed, 62 insertions(+), 1 deletion(-)
diff --git a/data/dbus-interfaces/net.hadess.SwitcherooControl.xml b/data/dbus-interfaces/net.hadess.SwitcherooControl.xml
index e52bc1a0d25..59a889654f4 100644
--- a/data/dbus-interfaces/net.hadess.SwitcherooControl.xml
+++ b/data/dbus-interfaces/net.hadess.SwitcherooControl.xml
@@ -38,7 +38,8 @@
will contain a user-facing name for the GPU, the "Environment" (as) key will
contain an array of even number of strings, each being an environment
variable to set to use the GPU, followed by its value, the "Default" (b) key
- will tag the default (usually integrated) GPU.
+ will tag the default GPU, the "Discrete" (b) key tags if the GPU is a
+ dedicated component.
-->
<property name="GPUs" type="aa{sv}" access="read"/>
diff --git a/src/shell-app.c b/src/shell-app.c
index 371bc6cf762..39f220ba954 100644
--- a/src/shell-app.c
+++ b/src/shell-app.c
@@ -1300,6 +1300,66 @@ apply_discrete_gpu_env (GAppLaunchContext *context,
}
num_children = g_variant_n_children (variant);
+
+ // Check if the Default GPU is Discrete
+ for (i = 0; i < num_children; i++)
+ {
+ g_autoptr(GVariant) gpu = NULL;
+ g_autoptr(GVariant) env = NULL;
+ g_autoptr(GVariant) default_variant = NULL;
+ g_autoptr(GVariant) discrete_variant = NULL;
+ g_autofree const char **env_s = NULL;
+
+ gpu = g_variant_get_child_value (variant, i);
+ if (!gpu ||
+ !g_variant_is_of_type (gpu, G_VARIANT_TYPE ("a{s*}")))
+ continue;
+
+ /* Skip over non-default GPUs */
+ default_variant = g_variant_lookup_value (gpu, "Default", NULL);
+ if (!default_variant || !g_variant_get_boolean (default_variant))
+ continue;
+
+ /* break out if default GPU is not discrete */
+ discrete_variant = g_variant_lookup_value (gpu, "Discrete", NULL);
+ if (!discrete_variant || !g_variant_get_boolean (discrete_variant))
+ break;
+
+ // Default GPU is discrete, no need to do anything
+ return;
+ }
+
+ // Find the first Discrete GPU
+ for (i = 0; i < num_children; i++)
+ {
+ g_autoptr(GVariant) gpu = NULL;
+ g_autoptr(GVariant) env = NULL;
+ g_autoptr(GVariant) discrete_variant = NULL;
+ g_autofree const char **env_s = NULL;
+ guint j;
+
+ gpu = g_variant_get_child_value (variant, i);
+ if (!gpu ||
+ !g_variant_is_of_type (gpu, G_VARIANT_TYPE ("a{s*}")))
+ continue;
+
+ /* Skip over non-discrete GPUs */
+ discrete_variant = g_variant_lookup_value (gpu, "Discrete", NULL);
+ if (!discrete_variant || !g_variant_get_boolean (discrete_variant))
+ continue;
+
+ env = g_variant_lookup_value (gpu, "Environment", NULL);
+ if (!env)
+ continue;
+
+ env_s = g_variant_get_strv (env, NULL);
+ for (j = 0; env_s[j] != NULL; j = j + 2)
+ g_app_launch_context_setenv (context, env_s[j], env_s[j+1]);
+ return;
+ }
+
+ // fallback to old behavior
+ // find the first non-Default GPU
for (i = 0; i < num_children; i++)
{
g_autoptr(GVariant) gpu = NULL;
--
GitLab
+9
View File
@@ -0,0 +1,9 @@
project pkg {
rpm {
spec = "gnome-shell.spec"
}
labels {
subrepo = "extras"
updbranch = 1
}
}
File diff suppressed because it is too large Load Diff
+227
View File
@@ -0,0 +1,227 @@
gnome-shell-2.31.5.tar.bz2
/gnome-shell-2.91.0.tar.bz2
/gnome-shell-2.91.1.tar.bz2
/gnome-shell-2.91.2.tar.bz2
/gnome-shell-2.91.3.tar.bz2
/gnome-shell-2.91.4.tar.bz2
/gnome-shell-2.91.5.tar.bz2
/gnome-shell-2.91.6.tar.bz2
/gnome-shell-2.91.90.tar.bz2
/gnome-shell-2.91.91.tar.bz2
/gnome-shell-2.91.92.tar.bz2
/gnome-shell-2.91.93.tar.bz2
/gnome-shell-3.0.0.tar.bz2
/gnome-shell-3.0.0.1.tar.bz2
/gnome-shell-3.0.0.2.tar.bz2
/gnome-shell-3.0.1.tar.bz2
/gnome-shell-3.0.2.tar.bz2
/gnome-shell-3.1.3.tar.bz2
/gnome-shell-3.1.4.tar.xz
/gnome-shell-3.1.4-gite7b9933.tar.bz2
/gnome-shell-3.1.90.1.tar.xz
/gnome-shell-3.1.91.tar.xz
/gnome-shell-3.1.91.1.tar.xz
/gnome-shell-3.1.92.tar.xz
/gnome-shell-3.2.0.tar.xz
/gnome-shell-3.2.1.tar.xz
/gnome-shell-3.3.2.tar.xz
/gnome-shell-3.3.3.tar.xz
/gnome-shell-3.3.4.tar.xz
/gnome-shell-3.3.5.tar.xz
/gnome-shell-3.3.90.tar.xz
/gnome-shell-3.3.92.tar.xz
/gnome-shell-3.4.0.tar.xz
/gnome-shell-3.4.1.tar.xz
/gnome-shell-3.5.2.tar.xz
/gnome-shell-3.5.3.tar.xz
/gnome-shell-3.5.4.tar.xz
/gnome-shell-3.5.5.tar.xz
/gnome-shell-3.5.90.tar.xz
/gnome-shell-3.5.91.tar.xz
/gnome-shell-3.5.92.tar.xz
/gnome-shell-3.6.0.tar.xz
/gnome-shell-3.6.1.tar.xz
/gnome-shell-3.7.1.tar.xz
/gnome-shell-3.7.2.tar.xz
/gnome-shell-3.7.3.tar.xz
/gnome-shell-3.7.3.1.tar.xz
/gnome-shell-3.7.4.tar.xz
/gnome-shell-3.7.4.1.tar.xz
/gnome-shell-3.7.5.tar.xz
/gnome-shell-3.7.90.tar.xz
/gnome-shell-3.7.91.tar.xz
/gnome-shell-3.7.92.tar.xz
/gnome-shell-3.8.0.tar.xz
/gnome-shell-3.8.0.1.tar.xz
/gnome-shell-3.8.1.tar.xz
/gnome-shell-3.9.1.tar.xz
/gnome-shell-3.9.2.tar.xz
/gnome-shell-3.9.3.tar.xz
/gnome-shell-3.9.4.tar.xz
/gnome-shell-3.9.5.tar.xz
/gnome-shell-3.9.90.tar.xz
/gnome-shell-3.9.91.tar.xz
/gnome-shell-3.9.92.tar.xz
/gnome-shell-3.10.0.tar.xz
/gnome-shell-3.10.0.1.tar.xz
/gnome-shell-3.10.1.tar.xz
/gnome-shell-3.11.1.tar.xz
/gnome-shell-3.11.2.tar.xz
/gnome-shell-3.11.3.tar.xz
/gnome-shell-3.11.4.tar.xz
/gnome-shell-3.11.5.tar.xz
/gnome-shell-3.11.90.tar.xz
/gnome-shell-3.11.91.tar.xz
/gnome-shell-3.11.92.tar.xz
/gnome-shell-3.12.0.tar.xz
/gnome-shell-3.12.1.tar.xz
/gnome-shell-3.13.1.tar.xz
/gnome-shell-3.13.2.tar.xz
/gnome-shell-3.13.3.tar.xz
/gnome-shell-3.13.4.tar.xz
/gnome-shell-3.13.90.tar.xz
/gnome-shell-3.13.91.tar.xz
/gnome-shell-3.13.92.tar.xz
/gnome-shell-3.14.0.tar.xz
/gnome-shell-3.14.1.tar.xz
/gnome-shell-3.15.1.tar.xz
/gnome-shell-3.15.2.tar.xz
/gnome-shell-3.15.3.tar.xz
/gnome-shell-3.15.4.tar.xz
/gnome-shell-3.15.90.tar.xz
/gnome-shell-3.15.91.tar.xz
/gnome-shell-3.15.92.tar.xz
/gnome-shell-3.16.0.tar.xz
/gnome-shell-3.16.1.tar.xz
/gnome-shell-3.17.1.tar.xz
/gnome-shell-3.17.2.tar.xz
/gnome-shell-3.17.3.tar.xz
/gnome-shell-3.17.4.tar.xz
/gnome-shell-3.17.90.tar.xz
/gnome-shell-3.17.91.tar.xz
/gnome-shell-3.17.92.tar.xz
/gnome-shell-3.18.0.tar.xz
/gnome-shell-3.18.1.tar.xz
/gnome-shell-3.19.1.tar.xz
/gnome-shell-3.19.2.tar.xz
/gnome-shell-3.19.3.tar.xz
/gnome-shell-3.19.4.tar.xz
/gnome-shell-3.19.90.tar.xz
/gnome-shell-3.19.91.tar.xz
/gnome-shell-3.19.92.tar.xz
/gnome-shell-3.20.0.tar.xz
/gnome-shell-3.20.1.tar.xz
/gnome-shell-3.21.1.tar.xz
/gnome-shell-3.21.2.tar.xz
/gnome-shell-3.21.3.tar.xz
/gnome-shell-3.21.4.tar.xz
/gnome-shell-3.21.90.tar.xz
/gnome-shell-3.21.90.1.tar.xz
/gnome-shell-3.21.91.tar.xz
/gnome-shell-3.21.92.tar.xz
/gnome-shell-3.22.0.tar.xz
/gnome-shell-3.22.1.tar.xz
/gnome-shell-3.23.1.tar.xz
/gnome-shell-3.23.2.tar.xz
/gnome-shell-3.23.3.tar.xz
/gnome-shell-3.23.90.tar.xz
/gnome-shell-3.23.91.tar.xz
/gnome-shell-3.23.92.tar.xz
/gnome-shell-3.24.0.tar.xz
/gnome-shell-3.24.1.tar.xz
/gnome-shell-3.25.1.tar.xz
/gnome-shell-3.25.2.tar.xz
/gnome-shell-3.25.3.tar.xz
/gnome-shell-3.25.4.tar.xz
/gnome-shell-3.25.90.tar.xz
/gnome-shell-3.25.91.tar.xz
/gnome-shell-3.26.0.tar.xz
/gnome-shell-3.26.1.tar.xz
/gnome-shell-3.27.1.tar.xz
/gnome-shell-3.27.91.tar.xz
/gnome-shell-3.27.92.tar.xz
/gnome-shell-3.28.0.tar.xz
/gnome-shell-3.28.1.tar.xz
/gnome-shell-3.29.1.tar.xz
/gnome-shell-3.29.2.tar.xz
/gnome-shell-3.29.4.tar.xz
/gnome-shell-3.29.90.tar.xz
/gnome-shell-3.29.91.tar.xz
/gnome-shell-3.29.92.tar.xz
/gnome-shell-3.30.0.tar.xz
/gnome-shell-3.30.1.tar.xz
/gnome-shell-3.31.2.tar.xz
/gnome-shell-3.31.4.tar.xz
/gnome-shell-3.31.90.tar.xz
/gnome-shell-3.31.91.tar.xz
/gnome-shell-3.31.92.tar.xz
/gnome-shell-3.32.0.tar.xz
/gnome-shell-3.32.1.tar.xz
/gnome-shell-3.33.1.tar.xz
/gnome-shell-3.33.2.tar.xz
/gnome-shell-3.33.3.tar.xz
/gnome-shell-3.33.4.tar.xz
/gnome-shell-3.33.90.tar.xz
/gnome-shell-3.33.91.tar.xz
/gnome-shell-3.33.92.tar.xz
/gnome-shell-3.34.0.tar.xz
/gnome-shell-3.34.1.tar.xz
/gnome-shell-3.35.1.tar.xz
/gnome-shell-3.35.2.tar.xz
/gnome-shell-3.35.3.tar.xz
/gnome-shell-3.35.90.tar.xz
/gnome-shell-3.35.91.tar.xz
/gnome-shell-3.35.92.tar.xz
/gnome-shell-3.36.0.tar.xz
/gnome-shell-3.36.1.tar.xz
/gnome-shell-3.37.1.tar.xz
/gnome-shell-3.37.2.tar.xz
/gnome-shell-3.37.3.tar.xz
/gnome-shell-3.37.90.tar.xz
/gnome-shell-3.37.91.tar.xz
/gnome-shell-3.37.92.tar.xz
/gnome-shell-3.38.0.tar.xz
/gnome-shell-3.38.1.tar.xz
/gnome-shell-40.alpha.tar.xz
/gnome-shell-40.alpha.1.tar.xz
/gnome-shell-40.alpha.1.1.tar.xz
/gnome-shell-40.alpha.1.1-94-g9ce666ac1.tar.xz
/gnome-shell-40.alpha.1.1-228-g829a096ba.tar.xz
/gnome-shell-40.beta.tar.xz
/gnome-shell-40.beta-79-g7a57528bd.tar.xz
/gnome-shell-40.rc.tar.xz
/gnome-shell-40.0.tar.xz
/gnome-shell-40.1.tar.xz
/gnome-shell-40.2.tar.xz
/gnome-shell-40.3.tar.xz
/gnome-shell-41.beta.tar.xz
/gnome-shell-41.rc.tar.xz
/gnome-shell-41.rc.1.tar.xz
/gnome-shell-41.0.tar.xz
/gnome-shell-42.alpha.tar.xz
/gnome-shell-42.beta.tar.xz
/gnome-shell-42.rc.tar.xz
/gnome-shell-42.0.tar.xz
/gnome-shell-42.1.tar.xz
/gnome-shell-42.2.tar.xz
/gnome-shell-43.alpha.tar.xz
/gnome-shell-43.beta.tar.xz
/gnome-shell-43.rc.tar.xz
/gnome-shell-43.0.tar.xz
/gnome-shell-43.1.tar.xz
/gnome-shell-44.beta.tar.xz
/gnome-shell-44.rc.tar.xz
/gnome-shell-44.0.tar.xz
/gnome-shell-44.1.tar.xz
/gnome-shell-44.2.tar.xz
/gnome-shell-45.alpha.tar.xz
/gnome-shell-45.beta.tar.xz
/gnome-shell-45.beta.1.tar.xz
/gnome-shell-45.rc.tar.xz
/gnome-shell-45.0.tar.xz
/gnome-shell-45.1.tar.xz
/gnome-shell-45.2.tar.xz
/gnome-shell-46.alpha.tar.xz
/gnome-shell-46.beta.tar.xz
/gnome-shell-46.rc.tar.xz
/gnome-shell-46.0.tar.xz
@@ -0,0 +1,38 @@
From 551b8979483e127471c726fd1db1d52e063a7d81 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Wed, 17 Sep 2014 07:11:12 +0200
Subject: [PATCH] Replace Web with Firefox in default favorites
---
data/org.gnome.shell.gschema.xml.in | 2 +-
js/ui/appFavorites.js | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in
index f4fa86d013..86b4bf85ee 100644
--- a/data/org.gnome.shell.gschema.xml.in
+++ b/data/org.gnome.shell.gschema.xml.in
@@ -50,7 +50,7 @@
</description>
</key>
<key name="favorite-apps" type="as">
- <default>[ 'org.gnome.Epiphany.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'org.gnome.TextEditor.desktop']</default>
+ <default>[ 'org.mozilla.firefox.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'org.gnome.TextEditor.desktop']</default>
<summary>List of desktop file IDs for favorite applications</summary>
<description>
The applications corresponding to these identifiers
diff --git a/js/ui/appFavorites.js b/js/ui/appFavorites.js
index 576df3800d..1f55a3c881 100644
--- a/js/ui/appFavorites.js
+++ b/js/ui/appFavorites.js
@@ -51,6 +51,7 @@ const RENAMED_DESKTOP_IDS = {
'gnotski.desktop': 'org.gnome.Klotski.desktop',
'gtali.desktop': 'org.gnome.Tali.desktop',
'iagno.desktop': 'org.gnome.Reversi.desktop',
+ 'firefox.desktop': 'org.mozilla.firefox.desktop',
'nautilus.desktop': 'org.gnome.Nautilus.desktop',
'org.gnome.gnome-2048.desktop': 'org.gnome.TwentyFortyEight.desktop',
'org.gnome.taquin.desktop': 'org.gnome.Taquin.desktop',
--
2.43.0
@@ -0,0 +1,262 @@
%global tarball_version %%(echo %{version} | tr '~' '.')
%global major_version 47
%global minor_version 3
%if 0%{?rhel}
%global portal_helper 0
%else
%global portal_helper 1
%endif
Name: gnome-shell
Version: %{major_version}.%{minor_version}
Release: 1%{?dist}.switcheroo
Summary: Window management and application launching for GNOME
License: GPL-2.0-or-later
URL: https://wiki.gnome.org/Projects/GnomeShell
Source0: https://download.gnome.org/sources/gnome-shell/%{major_version}/%{name}-%{tarball_version}.tar.xz
# Replace Epiphany with Firefox in the default favourite apps list
Patch: gnome-shell-favourite-apps-firefox.patch
# Some users might have a broken PAM config, so we really need this
# downstream patch to stop trying on configuration errors.
Patch: 0001-gdm-Work-around-failing-fingerprint-auth.patch
Patch: 0001-status-keyboard-Add-a-catch-around-reload-call.patch
Patch: 0002-status-keyboard-Load-keyboard-from-system-settings-i.patch
Patch: 0003-status-keyboard-Use-gnome-desktop-API-for-getting-de.patch
# shell-app: improve discrete GPU detection
# https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3193
Patch: 3193.patch
%define eds_version 3.45.1
%define gnome_desktop_version 44.0-7
%define glib2_version 2.79.2
%define gobject_introspection_version 1.49.1
%define gjs_version 1.73.1
%define gtk4_version 4.0.0
%define adwaita_version 1.5.0
%define mutter_version 47.0
%define polkit_version 0.100
%define gsettings_desktop_schemas_version 47~alpha
%define ibus_version 1.5.2
%define gnome_bluetooth_version 1:42.3
%define gstreamer_version 1.4.5
%define pipewire_version 0.3.0
%define gnome_settings_daemon_version 3.37.1
BuildRequires: pkgconfig(bash-completion)
BuildRequires: gcc
BuildRequires: meson
BuildRequires: git
BuildRequires: pkgconfig(ibus-1.0) >= %{ibus_version}
BuildRequires: desktop-file-utils
BuildRequires: pkgconfig(libedataserver-1.2) >= %{eds_version}
BuildRequires: pkgconfig(gcr-4)
BuildRequires: pkgconfig(gjs-1.0) >= %{gjs_version}
BuildRequires: pkgconfig(gio-2.0) >= %{glib2_version}
BuildRequires: pkgconfig(gnome-autoar-0)
BuildRequires: pkgconfig(gnome-desktop-4) >= %{gnome_desktop_version}
BuildRequires: pkgconfig(gobject-introspection-1.0) >= %{gobject_introspection_version}
BuildRequires: mesa-libGL-devel
BuildRequires: mesa-libEGL-devel
BuildRequires: pkgconfig(libnm)
BuildRequires: pkgconfig(polkit-agent-1) >= %{polkit_version}
BuildRequires: pkgconfig(libstartup-notification-1.0)
BuildRequires: pkgconfig(libsystemd)
# for screencast recorder functionality
BuildRequires: pkgconfig(gstreamer-base-1.0) >= %{gstreamer_version}
BuildRequires: pkgconfig(libpipewire-0.3) >= %{pipewire_version}
BuildRequires: pkgconfig(gtk4) >= %{gtk4_version}
BuildRequires: gettext >= 0.19.6
BuildRequires: python3
# for rst2man
BuildRequires: python3-docutils
# for barriers
BuildRequires: libXfixes-devel >= 5.0
# used in unused BigThemeImage
BuildRequires: librsvg2-devel
BuildRequires: mutter-devel >= %{mutter_version}
BuildRequires: pkgconfig(libpulse)
%ifnarch s390 s390x ppc ppc64 ppc64p7
BuildRequires: gnome-bluetooth-libs-devel >= %{gnome_bluetooth_version}
%endif
# Bootstrap requirements
BuildRequires: gtk-doc
%ifnarch s390 s390x
Recommends: gnome-bluetooth%{?_isa} >= %{gnome_bluetooth_version}
%endif
Requires: gnome-desktop3%{?_isa} >= %{gnome_desktop_version}
Requires: gcr%{?_isa}
Requires: gobject-introspection%{?_isa} >= %{gobject_introspection_version}
Requires: gjs%{?_isa} >= %{gjs_version}
Requires: gtk4%{?_isa} >= %{gtk4_version}
Requires: libadwaita%{_isa} >= %{adwaita_version}
Requires: libnma-gtk4%{?_isa}
# needed for loading SVG's via gdk-pixbuf
Requires: librsvg2%{?_isa}
Requires: mutter%{?_isa} >= %{mutter_version}
Requires: upower%{?_isa}
Requires: polkit%{?_isa} >= %{polkit_version}
Requires: gnome-desktop4%{?_isa} >= %{gnome_desktop_version}
Requires: glib2%{?_isa} >= %{glib2_version}
Requires: gsettings-desktop-schemas%{?_isa} >= %{gsettings_desktop_schemas_version}
Requires: gnome-settings-daemon%{?_isa} >= %{gnome_settings_daemon_version}
Requires: gstreamer1%{?_isa} >= %{gstreamer_version}
# needed for screen recorder
Requires: gstreamer1-plugins-good%{?_isa}
Requires: pipewire-gstreamer%{?_isa}
Requires: xdg-user-dirs-gtk
# needed for schemas
Requires: at-spi2-atk%{?_isa}
# needed for on-screen keyboard
Requires: ibus%{?_isa} >= %{ibus_version}
# needed for "show keyboard layout"
Requires: tecla
# needed for the user menu
Requires: accountsservice-libs%{?_isa}
Requires: gdm-libs%{?_isa}
# needed for settings items in menus
Requires: gnome-control-center
# needed by some utilities
Requires: python3%{_isa}
# needed for the dual-GPU launch menu
Requires: switcheroo-control
# needed for clocks/weather integration
Requires: geoclue2-libs%{?_isa}
Requires: libgweather4%{?_isa}
# for gnome-extensions CLI tool
Requires: gettext
# needed for thunderbolt support
Recommends: bolt%{?_isa}
# Needed for launching flatpak apps etc
# 1.8.0 is needed for source type support in the screencast portal.
Requires: xdg-desktop-portal-gtk >= 1.8.0
Requires: xdg-desktop-portal-gnome
# needed by the welcome dialog
Recommends: gnome-tour
%if %{portal_helper}
# needed for captive portal helper
Requires: webkitgtk6.0%{?_isa}
%endif
# https://github.com/containers/composefs/pull/229#issuecomment-1838735764
%if 0%{?rhel} >= 10
ExcludeArch: %{ix86}
%endif
Provides: desktop-notification-daemon = %{version}-%{release}
Provides: PolicyKit-authentication-agent = %{version}-%{release}
Provides: bundled(gvc)
Provides: bundled(libcroco) = 0.6.13
%if 0%{?rhel}
# In Fedora, fedora-obsolete-packages obsoletes caribou
Obsoletes: caribou < 0.4.21-10
Obsoletes: caribou-antler < 0.4.21-10
Obsoletes: caribou-devel < 0.4.21-10
Obsoletes: caribou-gtk2-module < 0.4.21-10
Obsoletes: caribou-gtk3-module < 0.4.21-10
Obsoletes: python-caribou < 0.4.21-10
Obsoletes: python2-caribou < 0.4.21-10
Obsoletes: python3-caribou < 0.4.21-10
%endif
# https://bugzilla.redhat.com/show_bug.cgi?id=1740897
Conflicts: gnome-shell-extension-background-logo < 3.34.0
%description
GNOME Shell provides core user interface functions for the GNOME 3 desktop,
like switching to windows and launching applications. GNOME Shell takes
advantage of the capabilities of modern graphics hardware and introduces
innovative user interface concepts to provide a visually attractive and
easy to use experience.
%prep
%autosetup -S git -n %{name}-%{tarball_version}
%build
%meson \
-Dextensions_app=false \
%if %{portal_helper}
-Dportal_helper=true \
%else
-Dportal_helper=false \
%endif
%{nil}
%meson_build
%install
%meson_install
# Create empty directories where other packages can drop extensions
mkdir -p %{buildroot}%{_datadir}/gnome-shell/extensions
mkdir -p %{buildroot}%{_datadir}/gnome-shell/search-providers
%find_lang %{name}
%check
desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.desktop
desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.Extensions.desktop
%if %{portal_helper}
desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.PortalHelper.desktop
%endif
%files -f %{name}.lang
%license COPYING
%doc NEWS README.md
%{_bindir}/gnome-shell
%{_bindir}/gnome-extensions
%{_bindir}/gnome-shell-extension-tool
%{_bindir}/gnome-shell-test-tool
%{_datadir}/glib-2.0/schemas/*.xml
%{_datadir}/glib-2.0/schemas/00_org.gnome.shell.gschema.override
%{_datadir}/applications/org.gnome.Shell.Extensions.desktop
%{_datadir}/applications/org.gnome.Shell.desktop
%{_datadir}/bash-completion/completions/gnome-extensions
%{_datadir}/gnome-control-center/keybindings/50-gnome-shell-launchers.xml
%{_datadir}/gnome-control-center/keybindings/50-gnome-shell-screenshots.xml
%{_datadir}/gnome-control-center/keybindings/50-gnome-shell-system.xml
%{_datadir}/gnome-shell/
%{_datadir}/dbus-1/services/org.gnome.ScreenSaver.service
%{_datadir}/dbus-1/services/org.gnome.Shell.CalendarServer.service
%{_datadir}/dbus-1/services/org.gnome.Shell.Extensions.service
%{_datadir}/dbus-1/services/org.gnome.Shell.HotplugSniffer.service
%{_datadir}/dbus-1/services/org.gnome.Shell.Notifications.service
%{_datadir}/dbus-1/services/org.gnome.Shell.Screencast.service
%{_datadir}/dbus-1/interfaces/org.gnome.Shell.Extensions.xml
%{_datadir}/dbus-1/interfaces/org.gnome.Shell.Introspect.xml
%{_datadir}/dbus-1/interfaces/org.gnome.Shell.PadOsd.xml
%{_datadir}/dbus-1/interfaces/org.gnome.Shell.Screencast.xml
%{_datadir}/dbus-1/interfaces/org.gnome.Shell.Screenshot.xml
%{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider.xml
%{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml
%{_datadir}/icons/hicolor/scalable/apps/org.gnome.Shell.Extensions.svg
%{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Shell.Extensions-symbolic.svg
%{_userunitdir}/org.gnome.Shell-disable-extensions.service
%{_userunitdir}/org.gnome.Shell.target
%{_userunitdir}/org.gnome.Shell@wayland.service
%{_userunitdir}/org.gnome.Shell@x11.service
%{_libdir}/gnome-shell/
%{_libexecdir}/gnome-shell-calendar-server
%{_libexecdir}/gnome-shell-perf-helper
%{_libexecdir}/gnome-shell-hotplug-sniffer
%{_mandir}/man1/gnome-extensions.1*
%{_mandir}/man1/gnome-shell.1*
%if %{portal_helper}
%{_datadir}/applications/org.gnome.Shell.PortalHelper.desktop
%{_datadir}/dbus-1/services/org.gnome.Shell.PortalHelper.service
%{_datadir}/icons/hicolor/scalable/apps/org.gnome.Shell.CaptivePortal.svg
%{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Shell.CaptivePortal-symbolic.svg
%{_libexecdir}/gnome-shell-portal-helper
%endif
%changelog
%autochangelog
@@ -0,0 +1,25 @@
import "andax/bump_extras.rhai" as bump;
let pkg = "gnome-shell";
let branch = bump::as_bodhi_ver(labels.branch);
let url = `https://bodhi.fedoraproject.org/updates/?search=${pkg}&status=stable&releases=${branch}&rows_per_page=10&page=1`;
let done = false;
for entry in get(url).json().updates {
for entry in entry.title.split(' ') {
let matches = find_all(`${pkg}-([\d.]+)-(\d+)\.[\w\d]+$`, entry);
if matches.len() == 0 { continue; }
let majminv = matches[0][1].split('.');
if majminv.len() != 2 {
print(`gnome-shell: ${matches[0][1]} has invalid version?`);
terminate();
}
rpm.global("major_version", majminv[0]);
rpm.global("minor_version", majminv[1]);
rpm.f = sub(`Release:(\s+)(.+?)\n`, "Release:${1}" + matches[0][2] + "%{?dist}.switcheroo\n", rpm.f);
done = true;
}
if done { break; }
}
@@ -1,6 +1,6 @@
Name: kde-liquidshell
Version: 1.9.0
Release: %autorelease
Version: 1.10.0
Release: 1%?dist
Summary: Basic desktop shell using QtWidgets
Provides: liquidshell = %version
@@ -0,0 +1,30 @@
From 0cc287336b32e601e70b26d60d9335abde538a18 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Mon, 16 Oct 2023 17:57:16 -0700
Subject: [PATCH] Give the kuriikwsfiltereng_private a VERSION and SOVERSION
(#26)
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
src/urifilters/ikws/CMakeLists.txt | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/urifilters/ikws/CMakeLists.txt b/src/urifilters/ikws/CMakeLists.txt
index 7d42584c3..393588993 100644
--- a/src/urifilters/ikws/CMakeLists.txt
+++ b/src/urifilters/ikws/CMakeLists.txt
@@ -1,6 +1,11 @@
add_subdirectory(searchproviders)
add_library(kuriikwsfiltereng_private kuriikwsfiltereng.cpp searchprovider.cpp searchproviderregistry.cpp)
+set_target_properties(kuriikwsfiltereng_private PROPERTIES
+ VERSION ${KIO_VERSION}
+ SOVERSION ${KIO_SOVERSION}
+ EXPORT_NAME kuriikwsfiltereng_private
+)
generate_export_header(kuriikwsfiltereng_private) # We need this to be a shared lib, because otherwise we have duplicate Q_GLOBAL_STATICs
target_link_libraries(kuriikwsfiltereng_private PUBLIC KF6::KIOGui)
install(TARGETS kuriikwsfiltereng_private ${KF_INSTALL_TARGETS_DEFAULT_ARGS})
--
2.41.0
+290
View File
@@ -0,0 +1,290 @@
From 7b1154d235f752b9fd1797f87861f11ef89d5d7a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Dr=C3=B6gehoff?= <sentrycraft123@gmail.com>
Date: Thu, 15 Feb 2024 14:38:21 +0100
Subject: [PATCH 1/7] Improve discrete GPU detection using switcheroo-control
---
src/gui/gpudetection.cpp | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/src/gui/gpudetection.cpp b/src/gui/gpudetection.cpp
index ef246d3936..695bf27a1e 100644
--- a/src/gui/gpudetection.cpp
+++ b/src/gui/gpudetection.cpp
@@ -62,6 +62,40 @@ static bool checkGpuWithSwitcheroo()
QList<QVariantMap> gpus;
arg >> gpus;
+ if (gpus.length() < 2) {
+ // Skip checking for Default or Discrete GPUs when 1 or no GPU is available
+ return false;
+ }
+
+ // Check if the Default GPU is Discrete
+ for (const auto &gpu : gpus) {
+ bool defaultGpu = qvariant_cast<bool>(gpu[QStringLiteral("Default")]);
+ if (defaultGpu) {
+ bool discreteGpu = qvariant_cast<bool>(gpu.value(QStringLiteral("Discrete"), false));
+ if (discreteGpu) {
+ // If the default GPU is Discret there is no need to apply the env vars
+ s_gpuCheck = GpuCheck::Present;
+ return true;
+ }
+ break;
+ }
+ }
+
+ // Find the first Discrete GPU
+ for (const auto &gpu : gpus) {
+ bool discreteGpu = qvariant_cast<bool>(gpu.value(QStringLiteral("Discrete"), false));
+ if (!discreteGpu) {
+ s_gpuCheck = GpuCheck::Present;
+ QStringList envList = qvariant_cast<QStringList>(gpu[QStringLiteral("Environment")]);
+ for (int i = 0; i + 1 < envList.size(); i += 2) {
+ s_gpuEnv.insert(envList[i], envList[i + 1]);
+ }
+ return true;
+ }
+ }
+
+ // fallback to old behavior
+ // find the first non-Default GPU
for (const auto &gpu : gpus) {
bool defaultGpu = qvariant_cast<bool>(gpu[QStringLiteral("Default")]);
if (!defaultGpu) {
--
GitLab
From 29c056a6a71b0de226369c03d02f47ab56a7877a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Dr=C3=B6gehoff?= <sentrycraft123@gmail.com>
Date: Wed, 21 Feb 2024 15:57:28 +0100
Subject: [PATCH 2/7] make gpus length comparison easier to reade
---
src/gui/gpudetection.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/gui/gpudetection.cpp b/src/gui/gpudetection.cpp
index 695bf27a1e..dfe6a9982b 100644
--- a/src/gui/gpudetection.cpp
+++ b/src/gui/gpudetection.cpp
@@ -62,7 +62,7 @@ static bool checkGpuWithSwitcheroo()
QList<QVariantMap> gpus;
arg >> gpus;
- if (gpus.length() < 2) {
+ if (gpus.length() <= 1) {
// Skip checking for Default or Discrete GPUs when 1 or no GPU is available
return false;
}
--
GitLab
From afc22129301ac2e33673ce9415b1e0d329a57c59 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Dr=C3=B6gehoff?= <sentrycraft123@gmail.com>
Date: Wed, 21 Feb 2024 16:27:05 +0100
Subject: [PATCH 3/7] lookup needed GPU entries in a single loop
---
src/gui/gpudetection.cpp | 56 +++++++++++++++++-----------------------
1 file changed, 23 insertions(+), 33 deletions(-)
diff --git a/src/gui/gpudetection.cpp b/src/gui/gpudetection.cpp
index dfe6a9982b..57436e4789 100644
--- a/src/gui/gpudetection.cpp
+++ b/src/gui/gpudetection.cpp
@@ -67,45 +67,35 @@ static bool checkGpuWithSwitcheroo()
return false;
}
- // Check if the Default GPU is Discrete
- for (const auto &gpu : gpus) {
- bool defaultGpu = qvariant_cast<bool>(gpu[QStringLiteral("Default")]);
- if (defaultGpu) {
- bool discreteGpu = qvariant_cast<bool>(gpu.value(QStringLiteral("Discrete"), false));
- if (discreteGpu) {
- // If the default GPU is Discret there is no need to apply the env vars
- s_gpuCheck = GpuCheck::Present;
- return true;
- }
- break;
+ QVariantMap defaultGpu;
+ QVariantMap firstDiscreteGpu;
+ QVariantMap firstNonDefaultGpu;
+
+ for (const auto &gpu : std::as_const(gpus)) {
+ if (defaultGpu.isEmpty() && qvariant_cast<bool>(gpu[QStringLiteral("Default")])) {
+ defaultGpu = gpu;
+ } else if (firstNonDefaultGpu.isEmpty()) {
+ firstNonDefaultGpu = gpu;
+ }
+ if (firstDiscreteGpu.isEmpty() && qvariant_cast<bool>(gpu[QStringLiteral("Discrete")])) {
+ firstDiscreteGpu = gpu;
}
}
- // Find the first Discrete GPU
- for (const auto &gpu : gpus) {
- bool discreteGpu = qvariant_cast<bool>(gpu.value(QStringLiteral("Discrete"), false));
- if (!discreteGpu) {
- s_gpuCheck = GpuCheck::Present;
- QStringList envList = qvariant_cast<QStringList>(gpu[QStringLiteral("Environment")]);
- for (int i = 0; i + 1 < envList.size(); i += 2) {
- s_gpuEnv.insert(envList[i], envList[i + 1]);
- }
- return true;
- }
+ if (!defaultGpu.isEmpty() && defaultGpu[QStringLiteral("Discrete")].toBool()) {
+ // If the default GPU is discrete we don't need to check for another device or apply special env vars
+ s_gpuCheck = GpuCheck::Present;
+ return true;
}
- // fallback to old behavior
- // find the first non-Default GPU
- for (const auto &gpu : gpus) {
- bool defaultGpu = qvariant_cast<bool>(gpu[QStringLiteral("Default")]);
- if (!defaultGpu) {
- s_gpuCheck = GpuCheck::Present;
- QStringList envList = qvariant_cast<QStringList>(gpu[QStringLiteral("Environment")]);
- for (int i = 0; i + 1 < envList.size(); i += 2) {
- s_gpuEnv.insert(envList[i], envList[i + 1]);
- }
- return true;
+ // Otherwise prefer the discrete GPU over any other random non-default GPU (legacy behavior)
+ for (const auto &gpu : {firstDiscreteGpu, firstNonDefaultGpu}) {
+ s_gpuCheck = GpuCheck::Present;
+ auto envList = qvariant_cast<QStringList>(gpu[QStringLiteral("Environment")]);
+ for (int i = 0; i + 1 < envList.size(); i += 2) {
+ s_gpuEnv.insert(envList[i], envList[i + 1]);
}
+ return true;
}
#endif
--
GitLab
From d05cabb8e3e4aa60c8453edc0f6231d9bcb6d64e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Dr=C3=B6gehoff?= <sentrycraft123@gmail.com>
Date: Wed, 21 Feb 2024 16:27:25 +0100
Subject: [PATCH 4/7] correct absent gpu comment
---
src/gui/gpudetection.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/gui/gpudetection.cpp b/src/gui/gpudetection.cpp
index 57436e4789..bbef5ba8f2 100644
--- a/src/gui/gpudetection.cpp
+++ b/src/gui/gpudetection.cpp
@@ -99,7 +99,7 @@ static bool checkGpuWithSwitcheroo()
}
#endif
- // No non-default GPU found
+ // No discrete or non-default GPU found
s_gpuCheck = GpuCheck::Absent;
return true;
}
--
GitLab
From 7f9f76ce9bb472b54bf7297b8b5c078eb0c194c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Dr=C3=B6gehoff?= <sentrycraft123@gmail.com>
Date: Thu, 22 Feb 2024 08:33:19 +0100
Subject: [PATCH 5/7] check exact GPU count and fallback to solid when none are
found
---
src/gui/gpudetection.cpp | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/gui/gpudetection.cpp b/src/gui/gpudetection.cpp
index bbef5ba8f2..d3bf895ea5 100644
--- a/src/gui/gpudetection.cpp
+++ b/src/gui/gpudetection.cpp
@@ -62,9 +62,15 @@ static bool checkGpuWithSwitcheroo()
QList<QVariantMap> gpus;
arg >> gpus;
- if (gpus.length() <= 1) {
- // Skip checking for Default or Discrete GPUs when 1 or no GPU is available
+ auto gpu_count = gpus.length();
+
+ if (gpu_count == 0) {
+ // No GPUs? Something might have gone wrong on the other end
return false;
+ } else if (gpu_count == 1) {
+ // There is only one GPU, no need to check for others
+ s_gpuCheck = GpuCheck::Absent;
+ return true;
}
QVariantMap defaultGpu;
--
GitLab
From 87ca7b125be15963c45867705f4b75e40b379437 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Dr=C3=B6gehoff?= <sentrycraft123@gmail.com>
Date: Wed, 4 Sep 2024 23:58:18 +0000
Subject: [PATCH 6/7] Simplify GPU count check
---
src/gui/gpudetection.cpp | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/gui/gpudetection.cpp b/src/gui/gpudetection.cpp
index d3bf895ea5..5e8450f2f9 100644
--- a/src/gui/gpudetection.cpp
+++ b/src/gui/gpudetection.cpp
@@ -62,12 +62,10 @@ static bool checkGpuWithSwitcheroo()
QList<QVariantMap> gpus;
arg >> gpus;
- auto gpu_count = gpus.length();
-
- if (gpu_count == 0) {
+ if (gpus.isEmpty()) {
// No GPUs? Something might have gone wrong on the other end
return false;
- } else if (gpu_count == 1) {
+ } else if (gpus.size() == 1) {
// There is only one GPU, no need to check for others
s_gpuCheck = GpuCheck::Absent;
return true;
--
GitLab
From 1920a2ea3b67331b419fc19a377b57a36466fb9f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Dr=C3=B6gehoff?= <sentrycraft123@gmail.com>
Date: Thu, 5 Sep 2024 02:01:41 +0200
Subject: [PATCH 7/7] Fix non default GPU fallback
---
src/gui/gpudetection.cpp | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/gui/gpudetection.cpp b/src/gui/gpudetection.cpp
index 5e8450f2f9..2f5547ab8f 100644
--- a/src/gui/gpudetection.cpp
+++ b/src/gui/gpudetection.cpp
@@ -94,6 +94,9 @@ static bool checkGpuWithSwitcheroo()
// Otherwise prefer the discrete GPU over any other random non-default GPU (legacy behavior)
for (const auto &gpu : {firstDiscreteGpu, firstNonDefaultGpu}) {
+ if (gpu.isEmpty()) {
+ continue;
+ }
s_gpuCheck = GpuCheck::Present;
auto envList = qvariant_cast<QStringList>(gpu[QStringLiteral("Environment")]);
for (int i = 0; i + 1 < envList.size(); i += 2) {
--
GitLab
@@ -0,0 +1,34 @@
From 6e7775d315f389df0a440ed62b842ce83dc9a27e Mon Sep 17 00:00:00 2001
From: Nicolas Fella <nicolas.fella@gmx.de>
Date: Fri, 1 Mar 2024 22:16:07 +0100
Subject: [PATCH] [kterminallauncherjob] Inherit default process environment
from parent
Before Qt 6.3, an empty (default constructed) QProcessEnvironment caused
QProcess to incorrectly inherit the environment variables from the parent
process. This was fixed in qtbase 5fc9c02a695.
CommandLauncherJob was adjusted for this in 916984940f64e07db9b4d152be9f2a87dda0cfb4,
however here we are overriding its default env with our own default-constructed one
BUG: 482107
---
src/gui/kterminallauncherjob.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/gui/kterminallauncherjob.cpp b/src/gui/kterminallauncherjob.cpp
index c4e83fb11b..edd99327bd 100644
--- a/src/gui/kterminallauncherjob.cpp
+++ b/src/gui/kterminallauncherjob.cpp
@@ -22,7 +22,7 @@ public:
QString m_fullCommand; // "xterm -e ls"
QString m_desktopName;
QByteArray m_startupId;
- QProcessEnvironment m_environment;
+ QProcessEnvironment m_environment{QProcessEnvironment::InheritFromParent};
};
KTerminalLauncherJob::KTerminalLauncherJob(const QString &command, QObject *parent)
--
GitLab
+9
View File
@@ -0,0 +1,9 @@
project pkg {
rpm {
spec = "kf6-kio.spec"
}
labels {
subrepo = "extras"
updbranch = 1
}
}
+340
View File
@@ -0,0 +1,340 @@
%global framework kio
%global stable_kf6 stable
%global majmin_ver_kf6 6.11
Name: kf6-%{framework}
Version: %{majmin_ver_kf6}.0
Release: 1%{?dist}.switcheroo
Summary: KDE Frameworks 6 Tier 3 solution for filesystem abstraction
License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND MIT
URL: https://invent.kde.org/frameworks/%{framework}
Source0: https://download.kde.org/%{stable_kf6}/frameworks/%{majmin_ver_kf6}/%{framework}-%{version}.tar.xz
# https://invent.kde.org/frameworks/kio/-/issues/26
# I'm not sending this upstream because I'm not sure it's really
# exactly what upstream will want, but it solves the practical
# issue for us for now
Patch0: 0001-Give-the-kuriikwsfiltereng_private-a-VERSION-and-SOV.patch
%if 0%{?flatpak}
# Disable the help: and ghelp: protocol for Flatpak builds, to avoid depending
# on the docbook stack.
Patch101: kio-no-help-protocol.patch
%endif
# https://invent.kde.org/frameworks/kio/-/merge_requests/1556
Patch201: 1556.patch
BuildRequires: extra-cmake-modules
BuildRequires: gcc-c++
BuildRequires: kf6-rpm-macros
BuildRequires: cmake
BuildRequires: cmake(KF6Archive)
BuildRequires: cmake(KF6Crash)
BuildRequires: cmake(KF6Solid)
BuildRequires: switcheroo-control
BuildRequires: cmake(KF6ColorScheme)
BuildRequires: cmake(KF6Config)
BuildRequires: cmake(KF6CoreAddons)
BuildRequires: cmake(KF6DBusAddons)
BuildRequires: cmake(KF6DocTools)
BuildRequires: cmake(KF6GuiAddons)
BuildRequires: cmake(KF6I18n)
BuildRequires: cmake(KF6Service)
BuildRequires: qt6-qtbase-private-devel
BuildRequires: cmake(KF6Bookmarks)
BuildRequires: cmake(KF6Completion)
BuildRequires: cmake(KF6ConfigWidgets)
BuildRequires: cmake(KF6IconThemes)
BuildRequires: cmake(KF6ItemViews)
BuildRequires: cmake(KF6JobWidgets)
BuildRequires: cmake(KF6WindowSystem)
BuildRequires: cmake(KF6Notifications)
BuildRequires: cmake(KF6Wallet)
BuildRequires: cmake(KF6WidgetsAddons)
BuildRequires: cmake(KF6XmlGui)
BuildRequires: libacl-devel
%if !0%{?flatpak}
BuildRequires: libxml2-devel
BuildRequires: libxslt-devel
%endif
BuildRequires: pkgconfig(blkid)
BuildRequires: pkgconfig(mount)
BuildRequires: pkgconfig(xkbcommon)
BuildRequires: zlib-devel
BuildRequires: qt6-qtbase-devel
BuildRequires: cmake(Qt6UiPlugin)
BuildRequires: cmake(Qt6Qml)
BuildRequires: cmake(KF6KDED)
BuildRequires: cmake(Qt6Core5Compat)
Requires: %{name}-core%{?_isa} = %{version}-%{release}
Requires: %{name}-widgets%{?_isa} = %{version}-%{release}
Requires: %{name}-file-widgets%{?_isa} = %{version}-%{release}
Requires: %{name}-gui%{?_isa} = %{version}-%{release}
Requires: kf6-kded
%description
KDE Frameworks 6 Tier 3 solution for filesystem abstraction
%package devel
Summary: Development files for %{name}
Requires: %{name} = %{version}-%{release}
Requires: kf6-kbookmarks-devel
Requires: cmake(KF6Completion)
Requires: cmake(KF6Config)
Requires: cmake(KF6CoreAddons)
Requires: cmake(KF6ItemViews)
Requires: cmake(KF6JobWidgets)
Requires: cmake(KF6Service)
Requires: cmake(KF6Solid)
Requires: cmake(KF6XmlGui)
Requires: cmake(KF6WindowSystem)
Requires: qt6-qtbase-devel
%description devel
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.
%package doc
Summary: Documentation files for %{name}
Requires: %{name}-core = %{version}-%{release}
BuildArch: noarch
%description doc
Documentation for %{name}.
%package core
Summary: Core components of the KIO Framework
%{?kf6_kinit_requires}
Requires: %{name}-core-libs%{?_isa} = %{version}-%{release}
Requires: %{name}-doc = %{version}-%{release}
Requires: kf6-filesystem
Recommends: switcheroo-control
%description core
KIOCore library provides core non-GUI components for working with KIO.
%package core-libs
Summary: Runtime libraries for KIO Core
Requires: %{name}-core%{?_isa} = %{version}-%{release}
%description core-libs
%{summary}.
%package widgets
Summary: Widgets for KIO Framework
## org.kde.klauncher6 service referenced from : widgets/krun.cpp
## included here for completeness, even those -core already has a dependency.
%{?kf6_kinit_requires}
Requires: %{name}-core%{?_isa} = %{version}-%{release}
%description widgets
KIOWidgets contains classes that provide generic job control, progress
reporting, etc.
%package widgets-libs
Summary: Runtime libraries for KIO Widgets library
Requires: %{name}-widgets%{?_isa} = %{version}-%{release}
%description widgets-libs
%{summary}.
%package file-widgets
Summary: Widgets for file-handling for KIO Framework
Requires: %{name}-widgets%{?_isa} = %{version}-%{release}
%description file-widgets
The KIOFileWidgets library provides the file selection dialog and
its components.
%package gui
Summary: Gui components for the KIO Framework
Requires: %{name}-core%{?_isa} = %{version}-%{release}
%description gui
%{summary}.
%package qch-doc
Summary: Developer Documentation files for %{name}
BuildArch: noarch
%description qch-doc
Developer Documentation files for %{name} for use with KDevelop or QtCreator.
%prep
%autosetup -n %{framework}-%{version} -p1
%build
%cmake_kf6
%cmake_build
%install
%cmake_install
%find_lang %{name} --all-name --with-man --with-html
%files
%license LICENSES/*.txt
%doc README.md
%files core
%{_kf6_libexecdir}/kioexec
%{_kf6_libexecdir}/kiod6
%{_kf6_libexecdir}/kioworker
%{_kf6_bindir}/ktelnetservice6
%{_kf6_bindir}/ktrash6
%{_kf6_plugindir}/kio/
%{_kf6_plugindir}/kded/
%{_kf6_plugindir}/kiod/
%{_kf6_datadir}/kf6/searchproviders/*.desktop
%{_kf6_datadir}/applications/*.desktop
%{_datadir}/dbus-1/services/org.kde.*.service
%{_kf6_datadir}/qlogging-categories6/*categories
%files core-libs
%{_kf6_libdir}/libKF6KIOCore.so.*
%files doc -f %{name}.lang
%files gui
%{_kf6_libdir}/libKF6KIOGui.so.*
%files widgets
%dir %{_kf6_plugindir}/urifilters/
%{_kf6_plugindir}/urifilters/*.so
%{_kf6_libdir}/libkuriikwsfiltereng_private.so.*
%files widgets-libs
%{_kf6_libdir}/libKF6KIOWidgets.so.*
%files file-widgets
%{_kf6_libdir}/libKF6KIOFileWidgets.so.*
%files devel
%{_kf6_includedir}/*
%{_kf6_libdir}/*.so
%{_kf6_libdir}/cmake/KF6KIO/
%{_kf6_datadir}/kdevappwizard/templates/kioworker6.tar.bz2
%{_kf6_qtplugindir}/designer/kio6widgets.so
%{_qt6_docdir}/*.tags
%files qch-doc
%{_qt6_docdir}/*.qch
%changelog
* Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 6.10.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Tue Jan 07 2025 Steve Cossette <farchord@gmail.com> - 6.10.0-2
- File Picker: Fix 'All supported files' for more than 3
filters
* Fri Jan 03 2025 Steve Cossette <farchord@gmail.com> - 6.10.0-1
- 6.10.0
* Sat Dec 14 2024 Steve Cossette <farchord@gmail.com> - 6.9.0-1
- 6.9.0
* Sat Nov 02 2024 Marc Deop i Argemí <marcdeop@fedoraproject.org> - 6.8.0-1
- 6.8.0
* Mon Oct 14 2024 Jan Grulich <jgrulich@redhat.com> - 6.7.0-2
- Rebuild (qt6)
* Fri Oct 04 2024 Steve Cossette <farchord@gmail.com> - 6.7.0-1
- 6.7.0
* Mon Sep 16 2024 Steve Cossette <farchord@gmail.com> - 6.6.0-1
- 6.6.0
* Sat Aug 10 2024 Steve Cossette <farchord@gmail.com> - 6.5.0-1
- 6.5.0
* Fri Jul 19 2024 Steve Cossette <farchord@gmail.com> - 6.4.1-1
- 6.4.1
* Thu Jul 18 2024 Steve Cossette <farchord@gmail.com> - 6.4.0-3
- Fix for a regression in Frameworks 6.4.0
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 6.4.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Sat Jul 06 2024 Marc Deop i Argemí <marcdeop@fedoraproject.org> - 6.4.0-1
- 6.4.0
* Sat Jun 01 2024 Marc Deop i Argemí <marcdeop@fedoraproject.org> - 6.3.0-1
- 6.3.0
* Sat May 04 2024 Marc Deop i Argemí <marcdeop@fedoraproject.org> - 6.2.0-1
- 6.2.0
* Wed Apr 10 2024 Marc Deop i Argemí <marcdeop@fedoraproject.org> - 6.1.0-1
- 6.1.0
* Thu Apr 04 2024 Jan Grulich <jgrulich@redhat.com> - 6.0.0-7
- Re-enable docs
* Thu Apr 04 2024 Jan Grulich <jgrulich@redhat.com> - 6.0.0-6
- Rebuild (qt6)
* Fri Mar 15 2024 Marie Loise Nolden <loise@kde.org> - 6.0.0-5
- add 6e7775d315f389df0a440ed62b842ce83dc9a27e.patch
[kterminallauncherjob] Inherit default process environment from parent
* Mon Mar 11 2024 Yaakov Selkowitz <yselkowi@redhat.com> - 6.0.0-4
- Soften switcheroo-control dependency
* Sat Mar 09 2024 Marie Loise Nolden <loise@kde.org> - 6.0.0-3
- add missing BuildArch: noarch to -doc package
* Sat Mar 2 2024 Marie Loise Nolden <loise@kde.org> - 6.0.0-2
- move qt designer plugin to -devel
* Wed Feb 21 2024 Marc Deop i Argemí <marcdeop@fedoraproject.org> - 6.0.0-1
- 6.0.0
* Fri Feb 16 2024 Jan Grulich <jgrulich@redhat.com> - 5.249.0-2
- Rebuild (qt6)
* Wed Jan 31 2024 Marc Deop i Argemí <marcdeop@fedoraproject.org> - 5.249.0-1
- 5.249.0
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.248.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.248.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Jan 10 2024 Marc Deop i Argemí <marcdeop@fedoraproject.org> - 5.248.0-1
- 5.248.0
* Tue Jan 09 2024 Marie Loise Nolden <loise@kde.org> - 5.247.0-2
- add doc package for KF6 API
* Wed Dec 20 2023 Marc Deop i Argemí <marcdeop@fedoraproject.org> - 5.247.0-1
- 5.247.0
* Sat Dec 02 2023 Justin Zobel <justin.zobel@gmail.com> - 5.246.0-1
- Update to 5.246.0
* Wed Nov 29 2023 Jan Grulich <jgrulich@redhat.com> - 5.245.0-3
- Rebuild (qt6)
* Mon Nov 20 2023 Alessandro Astone <ales.astone@gmail.com> - 5.245.0-2
- Add back kuriikwsfiltereng SOVERSION patch
* Thu Nov 09 2023 Steve Cossette <farchord@gmail.com> - 5.245.0-1
- 5.245.0
* Tue Oct 17 2023 Jan Grulich <jgrulich@redhat.com> - 5.240.0^20231010.060359.1c34fd4-4
- Rebuild (qt6)
* Mon Oct 16 2023 Adam Williamson <awilliam@redhat.com> - 5.240.0^20231010.060359.1c34fd4-3
- Give kuriikwsfiltereng_private library a proper soname to fix deps
* Mon Oct 09 2023 Steve Cossette <farchord@gmail.com> - 5.240.0^20231010.060359.1c34fd4-2
- Fixed a problem with the -doc subpackage building differently on different arches.
* Mon Oct 09 2023 Steve Cossette <farchord@gmail.com> - 5.240.0^20231010.060359.1c34fd4-1
- Initial Release
+16
View File
@@ -0,0 +1,16 @@
import "andax/bump_extras.rhai" as bump;
let pkg = "kf6-kio";
let branch = bump::as_bodhi_ver(labels.branch);
let url = `https://bodhi.fedoraproject.org/updates/?search=${pkg}&status=stable&releases=${branch}&rows_per_page=1&page=1`;
for entry in get(url).json().updates[0].title.split(' ') {
let matches = find_all(`${pkg}-([\d.]+)-(\d+)\.[\w\d]+$`, entry);
if matches.len() == 0 { continue; }
if matches[0][1].ends_with(".0") {
rpm.global("majmin_ver_kf6", matches[0][1][0..matches[0][1].len()-2]);
rpm.f = sub(`Release: (.+?)\n`, "Release: " + matches[0][2] + "%{?dist}.switcheroo\n", rpm.f);
}
break;
}
@@ -1,6 +1,6 @@
%global forgeurl https://github.com/KDE/latte-dock/
%global commit 5c241eed78ddee8e7fe801984007554be4fb1981
%global commit 60bc8ee65b49e9c28973f89e3c299a95e0de5b96
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global commit_date %(date '+%Y%m%d')
%global snapshot_info %{commit_date}.%{shortcommit}
@@ -1,7 +1,7 @@
%global commit 631b6da2bf2482aa2dc7ceaddbfbb9c566bcf2b4
%global commit c3f01539e3b036ae940e678f5739b37ca0300ce2
Name: lightdm-kde-greeter
Version: 6.0.1
Version: 6.0.2
Release: 1%?dist
Summary: Login screen using the LightDM framework
License: GPL-3.0-or-later
@@ -1,9 +1,9 @@
%global forgeurl https://gitlab.com/ubports/development/core/lomiri-app-launch
%global commit 4768cd43b563bebb5c973b84a19d491044d3a188
%global commit 3a0dacbbf99b45b67c39bb92449235c576cbf05a
%forgemeta
Name: lomiri-app-launch
Version: 0.1.10
Version: 0.1.11
Release: 1%?dist
Summary: Provides the Lomiri App Launch user space daemon
License: GPL-3.0
@@ -1,9 +1,9 @@
%global forgeurl https://gitlab.com/ubports/development/core/lomiri-system-settings
%global commit 70dbdd0a34309b2dd389cd2c04767de011c9a341
%global commit dc2591518ee93516cf3ce24531fee4c111b144da
%forgemeta
Name: lomiri-system-settings
Version: 1.2.0
Version: 1.3.0
Release: 1%?dist
Summary: The system settings application for Lomiri
License: GPLv3
@@ -1,7 +1,7 @@
%global rn 1
Name: unity-greeter
Version: 24.10.1
Version: 25.04.1
Release: 1%?dist
Summary: Unity Greeter for Lightdm
@@ -1,8 +1,8 @@
%define _ubuntu_rel 7ubuntu1
%define _ubuntu_rel 1ubuntu1
Name: unity-session
Summary: Lightdm profile for Unity 7
Version: 46.0
Version: 47.0.1
Release: 1%?dist
License: GPL-2.0
+8
View File
@@ -0,0 +1,8 @@
project pkg {
rpm {
spec = "owl.spec"
}
labels {
nightly = 1
}
}
+63
View File
@@ -0,0 +1,63 @@
%global commit 2456a0ac3e4722eb1087727cc7f7ca8392d60a99
%global commit_date 20250124
%global shortcommit %{sub %{commit} 1 7 }
Name: owl
Version: 0^%{commit_date}.%{shortcommit}
Release: 1%{?dist}
Summary: Tiling Wayland compositor based on wlroots
License: MIT
URL: https://github.com/dqrk0jeste/owl
Source0: %{url}/archive/%{commit}.tar.gz
BuildRequires: make gcc
BuildRequires: pkgconfig(libinput)
BuildRequires: pkgconfig(wayland-protocols)
BuildRequires: pkgconfig(xkbcommon)
BuildRequires: wayland-devel
BuildRequires: wlroots-devel
Requires: libdrm
Requires: libinput
Requires: libxkbcommon
Requires: pixman
Requires: wayland-devel
Requires: wlroots
Requires: xdg-desktop-portal-wlr
Recommends: waybar kitty rofi-wayland
Packager: sadlerm <lerm@chromebooks.lol>
%description
%{summary}.
%prep
%autosetup -n %{name}-%{commit}
%build
%make_build all
%install
install -Dm755 build/%{name} %{buildroot}%{_bindir}/%{name}
install -Dm755 build/%{name}-ipc %{buildroot}%{_bindir}/%{name}-ipc
install -Dm644 default.conf %{buildroot}%{_datadir}/%{name}/default.conf
install -Dm644 examples/example.conf %{buildroot}%{_datadir}/%{name}/example.conf
install -Dm644 %{name}.desktop %{buildroot}%{_datadir}/wayland-sessions/%{name}.desktop
install -Dm644 %{name}-portals.conf %{buildroot}%{_datadir}/xdg-desktop-portal/%{name}-portals.conf
%files
%license LICENSE
%doc README.md
%{_bindir}/%{name}
%{_bindir}/%{name}-ipc
%{_datadir}/%{name}/default.conf
%{_datadir}/%{name}/example.conf
%{_datadir}/wayland-sessions/%{name}.desktop
%{_datadir}/xdg-desktop-portal/%{name}-portals.conf
%changelog
* Fri Jan 31 2025 sadlerm <lerm@chromebooks.lol>
- Initial package
+6
View File
@@ -0,0 +1,6 @@
if filters.contains("nightly") {
rpm.global("commit", gh_commit("dqrk0jeste/owl"));
if rpm.changed() {
rpm.global("commit_date", date());
}
}
+9
View File
@@ -0,0 +1,9 @@
[preferred]
# Use xdg-desktop-portal-gtk for every portal interface...
default=gtk
# ... except for the ScreenCast, Screenshot and Secret
org.freedesktop.impl.portal.ScreenCast=wlr
org.freedesktop.impl.portal.Screenshot=wlr
org.freedesktop.impl.portal.Secret=gnome-keyring
# https://github.com/flatpak/xdg-desktop-portal-gtk/issues/465
org.freedesktop.impl.portal.Inhibit=none
+2 -2
View File
@@ -2,14 +2,14 @@
Name: swayfx
Version: 0.4
Release: 1%{?dist}
Release: 2%{?dist}
Summary: SwayFX: Sway, but with eye candy!
URL: https://github.com/WillPower3309/swayfx
License: MIT
Source0: %{url}/archive/refs/tags/%{version}.tar.gz
Source101: https://github.com/wlrfx/packages/raw/fe1355c4844078f49761e9d73a376179d3007646/COPR/swayfx/sway-portals.conf
Source101: sway-portals.conf
BuildRequires: gcc-c++
+5
View File
@@ -0,0 +1,5 @@
project pkg {
rpm {
spec = "eww.spec"
}
}
+89
View File
@@ -0,0 +1,89 @@
# Generated by rust2rpm 27
%global commit 29fa1587c3a4704a2bee0778099aca945d486e77
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global commit_date 20250210
%global ver v0.6.0
%bcond check 0
Name: eww
Version: %ver^%commit_date.git~%shortcommit
Release: 1%?dist
Summary: Widgets for everyone!
SourceLicense: MIT
License: MIT
URL: https://elkowar.github.io/eww
Source0: https://github.com/elkowar/eww/archive/%commit.tar.gz
BuildRequires: cargo-rpm-macros >= 24
BuildRequires: anda-srpm-macros
BuildRequires: pkgconfig(dbusmenu-gtk3-0.4)
BuildRequires: pkgconfig(gtk-layer-shell-0)
Requires: (%name-x11 or %name-wayland)
%global _description %{expand:
Widgets for everyone!.}
%description %{_description}
%package x11
Summary: eww for x11
Conflicts: eww-wayland
SourceLicense: MIT
License: (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND BSD-3-Clause AND CC0-1.0 AND ISC AND LGPL-3.0-only AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Zlib OR Apache-2.0) AND (Unlicense OR MIT)
RemovePathPostFixes: .x11
%description x11 %{_description}
%package wayland
Summary: eww for wayland
Conflicts: eww-x11
SourceLicense: MIT
License: (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND BSD-3-Clause AND CC0-1.0 AND ISC AND LGPL-3.0-only AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Zlib OR Apache-2.0) AND (Unlicense OR MIT)
RemovePathPostFixes: .wayland
%description wayland %{_description}
%prep
%autosetup -n eww-%{commit} -p1
%cargo_prep_online
%build
%{cargo_license_summary_online -n -f x11}
%{cargo_license_online -n -f x11} > LICENSE.dependencies.x11
%{cargo_license_summary_online -n -f wayland}
%{cargo_license_online -n -f wayland} > LICENSE.dependencies.wayland
%cargo_build -n -f x11
mv target/rpm/eww target/rpm/eww.x11
mv target/rpm/eww.d target/rpm/eww.d.x11
%cargo_build -n -f wayland
mv target/rpm/eww target/rpm/eww.wayland
mv target/rpm/eww.d target/rpm/eww.d.wayland
%install
install -Dpm755 target/rpm/eww.* -t %buildroot%_bindir
%if %{with check}
%check
%cargo_test
%endif
%files
%license LICENSE
%doc CHANGELOG.md
%doc README.md
%doc YUCK_MIGRATION.md
%files x11
%license LICENSE.dependencies.x11
%{_bindir}/eww.x11
%{_bindir}/eww.d.x11
%files wayland
%license LICENSE.dependencies.wayland
%{_bindir}/eww.wayland
%{_bindir}/eww.d.wayland
%changelog
%autochangelog
+6
View File
@@ -0,0 +1,6 @@
rpm.global("commit", gh_commit("elkowar/eww"));
if rpm.changed() {
rpm.global("ver", gh("elkowar/eww"));
rpm.global("commit_date", date());
rpm.release();
}
@@ -0,0 +1,5 @@
project pkg {
rpm {
spec = "swaylock-effects.spec"
}
}
@@ -0,0 +1,94 @@
%global commit 496059a8565c2d5eed672c2e5bc5e1edd14b3de8
%global shortcommit %{sub %{commit} 1 7}
Name: swaylock-effects
Version: 1.7.0.0^1.%{shortcommit}
Release: 1%{?dist}
Summary: Swaylock, with fancy effects
License: MIT
URL: https://github.com/jirutka/swaylock-effects
Source0: %{url}/archive/%{commit}.tar.gz
Packager: sadlerm <lerm@chromebooks.lol>
BuildRequires: meson gcc
BuildRequires: pam-devel
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(gdk-pixbuf-2.0)
BuildRequires: pkgconfig(wayland-client)
BuildRequires: pkgconfig(wayland-protocols)
BuildRequires: pkgconfig(xkbcommon)
BuildRequires: scdoc
Recommends: %{name}-bash-completion
Conflicts: swaylock
%define binary_name swaylock
%description
swaylock-effects is a fork of swaylock which adds built-in screenshots and image manipulation effects like blurring.
%package bash-completion
Summary: Bash completion for %{name}
Requires: %{name} = %{version}-%{release}
Requires: bash-completion
Supplements: (%{name} and bash-completion)
%description bash-completion
Bash command-line completion support for %{name}.
%package zsh-completion
Summary: Zsh completion for %{name}
Requires: %{name} = %{version}-%{release}
Requires: zsh
Supplements: (%{name} and zsh)
%description zsh-completion
Zsh command-line completion support for %{name}.
%package fish-completion
Summary: Fish completion for %{name}
Requires: %{name} = %{version}-%{release}
Requires: fish
Supplements: (%{name} and fish)
%description fish-completion
Fish command-line completion support for %{name}.
%prep
%autosetup -n %{name}-%{commit}
%build
%meson
%meson_build
%install
%meson_install
%files
%license LICENSE
%doc README.md
%{_bindir}/%{binary_name}
%{_mandir}/man1/%{binary_name}.1.gz
%config(noreplace) %{_sysconfdir}/pam.d/%{binary_name}
%files bash-completion
%{bash_completions_dir}/%{binary_name}
%files zsh-completion
%{zsh_completions_dir}/_%{binary_name}
%files fish-completion
%{fish_completions_dir}/%{binary_name}.fish
%changelog
* Tue Feb 04 2025 sadlerm <lerm@chromebooks.lol>
- Initial package
@@ -2,8 +2,6 @@
%bcond check 0
%bcond bootstrap 0
%global debug_package %{nil}
%if %{with bootstrap}
%global __requires_exclude %{?__requires_exclude:%{__requires_exclude}|}^golang\\(.*\\)$
%endif
@@ -14,7 +12,7 @@
# https://github.com/abenz1267/walker
%global goipath github.com/abenz1267/walker
Version: 0.11.4
Version: 0.12.15
%gometa -f
@@ -25,7 +23,7 @@ Multi-Purpose Launcher with a lot of features. Highly Customizable and fast.}
%global godocs README.md cmd/version.txt
Name: walker
Release: 2%?dist
Release: 1%?dist
Summary: Multi-Purpose Launcher with a lot of features. Highly Customizable and fast
License: MIT
@@ -47,18 +45,19 @@ BuildRequires: pkgconfig(vips)
%prep
%goprep -A
%autopatch -p1
%go_prep_online
mv {LICENSE,README.md} cmd
%setup -T -D -n %{name}-%{version}/cmd
%build
%go_build_online cmd/walker.go
go build -x -o walker
%install
#gopkginstall
%if %{without bootstrap}
install -m 0755 -vd %{buildroot}%{_bindir}
install -m 0755 -vp build/bin/cmd/walker.go %{buildroot}%{_bindir}/walker
install -m 0755 -vd %{buildroot}%{_bindir}
install -m 0755 -vp walker %{buildroot}%{_bindir}/walker
%endif
%if %{without bootstrap}
+1 -1
View File
@@ -7,7 +7,7 @@
%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so
Name: asar
Version: 3.2.11
Version: 3.3.1
Release: 1%?dist
Summary: Simple extensive tar-like archive format with indexing
License: MIT
+6
View File
@@ -0,0 +1,6 @@
project pkg {
arches = ["x86_64"]
rpm {
spec = "bat-extras.spec"
}
}
+43
View File
@@ -0,0 +1,43 @@
%define debug_package %{nil}
Name: bat-extras
Version: 2024.08.24
Release: 1%?dist
Summary: Bash scripts that integrate bat with various command line tools
License: MIT
URL: https://github.com/eth-p/bat-extras
Source0: %{url}/archive/v%{version}.tar.gz
BuildRequires: bash
Requires: bash
BuildArch: noarch
%description
%{summary}.
%prep
%autosetup
%build
%install
./build.sh --install --prefix=%{buildroot}%{_prefix} --no-verify
mkdir -p %{buildroot}%{_mandir}/man1/
cp -v man/* %{buildroot}%{_mandir}/man1/
chmod -x %{buildroot}%{_mandir}/man1/*
%files
%license LICENSE.md
%{_bindir}/bat*
%{_bindir}/prettybat
%{_mandir}/man1/*
%changelog
* Mon Oct 03 2022 Cappy Ishihara <cappy@cappuchino.xyz> - 2022.07.27-1
- Initial release
+1
View File
@@ -0,0 +1 @@
rpm.version(gh("eth-p/bat-extras"));
+1 -1
View File
@@ -12,7 +12,7 @@
%endif
Name: codium
Version: 1.93.0.24253
Version: 1.97.1.25044
Release: 1%?dist
Summary: Code editing. Redefined.
License: MIT
+1 -4
View File
@@ -1,8 +1,5 @@
project pkg {
rpm {
spec = "flow-control-nightly.spec"
}
labels {
nightly = 1
spec = "flow-control.spec"
}
}

Some files were not shown because too many files have changed in this diff Show More