ฉันจะหาตำแหน่งของไอคอนของตัวเรียกใช้งานได้อย่างไร


22

ฉันมีตัวเรียกใช้งานบนเดสก์ท็อปของฉันและต้องการเพิ่มอีกอันด้วยตนเองด้วยไอคอนเดียวกัน

เมื่อฉันไปที่การตั้งค่าของตัวเรียกใช้งานที่มีอยู่แล้วคลิกไอคอนมันจะไม่พาฉันไปยังโฟลเดอร์ที่จัดเก็บไอคอนไว้ แต่ไปยังโฟลเดอร์บ้านของฉัน

ฉันจะทราบได้อย่างไรว่าไอคอนที่ใช้ของตัวเรียกใช้นั้นอยู่ในระบบของฉันอย่างไร

คำตอบ:


19

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

  1. เปิด Gedit
  2. ลากตัวเรียกใช้ลงในหน้าต่าง Gedit
  3. ค้นหาIconคำจำกัดความ:

    Icon=gnome-panel-launcher

แล้วคุณจะพบไอคอนที่ไหนสักแห่งใน/usr/share/iconsขึ้นอยู่กับรูปแบบของคุณ

ต่อไปนี้เป็นสคริปต์ python ฉบับย่อที่ค้นหาเส้นทางไอคอนที่ถูกต้องสำหรับคุณ:

import gtk

print "enter the icon name (case sensitive):"
icon_name = raw_input(">>> ")
icon_theme = gtk.icon_theme_get_default()
icon = icon_theme.lookup_icon(icon_name, 48, 0)
if icon:
    print icon.get_filename()
else:
    print "not found"

python /path/to/script.pyบันทึกมันบางและเรียกใช้

มันจะมีลักษณะเช่นนี้:

stefano@lenovo:~$ python test.py 
enter the icon name (case sensitive):
>>> gtk-execute
/usr/share/icons/Humanity/actions/48/gtk-execute.svg

หรือคุณสามารถค้นหาใน/usr/share/iconsจนกว่าคุณจะพบไอคอนที่คุณต้องการ


ง่ายขึ้นมาก: คุณสามารถคัดลอกและวางลอนเชอร์และเปลี่ยนชื่อและคำสั่ง


แก้ไขปี 2018

ฉบับปรับปรุงของสคริปต์ด้านบน:

#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

icon_name = input("Icon name (case sensitive): ")
icon_theme = Gtk.IconTheme.get_default()
icon = icon_theme.lookup_icon(icon_name, 48, 0)
if icon:
    print(icon.get_filename())
else:
    print("not found")

5
/usr/share/pixmapsอีกเส้นทางปกติที่จะเช็คอินคือ
htorque

@Stefano: ฮีโร่! ขอบคุณมากสำหรับคำตอบทั้งคู่ ใช้งานได้ยอดเยี่ยม อย่างน้อยทางที่สองก็ควรที่จะนึกถึงฉันเช่นกัน
Timo Schneemann

Traceback (การโทรล่าสุดครั้งล่าสุด): ไฟล์ "LookUget.py", บรรทัด 2, ใน <module> import gi ImportError: ไม่มีโมดูลชื่อ gi
JulianLai

4

ข้อมูลเพิ่มเติมเล็กน้อย

ตัวเรียกใช้ทั่วไปเป็นไฟล์ .desktop จริงๆใน / usr / share / applications /

ตัวอย่างเช่น: /usr/share/applications/usb-creator-gtk.desktop

(ดูhttp://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html )

เดสก์ท็อปแต่ละไฟล์มีบรรทัดที่ระบุไอคอนตัวอย่างเช่น:

Icon=usb-creator-gtk

เมื่อไม่มีเส้นทาง (และนามสกุลไฟล์) (เช่นในกรณีนี้) หมายความว่าไอคอนพบ (ที่ใดที่หนึ่ง) ใน / usr / share / icons / และไอคอนที่ใช้ในการรันไทม์นั้นขึ้นอยู่กับธีมปัจจุบันและในบางส่วน กรณีบริบทการแสดงผล (ขนาด)

เมื่อทราบชื่อไอคอน (ไม่มีส่วนขยาย) จากไฟล์เดสก์ท็อปคุณสามารถค้นหาได้ / ดังต่อไปนี้:

$ find . -name "usb-creator-gtk*"
./hicolor/scalable/apps/usb-creator-gtk.svg
./Humanity/apps/32/usb-creator-gtk.svg
./Humanity/apps/16/usb-creator-gtk.svg
./Humanity/apps/22/usb-creator-gtk.svg
./Humanity/apps/24/usb-creator-gtk.svg
./Humanity/apps/64/usb-creator-gtk.svg
./Humanity/apps/48/usb-creator-gtk.svg

3

นี้จะขึ้นจากสเตฟาโน Palazzoคำตอบของที่นี่

#!/usr/bin/env python3

from gi.repository import Gtk

icon_name = input("Icon name (case sensitive): ")
if icon_name:
    theme = Gtk.IconTheme.get_default()
    found_icons = set()
    for res in range(0, 512, 2):
        icon = theme.lookup_icon(icon_name, res, 0)
        if icon:
            found_icons.add(icon.get_filename())

    if found_icons:
        print("\n".join(found_icons))
    else:
        print(icon_name, "was not found")

python3 /path/to/fileบันทึกดังกล่าวข้างต้นเป็นไฟล์และทำงานด้วย

ความแตกต่างระหว่างสคริปต์ดั้งเดิมของStefano Palazzoคือ:

  • นี่เป็นการค้นหาความละเอียดทั้งหมดของไอคอน (ไม่ใช่แค่ 48)
  • ใช้gi.repositoryแทนGtk
  • ใช้ Python 3 แทน 2
  • ปรับแต่งเล็กน้อยในวิธีอื่น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.