自定义启动器图标打开第二个通用图标

自定义启动器图标打开第二个通用图标

我用 Python 编写了一个脚本,使用 pactl 来提高音量。我创建了一个 .desktop 文件

[Desktop Entry]
Type=Application
Terminal=false
Name=Super Volume
Icon=/home/tyler/SuperVolume/icon.ico
Exec=/home/tyler/SuperVolume/SuperVolume.py

一切都好

带图标的启动器项目 但后来我注意到它并没有将白色箭头添加到我的图标上,而是打开一个通用图标并将箭头放在上面

可怕的通用图标

所以如果有人能告诉我如何改变这种情况,我将不胜感激,在问这个问题之前我已经在 Google 上搜索了很多,但可能没有使用正确的关键词,不确定。

答案1

关于 Tkinter 窗口

图片中的窗口是特金特窗口。默认情况下,Tkinter 窗口与启动器图标不匹配除非您专门设置启动器(.desktop文件)以匹配窗口WM_CLASS。下面进一步解释如何做到这一点。

然而

如果你没有WM_CLASSpython/Tkinter代码中定义特定的 ,则所有Tkinter窗口都具有相同的WM_CLASS。你可以看到,如果你运行

xprop WM_CLASS

在终端中,按Return,然后单击Tkinter窗口。这将显示:

WM_CLASS(STRING) = "tk", "Tk"

这意味着如果你有多个Tkinter应用程序,它们都会出现在启动器中的同一个图标下。这将是一个通用的除非您编辑.desktop文件。

如何在 python/Tkinter 中设置独特的 WM_CLASS

WM_CLASS您可以通过如下设置来定义:

#!/usr/bin/env python3
from tkinter import *

# set the WM_CLASS
win = Tk(className="applicationname")
# set the window title
win.wm_title("Test 123")
win.mainloop()

在此处输入图片描述

将 WM_CLASS 添加到你的 .desktop 文件

将以下行添加到您的.desktop文件:

StartupWMClass=applicationname

您在/代码applicationname中设置的名称在哪里。pythonTkinter

相关内容