Benutzerdefiniertes Startsymbol öffnet ein zweites generisches Symbol

7

Ich habe ein Skript in Python geschrieben, um meine Lautstärke mit pactl lauter zu machen. Ich habe eine .desktop-Datei erstellt

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

Alles war gut

Startelement mit Symbol aber dann bemerkte ich, dass es nicht den weißen Pfeil zu meinem Symbol hinzufügte, sondern ein generisches Symbol öffnete und den Pfeil darauf setzte

Das gefürchtete generische Symbol

Wenn mir jemand sagen könnte, wie ich das ändern kann, würde ich es wirklich begrüßen. Ich habe viel gegoogelt, bevor ich hier gefragt habe, aber vielleicht nicht die richtigen Schlüsselwörter verwendet, nicht sicher.

SudoRmRf
quelle
Hallo Sudo, ich muss deine Frage verpasst haben, hätte sicher früher geantwortet.
Jacob Vlijm

Antworten:

3

Über Tkinter-Fenster

Das Fenster in Ihrem Bild ist ein Tkinter- Fenster. Tkinter-Fenster stimmen standardmäßig nicht mit dem Startsymbol überein, es sei denn, Sie stellen den Starter (die .desktopDatei) speziell so ein , dass er mit den Fenstern übereinstimmt WM_CLASS. Weiter unten wird erklärt, wie das geht.

jedoch

Wenn Sie WM_CLASSin Ihrem python/ Tkintercode keinen bestimmten Wert definieren , haben alle TkinterFenster das gleiche WM_CLASS. Sie können das sehen, wenn Sie laufen

xprop WM_CLASS

Drücken Sie in einem Terminal Returnund klicken Sie anschließend auf das TkinterFenster. Dies wird zeigen:

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

Dies bedeutet, dass wenn Sie möglicherweise mehrere TkinterAnwendungen haben, diese alle unter demselben Symbol im Launcher angezeigt werden. Dies wäre eine generische , es sei denn, Sie bearbeiten Ihre .desktopDatei.

So legen Sie eine eindeutige WM_CLASS in Python / Tkinter fest

Sie können das definieren, WM_CLASSindem Sie es wie folgt einstellen:

#!/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()

Geben Sie hier die Bildbeschreibung ein

Fügen Sie die WM_CLASS zu Ihrer .desktop-Datei hinzu

Fügen Sie Ihrer .desktopDatei die folgende Zeile hinzu :

StartupWMClass=applicationname

Wo applicationnameist der Name, den Sie im python/ Tkinter-Code festgelegt haben ?

Jacob Vlijm
quelle
@ SudoRmRf froh, dass es funktioniert :)
Jacob Vlijm