Min*_*ran 2 icons python unity launcher 16.04
我制作了一个 .desktop 文件,以便能够从启动栏启动我的 python 脚本。
我将 python 脚本设置为可执行文件,如果双击并从文件管理器运行它,它可以正常运行。它在终端上也运行良好。
桌面文件位于以下位置/.local/share/applications/,如下所示:
[Desktop Entry]
Version=1.0
Name=Simple Timer
Comment=Timer
Exec=python3 /home/user/app/timer.py
Icon=/home/user/app/icon/timer.png
Path=/home/user/app/timer/
Terminal=false
Type=Application
Categories=Utility;Application;
Run Code Online (Sandbox Code Playgroud)
如果我在 Dash 中搜索“Timer”,它就会出现。我可以从那里运行它。运行它会在启动栏上创建两个重复的图标,如图所示。
如果我从文件管理器运行脚本。它创建 1 个运行正常的启动器图标。
我已验证 .desktop 文件中没有重复的 .desktop 文件/usr/share/applications/。我创建的 .desktop 文件仅存在于/.local/share/applications/,如果删除,我将无法再在 Dash 上搜索我的计时器或将其锁定到启动栏。
如何解决此处的脉动/无法点击问题和双图标问题?
具体来说,Tkinter 窗口无法识别它们“自己的”窗口(类)。这使得图标徒劳地闪烁,等待它的窗口。一旦窗口出现,启动器就无法识别自己的窗口,并在超时后弹出启动器。由于“普通”窗口始终由启动器中的图标表示,因此您会留下一个通用图标(通常,如果没有重复的启动器)或另一个不同的图标(请参阅下文)。
您可以通过添加以下内容来简单地解决该问题:
StartupWMClass=Tk
Run Code Online (Sandbox Code Playgroud)
到您的启动器(因为它是 Tkinter 窗口)
看看区别(我给启动器提供了 firefox 图标进行测试):
将 WM_CLASS 添加到您的 .desktop 文件将解决您的问题。不过,我很确定,您不小心创建了一个额外的启动器(或者 Unity 自动创建了一个启动器)。查看/.local/share/applications/并使您的启动器可执行。图标将显示。最有可能的是,你的骗子的名字里会有“团结”。
打开终端,输入
xprop WM_CLASS
Run Code Online (Sandbox Code Playgroud)随后单击窗口。出现两个字符串,以逗号分隔。标题栏中的内容是您需要添加的内容。
不是你的问题,而是:
您不需要设置以下行:
Version=1.0(没有坏处,但不需要)python3(您可以让脚本直接调用解释器)Path=/home/user/app/timer/(不必要)Terminal=false(这是默认值)