Pop Shell عبارة عن طبقة تعتمد على لوحة المفاتيح لـ GNOME Shell والتي تتيح التنقل وإدارة النوافذ بشكل سريع ومعقول. الميزة الأساسية لـ Pop Shell هي إضافة إدارة نوافذ التبليط المتقدمة - وهي ميزة تم البحث عنها بشدة داخل مجتمعنا. بالنسبة للكثيرين - بما في ذلك نحن - أصبح i3wm المنافس الرئيسي لسطح مكتب جنوم.
إن إدارة النوافذ المتجانبة في جنوم غير موجودة فعليًا، مما يجعل سطح المكتب غير مناسب للتفاعل عندما تتجاوز احتياجاتك احتياجات نافذتين في وقت معين. لحسن الحظ، يعد GNOME Shell سطح مكتب قابل للتوسيع مع الأسس التي تجعل من الممكن تنفيذ مدير نوافذ مبلطة أعلى سطح المكتب.
ولذلك، فإننا نرى فرصة هنا لتعزيز إمكانية استخدام سطح مكتب جنوم لتلبية احتياجات مجتمعنا بشكل أفضل مع Pop Shell. تعد الإدارة المتقدمة لنوافذ التجانب أمرًا ضروريًا لسطح المكتب، لذلك قمنا بدمج إدارة نوافذ التجانب المشابهة لـ i3 مع سطح مكتب GNOME للحصول على أفضل ما في العالمين.
الاقتراح: إمكانية التنقيب في جنوم
المشكلة: لماذا نحتاج هذا في جنوم
التثبيت: لأولئك الذين يريدون تثبيت هذا على التوزيعة الخاصة بهم
الحل:
الميزات المشتركة: السلوكيات المشتركة بين أوضاع التراص والتبليط التلقائي
الوضع العائم: السلوكيات الخاصة بالوضع العائم
وضع التبليط: السلوكيات الخاصة بوضع التبليط التلقائي
المطورون: دليل للبدء في التطوير
هناك اقتراح لدمج ميزات إدارة النوافذ المتبلطة من Pop Shell في جنوم قيد التطوير حاليًا. سيتم إنشاؤه كإصدار GitLab على GNOME Shell للمناقشة المستقبلية، بمجرد أن نستثمر وقتنا في إنتاج نموذج أولي فعال، ونتعلم ما الذي يعمل وما لا يعمل في الممارسة العملية.
من الناحية المثالية، ستكون الميزات التي تم استكشافها في Pop Shell متاحة لأي بيئة تستخدم Mutter - مما يزيد من إمكانية تبليط نصف الشاشة الموجودة حاليًا. من خلال البدء كملحق Shell، يمكن لأي شخص يستخدم GNOME Shell تثبيت هذا على نظامه، دون الحاجة إلى تثبيت شوكة GNOME الخاصة بـ Pop على نظامه.
إذًا، لماذا تعتبر هذه مشكلة بالنسبة لنا، ولماذا يتحول الكثير من مستخدمينا إلى i3wm؟
يدعم جنوم حاليًا التبليط النصفي فقط، والذي يؤدي إلى وضع نافذة واحدة على جانب واحد من الشاشة، ونافذة أخرى على الجانب الآخر من الشاشة. إذا كان لديك أكثر من نافذتين، فمن المتوقع وضعهما على مساحات عمل أو شاشات منفصلة أو التبديل بين النوافذ باستخدام Alt
+ Tab
.
يميل هذا إلى العمل بشكل جيد إذا كان لديك عدد قليل فقط من التطبيقات. إذا كنت بحاجة إلى أكثر من نافذتين في نفس الوقت على شاشة العرض، فإن خيارك الوحيد هو سحب النوافذ يدويًا إلى موضعها، وتغيير حجمها لتتناسب مع بعضها البعض - وهي عملية تستغرق وقتًا طويلاً جدًا ويمكن تشغيلها آليًا وتبسيطها بسهولة.
لنفترض أنك محظوظ - أو ربما غير محظوظ - مالك شاشة واسعة للغاية. ستحتوي النافذة المكبرة على الكثير من التفضيلات وعناصر التحكم الخاصة بها المنتشرة في أقصى اليسار وأقصى اليمين. قد يضع التطبيق لوحة بها أزرار في أقصى اليسار، بينما يتم نقل الأزرار الأخرى إما إلى المركز البعيد أو أقصى اليمين.
يعني التبليط النصفي في هذا السيناريو أن كل نافذة ستكون بحجم شاشة كاملة بحجم 2560 × 1440 أو 4K. في أي من السيناريوهين، عند هذه الأحجام الكبيرة، يصبح الماوس عديم الفائدة تمامًا - ويصبح استخدام التطبيقات غير محتمل - في الممارسة العملية.
أثناء صراعك مع مدير النوافذ، سرعان ما يصبح من الواضح أن أي محاولة لإدارة النوافذ بطريقة التراص التقليدية - حيث تحتاج إلى نقل النوافذ يدويًا إلى مكانها، ثم تغيير حجمها يدويًا - ستكون عديمة الجدوى. لا يقترب البشر من دقة أو سرعة الخوارزميات في محاذاة النوافذ جنبًا إلى جنب على الشاشة.
يأتي سطح مكتب جنوم مزودًا بالعديد من ميزات تكامل سطح المكتب المفيدة، والتي يتم فقدها عند التبديل إلى جلسة i3wm. على الرغم من إمكانية توصيل خدمات جلسة جنوم المختلفة بجلسة i3wm، إلا أن الكثير من تجربة سطح مكتب جنوم لا تزال مفقودة في هذه العملية. نظرة عامة على التطبيق، ولوحة جنوم، وامتدادات جنوم.
والأسوأ من ذلك هو أن العديد من المستخدمين ليسوا على دراية تامة بمديري النوافذ المتبلطين، وقد لا يشعرون أبدًا بالراحة في تبديل "التركيا الباردة" إلى واحدة. من خلال تقديم إدارة النوافذ المتجانبة كميزة يمكن الاشتراك فيها، يمكننا تمكين المستخدم من الحصول بسهولة على تحكم أكبر في سطح المكتب الخاص به، بحيث تصبح فكرة إدارة النوافذ المتجانبة متاحة فجأة.
بالإضافة إلى ذلك، هناك من يريدون تجربة إدارة نوافذ التراص التقليدية، لكنهم يريدون أيضًا أن يكونوا قادرين على الاشتراك في إدارة نوافذ التبليط المتقدمة أيضًا. لذلك يجب أن يكون من الممكن الاشتراك في إدارة النوافذ التبليطية حسب الضرورة. نجحت أنظمة التشغيل الأخرى في دمج ميزات إدارة النوافذ المتبلطة مع تجربة إدارة النوافذ التقليدية، ونشعر أنه يمكننا القيام بذلك مع جنوم أيضًا.
استخدم الفرع المطابق لإصدار GNOME Shell الخاص بك ( git checkout branch_name
):
جنوم 3.36 إلى 41: استخدم الفرع master_focal
.
جنوم 42 إلى 44: استخدم فرع master_jammy
.
جنوم 45: استخدم الفرع master_mantic
.
جنوم 46+: استخدم الفرع master_noble
.
GNU Make وTypeScript مطلوبان أيضًا لبناء المشروع.
تتطلب الوظيفة المناسبة للصدفة تعديل اختصارات لوحة المفاتيح الافتراضية لـ GNOME. للتثبيت المحلي، قم بتشغيل make local-install
.
إذا كنت تريد إلغاء تثبيت الامتداد، فيمكنك استدعاء make uninstall
، ثم فتح لوحة "اختصارات لوحة المفاتيح" في إعدادات جنوم لتحديد الزر "إعادة تعيين الكل.." في شريط الرأس.
لاحظ أنه إذا كنت تقوم بالتعبئة لتوزيع Linux الخاص بك، فإن العديد من الميزات في Pop Shell لن تعمل خارج الصندوق لأنها تتطلب تغييرات في اختصارات لوحة المفاتيح الافتراضية لـ GNOME. يعد التثبيت المحلي ضروريًا إذا لم تقم بتجميع جلسة جنوم الخاصة بك مع إلغاء تعيين اختصارات لوحة المفاتيح الافتراضية أو تغييرها.
فيدورا: sudo dnf install gnome-shell-extension-pop-shell xprop
جنتو: emerge gnome-shell-extension-pop-shell
openSUSE Tumbleweed: sudo zypper install gnome-shell-extension-pop-shell
Arch Linux (باستخدام Yay كمساعد AUR):
yay -S gnome-shell-extension-pop-shell
للإصدار الثنائي المترجم مسبقًا: yay -S gnome-shell-extension-pop-shell-bin
بالنسبة لإصدار مستودع GitHub: yay -S gnome-shell-extension-pop-shell-git
الميزات المشتركة بين أوضاع التراص والتبليط التلقائي.
تعتبر هذه العناصر أساسية للعديد من الاختصارات التي يستخدمها مديرو النوافذ. ستشير هذه الوثيقة من الآن فصاعدًا إلى هذه المفاتيح باسم <Direction>
، والتي تكون المفاتيح الافتراضية هي المفاتيح التالية:
Left
أو h
Down
أو j
Up
أو k
Right
أو l
Super
+ q
: إغلاق النافذة
Super
+ m
: تكبير النافذة التي تم التركيز عليها
Super
+ ,
: تصغير النافذة التي تم التركيز عليها
Super
+ Esc
: قفل الشاشة
Super
+ f
: الملفات
Super
+ e
: البريد الإلكتروني
Super
+ b
: متصفح الويب
Super
+ t
: المحطة الطرفية
يتم تنشيط هذا الوضع باستخدام
Super
+Return
.
يقوم وضع إدارة النوافذ بتنشيط التحكم الإضافي بلوحة المفاتيح في حجم وموقع النافذة التي يتم التركيز عليها حاليًا. يتغير سلوك هذا الوضع قليلاً بناءً على ما إذا كنت في وضع التجانب التلقائي، أو في وضع التراص الافتراضي. في الوضع الافتراضي، يتم عرض تراكب ملتصق بشبكة، وهو ما يمثل الموقع المستقبلي المحتمل وحجم النافذة التي تم التركيز عليها. يتغير هذا السلوك قليلاً في وضع التبليط التلقائي، حيث يتم إجراء تغيير الحجم فورًا ولا تظهر التراكبات إلا عند تبديل النوافذ.
يؤدي تنشيط هذا إلى تمكين السلوكيات التالية:
<Direction>
في الوضع الافتراضي، سيؤدي هذا إلى تحريك التراكب المعروض بناءً على الشبكة
في وضع التجانب التلقائي، سيؤدي هذا إلى تغيير حجم النافذة
Shift
+ <Direction>
في الوضع الافتراضي، سيؤدي هذا إلى تغيير حجم التراكب
في وضع التجانب التلقائي، لن يؤدي هذا إلى أي شيء
Ctrl
+ <Direction>
تحديد نافذة في الاتجاه المحدد للتراكب
عند الضغط على Return
، سيتم تبديل مواضع النافذة
Shift
+ Ctrl
+ <Direction>
في وضع التجانب التلقائي، يتم تغيير الحجم في الاتجاه المعاكس
O
: للتبديل بين التجانب الأفقي والرأسي في وضع التجانب التلقائي
~
: للتبديل بين العائمة والتبليط في وضع التجانب التلقائي
Return
: تطبيق التغييرات التي تم طلبها
Esc
: يلغي أي تغييرات تم طلبها
عندما لا تكون في وضع إدارة النوافذ، يؤدي الضغط على Super
+ <Direction>
إلى تحويل تركيز النافذة إلى نافذة في الاتجاه المحدد. يتم حساب ذلك بناءً على المسافة بين مركز جانب النافذة التي تم التركيز عليها والتي يتم إزاحة النافذة منها، والجانب المقابل من النوافذ المحيطة بها.
سيؤدي تبديل التركيز إلى اليسار إلى الحساب من منتصف الجانب الشرقي للنافذة التي تم التركيز عليها إلى منتصف الجانب الغربي لجميع النوافذ الأخرى. النافذة ذات المسافة الأقل هي النافذة التي نختارها.
يوفر Pop Shell مشغلًا متكاملاً يتفاعل مباشرة مع خدمة المشغل المنبثق لدينا. يتم استخدام JSON IPC للتواصل بين الصدفة والمشغل بطريقة غير متزامنة. تم فصل هذه الوظيفة عن الغلاف بسبب مشكلات الأداء وقابلية الصيانة. المشغل الجديد مكتوب بلغة Rust وهو غير متزامن تمامًا. يحتوي المشغل على ميزات واسعة النطاق قد تكون مفيدة في تنفيذ مشغلات سطح المكتب بما يتجاوز امتداد الصدفة.
تعمل الفجوات على تحسين جماليات النوافذ المبلطة وتسهل الإمساك بحافة نافذة معينة. لقد قررنا إضافة دعم للفجوات الداخلية والخارجية، وجعلنا هذه الإعدادات قابلة للتكوين في القائمة المنبثقة للملحق.
قد تكون أشرطة العناوين الخاصة بالنوافذ التي تحتوي على زخارف من جانب الخادم مخفية تمامًا، مما يؤدي إلى مساحة شاشة إضافية لتطبيقاتك وبيئة أكثر وضوحًا من الناحية المرئية. يمكن تبديل هذه الميزة في القائمة المنبثقة للملحق. يمكن نقل Windows باستخدام الماوس بالضغط على Super
عند النقر على نافذة وسحبها إلى موقع آخر، أو باستخدام اختصارات لوحة المفاتيح الأصلية في pop-shell. قد يتم إغلاق النوافذ بالضغط على Super
+ Q
، وتكبيرها باستخدام Super
+ M
هذا هو الوضع الافتراضي لـ Pop Shell، الذي يجمع بين إدارة نوافذ التراص التقليدية وميزات إدارة نوافذ التبليط الاختيارية.
في هذا الوضع، يتم تقسيم شاشات العرض إلى شبكة من الأعمدة والصفوف. عند الدخول في وضع التجانب، يتم محاذاة النوافذ لهذه الشبكة عند وضعها. يمكن تكوين عدد الصفوف والأعمدة في القائمة المنبثقة للملحق في اللوحة.
إحدى الميزات الاختيارية لتحسين تجربة التبليط هي القدرة على محاذاة النوافذ إلى الشبكة عند استخدام الماوس لتحريكها وتغيير حجمها. يوفر هذا نفس الدقة التي يوفرها الدخول إلى وضع إدارة النوافذ لتحديد موضع النافذة باستخدام لوحة المفاتيح، ولكن مع الراحة والألفة التي يوفرها الماوس. يمكن تمكين هذه الميزة من خلال القائمة المنبثقة للملحق.
يتم تعطيل هذا الوضع افتراضيًا، ويقوم بإدارة النوافذ باستخدام مدير نوافذ التبليط القائم على الشجرة. على غرار i3، تمثل كل عقدة من الشجرة فرعين. قد يكون الفرع نافذة، أو شوكة تحتوي على المزيد من الفروع، أو كومة تحتوي على العديد من النوافذ. يمثل كل فرع مساحة مستطيلة من المساحة على الشاشة، ويمكن تقسيمها عن طريق إنشاء المزيد من الفروع داخل الفرع. عند إنشاء النوافذ، يتم تعيينها للنافذة أو المجموعة التي يتم التركيز عليها بشكل نشط، مما يؤدي إلى إنشاء شوكة جديدة على النافذة، أو ربط النافذة بالمكدس الذي تم التركيز عليه. عندما يتم تدمير النوافذ، يتم إجراء العكس لضغط الشجرة وإعادة ترتيب النوافذ إلى أبعادها الجديدة.
Super
+ O
تبديل اتجاه اتجاه تبليط الشوكة
Super
+ G
تبديل نافذة بين العائمة والتبليط.
راجع #تخصيص القائمة العائمة للنافذة
يوجد ملف $XDG_CONFIG_HOME/pop-shell/config.json
حيث يمكنك إضافة البنية التالية:
{ class: "<WM_CLASS String from xprop>", title: "<Optional Window Title>" }
على سبيل المثال، عند إجراء xprop
على إعدادات GNOME (أو مركز التحكم GNOME)، تكون قيم WM_CLASS هي gnome-control-center
و Gnome-control-center
. استخدم القيمة الثانية (Gnome-control-center) التي سيقرأها pop-shell. حقل title
اختياري.
بعد تطبيق التغييرات في config.json
، يمكنك إعادة تحميل التجانب إذا لم يعمل في المرة الأولى.
نظرًا للطبيعة المحفوفة بالمخاطر لجافا سكريبت العادي، فإن امتداد GNOME Shell هذا مكتوب بلغة TypeScript. بالإضافة إلى توفير فئات وواجهات للتحقق من النوع الثابت والتوثيق الذاتي، فإنه يسمح لنا بكتابة بناء جملة JavaScript حديث مع دعم إنشاء التعليمات البرمجية للأهداف الأقدم.
يرجى تثبيت ما يلي كتبعيات عند التطوير:
Node.js
LTS+ (الإصدار 12+)
أحدث npm
(يأتي مع NodeJS)
npm install typescript@latest
أثناء العمل على الصدفة، يمكنك إعادة الترجمة وإعادة التكوين وإعادة التثبيت وإعادة تشغيل GNOME Shell من خلال التسجيل باستخدام make debug
. لاحظ أن هذا يعمل بشكل موثوق فقط في جلسات X11، حيث سيخرج Wayland إلى شاشة تسجيل الدخول عند إعادة تشغيل الصدفة.
نرحب بالمناقشات على Pop Chat
مرخص بموجب رخصة جنو العامة، الإصدار 3.0، (الترخيص أو https://www.gnu.org/licenses/gpl-3.0.en.html)
أي مساهمة يتم تقديمها عمدًا لتضمينها في العمل بواسطتك يجب أن تكون مرخصة بموجب GNU GPLv3.