Як зробити запуск Matlab для 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, але коли він зникає, програма не запускається. (Я перевірив, htopщо жодні процеси matlab не працюють у фоновому режимі.)

Якщо я додам

Terminal=true

до файлу запуску програма запускається ОК і відкриває термінал, а також Matlab. Однак і термінал, і сам Matlab з'являються в області запуску, зі значком 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, створюється інший значок, і якщо ви заблокуєте нову на пусковій установці, нова не буде відкривати матлаб ...
Felipe

Відповіді:


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
Ніл Трафт,

7

Це дуже дивно. matlab -desktopдійсно слід зробити трюк.

Підхід 1: подивіться, що не так з пусковим пристроєм

У мене на бічній панелі 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 -desktop &

Якщо це працює, ви можете спробувати (i) зробити запуск із Terminal=trueта вищевказаним кодом або (ii) зробити пусковий апарат, який посилається на скрипт bash, який, у свою чергу, викликає вищевказаний код.

Для вас підхід 1 не допоміг. Якщо підхід 2 не працює, може бути непогано пограти, подивитися, що можна, а що не можна робити зі сценаріями ampersand, terminal та bash. Я майже не маю гарних ідей, але хтось розумніший за мене, можливо, зможе вам тоді допомогти.


Я спробував ваш код, але без успіху. Також (i) я встановлював посилання під час встановлення Matlab. (ii) Це, звичайно, може бути різницею, що має значення - на жаль, це академічна ліцензія, і я R2011a - це остання доступна для мене версія, тому я не можу перевірити її на R2011b = (
Томаш Ашан

Я щойно відредагував свою публікацію, додавши ще одну ідею. Дайте нам знати, як це працює для вас.
Томаш

Спасибі! Однак це мало змінило. Мені здається, мені було трохи незрозуміло щодо моїх симптомів; Будь ласка, дивіться оновлення ОП для деяких роз'яснень.
Томаш Ашан

Так, ви можете запустити MATLAB за допомогою запущеного вами запуску. Це просто ікона, яка неправильна. Я боюся, що якщо вдатися до рішення терміналу, описаного в підході 2, ви не отримаєте потрібного значка. У мене була та сама проблема, але я міг викликати MATLAB за допомогою matlab -desktop(див. Підхід 1). Для мене це викликає MATLAB із екраном заставки та правильним значком для основного інтерфейсу. Він розміщується під заблокованим пусковим пристроєм. Якщо ви хочете вказати правильний значок і не можете запустити MATLAB через пусковий апарат matlab -desktop, я не маю ідеї. Повідомлю вас, якщо я щось придумаю.
Томаш

Як ви бачите цей текст, відповідний файлу .desktop?
DBinJP

4

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

Щоб встановити це, перейдіть до програмного центру Ubuntu , знайдіть 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 / застосунках призвело до того, що він не працюватиме під час першого входу.

  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 до запуску єдності.


Це виглядає справді перспективно! Однак мені потрібно зробити щось більше - після цього натискання піктограми Matlab у моєму запуску виконує наступні дії: 1) відображається вікно сплеску із власним значком запуску, і піктограма, на яку я натискав, починає блимати (згасає та вихід). 2) вікно сплеску, і його піктограма зникає, і піктограма запуску I продовжує блимати. 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.