Wie erstelle ich einen Matlab-Launcher für Unity?

22

Ich versuche, einen Matlab R2011a-Launcher für Unity in Ubuntu 12.04 zu installieren. Ich habe dieses Handbuch ausprobiert (obwohl ich weiß, dass es für 11.10 ist und erwähnt, dass sogar 11.10 ein nicht unterstütztes Betriebssystem für Matlab R2011a ist), aber ohne zufriedenstellende Lösung.

Dies ist meine Startdatei /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;

Ich öffne die Schalttafel und suche nach "matlab". Dieser Launcher ist unter den Anwendungen zu finden. Ich klicke darauf und der Begrüßungsbildschirm von Matlab wird angezeigt, aber wenn er verschwindet, startet das Programm nicht. (Ich habe festgestellt, htopdass auch keine Matlab-Prozesse im Hintergrund laufen.)

Wenn ich hinzufüge

Terminal=true

In der Launcher-Datei startet das Programm OK und öffnet ein Terminal sowie Matlab. Das Terminal und Matlab selbst werden jedoch im Startbereich mit dem Matlab-Symbol angezeigt. Es sieht also so aus, als ob zwei Matlab-Instanzen ausgeführt werden, wenn es sich tatsächlich nur um eine handelt. (Tatsächlich werden sie als zwei verschiedene Programme und nicht nur als zwei Instanzen desselben angezeigt. Die Symbole sind unabhängig und nicht gruppiert.)

Das ist definitiv nicht optimal. Ich hatte gehofft, einen Launcher zu erstellen, den ich im Launcher-Bereich sperren kann, und dann wird dasselbe Symbol das Symbol für die aktive Matlab-Instanz sein, wenn das Programm ausgeführt wird.

Wie erstelle ich einen Launcher für Matlab, der wie erwartet funktioniert?

Update: Ich war anscheinend ein bisschen unklar über meine Symptome, ich werde versuchen, ein wenig zu klären. Ich habe auch einige Vorschläge aus den Antworten ausprobiert und weiter untersucht, was passiert. Mein aktuelles Setup (eine Launcher-Datei mit Terminal=trueund Exec=matlab -desktop -nosplash &) zeigt folgendes Verhalten:

  1. Ich öffne Dash durch Drücken der Windows-Taste auf meinem Laptop und suche nach "matlab". Es findet den Launcher "MATLAB R2011a". Ich klicke darauf.
  2. Ein Terminalfenster wird mit dem Symbol geöffnet, auf das ich in der Startdatei verwiesen habe. Fast sofort wird auch der Begrüßungsbildschirm von MATLAB mit demselben Symbol geöffnet (und somit mit dem Terminalfenster im Launcher gruppiert).
  3. Der Begrüßungsbildschirm wird ausgeblendet, und eines der Symbole im Startbildschirm wird ebenfalls ausgeblendet. Die MATLAB-Desktop-Umgebung wird mit einer anderen Version des Symbols geöffnet, das neben dem Symbol für das Terminalfenster angezeigt wird (nicht mit diesem gruppiert).

Ich kann das Symbol des Terminalfensters für den Launcher sperren und MATLAB erfolgreich starten, indem ich darauf klicke, aber es fühlt sich nicht optimal an, wenn ich das Programm mit einem Symbol starte und mit einem anderen zu ihm wechsle. Ich habe auch Folgendes versucht:

  • Execohne das kaufmännische Und &im Launcher-Befehl, aber es machte keinen Unterschied.
  • Bei der matlab -nosplashmanuellen Ausführung über ein Terminal wird weiterhin der Begrüßungsbildschirm angezeigt. (Was macht die Option nosplash dann wirklich?)
Tomas Aschan
quelle
Was passiert, wenn Sie matlabmanuell in einem Terminalfenster ausgeführt werden?
Eliah Kagan
@EliahKagan: Das funktioniert einwandfrei. Es scheint egal zu sein, ob ich renne matlaboder matlab -desktopnicht.
Tomas Aschan
Ich habe genau das gleiche Problem mit den Symbolen. Ich habe auch das Ubuntu-Paket für Matlab von den Repos installiert. Ich finde es wirklich seltsam, dass, sobald Sie Matlab starten, ein anderes Symbol erstellt wird und wenn Sie das neue Symbol für den Launcher sperren, wird das neue Matlab nicht geöffnet ...
Felipe

Antworten:

14

Garretts Antwort funktioniert fast bei mir, aber stattdessen muss ich sie verwenden

StartupWMClass=sun-awt-X11-XFramePeer

Während der Begrüßungsbildschirm sichtbar ist, wird immer noch ein zusätzliches Startersymbol angezeigt (da die WM_CLASS des Begrüßungsbildschirms nur "MATLAB" ist), aber dann wird das Fenster unter dem Starter richtig gruppiert.

Neue Instanzen von Matlab (gestartet von Terminal oder Synapse oder von einem anderen Tty mit export DISPLAY=:0) werden ebenfalls unter diesem Launcher gruppiert, und die Option zum Beenden des Launcher beendet alle von ihnen.

Ich habe diesen WM_CLASS-Wert mithilfe von gefunden

$ xprop WM_CLASS

und dann auf das Matlab-Fenster klicken, ein Befehl, den ich vom Superuser erhalten habe .

Um zu verhindern, dass das Symbol für den temporären zusätzlichen Starter angezeigt wird, können Sie das -nosplashFlag auch nach dem Symbol hinzufügen -desktop.

Also ~/.local/share/applications/MATLAB.desktopsieht mein so aus:

[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

Dies ist auf Ubuntu 12.10 mit Matlab R2012b

tsbertalan
quelle
Das funktioniert genau so, wie ich es möchte. Vielen Dank!
Tomas Aschan
2
Ich habe Ihre Antwort ein wenig erweitert . Erklärung hier
fliegende Schafe
Ich weiß nicht, wo andere Leute ihre Logos haben, aber das funktioniert:$ sudo wget http://upload.wikimedia.org/wikipedia/commons/2/21/Matlab_Logo.png -O /usr/share/pixmaps/matlab.png
Neil Traft
7

Das ist sehr merkwürdig. matlab -desktopsollte wirklich den Trick machen.

Ansatz 1: Sehen Sie, was mit dem Launcher nicht stimmt

Ich habe ein funktionierendes MATLAB-Symbol in meiner Unity-Seitenleiste. Ich kann darauf klicken, es behält das richtige Symbol bei und öffnet kein Terminal. Soweit ich sehen kann, ist es so ziemlich das Gleiche wie Ihr Code:

[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

Der obige Code befindet sich in matlab.desktop, das sich in befindet /usr/share/applications/. Die einzigen Unterschiede, die ich sehe, sind (i) der ExecPfad, aber wenn Sie Symlinks während Ihrer MATLAB-Installationen installiert haben, sollten Ihre funktionieren, und (ii) ich führe MATLAB R2011b aus.

Wie Sie verwende ich Ubuntu 12.04.

Falls ich etwas verpasst habe, können Sie versuchen, meinen Code zum Starten von MATLAB zu verwenden. Wer weiß, es könnte funktionieren.

Ansatz 2: Eine fehlerhafte Problemumgehung mit dem Terminal

Sie haben erwähnt, dass die Eingabe matlab -desktopim Terminal funktioniert (dh Hinzufügen Terminal=true). Dadurch erhalten Sie jedoch zwei Bildschirme, die unter MATLAB gruppiert sind.

Sie können versuchen, dies zu beheben, indem Sie die Art und Weise ändern, in der Sie den Prozess aufrufen. Der Schlüssel hier wäre das kaufmännische Und- &Zeichen. Führen Sie den vorhergehenden Code aus, ohne darauf zu warten, dass er beendet wird. Im Idealfall wird das Terminal gestartet, MATLAB gestartet und das Terminal sofort geschlossen, wobei MATLAB ausgeführt wird. Was passiert, wenn Sie matlab vom Terminal aus mit dem kaufmännischen Und nach der Zeile starten, oder:

matlab -desktop &

Wenn das funktioniert, können Sie versuchen (i) einen Launcher mit Terminal=truedem obigen Code zu erstellen oder (ii) einen Launcher zu erstellen, der auf ein Bash-Skript verweist, das wiederum den obigen Code aufruft.

Für Sie hat Ansatz 1 nicht geholfen. Wenn Ansatz 2 auch nicht funktioniert, ist es möglicherweise hilfreich, ein wenig herumzuspielen, um zu sehen, was Sie mit dem kaufmännischen Und-Zeichen, dem Terminal- und dem Bash-Skript tun können und was nicht. Ich habe so ziemlich keine guten Ideen mehr, aber jemand, der schlauer ist als ich, könnte Ihnen vielleicht helfen.

Tomas
quelle
Ich habe Ihren Code ausprobiert, aber ohne Erfolg. Außerdem (i) habe ich Symlinks während der Installation von Matlab installiert. (ii) Das könnte natürlich der entscheidende Unterschied sein - leider ist dies eine akademische Lizenz und ich R2011a ist die letzte mir zur Verfügung stehende Ausgabe, daher kann ich sie nicht mit R2011b testen = (
Tomas Aschan,
Ich habe gerade meinen Beitrag bearbeitet und eine weitere Idee hinzugefügt. Lassen Sie uns wissen, wie das für Sie funktioniert.
Tomas
Vielen Dank! Es machte jedoch keinen großen Unterschied. Ich war mir meiner Symptome anscheinend ein wenig unklar. Weitere Informationen finden Sie im OP-Update.
Tomas Aschan
Aha, Sie können MATLAB also mit dem von Ihnen erstellten Launcher starten. Es ist nur das Symbol, das falsch ist. Ich fürchte, wenn Sie auf die in Ansatz 2 beschriebene Terminallösung zurückgreifen, erhalten Sie nicht das richtige Symbol. Ich hatte genau das gleiche Problem, konnte aber MATLAB mit aufrufen matlab -desktop(siehe Ansatz 1). Für mich ruft das MATLAB mit dem Begrüßungsbildschirm und dem richtigen Symbol für die Hauptschnittstelle auf. Es befindet sich unter dem gesperrten Launcher. Wenn Sie das richtige Symbol möchten und MATLAB nicht über einen Launcher mit ausführen können matlab -desktop, sind mir die Ideen ausgegangen. Lass es dich wissen, wenn mir etwas einfällt.
Tomas
Wie sehen Sie den der .desktop-Datei entsprechenden Text?
DBinJP
4

Ich habe eine Matlab-Konfigurationsdatei / ein Matlab-Skript aus dem Software Center installiert. Es listet den Matlab-Launcher im Dash auf und funktioniert perfekt für Matlab2011a in Ubuntu 12.04. Aber es funktioniert nicht über den Launcher. Ich meine, wenn Sie es auf dem Launcher sperren und versuchen, es von dort aus zu starten, funktioniert es nicht, zumindest funktioniert es bei mir nicht. Also muss ich es vom Armaturenbrett aus starten.

Um dies zu installieren, gehen Sie zum Ubuntu Software Center und suchen Sie nach dem Matlab . Es sollte das erste in der Liste sein (das Symbol ist ein Matlab-Logo). Installieren Sie es einfach, und der Rest wird erledigt.

maqtanim
quelle
1
Guter Tipp! Es hat jedoch genau die gleichen Probleme wie mein selbst erstellter Launcher.
Tomas Aschan
toll, danke @maqtanim! funktioniert wie ein Zauber für mich (Ubuntu 12.10 amd64)
AMC
Funktionierte perfekt für mich (Matlab R2013a am 12.10). Vor der Installation hatte ich noch nicht einmal einen Launcher. Link zum Software Center: apt.ubuntu.com/p/matlab-support
Tobold
3

Hier ist, was ich getan habe, um die Dinge ab einer Neuinstallation ( Version R2010b unter Ubuntu 12.04 ) richtig zum Laufen zu bringen .

  1. Installieren Sie das matlab-Support-Paket wie vorgeschlagen aus dem Software-Center . Oder Sie können den folgenden Befehl verwenden: sudo apt-get install matlab-support.

  2. Erstellen Sie eine lokale Datei .desktop: gedit ~/.local/share/applications/matlab.desktop. Aus irgendeinem Grund funktionierte das Speichern in / usr / share / applications nicht, als ich mich zum ersten Mal anmeldete.

  3. Kopieren Sie den folgenden Code, fügen Sie ihn ein und speichern Sie ihn. Die wichtige Änderung ist die StartupWMClass- Zeile.

    [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. Öffnen Sie den Ordner , in dem Sie gerade die matlab.desktop Datei gespeichert: nautilus ~/.local/share/applications.

  5. Ziehen Sie die Datei matlab.desktop per Drag & Drop in den Unity Launcher.

Garrett Foster
quelle
Das sieht echt vielversprechend aus! Ich muss jedoch noch etwas anderes tun. Wenn Sie anschließend in meinem Launcher auf das Matlab-Symbol klicken, geschieht Folgendes: 1) Ein Begrüßungsfenster mit einem eigenen Launcher-Symbol wird angezeigt, und das Symbol, auf das ich geklickt habe, beginnt zu blinken (Einblenden und Ausblenden) aus). 2) Das Begrüßungsfenster und sein Symbol verschwinden und das Starter-Symbol I blinkt weiter. 3) Das Symbol hört auf zu blinken und es passiert nichts.
Tomas Aschan
Ich habe auch sichergestellt, dass die Datei matlab.desktop mir gehört (nicht root) und dass alle Benutzer Lese- und Ausführungsrechte haben.
Tomas Aschan
Wenn ich Matlab jedoch vom Terminal oder von Guake aus starte, wird das Symbol verwendet, das ich gerade in den Launcher eingefügt habe - also stimmt etwas =)
Tomas Aschan
Der Begrüßungsbildschirm wird von selbst angezeigt, verschwindet jedoch. Dies liegt daran, dass es eine andere Klasse als die virtuelle Matlab-Maschine (Hauptprogramm) hat. Soweit ich nicht anfange, bin ich mir nicht sicher. Vor allem, weil Sie sagen, dass es im Terminal startet (ich gehe davon aus, dass Sie denselben Befehl verwenden matlab -desktop)
Garrett Foster
Ja, ich benutze den gleichen Befehl. matlab &funktioniert auch problemlos (dh der -desktopSchalter ist beim Start vom Terminal nicht erforderlich).
Tomas Aschan
1

Ich komme vielleicht etwas spät dazu, aber ich habe es geschafft, indem ich der Anwendung 'Hauptmenü' einen Eintrag hinzugefügt habe. Ich habe es als 'Anwendung' aufgelistet und dann den vollständigen Pfad zur ausführbaren Datei im MATLAB-Verzeichnis als Befehl angegeben.

Ich musste auch das Flag '-desktop' (ohne Anführungszeichen) hinzufügen. Außerdem musste ich das Flag '-glnx86' verwenden, da ich die Studentenversion auf einem 64-Bit-System verwende, aber das hat auch gut funktioniert.

Ich habe es dann geschafft, ein Icon von dieser Website zu bekommen .

Dieser kann dann im Anwendungsmenü gefunden und in den Launcher gezogen werden. Das Einzige, was ein wenig seltsam wirkt, ist, dass beim Anklicken ein anderes MATLAB-Symbol im Launcher angezeigt wird, anstatt nur das bereits vorhandene zu verwenden. Wenn jemand einen Weg finden kann, dies zu lösen, dann wäre das großartig ... aber ich kann damit leben, wie es ist.

Tim
quelle