如何为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的启动画面出现,但当它消失时,程序无法启动。 (我已经用htop
validation过,没有matlab进程在后台运行。)
如果我加
Terminal=true
到启动器文件,程序启动OK,并打开终端以及Matlab。 然而,终端和Matlab本身都出现在Launcher区域,带有Matlab图标,所以看起来我有两个 Matlab实例正在运行,而实际上只有一个。 (实际上,它们显示为两个不同的程序,而不仅仅是两个相同的实例 – 图标是独立的,不是组合在一起的。)
这绝对不是最佳选择。 我曾希望创建一个可以锁定到启动器区域的启动器,然后当程序运行时,相同的图标将成为活动Matlab实例的图标。
如何为Matlab创建一个按预期工作的启动器?
更新:我的症状显然有些不清楚,我会尽量澄清一下。 我也从答案中尝试了一些建议,并进一步调查了会发生什么。 我当前的设置(一个启动器文件,其中Terminal=true
和Exec=matlab -desktop -nosplash &
)会产生以下行为:
- 我按下笔记本电脑上的Windows键打开Dash,然后搜索“matlab”。 它找到了名为“MATLAB R2011a”的发射器。 我点击它。
- 终端窗口打开,使用启动器文件中引用的图标。 几乎立刻,MATLAB的启动画面也会打开,使用相同的图标(因此与启动器中的终端窗口分组)。
- 启动画面消失,启动器中的一个图标也消失了。 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 )开始正常工作的方法。
-
按照建议从软件中心安装matlab支持包。 或者您可以使用以下命令:
sudo apt-get install matlab-support
。 -
创建一个本地.desktop文件:
gedit ~/.local/share/applications/matlab.desktop
。 出于某种原因将其保存在/ usr / share / applications中导致它在我第一次登录时不起作用。 -
复制并粘贴以下代码并保存。 重要的变化是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
-
打开刚刚保存matlab.desktop文件的应用程序文件夹:
nautilus ~/.local/share/applications
。 -
将matlab.desktop文件拖放到unity启动器。
我可能会迟到一点,但我设法通过在“主菜单”应用程序中添加一个条目来实现这一点。 我将其列为“应用程序”,然后在命令中提供MATLAB目录中可执行文件的完整路径。
我还必须添加标志’-desktop’(没有引号)。 此外,我还必须使用’-glnx86’标志,因为我在64位系统上使用学生版,但这也很好。
然后我设法从这个网站获得一个图标。
然后可以将其放在应用程序菜单中并向下拖动到启动器中。 唯一有点奇怪的是,当我点击它时,启动器中会出现另一个MATLAB图标,而不仅仅是使用已存在的图标。 如果有人能找到解决这个问题的方法,那就太棒了……但我可以忍受它的存在。