当前位置: 首页>>技术教程>>正文


如何为 Unity 制作 Matlab 启动器?

,

问题描述

我正在尝试在 Ubuntu 12.04 中为 Unity 安装 Matlab R2011a 启动器。我已经尝试过 this guide(虽然我知道它适用于 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 验证了没有 matlab-processes 在后台运行。)

如果我添加

Terminal=true

到启动器文件,程序启动正常,并打开一个终端以及 Matlab。但是,终端和 Matlab 本身都显示在启动器区域中,带有 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

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

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

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

$ xprop WM_CLASS

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

为了防止临时额外的启动器图标,您还可以在 -desktop 之后添加 -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 真的应该做到这一点。

方法一:看看启动器有什么问题

我的 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 脚本做什么和不可以做什么。我几乎没有什么好主意,但那时比我更聪明的人可能会帮助你。

第三种办法

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

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

第四种办法

这是我从全新安装(Ubuntu 12.04 上的 R2010b 版本)开始使事情正常工作所做的工作。

  1. 从软件中心将 matlab-support 包安装为 suggested 。或者您可以使用以下命令: 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 启动器。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12171.html,未经允许,请勿转载。