سؤال كيف يمكنني إضافة عنصر مخصص إلى "مؤشر الصوت" (وجعله قابلاً للنقر أكثر من مرة واحدة)؟


السؤال الأصلي

Sound indicator

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

أي مساعدة هو موضع تقدير. وأنا أعلم أنه من الممكن باعتبارها رائعة سكايب التفاف هل هو


تحرير 2 - الآن اختراق dusus قذرة

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

#!/bin/bash
# This is '/home/confus/bin/toggleSpeaker.sh'

notify-send "Toggle Speaker" "$(date)"
qdbus \
    com.canonical.indicator.sound  \
    /org/ayatana/indicator/service \
    org.ayatana.indicator.service.Shutdown
exit 0

المساعدة من المجتمع هو موضع تقدير لأنني ليس لدي أي خبرة مع DBus على الإطلاق.


تعديل 1 - وجدت تكات حلاً لكن قابل للنقر مرة واحدة فقط؟

لسبب ما حل اقترح من قبل Takkat لديه عيب أن لا يمكن النقر على الإدخال الناتج في مؤشر الصوت إلا مرة واحدة لكل جلسة. إذا كان شخص ما لديه حل ل ، من يرجى التعليق أو الإجابة ، فسوف يكون upvoted. هنا يمكنك رؤية النتيجة:

Sound indicator with script entry

أنا أشك بقوة القضية مرتبطة بملف .desktop في /home/confus/.local/share/application/toggleSpeaker.desktop، وهذا هو:

[Desktop Entry]
Type=Application

Name=toggleSpeaker
GenericName=Toggle Speaker

Icon=gstreamer-properties

Exec=/home/confus/bin/toggleSpeaker.sh
Terminal=false

و هنا الحد الأدنى من المثال من البرنامج النصي في /home/confus/bin/toggleSpeaker.sh من اجل احترامك:

#!/bin/bash
# This is '/home/confus/bin/toggleSpeaker.sh'

notify-send "Toggle Speaker" "$(date)"
exit 0

4
2017-08-28 19:38


الأصل


صبي هذا حقا يتحول إلى ألم حقيقي في المؤخرة. هناك نقص في الوثائق وموارد المساعدة. كما يبدو أن الوحدة جعلت التخصيصات من هذا النوع غير معقدة معقدة. - con-f-use


الأجوبة:


عن طريق الركض dconf محرر من dconf الأدوات  Install dconf-tools يجوز لنا دمج MPRIS متوافق مشغل الوسائط تطبيق لقائمة الصوت مع المفتاح "com.canonical.indicator.sound.interested وسائل الإعلام لاعبين".

enter image description here

في المثال هنا test تم تضمينه مما يشير إلى test.desktop إملأ ~/.local/share/applications حيث يمكننا تشغيل appplication من Exec= حقل. أعد تشغيل جلسة العمل لتصبح نافذة المفعول.

enter image description here

نظرًا لارتباط الإدخال في هذه القائمة ارتباطًا وثيقًا بمشغل وسائط ، يتم التحكم في التطبيق بواسطة ناقل جلسة DBus com.canonical.indicator.sound. هذا هو السبب في أننا لن نتمكن من إعادة تشغيل برنامج نصي حتى تتم إعادة تعيين المؤشر. نجحت في إعادة تشغيل تطبيق الاختبار بعد الأداء اغلق() على ال غزاله / أياتانا / مؤشر / الخدمة كائن ولكن هذا هو الاختراق تماما ، وبالتأكيد ليس بالطريقة التي ينبغي استخدام قائمة الصوت المؤشر.

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


4
2017-08-28 22:00



للحصول على رمز ، يجب أن يكون لدى المشغل Icon= مجموعة الممتلكات. السؤال الصغير التالي: بالنسبة لي ، يتم تشغيل البرنامج النصي مرة واحدة في كل جلسة. يتم تجاهل المزيد من النقرات على الدخول فقط. هل لديك فكرة لماذا هذا؟ - con-f-use
حسنا أنا تكييفها الأسهم .desktop ملف من ساحرة جريئة قال Icon=audacious والتي عرضت رمز "جريء" في إدخال مؤشر مخصص. قد تكون مرتبطة تشغيل المدى مرة واحدة لبلدي التكيف مع المشغل الجريئة. هل يمكنك نشر رمز الخاص بك .desktop؟ أنا نشرت لي. - con-f-use
شكرا جزيلا. يمكنك نشر الرمز الخاص بك؟ أنا لم أعمل مع DBus من قبل. - con-f-use
نفهم ، هذا فعله لي من داخل المحطة: qdbus com.canonical.indicator.sound /org/ayatana/indicator/service org.ayatana.indicator.service.Shutdown. على الرغم من أنني لا أدري ما أفعله. هل تعمل على حل أرثوذكسي؟ إذا كان الأمر كذلك ، فيرجى توضيح ذلك بعبارات بسيطة بينما تكون في ذلك. كانت مساعدتك محل تقدير كبير! شكرا جزيلا! - con-f-use
نفس الشيء هنا - ليس لدي أي فكرة عما يمكن أن نوقفه بهذا. الحل الأفضل هو كتابة تطبيق / سكريبت يتم التحكم فيه بواسطة DBus - أعتقد أن هذا هو الكثير من العمل. - Takkat