تيرا Tera مشغل راديو من سطر الأوامر على لينكس
تيرا (Terminal Radio) هو مشغّل راديو مفتوح المصدر يعمل داخل الطرفية فقط. بدلاً من فتح تطبيق وانتظار تحميل النوافذ، تكتب tera، تختار محطة من عبر المفاتيح، فيبدأ استقبال البث، وكل ذلك دون أن تغادر سطر الأوامر.
البرنامج مكتوب بلغة Go، مما يعني أنه يأتي كملف تنفيذي واحد مستقل (Binary) مكتفٍ ذاتيًا، لا يحتاج إلى بيئة Python أو Node.js. يعتمد على برنامج mpv في تشغيل الصوت، ويستمد قائمة المحطات من قاعدة بيانات مجتمعية من موقع https://www.radio-browser.info مما يتيح الوصول إلى عشرات الآلاف من المحطات حول العالم.
لماذا تستخدم مشغّل راديو يعمل بالطرفية؟
- لا يشغلك أبدًا. يمكنك تركه يعمل في جزء tmux جانبي أو طرفية خلفية أثناء عملك. لا أيقونة في شريط المهام، ولا نافذة قد تُغلق بالخطأ.
- لا يستهلك موارد تقريبًا. سطح مكتب مثل GNOME أو KDE يستهلك ذاكرة كبيرة أصلًا، وأي تطبيق راديو رسومي يضيف 100 إلى 200 ميغابايت إضافية. تيرا لا يضيف شيئًا يُذكر.
- قابل للأتمتة. يمكنك إضافة سطر مثل
tera play favإلى ملف~/.bashrcأو خدمة systemd للمستخدم، فتنطلق محطتك المفضلة تلقائيًا. - يعمل عبر SSH. إذا كنت تدير جهاز لينكس عن بُعد، مثل خادم منزلي أو Raspberry Pi أو VPS، يمكنك تشغيل تيرا عليه وتوجيه الصوت إليك، أو تركه يعمل محليًا.
- لا جمع للبيانات، لا حسابات، لا متصفح. كل شيء عبارة عن ملفات إعدادات محلية في المجلد
~/.config/tera/.
تيرا مقارنة بتطبيقات الراديو الرسومية
| الخاصية | Tera (سطر أوامر) | GNOME Shortwave (واجهة رسومية) | البث عبر المتصفح |
|---|---|---|---|
| استهلاك الذاكرة | 15 إلى 30 ميغابايت | 130 إلى 200 ميغابايت | أكثر من 300 ميغابايت |
| استهلاك بيانات الإنترنت | معدل البث فقط | البث + تحديثات وصفية | البث + إعلانات وتتبع |
| قاعدة بيانات المحطات | radio-browser.info | radio-browser.info | حسب الموقع |
| التحكم بلوحة المفاتيح | كامل | جزئي | لا |
| قابلية الأتمتة | نعم | لا | لا |
| يعمل عبر SSH | نعم | لا | لا |
| المفضلة / قوائم التشغيل | نعم | نعم | عادةً لا |
| عرض بيانات الأغنية | نعم | نعم | نعم |
| البث إلى أجهزة الشبكة | لا | نعم | أحيانًا |
| تسجيل الأغاني | لا | نعم | لا |
| زمن بدء التشغيل | أقل من ثانية | 3 إلى 5 ثوانٍ | 10 ثوانٍ أو أكثر |
| يحتاج جلسة سطح مكتب | لا | نعم | نعم |
إذا كنت تقضي يومك على GNOME وتريد فقط اختيار محطة ثم نسيان الأمر، فـ Shortwave مناسب. أما إذا كنت تهتم بخفة الاستهلاك، أو تعمل غالبًا داخل الطرفية، أو تستخدم مدير نوافذ ، أو تدير خادمًا، فـ Tera هو الاختيار الأنسب.
تيرا مقارنة بمشغلات الراديو الأخرى من سطر الأوامر
PyRadio
PyRadio مشغل ناضج مبني على curses ومكتوب بلغة Python. له سنوات عديدة في الساحة.
- نقاط قوته: متوفر في مستودعات العديد من التوزيعات، توثيقه شامل، ويدعم mplayer وVLC وmpv كخلفيات تشغيل.
- نقاط ضعفه: يحتاج Python وتبعيات عديدة، وواجهته أكثر تعقيدًا للمبتدئين.
- نقاط قوة تيرا عليه: ملف ثنائي واحد، واجهة نصية ابسط، والبحث في Radio Browser مدمج من البداية.
Radioactive
Radioactive أداة بسيطة مكتوبة بلغة Python، تركّز على السهولة.
- نقاط قوته: سهل البدء، ومناسب لمن يريد أمرًا سريعًا للتشغيل.
- نقاط ضعفه: إدارة أقل، وخيارات مفضلة وتقييمات ونسخ احتياطي محدودة.
- متى تختار تيرا: عندما تريد تنظيم محطاتك وإدارتها على المدى الطويل.
radio-cli
radio-cli أداة خفيفة جدًا مكتوبة بلغة Rust.
- نقاط قوته: خفيف وسريع جدًا.
- نقاط ضعفه: يركّز على تشغيل محطة واحدة، ولا يقدّم ميزات اكتشاف وإدارة مثل تيرا.
- متى تختار تيرا: عندما تريد التوازن بين الخفة والميزات.
كيف يعمل radio-browser.info
عندما تبحث عن محطات داخل تيرا، فهو لا يستخدم قاعدة بيانات خاصة به، بل يستعلم radio-browser.info، وهو دليل مجتمعي مجاني ومفتوح المصدر لمحطات الراديو عبر الإنترنت.
تخيلها مثل ويكيبيديا، لكن لإذاعات الراديو. أي شخص يمكنه إرسال محطة، التصويت على المحطات، الإبلاغ عن البثوث المعطلة، وإضافة وسوم. البيانات متاحة للجميع، وواجهة البرمجة لا تحتاج حسابًا أو مفتاحًا.
- تحتوي أكثر من 45,000 محطة من بلدان مختلفة.
- كل محطة تتضمن رابط البث، الكوديك، معدل البت، اللغة، الدولة، الوسوم، وعدد التصويتات.
- الخوادم تتحقق دوريًا من حيوية كل بث، لذا تُصفى الروابط الميتة بمرور الوقت.
- الواجهة موزعة عبر عدة خوادم، فلا توجد نقطة فشل واحدة.
- الواجهة تدعم فقط التصويت الموجب. عندما تضغط
vداخل تيرا، يرسل البرنامج تصويتًا موجبًا للمحطة.
ماذا يعني هذا لك: أنت لا تعتمد على مطور تيرا ليحافظ على قائمة المحطات. القاعدة مستقلة، مدفوعة بالمجتمع، وتستخدمها تطبيقات عديدة. وإذا اختفت محطة من radio-browser.info، تختفي من البحث داخل تيرا أيضًا، لكنك تستطيع إضافتها إلى مفضلاتك المحلية عبر رابط البث.
التثبيت
تيرا غير موجود بعد في مستودعات معظم توزيعات لينكس. لديك عدة خيارات يمكن معرفتها من موقعهم https://github.com/shinokada/tera منها:
الخيار 1: تحميل الملف الثنائي
اذهب إلى صفحة الإصدارات وابحث عن أحدث إصدار، ثم اتبع الخطوات التالية مع تغيير رقم الاصدار للأحدث:
1- curl -LO https://github.com/shinokada/tera/releases/download/v3.11.0/tera_3.11.0_linux_amd64.tar.gz
2- tar -xzf tera_3.11.0_linux_amd64.tar.gz
3- sudo mv tera /usr/local/bin/
الخيار 2: التثبيت عبر Go
إذا كانت لغة Go مثبتة لديك، أو كنت ترغب في تثبيتها:
1- sudo zypper install go
2- go install github.com/shinokada/tera/v3/cmd/tera@latest
سيصبح الملف الثنائي في ~/go/bin/tera. تأكد أن هذا المجلد ضمن PATH ثم أمر التنفيذ:
1- echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.bashrc
2- source ~/.bashrc
تثبيت mpv
تيرا يستخدم mpv كخلفية للصوت. ثبته قبل تشغيل تيرا، وإلا ستظهر رسالة خطأ عند محاولة تشغيل أي شيء:
الاستخدام الأساسي
mpvيجب أن يكون مثبتًا.- اتصال إنترنت نشط.
- طرفية تدعم يونيكود.
تشغيل تيرا
tera
يفتح هذا الأمر القائمة الرئيسية. تنقل بمفاتيح الأسهم أو j وk بأسلوب Vim. اضغط ? في أي شاشة لرؤية الاختصارات المتاحة.
في أول مرة تجري بحثًا، يستعلم تيرا واجهة radio-browser.info لجلب المحطات المطابقة. إذا كانت الواجهة بطيئة قليلًا، قد تبقى الشاشة فارغة لبضع ثوانٍ، وهذا طبيعي.
خيارات القائمة الرئيسية
| الخيار | الوصف |
|---|---|
| 1. تشغيل من المفضلة | قوائم محطاتك المحفوظة |
| 2. البحث عن المحطات | استعلام radio-browser.info |
| 3. الأكثر تشغيلًا | سجل استماعك |
| 4. الأعلى تقييمًا | المحطات التي منحتها نجومًا |
| 5. التصفح حسب الوسم | وسومك المخصصة |
| 6. قوائم تشغيل الوسوم | قوائم ديناميكية حسب الوسم |
| 7. إدارة القوائم | إنشاء، إعادة تسمية، حذف قوائم |
| 8. قائمة الحظر | إخفاء المحطات التي لا ترغب بها |
| 9. أنا محظوظ | محطة عشوائية حسب كلمة مفتاحية |
| 0. المزامنة والنسخ الاحتياطي | أدوات النسخ والاستعادة |
| -. الإعدادات | إعدادات البرنامج |
التشغيل السريع: اكتب رقمًا من 10 إلى 99 ثم اضغط Enter في القائمة الرئيسية لتشغيل فوري لمحطة من قائمة My-favorites. تظهر هذه الاختصارات فقط بعد إضافة محطات إلى المفضلة.
البحث عن محطة
- اضغط 2 من القائمة الرئيسية.
- اختر نوع البحث.
- اكتب استعلامك، مثل اللغة
arabic. - تصفح النتائج بمفاتيح الأسهم، ثم اضغط Enter للتشغيل.
- اضغط
fلحفظ المحطة في قائمة My-favorites.
مفاتيح التحكم بالتشغيل
| المفتاح | الوظيفة |
|---|---|
Space | إيقاف / استئناف |
* | رفع الصوت (+5%) |
/ | خفض الصوت (-5%) |
m | كتم / إلغاء الكتم |
f | حفظ في المفضلة |
s | حفظ في قائمة أخرى |
r ثم 1 إلى 5 | تقييم المحطة |
b | حظر المحطة |
v | التصويت للمحطة على radio-browser.info |
Z | ضبط مؤقت النوم |
Esc | العودة للقائمة السابقة |
x | إيقاف الصوت من أي شاشة |
0 | القفز للقائمة الرئيسية |
Ctrl+C | الخروج من تيرا بالكامل |
Esc يعيدك في تسلسل القوائم، لكنه لا يوقف الصوت إذا كان خيار متابعة التشغيل عند التنقل مفعّلًا. أما x فهو مفتاح إيقاف التشغيل الفعلي من أي شاشة.
التشغيل المباشر من سطر الأوامر
لست مضطرًا لفتح الواجهة النصية كل مرة. تيرا يدعم أوامر التشغيل المباشر:
لتشغيل أول محطة في المفضلة
tera play fav
لإعادة تشغيل آخر محطة استمعت إليها
tera play rec
إختيار عشوائي حسب الوسم، مثل شغل لي محطة عربية
tera play lucky arabic
لتشغيل أول محطة في المفضلة لمدة 30 دقيقة
tera play fav --duration 30m
مثال أسماء مستعارة للطرفية أضف إلى ~/.bashrc لتشغيل سريع:
alias radio='tera play fav'
alias arabicradio='tera play lucky arabic --duration 1h'
مثال خدمة systemd للمستخدم لتشغيل الراديو تلقائيًا من المفضلة عند تسجيل الدخول لمدة ساعة:
افتح محرر نصوص (مثل nano) لإنشاء ملف باسم radio.service :
nano ~/.config/systemd/user/radio.service
لصق محتوى الخدمة
[Unit]
Description=Tera radio in background
After=sound.target
[Service]
ExecStart=/usr/local/bin/tera play fav --duration 1h
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
أخبر systemd بوجود ملف خدمة جديد للمستخدم:
systemctl --user daemon-reload
فعّلها بالأمر:
systemctl --user enable --now radio.service
ميزة “أنا محظوظ”
اضغط 9 من القائمة الرئيسية، اكتب كلمة مفتاحية مثل classical أو news أو قرآن، ثم اضغط Enter. يستعلم تيرا radio-browser.info عن محطات تطابق الكلمة ويشغّل واحدة عشوائية.
تفعيل وضع التبديل العشوائي:
هذا الوضع يُفعّل قبل البحث من شاشة “أنا محظوظ”. الاختصار Ctrl+T يعمل فقط عندما يكون التركيز على حقل الكلمة المفتاحية. اتبع الخطوات التالية:
- اضغط 9 لفتح “أنا محظوظ”.
- تأكد أن حقل الكلمة المفتاحية هو المحدد.
- اضغط
Ctrl+Tلتفعيل التبديل. - اكتب الكلمة المفتاحية ثم اضغط Enter.
داخل وضع التبديل، يمكنك التنقل بين المحطات، والانتقال إلى التالية عبر زر الحرف ى ( n ) أو السابقة حبر الحرف ج ( [ ) ، وإيقاف المؤقت، أو إيقاف التبديل مع إبقاء المحطة الحالية تعمل.
إدارة المفضلة
يخزن تيرا المفضلات في ملفات JSON داخل ~/.config/tera/data/favorites/. يمكنك إنشاء أي عدد من القوائم.
- أثناء تشغيل محطة، اضغط
fلإضافتها إلى My-favorites، أوsلاختيار قائمة أخرى. - من القائمة الرئيسية، ادخل إلى إدارة القوائم لإنشاء قوائم أو إعادة تسميتها أو حذفها.
- اضغط
dعلى أي محطة داخل قائمة لحذفها منها.
السمات والمظهر
اضغط - من القائمة الرئيسية، ثم انتقل إلى الإعدادات، ثم السمة / الألوان. السمات المضمنة تشمل: Default، Ocean، Forest، Sunset، Purple Haze، Monochrome، Dracula، Nord.
يمكنك أيضًا تعديل ~/.config/tera/config.yaml مباشرة. مثال :
colors:
primary: "6"
highlight: "3"
error: "9"
padding:
list_item_left: 4
الألوان تستخدم رموز ANSI 256. استخدم tera theme path لمعرفة موقع الملف، وtera theme reset لاستعادة الافتراضيات إذا حدث خطأ.
المزامنة والنسخ الاحتياطي
اضغط 0 من القائمة الرئيسية، ثم ادخل إلى المزامنة والنسخ الاحتياطي. يمكنك:
- تصدير كل بياناتك إلى ملف ZIP محلي.
- استعادة نسخة احتياطية مضغوطة.
- المزامنة إلى Gist خاص على GitHub.
مشكلات شائعة وحلولها
المحطة تعمل بدون صوت
- تحقق أن mpv يعمل .
- تأكد من إعدادات الصوت في النظام.
- تأكد أنك لم تكتم الصوت داخل تيرا.
- على أنظمة PipeWire، تحقق من مخرج الصوت الصحيح.
لم يُعثر على محطات عند البحث
- ربما تكون واجهة radio-browser.info بطيئة مؤقتًا.
- تحقق من الوصول للشبكة.
- جرب مصطلح بحث أوسع.
تشغيل عدة محطات في نفس الوقت
قد يحدث إذا توقف تيرا بشكل غير متوقع بينما mpv لا يزال يعمل. أوقفه بإنهاء العملية الخاصة بـ mpv.
pkill mpv
البث ينقطع بشكل متكرر
غالبًا السبب هو التخزين المؤقت على اتصالات بطيئة أو غير مستقرة. ارفع حجم المخزن المؤقت وفعّل إعادة الاتصال التلقائي. افتح / انشيء ملف من الأمر
nano ~/.config/mpv/mpv.conf
اضف ثم احفظ بداخلة التالي:
cache=yes
cache-secs=30
المفضلة اختفت بعد تحديث
بياناتك محفوظة محليًا داخل ~/.config/tera/. قد تكون موجودة أيضًا نسخة احتياطية قديمة داخل المجلد نفسه.
محطة تظهر في البحث لكنها ترفض التشغيل
بعض المحطات تكون روابطها معطلة أو منتهية. جرّب محطة أخرى بنفس الوسم أو النوع، وامنح تصويتًا للمحطات التي تعمل جيدًا.
Ctrl+T لا يبدل الوضع العشوائي
هذا الاختصار يعمل فقط عندما يكون حقل الكلمة المفتاحية هو المحدد. إذا لم يكن كذلك، استخدم Tab أولًا ثم جرّب مرة أخرى.
تيرا يظهر رموزًا مشوهة أو تخطيطًا مكسورًا
غالبًا المشكلة في دعم الطرفية لليونيكود أو في قيمة TERM. اضبطه إلى xterm-256color.
export TERM=xterm-256color
أضف السطر السابق إلى ملف إعدادات shell الخاص بك ليصبح دائمًا.
تشغيل الراديو مع اغلاق الطرفية
تأكد أولاً من أن برنامج tmux مثبت على جهازك.
- افتح الطرفية وأنشئ جلسة جديدة باسم radio:
tmux new-session -s radio
- داخل هذه الجلسة، شغل برنامج الراديو tera:
tera
(انتظر حتى يبدأ التشغيل وتأكد من خروج الصوت).
للفصل عن الجلسة مع استمرار عملها في الخلفية، اضغط على زر Ctrl وزر b معاً في لوحة المفاتيح، ثم ارفع يدك عنهما واضغط فوراً على حرف d.
الآن يمكنك إغلاق نافذة الطرفية ، وسيستمر الصوت في العمل دون انقطاع.
للعودة إلى جلسة الراديو والتحكم بها:
tmux attach-session -t radio
لإيقاف الراديو وإنهاء الجلسة تماماً:
tmux kill-session -t radio
بطاقة مرجعية سريعة
| الأمر أو المفتاح | الوظيفة |
|---|---|
tera | فتح الواجهة النصية |
tera play fav | تشغيل أول محطة في المفضلة |
tera play fav <list> <NO> | تشغيل محطة محددة من قائمة مسماة |
tera play rec | تشغيل آخر محطة استُمع إليها |
tera play top | تشغيل أعلى محطة تقييمًا |
| <كلمة البحث> tera play lucky | تشغيل محطة عشوائية تطابق الكلمة |
tera play fav --duration 1h | تشغيل لمدة ساعة ثم التوقف |
j / k أو الأسهم | التنقل |
Enter | اختيار / تشغيل |
Esc | رجوع |
x | إيقاف الصوت |
? | مساعدة |
f | حفظ في المفضلة |
s | حفظ في قائمة أخرى |
r ثم 1 إلى 5 | تقييم |
v | التصويت للمحطة |
b | حظر المحطة |
Space | إيقاف / استئناف |
* / / | رفع / خفض الصوت |
m | كتم |
Z | مؤقت النوم |
0 | القائمة الرئيسية |
Ctrl+C | خروج |