我正在运行 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
这彻底解决了问题。