如何为 python 脚本添加启动器图标?

如何为 python 脚本添加启动器图标?

我正在尝试为显示 Tkinter 窗口的自定义 Python 脚本添加启动器图标(脚本位置/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

我仍然在启动器中看到通用问号图标。

我在这里忽略了什么?

答案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

结果:

在此处输入图片描述

相关内容