我正在尝试在 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;
Run Code Online (Sandbox Code Playgroud)
我打开仪表板并搜索“matlab”。此启动器可在应用程序中找到。我点击它,Matlab 的启动画面出现了,但是当它消失时程序没有启动。(我已经确认htop没有 matlab 进程在后台运行。)
如果我添加
Terminal=true
Run Code Online (Sandbox Code Playgroud)
到启动器文件,程序启动正常,并打开一个终端以及 Matlab。但是,终端和 Matlab 本身都显示在启动器区域中,带有 Matlab 图标,所以看起来我有两个Matlab 实例在运行,而实际上它只有一个。(实际上,它们显示为两个不同的程序,而不仅仅是相同的两个实例——图标是独立的,而不是组合在一起。)
这绝对不是最优的。我曾希望创建一个可以锁定到启动器区域的启动器,然后当程序运行时,相同的图标将成为活动 Matlab 实例的图标。
如何为 Matlab 创建一个按预期工作的启动器?
更新:我显然对我的症状有点不清楚,我会试着澄清一下。我还从答案中尝试了一些建议,并进一步调查了会发生什么。我当前的设置(带有Terminal=true和的启动器文件Exec=matlab -desktop -nosplash &)呈现以下行为:
我可以将终端窗口的图标锁定到启动器并通过单击它成功启动 MATLAB,但是我用一个图标启动程序并用另一个图标切换到它的感觉并不是最佳的。我还尝试了以下方法:
Exec没有&启动器命令中的&符号,但它没有任何区别。matlab -nosplash从终端手动执行仍会显示启动画面。(那么,nosplash 选项到底有什么作用?)tsb*_*lan 14
加勒特的回答几乎对我有用,但我必须使用
StartupWMClass=sun-awt-X11-XFramePeer
Run Code Online (Sandbox Code Playgroud)
这仍然会在启动画面可见时提供一个额外的启动器图标(因为启动画面的 WM_CLASS 只是“MATLAB”),但随后窗口会在启动器下正确分组。
Matlab 的新实例(由终端或 Synapse 启动,或从另一个 ttyexport DISPLAY=:0启动)也被分组在这个启动器下,启动器的退出选项会杀死所有这些实例。
我通过使用找到了这个 WM_CLASS 值
$ xprop WM_CLASS
Run Code Online (Sandbox Code Playgroud)
然后单击 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
Run Code Online (Sandbox Code Playgroud)
这是在 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
Run Code Online (Sandbox Code Playgroud)
上面的代码在 matlab.desktop 中,放在/usr/share/applications/. 我认为可能重要的唯一区别是 (i)Exec路径,但是如果您在 MATLAB 安装期间安装了符号链接,那么您的符号链接应该可以正常工作,并且 (ii) 我正在运行 MATLAB R2011b。
和你一样,我正在运行 Ubuntu 12.04。
如果我遗漏了什么,您可以尝试使用我的代码来启动 MATLAB,谁知道呢,它可能会起作用。
您提到进入matlab -desktop终端作品(即添加Terminal=true)。但是,这为您提供了在 MATLAB 下分组的两个屏幕。
您可以尝试通过更改调用过程的方式来解决此问题。这里的关键是&&符号。它所做的是执行前面的代码,而不是等待它完成。理想情况下,它会启动终端,让终端启动 MATLAB 并立即关闭终端,让 MATLAB 继续运行。如果您从终端启动 matlab 并在该行后面加上与号,会发生什么情况,或者:
matlab -desktop &
Run Code Online (Sandbox Code Playgroud)
如果可行,您可以尝试 (i) 使用Terminal=true上述代码制作启动器或 (ii) 制作引用 bash 脚本的启动器,后者又调用上述代码。
对您来说,方法 1 没有帮助。如果方法 2 也不起作用,那么玩一下可能会更好,看看您可以使用与号、终端和 bash 脚本做什么和不可以做什么。我几乎没有什么好主意,但那时比我更聪明的人可能会帮助你。
| 归档时间: |
|
| 查看次数: |
42853 次 |
| 最近记录: |