如何为Unity制作Matlab启动器?

我正在尝试在Ubuntu 12.04中为Unity安装Matlab R2011a启动器。 我已经尝试了这个指南 (虽然我知道这是11.10并提到即使是11.10也是Matlab R2011a不支持的操作系统),但没有任何令人满意的解决方案。

这是我的启动器文件/usr/share/applications/matlab.desktop

 #!/usr/bin/env xdg-open [Desktop Entry] Type=Application Icon=/usr/share/icons/matlab.png Name=MATLAB R2011a Comment=Start MATLAB - The Language of Technical Computing Exec=matlab -desktop Categories=Development; 

我打开仪表板并搜索“matlab”。 该发射器可在应用程序中找到。 我点击它,Matlab的启动画面出现,但当它消失时,程序无法启动。 (我已经用htopvalidation过,没有matlab进程在后台运行。)

如果我加

 Terminal=true 

到启动器文件,程序启动OK,并打开终端以及Matlab。 然而,终端和Matlab本身都出现在Launcher区域,带有Matlab图标,所以看起来我有两个 Matlab实例正在运行,而实际上只有一个。 (实际上,它们显示为两个不同的程序,而不仅仅是两个相同的实例 – 图标是独立的,不是组合在一起的。)

这绝对不是最佳选择。 我曾希望创建一个可以锁定到启动器区域的启动器,然后当程序运行时,相同的图标将成为活动Matlab实例的图标。

如何为Matlab创建一个按预期工作的启动器?

更新:我的症状显然有些不清楚,我会尽量澄清一下。 我也从答案中尝试了一些建议,并进一步调查了会发生什么。 我当前的设置(一个启动器文​​件,其中Terminal=trueExec=matlab -desktop -nosplash & )会产生以下行为:

  1. 我按下笔记本电脑上的Windows键打开Dash,然后搜索“matlab”。 它找到了名为“MATLAB R2011a”的发射器。 我点击它。
  2. 终端窗口打开,使用启动器文件中引用的图标。 几乎立刻,MATLAB的启动画面也会打开,使用相同的图标(因此与启动器中的终端窗口分组)。
  3. 启动画面消失,启动器中的一个图标也消失了。 MATLAB桌面环境打开, 使用不同版本的图标该图标显示在终端窗口的图标旁边(未与其分组)。

我可以将终端窗口的图标锁定到启动器并通过单击成功启动MATLAB,但是我用一个图标启动程序并且用另一个图标切换到它并不是最佳。 我也尝试了以下内容:

  • Exec没有&符号&启动器命令,但它没有什么区别。
  • 从终端手动执行matlab -nosplash仍会显示启动画面。 (那么,nosplash选项真的有用吗?)

加勒特的答案几乎适合我,但我必须使用

 StartupWMClass=sun-awt-X11-XFramePeer 

这仍然提供了一个额外的启动器图标,而启动画面是可见的(因为spashscreen的WM_CLASS只是“MATLAB”),但是窗口在启动器下正确分组。

Matlab的新实例(由终端或Synapse启动,或者从export DISPLAY=:0另一个tty开始)也会在此启动器下分组,并且启动器的退出选项会杀死所有这些实例。

我通过使用找到了这个WM_CLASS值

 $ xprop WM_CLASS 

然后单击Matlab窗口,这是我从Superuser获得的命令。

要防止临时额外启动器图标,您还可以在-nosplash之后添加-nosplash标志。

所以,我的~/.local/share/applications/MATLAB.desktop看起来像这样:

 [Desktop Entry] Version=1.0 Type=Application Icon=matlab Name=Matlab Comment=Start MATLAB - The Language of Technical Computing Exec=matlab -desktop -nosplash Terminal=false Categories=Development; StartupNotify=true StartupWMClass=sun-awt-X11-XFramePeer X-Ayatana-Desktop-Shortcuts=New_Window; Name[en_US]=MATLAB [New_Window Shortcut Group] Name=start a new MATLAB instance Exec=matlab -desktop 

这是在Ubuntu 12.10上,使用Matlab R2012b

那很奇怪。 matlab -desktop真的应该做的伎俩。

方法1:看看发射器有什么问题

我的Unity侧边栏中有一个有效的MATLAB图标。 我可以点击它,它保持正确的图标,不打开终端。 据我所知,它与您的代码几乎相同,但是:

 [Desktop Entry] Version=1.0 Type=Application Terminal=false Exec=/usr/local/MATLAB/R2011b/bin/matlab -desktop Name=MATLAB Icon=/home/tomas/icons/Matlab_Logo.png 

上面的代码在matlab.desktop中,它放在/usr/share/applications/ 。 我看到的唯一不同之处是(i) Exec路径,但是如果你在MATLAB安装过程中安装了符号链接,你的工作就可以了。(ii)我正在运行MATLAB R2011b。

和你一样,我正在运行Ubuntu 12.04。

如果我错过了什么,你可以尝试使用我的代码启动MATLAB,谁知道,它可能会工作。

方法2:与终端的脏解决方法

你提到在终端工作中输入matlab -desktop (即添加Terminal=true )。 但是,这为您提供了两个在MATLAB下分组的屏幕。

您可以尝试通过更改调用流程的方式来解决此问题。 这里的关键是&符号&符号。 这样做是执行前面的代码,而不是等待它完成。 理想情况下,它会启动终端,让终端启动MATLAB并立即关闭终端,让MATLAB运行。 如果你从终端开始使用带&符号的matlab,或者:

 matlab -desktop & 

如果可以,你可以尝试(i)制作一个启动器,其中Terminal=true和上面的代码,或者(ii)制作一个引用bash脚本的启动器,bash脚本又调用上面的代码。

对你来说,方法1没有帮助。 如果方法2不起作用,那么可以玩一下,看看你能做什么,不能用&符号,终端和bash脚本做什么。 我几乎都是出于好主意,但是比我更聪明的人可能会帮助你。

我从软件中心安装了Matlab配置文件/脚本。 它在破折号中列出了Matlab启动程序,在Ubuntu 12.04中完美适用于Matlab2011a。 但它不是从发射器工作。 我的意思是,如果你将它锁定在发射器上并尝试从那里启动它然后它将无法工作,至少它不适合我。 所以我必须从破折号开始。

要安装它,请转到Ubuntu软件中心 ,搜索Matlab ,它应该是列表中的第一个(图标是Matlab徽标)。 只需安装它,它将照顾其余部分。

以下是我从新安装( Ubuntu 12.04版本R2010b )开始正常工作的方法。

  1. 按照建议从软件中心安装matlab支持包。 或者您可以使用以下命令: sudo apt-get install matlab-support

  2. 创建一个本地.desktop文件: gedit ~/.local/share/applications/matlab.desktop 。 出于某种原因将其保存在/ usr / share / applications中导致它在我第一次登录时不起作用。

  3. 复制并粘贴以下代码并保存。 重要的变化是StartupWMClass行。

     [Desktop Entry] Version=1.0 Type=Application Icon=/usr/share/icons/matlab.png Name=Matlab Comment=Start MATLAB - The Language of Technical Computing Exec=matlab -desktop Terminal=false Categories=Development; StartupNotify=true StartupWMClass=com-mathworks-util-PostVMInit X-Ayatana-Desktop-Shortcuts=New_Window; [New_Window Shortcut Group] Name=New Matlab Exec=matlab -desktop 
  4. 打开刚刚保存matlab.desktop文件的应用程序文件夹: nautilus ~/.local/share/applications

  5. 将matlab.desktop文件拖放到unity启动器。

我可能会迟到一点,但我设法通过在“主菜单”应用程序中添加一个条目来实现这一点。 我将其列为“应用程序”,然后在命令中提供MATLAB目录中可执行文件的完整路径。

我还必须添加标志’-desktop’(没有引号)。 此外,我还必须使用’-glnx86’标志,因为我在64位系统上使用学生版,但这也很好。

然后我设法从这个网站获得一个图标。

然后可以将其放在应用程序菜单中并向下拖动到启动器中。 唯一有点奇怪的是,当我点击它时,启动器中会出现另一个MATLAB图标,而不仅仅是使用已存在的图标。 如果有人能找到解决这个问题的方法,那就太棒了……但我可以忍受它的存在。