Jak zrobić program uruchamiający Matlab dla Unity?

22

Próbuję zainstalować program uruchamiający Matlab R2011a dla Unity w Ubuntu 12.04. Wypróbowałem ten przewodnik (chociaż wiem, że jest to wersja 11.10 i wspomina, że ​​nawet 11.10 to nieobsługiwany system operacyjny dla Matlab R2011a), ale bez zadowalającego rozwiązania.

To jest mój plik uruchamiający /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;

Otwieram panel deski rozdzielczej i szukam „matlab”. Ten program uruchamiający znajduje się wśród aplikacji. Klikam go, a pojawia się ekran powitalny Matlaba, ale gdy znika, program się nie uruchamia. (Sprawdziłem, htopczy w tle nie działają żadne procesy Matlab).

Jeśli dodam

Terminal=true

do pliku uruchamiającego program uruchamia się OK i otwiera terminal oraz Matlab. Jednak zarówno terminal, jak i sam Matlab pojawiają się w obszarze uruchamiania z ikoną Matlab, więc wygląda na to, że mam uruchomione dwie instancje Matlaba, gdy tak naprawdę jest tylko jedna. (W rzeczywistości są wyświetlane jako dwa różne programy, a nie tylko dwa takie same wystąpienia - ikony są niezależne, nie są zgrupowane).

To zdecydowanie nie jest optymalne. Miałem nadzieję, że utworzę program uruchamiający, który mogę zablokować w obszarze uruchamiania, a następnie ta sama ikona będzie ikoną aktywnej instancji Matlaba podczas działania programu.

Jak utworzyć program uruchamiający dla Matlaba, który działa zgodnie z oczekiwaniami?

Aktualizacja: Najwyraźniej byłem trochę niejasny co do moich objawów, postaram się trochę wyjaśnić. Wypróbowałem też kilka sugestii z odpowiedzi i dalej badałem, co się dzieje. Moja bieżąca konfiguracja (plik uruchamiania z Terminal=truei Exec=matlab -desktop -nosplash &) renderuje następujące zachowanie:

  1. Otwieram Dash, naciskając klawisz Windows na moim laptopie i szukam „matlab”. Znajduje program uruchamiający o nazwie „MATLAB R2011a”. Klikam to.
  2. Otworzy się okno terminala, używając ikony, o której wspomniałem w pliku uruchamiania. Niemal natychmiast otwiera się ekran powitalny MATLAB-a, przy użyciu tej samej ikony (a więc zgrupowany z oknem terminalu w programie uruchamiającym).
  3. Ekran powitalny znika, podobnie jak jedna z ikon w programie uruchamiającym. Otworzy się środowisko pulpitu MATLAB, używając innej wersji ikony, która jest wyświetlana obok ikony okna terminala (nie jest z nią zgrupowana).

Mogę zablokować ikonę okna terminala w programie uruchamiającym i pomyślnie uruchomić MATLAB, klikając go, ale nie wydaje mi się optymalne, że uruchamiam program z jedną ikoną i przełączam się na nią z inną. Próbowałem także:

  • Execbez znaku handlowego i &w poleceniu programu uruchamiającego, ale to nie miało znaczenia.
  • Wykonywanie matlab -nosplashręczne z terminala nadal pokazuje ekran powitalny. (Co zatem naprawdę robi opcja nosplash?)
Tomas Aschan
źródło
Co się stanie, gdy uruchomisz matlabręcznie w oknie terminala?
Eliah Kagan
@EliahKagan: To działa idealnie. Wydaje się nie mieć znaczenia, czy biegnę, matlabczy matlab -desktopteż.
Tomas Aschan
Mam dokładnie taki sam problem z ikonami. Zainstalowałem również pakiet Ubuntu dla Matlaba z repozytoriów. Uważam, że to naprawdę dziwne, że po uruchomieniu Matlaba tworzona jest kolejna ikona, a jeśli zablokujesz nową w programie uruchamiającym, nowa nie otworzy Matlaba ...
Felipe

Odpowiedzi:

14

Odpowiedź Garretta prawie dla mnie działa, ale zamiast tego muszę użyć

StartupWMClass=sun-awt-X11-XFramePeer

Nadal wyświetla się dodatkowa ikona programu uruchamiającego, gdy ekran powitalny jest widoczny (ponieważ WM_CLASS ekranu głównego to po prostu „MATLAB”), ale wtedy okno zostaje odpowiednio zgrupowane pod programem uruchamiającym.

Nowe instancje Matlaba (uruchamiane przez terminal, Synapse lub od innego tty z export DISPLAY=:0) również są grupowane pod tym programem uruchamiającym, a opcja wyjścia programu uruchamiającego zabija wszystkie z nich.

Znalazłem tę wartość WM_CLASS za pomocą

$ xprop WM_CLASS

a następnie klikając okno Matlab, polecenie otrzymałem od Superuser .

Aby zapobiec tymczasowej dodatkowej ikonie uruchamiania, możesz także dodać -nosplashflagę po tej -desktop.

Więc ~/.local/share/applications/MATLAB.desktopwygląda tak:

[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

To jest na Ubuntu 12.10, z Matlab R2012b

tsbertalan
źródło
Działa to dokładnie tak, jak bym tego chciał. Wielkie dzięki!
Tomas Aschan,
2
I Rozszerzyliśmy na odpowiedź trochę . wyjaśnienie tutaj
latające owce
Nie wiem, skąd inni ludzie mają swoje logo, ale to działa:$ sudo wget http://upload.wikimedia.org/wikipedia/commons/2/21/Matlab_Logo.png -O /usr/share/pixmaps/matlab.png
Neil Traft
7

To bardzo dziwne. matlab -desktopnaprawdę powinien załatwić sprawę.

Podejście 1: sprawdź, co jest nie tak z programem uruchamiającym

Mam działającą ikonę MATLAB na pasku bocznym Unity. Mogę go kliknąć, zachowuje prawidłową ikonę i nie otwiera terminalu. O ile widzę, jest to w zasadzie taki sam kod, jak:

[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

Powyższy kod znajduje się w matlab.desktop, w którym jest umieszczony /usr/share/applications/. Jedyne różnice, które widzę, które mogą mieć znaczenie, to (i) Execścieżka, ale jeśli zainstalowałeś dowiązania symboliczne podczas instalacji MATLAB, twoje powinny działać dobrze i (ii) korzystam z MATLAB R2011b.

Tak jak ty, używam Ubuntu 12.04.

W przypadku, gdy coś przeoczyłem, możesz spróbować użyć mojego kodu, aby uruchomić MATLAB, kto wie, może to działać.

Podejście 2: brudne obejście z terminalem

Wspomniałeś, że wpisywanie matlab -desktopw terminalu działa (tj. Dodawanie Terminal=true). Jednak daje to dwa ekrany zgrupowane w MATLAB.

Możesz spróbować to naprawić, zmieniając sposób wywoływania procesu. Kluczem tutaj byłby &symbol ampersand . Spowoduje to wykonanie poprzedniego kodu, nie czekając na jego zakończenie. Idealnie byłoby uruchomić terminal, pozwolić terminalowi uruchomić MATLAB i natychmiast zamknąć terminal, pozostawiając MATLAB działający. Co się stanie, jeśli uruchomisz matlab z terminala ze znakiem ampersand po linii lub:

matlab -desktop &

Jeśli to zadziała, możesz spróbować (i) utworzyć program uruchamiający z Terminal=truepowyższym kodem lub (ii) utworzyć program uruchamiający, który odwołuje się do skryptu bash, który z kolei wywołuje powyższy kod.

Dla ciebie Podejście 1 nie pomogło. Jeśli Approach 2 nie działa albo dobrze jest się trochę pobawić, zobacz, co możesz, a czego nie możesz zrobić ze skryptami ampersand, terminal i bash. Nie mam dobrych pomysłów, ale wtedy ktoś mądrzejszy ode mnie może ci pomóc.

Tomas
źródło
Próbowałem twojego kodu, ale bez powodzenia. Ponadto (i) zainstalowałem dowiązania symboliczne podczas instalacji Matlaba. (ii) To może oczywiście być różnica, która ma znaczenie - niestety jest to licencja akademicka, a ja R2011a jest najnowszą dostępną edycją, więc nie mogę przetestować jej z R2011b = (
Tomas Aschan
Właśnie edytowałem swój post, dodając kolejny pomysł. Daj nam znać, jak Ci się to uda.
Tomas
Dzięki! Nie miało to jednak większego znaczenia. Wydaje mi się, że moje objawy są trochę niejasne; proszę zobaczyć aktualizację OP w celu uzyskania pewnych wyjaśnień.
Tomas Aschan
Aha, abyś mógł uruchomić MATLAB przy użyciu utworzonego programu uruchamiającego. To tylko ikona, która jest zła. Obawiam się, że jeśli skorzystasz z rozwiązania terminalowego opisanego w Podejściu 2, nie otrzymasz odpowiedniej ikony. Miałem dokładnie ten sam problem, ale mogłem wywołać MATLAB przy użyciu matlab -desktop(patrz Podejście 1). Dla mnie to przywołuje MATLAB, z ekranem powitalnym i poprawną ikoną dla głównego interfejsu. Jest umieszczony pod zablokowanym programem uruchamiającym. Jeśli chcesz prawidłową ikonę i nie możesz uruchomić MATLAB-a za pomocą programu uruchamiającego matlab -desktop, nie mam pomysłów. Powiadomię cię, jeśli coś wymyślę.
Tomas
Jak widzisz ten tekst odpowiadający plikowi .desktop?
DBinJP
4

Zainstalowałem plik / skrypt konfiguracyjny Matlab z Software Center. Wymienia program uruchamiający Matlab w desce rozdzielczej i działa idealnie dla Matlab2011a w Ubuntu 12.04. Ale to nie działa z poziomu programu uruchamiającego. Mam na myśli, że jeśli zablokujesz go w programie uruchamiającym i spróbujesz go uruchomić od tego momentu, to nie będzie działać, przynajmniej nie działa dla mnie. Więc muszę zacząć od kreski.

Aby to zainstalować, przejdź do Centrum oprogramowania Ubuntu , wyszukaj Matlab , powinien być pierwszy na liście (ikona to logo Matlaba). Wystarczy go zainstalować, a resztę zajmie się resztą.

maqtanim
źródło
1
Dobra wskazówka! Jednak wiąże się z dokładnie tymi samymi problemami, co mój samodzielnie utworzony program uruchamiający.
Tomas Aschan
świetnie, dziękuję @maqtanim! działa jak urok dla mnie (ubuntu 12.10 amd64)
amc
Działa idealnie dla mnie (Matlab R2013a 12.10). Przed zainstalowaniem tego nie miałem nawet programu uruchamiającego. Link do Centrum Oprogramowania: apt.ubuntu.com/p/matlab-support
Tobold
3

Oto, co zrobiłem, aby wszystko działało poprawnie, zaczynając od nowej instalacji ( wersja R2010b na Ubuntu 12.04 ).

  1. Zainstaluj pakiet wsparcia matlab z centrum oprogramowania zgodnie z sugestią . Lub można użyć następującego polecenia: sudo apt-get install matlab-support.

  2. Tworzenie lokalnego pliku .desktop: gedit ~/.local/share/applications/matlab.desktop. Z jakiegoś powodu zapisanie go w katalogu / usr / share / applications spowodowało, że nie działało ono przy pierwszym logowaniu.

  3. Skopiuj i wklej następujący kod i zapisz. Ważną zmianą jest linia 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. Otwórz folder, w którym aplikacje po prostu zapisany plik matlab.desktop: nautilus ~/.local/share/applications.

  5. Przeciągnij i upuść plik matlab.desktop do programu uruchamiającego Unity.

Garrett Foster
źródło
To wygląda naprawdę obiecująco! Muszę jednak zrobić coś więcej - po wykonaniu tej czynności kliknięcie ikony Matlab w moim programie uruchamiającym powoduje: 1) okno powitalne z osobną ikoną programu uruchamiającego, a ikona, którą kliknąłem, zaczyna migać (przenikanie i na zewnątrz). 2) okno powitalne, a jego ikona znika, a ikona programu uruchamiającego I nadal miga. 3) Ikona przestaje migać i nic się nie dzieje.
Tomas Aschan
Upewniłem się również, że plik matlab.desktop jest własnością mnie (nie root) i że wszyscy użytkownicy mają uprawnienia do odczytu i wykonywania.
Tomas Aschan
Jeśli jednak uruchomię Matlaba z terminala lub Guake, używa on ikony, którą właśnie umieściłem w programie uruchamiającym - więc coś jest w porządku =)
Tomas Aschan
Ekran powitalny pojawi się sam, ale zniknie. Wynika to z faktu, że ma on inną klasę niż maszyna wirtualna Matlab (program główny). O ile się nie zaczyna, nie jestem pewien. Zwłaszcza, że ​​mówisz, że zaczyna się w terminalu (zakładam, że używam tego samego polecenia matlab -desktop)
Garrett Foster
Tak, używam tego samego polecenia. matlab &działa również bez problemów (tzn. -desktopprzełącznik nie jest konieczny przy uruchamianiu z terminala).
Tomas Aschan
1

Być może przychodzę do tego trochę za późno, ale udało mi się to, dodając wpis do aplikacji „Menu główne”. Wymieniłem go jako „aplikację”, a następnie podałem pełną ścieżkę do pliku wykonywalnego w katalogu MATLAB jako polecenie.

Musiałem także dodać flagę „-desktop” (bez cudzysłowów). Ponadto musiałem również użyć flagi „-glnx86”, ponieważ korzystam z wersji studenckiej w systemie 64-bitowym, ale to również działało dobrze.

Potem udało mi się uzyskać ikonę z tej strony .

Można to następnie znaleźć w menu aplikacji i przeciągnąć w dół do programu uruchamiającego. Jedyną rzeczą, która działa trochę dziwnie, jest to, że kiedy klikam na nią, w programie uruchamiającym pojawia się kolejna ikona MATLAB, zamiast korzystać z już tamtej. Jeśli ktokolwiek znajdzie sposób na rozwiązanie tego problemu, byłoby świetnie ... ale mogę z tym żyć tak, jak jest.

Tim
źródło