Как мне сделать Matlab Launcher для Unity?


22

Я пытаюсь установить модуль запуска Matlab R2011a для Unity в Ubuntu 12.04. Я попробовал это руководство (хотя я знаю, что это для 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.)

Если я добавлю

Terminal=true

к файлу запуска программа запускается ОК и открывает терминал, а также Matlab. Однако и терминал, и сам Matlab отображаются в области Launcher со значком Matlab, поэтому, похоже, у меня запущены два экземпляра Matlab, хотя на самом деле он один. (На самом деле, они отображаются как две разные программы, а не просто как два экземпляра одного и того же - значки независимы, а не сгруппированы вместе.)

Это определенно не оптимально. Я надеялся создать панель запуска, которую можно заблокировать в области панели запуска, и тогда эта же иконка будет иконкой для активного экземпляра Matlab во время работы программы.

Как мне создать модуль запуска для Matlab, который работает как положено?

Обновление: я был немного неясен с моими симптомами, попробую немного прояснить. Я также попробовал некоторые предложения из ответов и дополнительно изучил, что происходит. Моя текущая настройка (файл запуска с Terminal=trueи Exec=matlab -desktop -nosplash &) отображает следующее поведение:

  1. Я открываю Dash, нажимая клавишу Windows на моем ноутбуке, и ищу «matlab». Находит пусковую установку с именем "MATLAB R2011a". Я нажимаю на это.
  2. Откроется окно терминала с использованием значка, на который я ссылался в файле программы запуска. Почти сразу же открывается заставка MATLAB с использованием того же значка (и, следовательно, сгруппированного с окном терминала в панели запуска).
  3. Заставка исчезает, как и один из значков в панели запуска. Окно рабочего стола MATLAB открывается с использованием другой версии значка, который отображается рядом со значком окна терминала (не сгруппирован с ним).

Я могу зафиксировать значок окна терминала на панели запуска и успешно запустить MATLAB, щелкнув по нему, но не кажется оптимальным, чтобы я запускал программу одним значком и переключался на него другим. Я также попробовал следующее:

  • Execбез амперсанда &в команде запуска, но это не имело значения.
  • Выполнение matlab -nosplashвручную из терминала по-прежнему показывает заставку. (Что же тогда делает опция nosplash?)

Что происходит, когда вы запускаете matlabвручную в окне терминала?
— Элия ​​Каган

@EliahKagan: это прекрасно работает. Кажется, это не имеет значения, если я бегу matlabили matlab -desktop.
— Томас Ашан

У меня точно такая же проблема с иконками. Я также установил пакет Ubuntu для Matlab из репозиториев. Я нахожу действительно странным, что как только вы запускаете matlab, создается другая иконка, и если вы блокируете новую на панели запуска, новая не будет открывать matlab ...
— Фелипе

Ответы:


14

Ответ Гарретта почти работает для меня, но вместо этого я должен использовать

StartupWMClass=sun-awt-X11-XFramePeer

Это все еще дает дополнительный значок запуска, пока виден экран-заставка (потому что WM_CLASS на экране-заставке просто "MATLAB"), но затем окно правильно группируется под модулем запуска.

Новые экземпляры Matlab (запускаемые терминалом, или Synapse, или из другого tty с помощью export DISPLAY=:0) также группируются под этим средством запуска, и опция выхода из средства запуска убивает их всех.

Я нашел это значение 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

Это на Ubuntu 12.10, с Matlab R2012b


Это работает именно так, как я хотел бы. Большое спасибо!
— Томас Ашан

2
Я немного расширил ваш ответ . объяснение здесь
— летающие овцы

Не знаю, где другие люди получили свои логотипы, но это работает:$ sudo wget http://upload.wikimedia.org/wikipedia/commons/2/21/Matlab_Logo.png -O /usr/share/pixmaps/matlab.png
— Neil Traft

7

Это очень странно. matlab -desktopдействительно должен сделать трюк.

Подход 1: посмотрим, что не так с лаунчером

У меня есть рабочая иконка MATLAB на боковой панели Unity. Я могу щелкнуть по нему, он поддерживает правильный значок и не открывает терминал. Насколько я вижу, он в значительной степени совпадает с вашим кодом:

[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) Разумеется, это может иметь значение - к сожалению, это академическая лицензия, и я R2011a - последнее доступное мне издание, поэтому я не могу протестировать его с R2011b = (
— Томас Ашан

Я только что отредактировал свой пост, добавив еще одну идею. Дайте нам знать, как это работает для вас.
— Томас

Благодарность! Тем не менее, это не имело большого значения. Кажется, я немного не понимал своих симптомов; пожалуйста, смотрите обновление OP для некоторых разъяснений.
— Томас Ашан

Ага, так что вы можете запустить MATLAB, используя тот лаунчер, который вы создали. Это просто значок, который не так. Боюсь, что если вы прибегнете к терминальному решению, описанному в подходе 2, вы не получите правильный значок. У меня была точно такая же проблема, но я мог вызвать MATLAB с помощью matlab -desktop(см. Подход 1). Для меня это вызов MATLAB с заставкой и правильным значком для основного интерфейса. Он находится под заблокированной пусковой установкой. Если вам нужен правильный значок и вы не можете запустить MATLAB через панель запуска matlab -desktop, у меня нет идей. Дам тебе знать, если я что-нибудь придумаю.
— Томас

Как вы видите этот текст, соответствующий файлу .desktop?
— DBinJP

4

Я установил файл / скрипт конфигурации Matlab из Центра программного обеспечения. В нем перечислены средства запуска Matlab в тире и отлично работает для Matlab2011a в Ubuntu 12.04. Но это не работает от лаунчера. Я имею в виду, если вы заблокируете его на панели запуска и попытаетесь запустить его оттуда, то он не будет работать, по крайней мере, он не работает для меня. Таким образом, я должен начать это с черты.

Чтобы установить это, перейдите в Ubuntu Software Center , найдите Matlab , он должен быть первым в списке (значок является логотипом Matlab). Просто установите его, и он позаботится обо всем остальном.


1
Хороший совет! Тем не менее, он имеет те же проблемы, что и мой самодельный лаунчер.
— Томас Ашан

отлично, спасибо @maqtanim! работает для меня как оберег (ubuntu 12.10 amd64)
— amc

У меня отлично сработало (Matlab R2013a на 12.10). До установки этого у меня даже не было лаунчера. Ссылка на Центр программного обеспечения: apt.ubuntu.com/p/matlab-support
— Tobold

3

Вот что я сделал, чтобы все работало правильно, начиная с новой установки ( версия R2010b в Ubuntu 12.04 ).

  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 в моем модуле запуска, сделаем следующее: 1) появится всплывающее окно со своим отдельным значком модуля запуска, и значок, который я щелкнул, начнет мигать (исчезать и вне). 2) окно заставки, и его значок исчезает, а значок запуска у меня продолжает мигать. 3) Значок перестает мигать, и ничего не происходит.
— Томас Ашан

Я также убедился, что файл matlab.desktop принадлежит мне (не root) и что все пользователи имеют права на чтение и выполнение.
— Томас Ашан

Однако, если я запускаю Matlab из терминала или Guake, он использует иконку, которую я только что вставил в
— лаунчер

Заставка появится самостоятельно, но исчезнет. Это связано с тем, что класс отличается от виртуальной машины Matlab (основная программа). Что касается не запуска, я не уверен. Тем более, что вы говорите, что он начинается в терминале (я предполагаю, что использую ту же команду matlab -desktop)
— Гаррет Фостер

Да, я использую ту же команду. matlab &также работает без проблем (то есть -desktopпереключатель не требуется при запуске с терминала).
— Томас Ашан

1

Возможно, я немного опаздываю, но мне удалось это сделать, добавив запись в приложение «Главное меню». Я перечислил его как «Приложение», а затем предоставил полный путь к исполняемому файлу в каталоге MATLAB в качестве команды.

Мне также пришлось добавить флаг «-desktop» (без кавычек). Кроме того, мне также пришлось использовать флаг '-glnx86', так как я использую версию для студентов в 64-битной системе, но это также работало нормально.

Затем мне удалось получить значок с этого сайта .

Затем его можно найти в меню приложения и перетащить в панель запуска. Единственное, что действует немного странно, это то, что, когда я нажимаю на него, в модуле запуска появляется другой значок MATLAB вместо того, чтобы просто использовать уже существующий. Если кто-нибудь найдет способ решить эту проблему, это было бы здорово ... но я могу жить с этим, как есть.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.