العودة إلى التحديثات
New releaseAug 3, 2026

nmlinux v1.7.11

مجموعة أدوات شبكات موحدة لنظام لينكس — Python 3 + PySide6

مشاركة

NMLinux · v1.7.12

Version Python License: GPL-2.0 Platform Languages Donate Bitcoin

مجموعة أدوات شبكات موحّدة لنظامي Linux وmacOS — افحص، اتصل، شخّص.

NMLinux هو واجهة رسومية موحّدة تجمع 29 وحدة شبكات في نافذة واحدة: مراقبة الواجهات، Wi-Fi، DNS، محطة SSH، عارض جدار الحماية، خريطة الطوبولوجيا، traceroute، والمزيد. بُني من الصفر باستخدام Python وPySide6 (Qt 6)، مع 8 لغات للواجهة وبدون أي تبعيات خارجية تتجاوز أدوات النظام القياسية.

[!NOTE] لا علاقة لـ NMLinux بخدمة النظام الخفية /usr/bin/NetworkManager (NetworkManager من Red Hat/GNOME). NMLinux مشروع مستقل بُني من الصفر بلغة Python وPySide6.

بُني باستخدام Claude Code (Anthropic) وبمساهمة مؤلفه.


عملية التطوير

NMLinux مبني بمساعدة الذكاء الاصطناعي — وتحديدًا Claude Code — وهذا ليس مخفيًا في أي مكان في هذا المستودع. تقريبًا كل مشروع برمجي جاد اليوم يستخدم الذكاء الاصطناعي في مكان ما من مساره، سواء ذُكر ذلك أم لا. لذا فإن سؤال "هل كان الذكاء الاصطناعي مشاركًا؟" ليس هو السؤال المهم. السؤال المهم هو: هل يوجد ما يلتقط الأخطاء عندما يُخطئ الذكاء الاصطناعي؟

وإليك ما يلتقطها، إذا كنت تفضّل التحقق بدلًا من تصديقي:

  • 162 اختبارًا — pytest tests/ -v. منطق خالص إلى جانب حفنة من اختبارات أدوات Qt الحقيقية (القوائم، الجداول)، دون إخفاء الأجزاء المهمة خلف المحاكاة.
  • docs/Decisions-Techniques.md — كل قرار تقني غير بديهي، والبدائل التي رُفضت، والأخطاء (بما فيها تلك التي أدخلها الذكاء الاصطناعي) التي اكتُشفت وأُصلحت، مع توثيق الأسباب كتابيًا.
  • docs/Architecture.md و docs/Carte-des-Modules.md — الهيكل الفعلي للكود، مع إبقائه متزامنًا مع ما يُطرح فعليًا.
  • فحص اتساق i18n يُنفَّذ قبل كل إصدار لرصد مفاتيح الترجمة المفقودة عبر اللغات الثماني المدعومة.

لا يوجد أي من ذلك لأن الذكاء الاصطناعي لا يُوثق به؛ بل لأنه لا ينبغي أن يُطرح أي شيء دون عملية تحقق تفحصه — بما في ذلك الكود المكتوب يدويًا. احكم على المخرجات وكيفية التحقق منها، لا على الأداة التي ساعدت في كتابتها.

وجدت خطأً رغم ذلك؟ هذا مفيد وليس محرجًا — افتح issue.


المجتمع

مناقشات GitHub مفتوحة — شارك ملاحظاتك، وأبلغ عن أفكارك، واطرح أسئلتك، أو ببساطة قل مرحبًا. يملك المؤلف خبرة تفوق 30 عامًا في البنية التحتية والتشغيل، وبنى هذه الأداة لأنه يجب أن توجد برمجيات جيدة ومجانية وبسيطة لنظام Linux أيضًا.


لقطات الشاشة

لقطات Linux من الإصدار v1.2.7 — ولقطات macOS من الإصدار v1.3.5. يضم التطبيق الآن 29 وحدة و8 لغات للواجهة (FR/EN/ES/DE/IT/PT/JA/ZH).

Linux (KDE)

DashboardTopology
DashboardTopology
TracerouteWi-Fi
TracerouteWi-Fi

macOS

DashboardTraceroute
macOS DashboardmacOS Traceroute

سجل التغييرات

v1.7.12 — 2026-08-12

  • Traceroute — إصلاح: ضمن Flatpak (v1.7.11، انظر أدناه — أُزيل الآن)، كان traceroute يُحلّ دائمًا على PATH عبر غلاف المضيف (host shim) حتى عندما لا يحتوي المضيف على ثنائي traceroute حقيقي مثبّت، لذلك لم يكن العامل (worker) يتراجع أبدًا إلى tracepath وكان التتبع ينتهي فورًا دون أي قفزات ودون إظهار أي خطأ. الآن يتراجع إلى tracepath كلما لم يُنتج traceroute أي مخرجات قابلة للتحليل إطلاقًا، بغض النظر عن سبب الفشل.
  • محطة SSH — إصلاح askpass: عندما تكون DISPLAY/WAYLAND_DISPLAY مضبوطة (أي جلسة رسومية) ولا يمتلك ssh طرفية tty نظيفة، فقد يحاول استخدام $SSH_ASKPASS لطلب كلمة المرور بدلًا من المحطة المدمجة — مما يفشل المصادقة بصمت إذا لم يكن هناك مساعد askpass مثبّت. الآن يفرض SSH_ASKPASS_REQUIRE=never أن تمر طلبات كلمة المرور دائمًا عبر المحطة نفسها.
  • إزالة تغليف Flatpak: تم إيقاف بيان KDE Linux المحلي الذي صدر في v1.7.11. كشف التحقيق في خطأ طلب كلمة مرور SSH أعلاه عن قيد على مستوى النواة: لا يمكن لعملية تُمرَّر عبر flatpak-spawn --host أن تصبح أبدًا مالكة طرفية التحكم (controlling terminal) للـ pty المُمرَّرة (TIOCSCTTY مرفوض مع EPERM — جلسة أخرى مختلفة وغير ذات صلة تمتلكها بالفعل؛ هذا حد أمني مقصود من النواة، وليس خطأً). الحل الوحيد (script، عبر تخصيص pty جديدة) يصلح طلب كلمة المرور لكنه يكسر نقل تغيير حجم الطرفية المباشر (live resize) لتلك الجلسة — وهو مقايضة أسوأ من عدم توفير Flatpak إطلاقًا. AUR وAppImage هما مسارا التثبيت المدعومان على Linux مستقبلًا.

v1.7.11 — 2026-08-03

  • تغليف Flatpak (KDE Linux): بيان بناء محلي داخل packaging/flatpak/ يستهدف KDE Linux والتوزيعات الأخرى التي تعتمد Flatpak فقط. أدوات سطر الأوامر على المضيف التي يستدعيها nmlinux من الخارج (nmcli, pkexec, mount.cifs, ssh, nmap, …) تُربط عبر أغلفة flatpak-spawn --host على PATH بدلًا من عزل كل أداة على حدة؛ ويأتي PySide6 من io.qt.PySide.BaseApp على Flathub بدلًا من حزمة PyPI wheel. لم يُنشر على Flathub — بل تُبنى حزمة .flatpak واحدة باستخدام packaging/flatpak/build-bundle.sh وتُرفق بكل إصدار، تمامًا كما هو الحال مع AppImage. أُوقف في v1.7.12 — انظر أعلاه.

v1.7.10 — 2026-08-03

  • محطة SSH — إصلاح: أُصلح سباق (race condition) حيث يمكن أن تبدأ PTY بالحجم الخاطئ (الافتراضي 24×80) إذا لم يكن الحجم الفعلي لعنصر الطرفية معروفًا بعد عند إطلاق الجلسة، مع تجاهل طلب تغيير الحجم بصمت. أدى ذلك إلى عدم تزامن تطبيقات ملء الشاشة البعيدة (مثل Claude Code CLI وhtop وvim) مع حجم النافذة الحقيقي، ما تسبب في بقاء نص قديم/متبقٍ في أسفل الشاشة لا يختفي إلا عند مرور مخرجات جديدة فوقه. أبلغ عنه المستخدم؛ وأُعيد إنتاجه مع جلسة تفاعلية حقيقية

v1.7.9 — 2026-08-02

  • محطة SSH — نسخ/لصق: حدد النص بالماوس (سحب-نقر، مُظلَّل)، وانسخ باستخدام Ctrl+Shift+C أو قائمة النقر بزر الماوس الأيمن؛ والصق باستخدام Ctrl+Shift+V (موجود سابقًا). كان النسخ مستحيلًا سابقًا — إذ لم تكن هناك آلية تحديد نص إطلاقًا
  • محطة SSH — جلسات متزامنة متعددة: تفتح صفحة SSH الآن كل اتصال في تبويب مستقل بدلًا من جلسة مشتركة واحدة. إعادة الاتصال باتصال محفوظ — حتى نفس الاتصال مرتين — كانت تقتل الجلسة النشطة دون فتح بديل يعمل؛ أصبحت الآن كل عملية اتصال تفتح تبويبًا جديدًا ومستقلًا

v1.7.8 — 2026-07-14

الفئات