مقدمة
يلاحظ عندما تحاول استخدام بيئة KDE Plasma عى نظام Nixos أنها أبطأ بكثير من عملها في باقي التوزيعات وتواجه مشاكل آداء كبيرة قد تعيق عملك
مناقشات
تمت مناقشة هذه المشكلة عدة مرات في منتديات مختلفة لمستخدمي Nixos وهذه مجموعة من البروابط
-
Plasma slow opening KDE apps and tasks - Help - NixOS Discourse
-
https://discuss.kde.org/t/plasma-6-is-very-laggy-on-nixos-unstable/17925
-
Excessively long environment variables in kde plasma · Issue #126590 · NixOS/nixpkgs · GitHub
الحل
تشخيص المشكلة من طريقة Nixos في وضع الحزم تجعل الوصول إلى برامج KDE يتطلب وقتا طويلا من أجل حل ذلك قم بوضع هذا السكريبت ملف الكونفيغ الخاص بك قبل كل السكريبتات الأخرى وأسفل
{ config, pkgs, lib, ... }:
let
plasmashell-workaround = final: prev: {
kdePackages = prev.kdePackages // {
plasma-workspace = let
basePkg = prev.kdePackages.plasma-workspace;
in pkgs.stdenv.mkDerivation {
name = "plasma-workspace";
buildInputs = [ basePkg ];
dontUnpack = true;
dontWrapQtApps = true;
installPhase = ''
# remove duplicates in XDG_DATA_DIRS to speed up the copy process
export XDG_DATA_DIRS="$(awk -v RS=: '{ if (!arr[$0]++) { printf("%s%s", !ln++ ? "" : ":", $0) }}' <<< "$XDG_DATA_DIRS")"
# copy output from base package and make it writable
mkdir -p $out && cp -r ${basePkg}/. $out/
chmod u+w $out $out/bin $out/bin/plasmashell
# copy all XDG_DATA_DIRS into a single directory
( IFS=:
mkdir $out/xdgdata
for DIR in $XDG_DATA_DIRS; do
if [[ -d "$DIR" ]]; then
cp -r $DIR/. $out/xdgdata/
chmod -R u+w $out/xdgdata
fi
done
)
# create a wrapper script that replaces the original XDG_DATA_DIRS with the
# newly created directory and then calls the original plasmashell binary
cat << EOF > $out/bin/plasmashell
#!/bin/sh
export XDG_DATA_DIRS=$out/xdgdata:/run/current-system/sw/share
exec ${basePkg}/bin/.plasmashell-wrapped "\$@"
EOF
chmod a+x $out/bin/plasmashell
'';
passthru.providedSessions = basePkg.passthru.providedSessions;
};
};
};
in
{
nixpkgs.overlays = [ plasmashell-workaround ];
}
قم بإعادة بناء النظام (سيستغرق الكثير من الوقت والآداء لذا كن صبورا) ثم أعد التشغيل وستجد أن مشكلة الآداء في بللازما انتهت.
خاتمة
يبدو أن هذه المشكلة لن يتم حلها بشكل افتراضي في أي وقت قريب لذا وجب التنبيه عليها نتمنى من فريق تطوير NixOS أن يعيد النظر في حلها