Как добавить значок средства запуска для сценария Python?

Я пытаюсь добавить значок средства запуска для пользовательского сценария Python, показывающего окно Tkinter (местоположение сценария: /home/hakon/my-tkapp.py):

#! /usr/bin/env python3
import tkinter as tk
root = tk.Tk(className='MyTkApp')
label = tk.Label(root, text="Hello World")
label.pack()
root.mainloop()

Сценарий является исполняемым файлом. Я использую pyenv, таким образом, если я выполняю следование gnome-terminal:

$ which python3
/home/hakon/.pyenv/shims/python3

Я создал файл на рабочем столе (расположение файла: ~/.local/share/applications/my-tk-app.desktop):

[Desktop Entry]
Type=Application
Terminal=false
Name=My Tk Application
Exec=/home/hakon/my-tkapp.py
Icon=/home/hakon/icons/my-tk-app-icon.png
StartupWMClass=MyTkApp

Для значка я просто (в целях тестирования) скопировал один из стандартных значков:

cp /usr/share/icons/hicolor/48/apps/apport.png /home/hakon/icons/my-tk-app-icon.png

Выполнение desktop-file-validate команда на файле на рабочем столе не дает вывода, таким образом, файл на рабочем столе должен быть в порядке.

Однако, когда я запускаю скрипт Python от терминала:

~/my-tkapp.py

Я все еще получаю универсальный значок вопросительного знака в средстве запуска.

Что я пропускаю здесь?

3
задан 27 June 2017 в 12:19

1 ответ

Вследствие того, что Ваш вопрос приятно документируется, мы можем найти проблему :)

  • В Вашем приложении, Вы устанавливаете:

    root = tk.Tk(className='MyTkApp')
    
  • Теперь при открытии терминала введите:

    $ xprop WM_CLASS
    

    и впоследствии нажимают на окно Вашего приложения, оно показывает:

    WM_CLASS(STRING) = "myTkApp", "Mytkapp"
    

Это всего не то же как класс окна, который Вы устанавливаете; прописные буквы отличаются. Единственное заключение состоит в том, что по некоторым причинам, класс окна (прописной формат), который Вы устанавливаете, не принят менеджером окон.

, Когда я изменил Ваше средство запуска для соответствия myTkApp:

StartupWMClass=myTkApp

это хорошо работает (по причине удобства, я установил значок Firefox, так как у меня нет Вашего значка):

[Desktop Entry]
Type=Application
Terminal=false
Name=My Tk Application
Exec=/home/jacob/Bureaublad/testapp.py
Icon=firefox
StartupWMClass=myTkApp

результат:

enter image description here

4
ответ дан 1 December 2019 в 15:51

Другие вопросы по тегам:

Похожие вопросы: