Как мне сделать 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

tsbertalan
источник
Это работает именно так, как я хотел бы. Большое спасибо!
Томас Ашан
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. У меня почти нет хороших идей, но кто-то умнее меня может помочь тебе.

Tomas
источник
Я попробовал твой код, но безуспешно. Также (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). Просто установите его, и он позаботится обо всем остальном.

maqtanim
источник
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 вместо того, чтобы просто использовать уже существующий. Если кто-нибудь найдет способ решить эту проблему, это было бы здорово ... но я могу жить с этим, как есть.

Тим
источник