
nmlinux v1.7.9
مجموعة أدوات شبكات موحدة لنظام لينكس — Python 3 + PySide6
NMLinux · v1.7.12
مجموعة أدوات شبكات موحّدة لنظامي 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)
| Dashboard | Topology |
|---|---|
![]() | ![]() |
| Traceroute | Wi-Fi |
|---|---|
![]() | ![]() |
macOS
| Dashboard | 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 الآن كل اتصال في تبويب مستقل بدلًا من جلسة مشتركة واحدة. إعادة الاتصال باتصال محفوظ — حتى نفس الاتصال مرتين — كانت تقتل الجلسة النشطة دون فتح بديل يعمل؛ أصبحت الآن كل عملية اتصال تفتح تبويبًا جديدًا ومستقلًا





