Unsplash Wallpaper: مدير خلفيات بـ GTK4
مدير خلفيات لنظام Linux مبني بـ GTK4 و Libadwaita، ينزّل خلفيات من Unsplash ويبدّلها تلقائياً، مع جدولة عبر مؤقتات systemd، وسجلّ للخلفيات، وأيقونة في شريط النظام، ودعم Sway/Wayland.
التقنيات المستخدمة
نظرة عامة
الدور: مشروع شخصي بمساعدة الذكاء الاصطناعي · الفترة: يونيو 2026
المستودع: GitHub - m-elhabib-dev/sway_unsplash_wallpaper
مدير خلفيات لنظام Linux مبني بـ GTK4 و Libadwaita، ينزّل خلفيات Unsplash ويبدّلها تلقائياً.
يجلب التطبيق صوراً عالية الدقة من Unsplash ويضبطها خلفيةً لسطح المكتب، مع تكامل كامل مع مؤقتات systemd للجدولة. ويدعم 10 فئات مختارة (الطبيعة، والتقنية، والفضاء، والسيارات، والعمارة، والتصميم البسيط، والجبال، والغابات، والمدينة، والألعاب) إضافة إلى البحث بكلمات مخصصة، ويحتفظ بسجل التنزيلات لتجنّب تكرار الخلفيات.
وتوفر واجهة GTK4 و Libadwaita تصميماً حديثاً متجاوباً بسمة داكنة وفاتحة وسمة النظام، وأيقونة في شريط النظام عبر AyatanaAppIndicator، وإشعارات سطح المكتب الأصلية، وخيارات دقة متعددة (HD و Full HD و2K و4K والأصلية)، والتشغيل التلقائي، ومعالج إعداد عند التشغيل الأول، وأدوات تشخيص مدمجة، ومعالجاً للأعطال، وإخفاء مفاتيح API في السجلات.
ويستخدم التكامل الأصلي مع Sway برنامج swaybg، مع دعم Hyprland و GNOME و KDE Plasma وبيئات X11 الأخرى، وتُكتشف البيئة تلقائياً أثناء التشغيل.
البنية المعمارية
فصل واضح بين الواجهة الرسومية والجدولة: تدير الواجهة الإعدادات ومفاتيح API والفئات والسجل والتغيير اليدوي، لكنها لا تجدول شيئاً؛ ويعمل مؤقت systemd للمستخدم في الفترة المضبوطة فيشغّل خدمة تنفّذ --run-job ثم تنتهي. لا مُجدوِل داخلي ولا عملية خلفية دائمة. وتُكتشف طريقة ضبط الخلفية تلقائياً أثناء التشغيل عبر WallpaperBackend.detect() (swaybg و hyprctl/hyprpaper و gsettings و qdbus و feh). وتُخزَّن الإعدادات في SQLite.
التحديات
تصميم بنية جدولة بلا مُجدوِلات مكررة، بتفويض التوقيت كله إلى systemd وإبقاء الواجهة للإعدادات فقط، ودعم بيئات سطح مكتب متعددة عبر طبقة واحدة تكتشفها تلقائياً، وإخفاء مفاتيح API في السجلات ومعالجة الأعطال بإشعارات سطح المكتب، وبناء معالج للتشغيل الأول يرشد المستخدم إلى إعداد مفتاح API.
النتائج
تطبيق سطح مكتب لـ Linux مع الجدولة والسجل ودعم بيئات سطح مكتب متعددة. وتبديل الخلفيات مؤتمت بالكامل عبر systemd، دون عملية خلفية ودون مُجدوِل داخلي. وصدر مع اختبارات وأدوات تشخيص وملاحظات إصدار ومسار للمساهمة.