ซิงโครไนซ์ไอคอนระหว่าง. desktop และ dock

Jun 02 2020

ฉันสร้างรายการ. desktop แบบกำหนดเองในโฮมไดเร็กทอรีของ~/.local/share/applications/startMyApp.desktopฉันฉันสร้างขึ้นเพื่อที่จะใช้ xterm แทน gnome-terminal ฉันต้องการให้ท่าเรือมีรูปลักษณ์ที่แตกต่างจากเทอร์มินัล gnome ของฉันที่ฉันใช้แบบโต้ตอบ

startMyApp.desktopดูเหมือนว่า:

[Desktop Entry]
Type=Application
Name=MyScript
Terminal=false
Exec=xterm -e myScript.sh
Icon=myIcon.png

ฉันได้สร้างไฟล์ไอคอนใน ~/.icons/myIcon.png

ไอคอนปรากฏขึ้นอย่างถูกต้องในเบราว์เซอร์ไฟล์เริ่มต้น เมื่อเปิดจากเบราว์เซอร์ไฟล์จะเรียกใช้สคริปต์ใน xterm ตามที่คาดไว้อย่างไรก็ตามไอคอนในท่าเรือจะปรากฏเป็นไอคอน xterm ทั่วไปอื่น ๆ ไอคอนนั้นมาจากไหน? มันฝังอยู่ในไบนารีหรือไม่?

ฉันจะเปลี่ยนสิ่งนี้ได้อย่างไร? ฉันต้องการให้ไอคอนในท่าเรือปรากฏขึ้นเหมือนกับที่ระบุไว้ใน.desktopไฟล์ แอปพลิเคชันที่มาพร้อมกับ Ubuntu จะมีไอคอนเดียวกันใน Dock เมื่อเปิดใช้งาน (นอกเหนือจากจุดสีแดงที่ระบุจำนวนหน้าต่างที่เปิดอยู่)

คำตอบ

pomsky Jun 01 2020 at 22:18

คุณต้องเพิ่มStartupWMClassรายการที่เหมาะสมลงใน.desktopไฟล์ของคุณ โดยทำตามขั้นตอนด้านล่างนี้

  1. เปิดแอปพลิเคชันที่เป็นปัญหา
  2. เปิดหน้าต่าง terminal xprop WM_CLASSแยกต่างหากและเรียกใช้
  3. วางเคอร์เซอร์ไว้เหนือหน้าต่างแอปพลิเคชันที่เปิดอยู่ที่เป็นปัญหา ตอนนี้เคอร์เซอร์ควรเปลี่ยนเป็น crosshair คลิก. คุณควรได้รับWM_CLASSสตริงสำหรับแอปพลิเคชันในหน้าต่าง Terminal
  4. ใน.desktopไฟล์ให้เพิ่มบรรทัดต่อไปนี้

    StartupWMClass=OBTAINED-VALUE
    

    แทนOBTAINED-VALUEค่าที่คุณได้รับจากขั้นตอนที่ 3 โดยไม่มีเครื่องหมายคำพูดใด ๆ


อัปเดตจาก OP:

ดูเหมือนว่าฉันต้องตั้งชื่อให้กับอินสแตนซ์ xterm ตอนนี้ดูเหมือนว่าสาย execxterm -name myApp -e myScript.sh