Я пытаюсь добавить значок запуска для пользовательского скрипта 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:
[ f4]он работает нормально (для удобства я установил значок firefox, так как у меня нет вашего значка):
[Desktop Entry]
Type=Application
Terminal=false
Name=My Tk Application
Exec=/home/jacob/Bureaublad/testapp.py
Icon=firefox
StartupWMClass=myTkApp
Результат:
[ ! d13]
Из-за того, что ваш вопрос хорошо документирован, мы можем найти проблему:)
В вашем приложении вы устанавливаете: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
Результат:
[ ! d13]
Из-за того, что ваш вопрос хорошо документирован, мы можем найти проблему:)
В вашем приложении вы устанавливаете: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
Результат:
[ ! d13]