如何为Unity制作Matlab启动器?


22

我正在尝试在Ubuntu 12.04中为Unity安装Matlab R2011a启动器。我已经尝试过该指南(尽管我知道它是针对11.10的,并提到即使对于Matlab R2011a,11.10也是不受支持的OS),但没有任何令人满意的解决方案。

这是我的启动文件/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没有在后台运行任何matlab进程。)

如果我加

Terminal=true

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

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

如何为Matlab创建启动器,该启动器可以正常工作?

更新:我的症状似乎不太清楚,我会尝试澄清一下。我还尝试了答案中的一些建议,并进一步调查了发生的情况。我当前的设置(带有Terminal=true和的启动器文件Exec=matlab -desktop -nosplash &)呈现以下行为:

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

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

  • Exec&在启动器命令中没有&符的情况下,但没有任何区别。
  • matlab -nosplash从终端手动执行仍会显示初始屏幕。(那么,nosplash选项实际上是做什么的?)

matlab在“终端”窗口中手动运行时会发生什么?
伊利亚·卡根

@EliahKagan:很好。我是否运行matlab或也似乎无关紧要matlab -desktop
Tomas Aschan'5

我的图标有完全相同的问题。我还从仓库中为matlab安装了Ubuntu软件包。我觉得很奇怪,一旦启动matlab,就会创建另一个图标,如果将新图标锁定到启动器,则新图标将无法打开matlab ...
Felipe

Answers:


14

Garrett的答案几乎对我有用,但我必须使用

StartupWMClass=sun-awt-X11-XFramePeer

当初始屏幕可见时,这仍然提供了一个额外的启动器图标(因为spashscreen的WM_CLASS只是“ MATLAB”),但是随后窗口被正确地分组在启动器下。

Matlab的新实例(由终端或Synapse启动,或从另一个带有tty的tty export DISPLAY=:0)也被归入此启动器,并且启动器的quit选项将杀死所有这些实例。

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

$ xprop WM_CLASS

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

为了防止出现临时的额外启动器图标,您还可以在该图标-nosplash之后添加该标志-desktop

所以,我~/.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

这是在带有Matlab R2012b的Ubuntu 12.10上


这完全符合我的要求。非常感谢!
Tomas Aschan

2
我对你的答案扩大一点这里的
飞羊

不知道其他人在哪里得到他们的徽标,但这行得通:$ sudo wget http://upload.wikimedia.org/wikipedia/commons/2/21/Matlab_Logo.png -O /usr/share/pixmaps/matlab.png
Neil Traft 2014年

7

真奇怪 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脚本的启动器,然后依次调用上述代码。

对于您来说,方法1并没有帮助。如果方法2都不起作用,则可能需要进行一些尝试,然后查看与号,终端和bash脚本可以做什么和不能做什么。我几乎没有好的主意,但是那时比我聪明的人也许可以帮助您。


我尝试了您的代码,但没有成功。另外,(i)我在安装Matlab的过程中确实安装了符号链接。(ii)当然,这可能是重要的区别-不幸的是,这是一个学术许可证,而I R2011a是我可以使用的最新版本,因此我无法使用R2011b =(
Tomas Aschan

我刚刚编辑了帖子,添加了另一个想法。让我们知道如何为您解决问题。
托马斯2012年

谢谢!但是,它并没有太大的区别。我的症状似乎不太清楚。请查看OP更新以获取一些说明。
Tomas Aschan 2012年

啊哈,所以您可以使用创建的启动器启动MATLAB。只是错误的图标。恐怕如果诉诸方法2中所述的终端解决方案,您将不会获得正确的图标。我遇到了完全相同的问题,但是可以使用调用MATLAB matlab -desktop(请参见方法1)。对我而言,这会召唤MATLAB,并显示启动画面和主界面的正确图标。它放置在锁定的启动器下方。如果您想要正确的图标,并且无法使用来通过启动器运行MATLAB matlab -desktop,那么我就没主意了。我有什么想告诉您的。
2012年

您如何看待与.desktop文件相对应的文本?
DBinJP

4

我从软件中心安装了Matlab配置文件/脚本。它在破折号中列出了Matlab启动器,并且非常适合Ubuntu 12.04中的Matlab2011a。但是,启动器无法正常运行。我的意思是,如果您将其锁定在启动器上并尝试从那里启动,则它将无法正常工作,至少对我而言不起作用。所以我必须从破折号开始。

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


1
好提示!但是,它带有与我自己创建的启动器完全相同的问题。
Tomas Aschan'5

太好了,谢谢@maqtanim!对我来说就像一个魅力(ubuntu 12.10 amd64)
amc 2013年

对我来说完美工作(12.10上的Matlab R2013a)。在安装它之前,我什至没有启动器。链接到软件中心:apt.ubuntu.com/p/matlab-support
Tobold

3

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

  1. 按照建议从软件中心安装matlab-support软件包。或者,您可以使用以下命令: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文件的Applications文件夹:nautilus ~/.local/share/applications

  5. 将matlab.desktop文件拖放到统一启动器中。


这看起来真的很有希望!但是,还需要做更多的事情-完成此操作后,单击启动器中的Matlab图标将执行以下操作:1)启动窗口显示,带有其自己的单独启动器图标,并且单击的图标开始闪烁(淡入并出来)。2)启动窗口,它的图标消失,启动器图标I继续闪烁。3)图标停止闪烁,没有任何反应。
Tomas Aschan'5

我还确保了matlab.desktop文件归我所有(不是root),并且所有用户都具有读取和执行权限。
Tomas Aschan'5

但是,如果我从终端或Guake运行MATLAB,但它确实使用我只是把启动器中的图标-这样的东西是正确的=)
托马斯Aschan

初始屏幕将自行显示,但不会消失。这是因为它与Matlab虚拟机(主程序)具有不同的类。至于不开始,我不确定。特别是因为您说它在终端中启动(我假设使用相同的命令matlab -desktop
Garrett Foster 2012年

是的,我使用相同的命令。matlab &也可以正常工作(例如,-desktop从端子启动时不需要开关)。
Tomas Aschan 2012年

1

我可能要晚一点,但是我已经设法通过在“主菜单”应用程序中添加一个条目来做到这一点。我将其列为“应用程序”,然后在MATLAB目录中以Command的形式提供了可执行文件的完整路径。

我还必须添加标志“ -desktop”(不带引号)。另外,由于我在64位系统上使用学生版,因此我还必须使用'-glnx86'标志,但这也很好用。

然后,我设法从该网站上获得一个图标。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.