如何使 .tcl 文件直接从启动器执行

如何使 .tcl 文件直接从启动器执行

我正在运行 Ubuntu 14.04 LTS。我使用一个名为 ApE(质粒编辑器)的程序,我必须使用以下命令直接从终端运行它;

tclsh8.5 /home/justin/ApE/AppMain.tcl 

为了方便起见,我希望能够直接将此程序作为嵌入在启动器中的可执行图标打开。我的期望是应该有一个简单的 bash 脚本可以编写来调用 tclsh8.5 直接打开 .tcl 文件,但我是一个完全的新手,不知道如何实现这一目标。任何帮助都将不胜感激。

答案1

以下是我最终完成的完整过程;

$ sudo apt-get install gksu
$ cd /usr/share/applications
$ gksudo gedit ApE.desktop

然后我制作了以下 .desktop 文件

[Desktop Entry]
Type=Application
Name=ApE
Icon=/home/justin/ApE/ApE.png
Exec=/home/justin/ApE/AppMain.tcl %f
Version=1.0
Comment=A Plasmid Editor
GenericName=Plamid Editor
Terminal=false
X-MultipleArgs=false
Categories=Utility;
StartupWMClass=ApE
StartupNotify=true

从那里,我需要通过向该脚本添加以下shebang来修改.tcl 文件;

#!/usr/bin/tclsh

然后我使.tcl 脚本可执行;

$ cd /home/justin/ApE
$ chmod +x AppMain.tcl

然后我使用以下命令验证并安装了.desktop;

$ cd /usr/share/applications
$ desktop-file-validate ApE.desktop
$ desktop-file-install ApE.desktop

desk-file-install 命令在 .desktop 文件中添加了以下行;

X-Desktop-File-Install-Version=0.22

然后我需要将 /usr/share/applications 目录中的 ApE 图标简单地拖放到 Unity Launcher 中,就可以了。

但是,虽然这会将 ApE 图标放置在启动器中,但每当我单击 ApE 图标时,它都会在启动器中创建一个问号图标来表示打开的窗口。为了缓解这种情况,我需要使 StartupWMClass 值一致。因此,回到终端,我运行了以下命令;

$ xprop WM_CLASS

然后点击打开的 ApE 窗口,返回以下输出;

WM_CLASS(STRING) = "dna_window18", "Toplevel"

所以我回到了 ApE.desktop 文件;

$ cd /usr/share/applications
$ gksudo gedit ApE.desktop

并将 StartupWMClass 值更改为 Toplevel,最终得到 ApE.desktop 文件

[Desktop Entry]
Type=Application
Name=ApE
Icon=/home/justin/ApE/ApE.png
Exec=/home/justin/ApE/AppMain.tcl %f
Version=1.0
Comment=A Plasmid Editor
GenericName=Plamid Editor
Terminal=false
X-MultipleArgs=false
Categories=Utility;
StartupWMClass=Toplevel
StartupNotify=true
X-Desktop-File-Install-Version=0.22

这彻底解决了问题。

相关内容