Я пытаюсь добавить значок средства запуска для пользовательского сценария 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
Я все еще получаю универсальный значок вопросительного знака в средстве запуска.
Что я пропускаю здесь?
Вследствие того, что Ваш вопрос приятно документируется, мы можем найти проблему :)
В Вашем приложении, Вы устанавливаете:
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
результат: