การวิจัยพื้นหลัง
ฉันกำลังพยายามที่จะปรับปรุงแถบความคืบหน้าในความสามัคคีปล่อยหาง่าย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.destkoptest.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ที่ไอคอนของโปรแกรมประยุกต์และแถบความคืบหน้าในขณะนี้แสดงอย่างถูกต้องในแถบปล่อยสามัคคี ภาพหน้าจอของการรวมตัวเรียกใช้สามารถดูได้จากด้านล่าง
