ไอคอนหายไปเมื่อเปิดใช้แอปพลิเคชัน


12

ฉันได้สร้างตัวเรียกใช้งานแอปพลิเคชันใน/usr/share/applicationsตัวซึ่งเปิดตัว rdesktop ไฟล์ระบุชื่อไอคอนและฉันได้เพิ่มไอคอนลงใน:

/usr/share/icons/HighContrast/48x48/apps
/usr/share/icons/HighContrast/22x22/apps
/usr/share/icons/HighContrast/256x256/apps
/usr/share/icons/HighContrast/32x32/apps
/usr/share/icons/HighContrast/scalable/apps-extra
/usr/share/icons/HighContrast/24x24/apps
/usr/share/icons/HighContrast/16x16/apps
/usr/share/icons/hicolor/scalable/apps
/usr/share/icons/hicolor/128x128/apps
/usr/share/icons/hicolor/16x16/apps

จากนั้นฉันวางยาตัวเรียกใช้งานไปยังแถบงานและตัวเรียกใช้ที่มีโลโก้ที่ถูกต้องปรากฏในแถบงาน อย่างไรก็ตามเมื่อฉันเริ่มงานไอคอนใหม่จะถูกสร้างขึ้นในแถบงานช่องสี่เหลี่ยมที่มีเครื่องหมายคำถามอยู่ตรงกลาง

ฉันต้องมีไอคอนใดและตำแหน่งใดเพื่อให้ทาสก์บาร์แสดงไอคอนที่ถูกต้องสำหรับแอปพลิเคชันเมื่อเปิดใช้งาน

เนื้อหาไฟล์ .desktop:

[รายการเดสก์ท็อป]
เวอร์ชัน = 1.0
เทอร์มิ = false
ไอคอน = mswindows
type = แอพลิเคชัน
หมวดหมู่ = เครือข่าย;
Exec = rdesktop win7shared1 -g 1680x1000

ชื่อ = win7shared1
GenericName = rdesktop
ความคิดเห็น = เปิดเดสก์ท็อป windows

คำสำคัญที่ใช้ Windows =
StartupNotify = false

คำตอบ:


15

สิ่งที่อาจแก้ไขปัญหาของคุณได้มากที่สุดคือทำสิ่งต่อไปนี้:

  1. เปิดแอปพลิเคชัน
  2. เมื่อมันกำลังทำงานให้เปิดเทอร์มินัลแล้วพิมพ์:

    xprop WM_CLASS
    
  3. จากนั้นคลิกที่หน้าต่างแอปพลิเคชันที่เปิดอยู่

  4. ผลลัพธ์จะมีลักษณะดังนี้ (ตัวอย่างgedit):

    WM_CLASS(STRING) = "gedit", "Gedit"
    
  5. ใช้ส่วนแรก (ในกรณีนี้คือgedit) เพื่อเขียนบรรทัดใน.desktopไฟล์ของคุณ:

    StartupWMClass=<string>
    

    (แทนที่<string>ด้วยเอาต์พุต (ส่วนแรกของ) จริงของxprop WM_CLASSเช่นStartupWMClass=gedit)

ตอนนี้ลองอีกครั้ง (คุณอาจต้องออกจากระบบ / ใน) มีแนวโน้มมากที่สุดที่แอปพลิเคชันจะปรากฏในตัวเรียกใช้งานภายใต้ไอคอนของตัวเอง

คำอธิบาย

  • เมื่อแอปพลิเคชันเริ่มต้นอย่างถูกต้องจากตัวเรียกใช้งาน ( .desktopไฟล์) แต่ไอคอนอื่นปรากฏขึ้นพร้อมกับไอคอนทั่วไปเท่านั้น (เครื่องหมายคำถาม) เป็นไปได้มากว่าหน้าต่างแอปพลิเคชันและตัวเรียกใช้งานไม่ได้เชื่อมต่อด้วยเหตุผลบางประการ จำหน้าต่างของแอปพลิเคชันว่า "เขา" กรณีนี้มักจะเกิดขึ้นเมื่อใช้สคริปต์หรือแอปพลิเคชันที่ไม่ได้มาตรฐาน (-command) ในกรณีเหล่านั้นStartupWMClass=เส้นมักจะเป็นทางออก

ขอบคุณยาโคบ วิธีนี้แก้ไขปัญหาได้ สำหรับเร็กคอร์ดสตริง WM_CLASS คือ "rdesktop", "rdesktop"
Clayton

@clayton สมบูรณ์แบบดีใจที่มันทำงาน
Jacob Vlijm

1
ขั้นตอนที่ 2 ของคุณจะลดลงเป็น xprop ช่วยให้คุณผ่านในอะตอมที่คุณต้องการกลับมาทำงานxprop WM_CLASSก็พอ
johndrinkwater

@ johndrinkwater แน่นอนขอบคุณสำหรับคำใบ้ มันมากกว่าปีที่แล้วมากกว่า 14 เดือนก็เหมือนคนอื่นเขียน :) จะแก้ไข ...
Jacob Vlijm

@ jacob-vlijm :) เพิ่งเจอมันในขณะที่การวิจัยพฤติกรรม xprop ที่น่าอึดอัดใจ
johndrinkwater

2

สำหรับฉันxprop|grep WM_CLASSให้WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce"(ฉันมีปัญหานี้กับ pycharm สำหรับหลาม)

มันเป็นสิ่งsun-awt-X11-XFramePeerที่ฉันต้องการเป็นสตริงในไฟล์ .desktop ของฉัน (โดยไม่ใส่เครื่องหมายอัญประกาศ) - ขอบคุณ!


ฉันเพิ่มลงStartupWMClass=sun-awt-X11-XFramePeerในของฉันแล้วไม่มีอะไรเกิดขึ้น! เป็น.desktopไฟล์ที่อยู่ในโฟลเดอร์ที่บ้าน?
anon58192932

0

หลังจากวางไอคอนลงในตำแหน่งที่ถูกต้องคุณควรรีสตาร์ท xserver (ออกจากระบบและลงชื่อเข้าใช้อีกครั้ง)
ลองอัปเดตแคชไอคอน (เพียงวางรหัสด้านล่างลงในเทอร์มินัล):

for d in ~/.icons/*; do gtk-update-icon-cache -f $d; done
for d in /usr/share/icons/*; do sudo gtk-update-icon-cache -f $d; done
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.