การวิจัยพื้นหลัง
ฉันกำลังพยายามที่จะปรับปรุงแถบความคืบหน้าในความสามัคคีปล่อยหาง่ายpython/Gtk
แอพลิเคชันสร้างขึ้นโดยใช้Quickly
ที่เรียกว่าtest
; แต่ต่อไปนี้คำแนะนำในวิดีโอนี้ , ฉันยังไม่ได้รับสามารถที่จะประสบความสำเร็จในการปรับปรุงแถบความคืบหน้าในUnity
ตัวเรียก ในวิดีโอการรวมเข้าด้วยกันQuickly
ไม่ได้ใช้ดังนั้นวิธีการที่แอปพลิเคชันมีโครงสร้างแตกต่างกันเล็กน้อยและรหัสที่ใช้ในวิดีโอดูเหมือนจะทำงานไม่ถูกต้องหากไม่มีการแก้ไขในQuickly ubuntu-application
แอปพลิเคชันแม่แบบเริ่มต้น
ภาพหน้าจอ
นี่คือภาพหน้าจอของไอคอนแอปพลิเคชันซึ่งแสดงอยู่ใน Unity Launcher
นี่คือภาพหน้าจอของฟังก์ชันความคืบหน้าของแถบตัวเรียกใช้งาน Unity ที่ฉันต้องการ (ซ้อนทับบนไอคอนจดหมาย: wiki.ubuntu.com )
รหัสโครงการ
.zip
ไฟล์ที่มีไฟล์โครงการที่สามารถพบได้ที่นี่
พฤติกรรมที่คาดหวัง
ฉันคาดหวังว่าโค้ดด้านบนจะแสดงแถบความคืบหน้าที่มีการซ้อนทับ 75% เต็มบนไอคอนสำหรับแอปพลิเคชันทดสอบใน Unity Launcherแต่แอปพลิเคชันจะทำงานและแสดงแถบความคืบหน้าไม่ได้เมื่อดำเนินการคำสั่งquickly run
เท่านั้น
การตรวจสอบปัญหา
ฉันเชื่อว่าปัญหาคือว่าฉันไม่ได้รับการอ้างอิงถึงหน้าต่างหลักของแอปพลิเคชันอย่างถูกต้องอย่างไรก็ตามฉันไม่แน่ใจว่าจะแก้ไขปัญหานี้ได้อย่างถูกต้องได้อย่างไร ฉันยังเชื่อด้วยว่าบรรทัด: self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
อาจเป็นแหล่งที่มาของความยุ่งยากอื่นเนื่องจากQuickly
สร้าง.desktop.in
ไฟล์มากกว่า.desktop
ไฟล์ธรรมดาดังนั้นฉันไม่แน่ใจว่ามันอาจทำให้เกิดปัญหาเช่นกัน
บางทีแหล่งที่มาอื่นของปัญหาคือฉันไม่เข้าใจความแตกต่างระหว่าง.desktop
และ.desktop.in
ไฟล์อย่างสมบูรณ์ เป็นไปได้ไหมที่จะทำการคัดลอกtest.desktop.in
ไฟล์และเปลี่ยนชื่อtest.desktop
และวางไว้/usr/share/applications
เพื่อget_for_desktop_id("test,desktop")
อ้างอิง.desktop
ไฟล์ที่ถูกต้อง?
ลิงค์งานวิจัยที่เกี่ยวข้อง
แม้ว่าฉันยังคงไม่ชัดเจนเกี่ยวกับความแตกต่างระหว่างไฟล์ .desktop และ .desktop.in แต่ฉันได้ทำการค้นคว้าเกี่ยวกับไฟล์ .desktop แล้วและฉันเจอลิงก์สองสามรายการ:
- Desktop Entry Files (library.gnome.org)
- ไดเรกทอรีการติดตั้งไฟล์เดสก์ท็อป (askubuntu.com)
- Unity Launcher API (wiki.ubuntu.com)
- ไฟล์เดสก์ท็อป: ใส่แอปพลิเคชันของคุณในเมนูเดสก์ท็อป (developer.gnome.org)
- ข้อกำหนดเมนูเดสก์ท็อป (มาตรฐาน .reedesktop.org)
แก้ไข
หลังจากทำงานpython setup.py build
แล้วไปที่/build/share/applications
และการเคลื่อนย้ายสร้างtest.desktop
ไฟล์~/.local/share/applications
และในที่สุดการดำเนินการquickly run
, เพียงเครื่องหมายคำถามสำหรับไอคอนจะถูกแสดงโดยไม่มีแถบความคืบหน้ามองเห็นได้
แก้ไข 2
หลังจากการตรวจสอบเพิ่มเติมของ.desktop
ไฟล์ที่สร้างขึ้นปรากฎว่าบรรทัด:
Icon=/usr/share/test/media/test.svg
ภายใน.desktop
ไฟล์นั้นชี้ไปที่ไฟล์ไอคอนที่เรียกว่าtest.svg
ไม่มีอยู่
เพื่อที่จะแก้ไขปัญหานี้ผมสร้างโฟลเดอร์ใหม่ที่เรียกว่าtest
ใน/usr/share/
การใช้คำสั่งsudo mkdir test
และสร้างขึ้นภายในโฟลเดอร์อื่นของโฟลเดอร์การทดสอบจากนั้นก็เรียกmedia
ใช้คำสั่งsudo mkdir media
และจากนั้นผมย้ายtest.svg
ไฟล์ไอคอนอยู่ในไดเรกทอรีโครงการของฉันได้อย่างรวดเร็วที่จะtest/data/media/test.svg
ไอคอนสำหรับการใช้งานในขณะนี้แสดงอย่างถูกต้องในแถบปล่อยความสามัคคีและในมุมมอง Alt-แท็บ แต่ยังคงมีแถบความคืบหน้าไม่สามารถมองเห็นได้ตามที่แสดงในภาพด้านล่าง/usr/share/test/media/
.svg
แก้ไข 3
ในฐานะที่เป็น @dobey ชี้ให้เห็นว่ามีการพิมพ์ผิดในรหัสของไฟล์ TestWindow.py ที่บรรทัด:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
,
ที่ควรจะเป็นtest.destkop
test.desktop
ผมเปลี่ยน typo quickly run
นี้และไม่มีการเปลี่ยนแปลงที่เกิดขึ้นสามารถมองเห็นได้เมื่อโปรแกรมประยุกต์ที่ถูกประหารชีวิตโดยใช้ อย่างไรก็ตามหลังจากเพิ่มบรรทัดprint('Integrating with launcher')
ไปadd_launcher_integration()
ยังไม่มีเอาต์พุตที่สอดคล้องกันในเทอร์มินัลเมื่อเรียกใช้แอปพลิเคชันแสดงว่าปัญหาดูเหมือนว่าadd_launcher_integration()
จะไม่ถูกเรียกอย่างถูกต้องเมื่อเริ่มต้นแอปพลิเคชัน
แก้ไข 4
หลังจากการตรวจสอบเพิ่มเติมปรากฎว่าadd_launcher_integration()
ในความเป็นจริงเรียกว่าเมื่อแอปพลิเคชันเริ่มต้น ด้วยการเพิ่มบรรทัด:
os.system("clear")
ก่อนที่จะมีสาย
print("Integrating with launcher")
ข้อความ "การบูรณาการกับการปล่อย" terminal
ตอนนี้การแสดงใน
อย่างไรก็ตามยังคงมีไม่มีความคืบหน้าบาร์ visisble ในแถบปล่อยสามัคคี
แก้ไข 5
หลังจากที่สร้างใหม่Quickly
โครงการโดยการดำเนินการpython setup.py build
และการเคลื่อนย้ายสร้าง.desktop
ไฟล์ภายในQuickly
โครงการตั้งอยู่ที่/build/share/applications/
ไป~/.local/share/applications
ที่ไอคอนของโปรแกรมประยุกต์และแถบความคืบหน้าในขณะนี้แสดงอย่างถูกต้องในแถบปล่อยสามัคคี ภาพหน้าจอของการรวมตัวเรียกใช้สามารถดูได้จากด้านล่าง