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

Я пытаюсь установить модуль запуска 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?)
22
задан 1 January 2019 в 09:51

5 ответов

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

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

0
ответ дан 1 January 2019 в 09:51
1111 Это очень странно. 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. У меня почти нет хороших идей, но кто-то умнее меня сможет помочь вам.

0
ответ дан 1 January 2019 в 09:51

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

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

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

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

0
ответ дан 1 January 2019 в 09:51

Вот что я сделал, чтобы все работало правильно, начиная с новой установки ( версия 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.

0
ответ дан 1 January 2019 в 09:51

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

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

0
ответ дан 1 January 2019 в 09:51

Другие вопросы по тегам:

Похожие вопросы: