قم بتنفيذ تطبيق PYQT من حدث ACPI في Linux
سؤال
أرغب في استخدام تطبيق PYQT لعرض صورة عندما يتم تشغيل بعض حدث ACPI تحت Linux.
لقد قمت بالفعل بإعداد التكوين للحدث ويتم تنفيذ Scrip Python عندما يتم تشغيل الحدث ، ولكن عندما يصل البرنامج إلى إنشاء Qaplication
app = QApplication(sys.argv)
يتوقف دون خطأ. حاولت إعداد متغيرات البيئة وبيئة المسار نفسها كمستخدمي الحالي ولكنه لا يعمل.
هذا هو ملف الحدث الخاص بي:
event=sony/hotkey SNC 00000001 00000011
action=/etc/acpi/vaio-tools/brightness/sonybright.sh up 2>&1>/tmp/vaio-tools_brightness.log
حاولت العثور على بعض الأخطاء في /tmp/vaio-tools_brightness.log لكنها لا تسجل أي شيء بعد الوصول إلى إنشاء QAPP في الكود.
أي تلميحات ؟؟
المحلول
يتم تشغيل التطبيق الخاص بك بواسطة Root والذي لا يمكنه الوصول إلى شاشة X الخاصة بالمستخدمين.
إما تعيين $ xauthority على مسار ملف سلطة X المستخدم من قبل المستخدم الخاص بك أو استخدم شيئًا كهذا (لم يتم اختباره):
su your_user -l -c "xauth extract - $DISPLAY" | xauth merge -
انظر صفحات الرجل ل xauth و XSecurity لمعرفة المزيد عن هذا.
يتمثل الحل الأفضل في الحصول على حدث ACPI لإرسال رسالة عبر DBUs وتشغيل التطبيق الخاص بك في جلسة المستخدم الاستماع إلى تلك الرسالة.