كيفية استخدام undistract-me في Linux: إشعارات عند انتهاء الأوامر

  • ينبهك تطبيق Undistract-me عند الانتهاء من الأوامر الطويلة من خلال الإشعارات والصوت الاختياري.
  • قابلة للتكوين بالكامل: مهلة زمنية، وقائمة الاستبعاد، والتحقق من النافذة النشطة.
  • متوفر في Debian/Ubuntu وArch (AUR)، مع التكامل في Bash وZsh.

إشعارات المحطة الطرفية في لينكس

إذا سبق لك تشغيل أمر في المحطة الطرفية استغرق بعض الوقت ثم بدأت في القيام بشيء آخر، فأنت تعلم مدى سهولة فقدان إحساسك بالوقت. لا يصرف انتباهي لا داعي للعودة إلى وحدة التحكم كل بضع دقائق للتحقق من انتهاء الأمر: تعرض الأداة إشعارًا على سطح المكتب عند اكتمال أمر طويل الأمد.

هذا البرنامج النصي الصغير يعمل على ديبيان وأوبونتو ومشتقاتها، بالإضافة إلى آرتش لينكسبشكل افتراضي، فإنه يعتبر أي أمر يستغرق أكثر من 10 ثوانٍ "طويل الأمد"، وما لم تغيره، فإنه يحذرك فقط إذا لم تكن النافذة النشطة هي المحطة الطرفية التي تعمل عليها العملية، وذلك على وجه التحديد لتجنب التشتيتات غير الضرورية عندما تنظر بالفعل إلى تلك النافذة.

ما هو Undistract-me وكيف يعمل؟

Undistract-me هي في الأساس مجموعة من وظائف shell التي تتصل بدورة تنفيذ Bash (ويمكنها أيضًا التكامل في Zshلتحديد وقت بدء وانتهاء أمر ما. عندما يتجاوز وقت التنفيذ حدًا قابلًا للتكوين، يُفعّل إشعارًا على سطح المكتب، وإذا رغبت، صوت تحذير.

من خلال التصميم، يحدد البرنامج النصي مهلة زمنية افتراضية تبلغ 10 ثوانٍ الذي يُعتبر فيه الأمر "طويلًا". يمكن تعديل هذه القيمة، كما يمكن إنشاء قائمة استثناءات بأسماء أوامر لا ينبغي أن تُصدر تحذيرات (على سبيل المثال، ls o cd إذا قمت بتخصيصها، فقد يستغرق الأمر بعض الوقت في بعض الأحيان.

هناك جانب مهم آخر من عمله وهو فحص النافذة النشطة: يظهر الإشعار فقط إذا لم يكن الجهاز الطرفي موجودًا في المقدمة.إذا كنت تفضل تلقي الإشعارات على أي حال، فهناك متغير بيئي لعكس هذا السلوك.

المشروع مفتوح المصدر ويتم إصدار الكود الخاص به بموجب ترخيص. المغتربينتاريخيًا، بدأ تطوير jml، وهو مُستضاف على منصات مثل Launchpad وGitHub. في جوهره، يستخدم "اختراقًا" معروفًا بريكسيك لـ Bash (مستوحى من عمل نقش ليفكوفيتزوتلقى مساهمات من أشخاص مثل كريس جونز (المدمر) مايكي نولينغ y ستيفن روثويل، مما أدى إلى تحسين أدائها وجودتها.

كيف يعمل undistract-me على Linux

التثبيت على Debian و Ubuntu والمشتقات

الطريقة الأكثر مباشرة في الأنظمة ديبيان / أوبونتو يتم ذلك من خلال المستودعات القياسية. ما عليك سوى تثبيت الحزمة وستكون جاهزًا لربطها بواجهة النظام لديك.

sudo apt update
sudo apt install undistract-me

في الإصدارات القديمة جدًا من Ubuntu كان هناك PPA محدد، في حالة عملك مع بيئات قديمة حيث عرضة هذه الحزمة المحدثة غير متوفرة:

sudo add-apt-repository ppa:undistract-me-packagers/daily
sudo apt update
sudo apt install undistract-me

بعد التثبيت، ستحتاج إلى ربط البرنامج النصي بواجهة النظام. في Bash، لديك عدة خيارات. أبسطها يضيف سطرًا من التحميل التلقائي إلى ملف بدء التشغيل:

echo 'source /etc/profile.d/undistract-me.sh' >> ~/.bashrc

إذا كنت تفضل التثبيت الصريح للمكون الرئيسي بالإضافة إلى مثبت الخطاف، فيمكنك أيضًا كتابة السطرين في ~ / .bashrc في هذا الطريق:

echo "source /usr/share/undistract-me/long-running.bash
notify_when_long_running_commands_finish_install" >> ~/.bashrc

وتذكر أن تقوم بتحديث جلسة shell لتطبيق التغييرات باستخدام مصدر بعد تعديل ملفات بدء التشغيل.

source ~/.bashrc

التثبيت على Arch Linux ومشتقاته (AUR)

في نظام Arch البيئي، يتوفر Undistract-me في AUR (عادة في المتغير غير تشتيت لي-جيتيمكنك تجميعها باستخدام مساعد AUR المفضل لديك أو يدويًا باستخدام makepkgللإرشاد، هذه هي الأوامر الشائعة لـ المساعدين والتي يعرفها العديد من المستخدمين:

pacaur -S undistract-me-git
packer -S undistract-me-git
yaourt -S undistract-me-git

تذكّر أن بعض هذه الأدوات المساعدة قديمة، لكنها توضح أن التثبيت يتم من مستودع المجتمع. على أي حال، بمجرد التثبيت، تفعيل بالنسبة لقوقعتك، يتم ذلك بنفس الطريقة الموجودة في Debian/Ubuntu: عن طريق إضافة الأسطر المقابلة إلى ملف بدء التشغيل الخاص بك.

التنشيط والاستخدام مع Bash وZsh

بالنسبة لـ Bash، بالإضافة إلى الاختلافات الموضحة أعلاه، هناك كتلة مضغوطة يمكنك تضمينها في نهاية ~ / .bashrc حتى يتم تحميل البرنامج النصي عند الحاجة:

if ! [ -z "$BASH_VERSION" -o -z "$PS1" -o -n "$last_command_started_cache" ]; then
  . /usr/share/undistract-me/long-running.bash
  notify_when_long_running_commands_finish_install
fi

في Zsh، يتم تحقيق التكامل بطريقة مماثلة، عن طريق توجيه نفس الأسطر إلى الملف ~ / .zshrcيمكنك تفريغها كلها مرة واحدة باستخدام هذا الأمر:

echo "source /usr/share/undistract-me/long-running.bash
notify_when_long_running_commands_finish_install" >> ~/.zshrc

بعد تحرير أي من هذه الملفات، إعادة التكوين من غلافك الحالي حتى تسري التغييرات دون تسجيل الخروج.

source ~/.bashrc
# o bien para Zsh
env zsh -l
# alternativamente
a source ~/.zshrc

هام: في العديد من محاكيات المحطة الطرفية، ستحتاج إلى تمكين الخيار "قم بتشغيل الأمر كغلاف تسجيل دخول". في محطة جنوم إنه موجود في تفضيلات الملف الشخصي > العنوان والأمر؛ في محطة XFCE ستجده في التفضيلات > عام؛ وفي Guake يوجد في التفضيلات > عام. بدونه، قد لا يتم تحميل الخطاف بشكل صحيح.

دمج undistract-me مع Bash وZsh

الإعدادات: الوقت، والاستثناءات، والنافذة النشطة، والصوت

يتم التحكم في Undistract-me بشكل أساسي من الملف /usr/share/undistract-me/long-running.bash ومن خلال متغيرات البيئة. يمكنك فتح هذا الملف باستخدام محرر النصوص المفضل لديك ومراجعة المعلمات المتاحة.

لتغيير الحد الأدنى للوقت الذي بعده يُعتبر الأمر "طويلًا"، حدد موقع المتغير مهلة الأوامر الطويلةالقيمة الافتراضية هي 10 (ثواني)، ولكن يمكنك تعيينها على أي قيمة تناسبك.

sudo nano /usr/share/undistract-me/long-running.bash
# Busca y ajusta:
# LONG_RUNNING_COMMAND_TIMEOUT=10

إذا كنت تريد أوامر معينة لا تقم بتشغيل الإشعارات أبدًا، يضيف أسماءهم المنفصلة بمسافة إلى المتغير قائمة التجاهل طويلة الأمدمن المفيد تصفية الأدوات المساعدة التي تستخدمها باستمرار والتي لا تريد أن تقاطعك.

من ناحية أخرى، إذا كنت تريد تلقي الإشعارات حتى عندما يكون الجهاز هو النافذة النشطة، فقم بتحديد تجاهل فحص النافذة=1يؤدي هذا إلى إلغاء تنشيط الفحص و دائما سوف ترى التحذير في نهاية الأمر الطويل.

لإضافة تنبيه صوتي، اضبط المتغير UDM_PLAY_SOUND إلى عدد صحيح غير صفري. على أنظمة Debian/Ubuntu، تتطلب هذه الوظيفة تثبيت نبضات صوتية y سطح المكتب - موضوع الصوت، لأنه يعتمد على موضوع أصوات سطح المكتب.

sudo apt install pulseaudio-utils sound-theme-freedesktop

بعد إجراء أي تغييرات على ملف التكوين أو متغيرات البيئة، لا تنسَ أعد شحن قوقعتك:

source ~/.bashrc
# o
source ~/.zshrc

اختبارات سريعة للتأكد من أنها تعمل

الطريقة الأبسط للتحقق من ذلك هي تشغيل أمر يستغرق وقتًا أطول من 10 ثانية (أو الحد الذي حددته). على سبيل المثال، يمكنك القيام بـ بينغ إلى مضيف على شبكتك أو إلى خارجها بعدد كافٍ من الحزم لتجاوز الحد الزمني.

ping -c 25 1.1.1.1

في بيئات Arch، من المفيد أيضًا استخدام أمر مثل سودو بكمن -Syوالتي عادة ما تستغرق بعض الوقت اعتمادًا على حالة المرايا:

sudo pacman -Sy

تذكر شيئين أساسيين: يظهر الإشعار عندما يستغرق الأمر وقتًا أطول من الحد الأقصى، وبشكل افتراضي، فقط إذا النافذة النشطة ليست هي المحطة الطرفية حيث يتم تشغيله. إذا انتهت العملية قبل انتهاء المهلة، فلن ترى رسالة؛ إذا كنت لا تزال ترغب في استلامها، فاضبط قيمة مهلة الأوامر الطويلة أو تعطيل فحص النافذة باستخدام IGNORE_WINDOW_CHECK.

بدائل سريعة دون تثبيت أي شيء إضافي

مع أن تطبيق Undistract-me مريح للغاية، إلا أن هناك حلولاً بسيطة يمكنك استخدامها فقط عند الحاجة. يخطر الإرسال (يتم تضمين هذا عادةً بشكل افتراضي في العديد من أجهزة سطح المكتب.) يمكنك إضافة تحذير في نهاية الأمر الخاص بك:

cat archivo && notify-send '¡Terminado!'

إذا كنت تفضل مربع حوار أكثر وضوحًا، زينتي هذا خيار شائع آخر في بيئات GTK. نمط الاستخدام بسيط بنفس القدر، ويعرض نافذة معلومات عند الانتهاء:

cat archivo && zenity --info --text='Proceso finalizado.'

خدعة سريعة: بدلا من && (الذي ينفذ الجزء الثاني فقط إذا نجح الجزء الأول)، يمكنك التسلسل مع ; لضمان وصول الإشعارات مهما كانت. استخدمها بحذر حسب الموقف.

هناك المزيد من البدائل والإضافات: من أدوات مثل نوتي فاير حتى المحطات التي تحتوي على إشعارات متكاملة (على سبيل المثال، Tilix (يمكنه تنبيهك عندما تكون اللوحة غير نشطة). إذا كنت ترغب في صوت إضافي وتلتزم بالأساسيات، فخيار "افعلها بنفسك" هو تشغيل موجه صوتي متسلسل:

foo; spd-say 'tarea completada'

وبالنسبة لأولئك الذين ما زالوا يستخدمون مكبر الصوت الخاص بالنظام، فهناك من يمكّنه pcspkr مع صوت تنبيه بعد المهام الطويلة. إنه غير عملي، ولكنه فعال في بيئات محدودة للغاية.

نصائح الاستخدام واستكشاف الأخطاء وإصلاحها

إذا لم تكن تتلقى إشعارات، فإن أول شيء يجب عليك التحقق منه هو ما إذا كنت قد قمت بتمكين الخيار "قذيفة تسجيل الدخول" في مُحاكي الطرفية. بدون هذا الإعداد، قد لا يتم تحميل Undistract-me وقد لا يتم تثبيت الخطاف.

تأكد أيضًا من أن غلافك يقرأ الملف الصحيح (~ / .bashrc o ~ / .zshrcوماذا فعلت مصدر بعد تحريره، أضف سطر تصحيح (على سبيل المثال، صدى) للتأكيد على تنفيذ الملف عند بدء جلسة المحطة الطرفية.

إذا قمت بتشغيل الصوت ولم تسمع شيئًا، فتأكد من وجود نبضات صوتية ومن الحزمة سطح المكتب - موضوع الصوتبالإضافة إلى خادم الصوت ومستوى الصوت في جلستك. على أجهزة سطح المكتب البسيطة جدًا، قد يلزم تشغيل PulseAudio يدويًا أو استخدام واجهة خلفية أخرى.

هل لديك الكثير من الإشعارات للأوامر البسيطة؟ اضبط مهلة الأوامر الطويلة إلى قيمة أعلى وملء قائمة التجاهل طويلة الأمد مع الأسماء المستعارة والأدوات المساعدة التي لا تريد مراقبتها (على سبيل المثال، حالة git o عامل الميناء إذا كررتها كثيرًا).

تفاصيل المشروع والمجتمع

يتم توزيع كود Undistract-me تحت رخصة الوافدين وقد نُشر على كلٍّ من Launchpad وGitHub. لا يحتوي على قناة IRC مخصصة، مع أنه كان من الممكن العثور عليه على GitHub عادةً. JML في النظام البيئي فرينيود (في الماضي، في #أوبونتو-تطوير). بالنسبة للأسئلة أو الأخطاء، القناة المناسبة هي مسائل من المستودع أو المشروع على Launchpad.

إشارة غريبة لأولئك الذين يستمتعون بالعمل الداخلي للتروس: دعم بريكسيك نوع Zsh في Bash ليس أصليًا، لذا يستخدم البرنامج النصي الاختراق نظام ذكي يُفعّل الوظائف قبل وبعد كل أمر. بفضل مساهمات مثل مساهمات كريس جونز (من المحطة) ترميناتور ) وتحسينات مايكي نولينغ y ستيفن روثويللقد تحسن الأداء بشكل كبير مقارنة بالإصدارات الأولى.

في الاستخدام اليومي، تتلاءم الأداة بشكل جيد بشكل خاص عند تجميع وتحويل الوسائط المتعددة، يمكنك مزامنة كميات كبيرة من البيانات أو تنفيذ عمليات لا يتجزأ يستغرق الأمر بعض الوقت. النمط هو نفسه دائمًا: شغّل الأمر، غيّر النوافذ، ودع سطح المكتب يُعلمك عند الانتهاء.

يقدم تطبيق Undistract-me بالضبط ما يعد به: قضاء وقت أقل في النظر إلى وحدة التحكم وتركيز أكبر على ما تفعله. سهل التثبيت، ويُضبط بدقة باستخدام بعض المتغيرات، ويتكامل بسلاسة مع Bash وZsh، مما يجعله ضروريًا لمن يقضون نصف حياتهم في الطرفية.