Comment créer un lanceur Matlab pour Unity?

22

J'essaie d'installer un lanceur Matlab R2011a pour Unity dans Ubuntu 12.04. J'ai essayé ce guide (bien que je sache que c'est pour 11.10 et mentionne que même 11.10 est un système d'exploitation non pris en charge pour Matlab R2011a) mais sans aucune solution satisfaisante.

Ce fichier est mon lanceur, /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;

J'ouvre le tableau de bord et recherche "matlab". Ce lanceur se trouve parmi les applications. Je clique dessus et l'écran de démarrage de Matlab apparaît, mais quand il disparaît, le programme ne démarre pas. (J'ai vérifié htopqu'aucun processus matlab ne s'exécute en arrière-plan non plus.)

Si j'ajoute

Terminal=true

dans le fichier du lanceur, le programme démarre OK et ouvre un terminal ainsi que Matlab. Cependant, le terminal et Matlab lui-même apparaissent dans la zone du lanceur, avec l'icône Matlab, il semble donc que j'ai deux instances Matlab en cours d'exécution alors qu'il ne s'agit vraiment que d'une seule. (En fait, ils apparaissent comme deux programmes différents, et pas seulement deux instances du même - les icônes sont indépendantes, pas regroupées.)

Ce n'est certainement pas optimal. J'avais espéré créer un lanceur que je peux verrouiller dans la zone du lanceur, puis cette même icône sera l'icône de l'instance Matlab active lorsque le programme est en cours d'exécution.

Comment créer un lanceur pour Matlab qui fonctionne comme prévu?

Mise à jour: j'étais apparemment un peu flou sur mes symptômes, je vais essayer de clarifier un peu. J'ai également essayé quelques suggestions à partir des réponses et approfondi ce qui se passe. Ma configuration actuelle (un fichier de lancement avec Terminal=trueet Exec=matlab -desktop -nosplash &) affiche le comportement suivant:

  1. J'ouvre Dash en appuyant sur la touche Windows de mon ordinateur portable et recherche «matlab». Il trouve le lanceur nommé "MATLAB R2011a". Je clique dessus.
  2. Une fenêtre de terminal s'ouvre, utilisant l'icône à laquelle j'ai fait référence dans le fichier du lanceur. Presque immédiatement, l'écran de démarrage de MATLAB s'ouvre également, en utilisant la même icône (et donc être regroupé avec la fenêtre du terminal dans le lanceur).
  3. L'écran de démarrage disparaît ainsi que l'une des icônes du lanceur. L'environnement de bureau MATLAB s'ouvre, en utilisant une version différente de l'icône qui s'affiche à côté de l'icône de la fenêtre du terminal (non groupée avec elle).

Je peux verrouiller l'icône de la fenêtre du terminal sur le lanceur et démarrer avec succès MATLAB en cliquant dessus, mais il ne semble pas optimal que je démarre le programme avec une icône et que je passe à celle-ci avec une autre. J'ai également essayé ce qui suit:

  • Execsans esperluette &dans la commande du lanceur, mais cela n'a pas fait de différence.
  • L'exécution matlab -nosplashmanuelle à partir d'un terminal affiche toujours l'écran de démarrage. (Que fait alors l'option nosplash?)
Tomas Aschan
la source
Que se passe-t-il lorsque vous exécutez matlabmanuellement dans une fenêtre de terminal?
Eliah Kagan
@EliahKagan: Cela fonctionne parfaitement bien. Cela ne semble pas avoir d'importance si je cours matlabou matlab -desktopnon.
Tomas Aschan
J'ai exactement le même problème avec les icônes. J'ai également installé le paquet Ubuntu pour matlab à partir des dépôts. Je trouve vraiment bizarre qu'une fois que vous démarrez matlab, une autre icône soit créée et si vous verrouillez la nouvelle sur le lanceur, la nouvelle n'ouvrira pas matlab ...
Felipe

Réponses:

14

La réponse de Garrett fonctionne presque pour moi, mais je dois plutôt utiliser

StartupWMClass=sun-awt-X11-XFramePeer

Cela donne toujours une icône de lanceur supplémentaire pendant que l'écran de démarrage est visible (car le WM_CLASS du écran de démarrage est simplement "MATLAB"), mais la fenêtre est ensuite correctement regroupée sous le lanceur.

Les nouvelles instances de Matlab (démarrées par le terminal, ou Synapse, ou à partir d'un autre tty avec export DISPLAY=:0) sont également regroupées sous ce lanceur, et l'option de sortie du lanceur les tue toutes.

J'ai trouvé cette valeur WM_CLASS en utilisant

$ xprop WM_CLASS

puis en cliquant sur la fenêtre Matlab, une commande que j'ai reçue de Superuser .

Pour empêcher l'icône de lanceur supplémentaire temporaire, vous pouvez également ajouter le -nosplashdrapeau après celui- -desktopci.

Donc, mon ~/.local/share/applications/MATLAB.desktoplook ressemble à ceci:

[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

C'est sur Ubuntu 12.10, avec Matlab R2012b

tsbertalan
la source
Cela fonctionne exactement comme je le souhaiterais. Merci beaucoup!
Tomas Aschan
2
j'ai développé un peu votre réponse . explication ici
moutons volants
Je ne sais pas où les autres personnes ont obtenu leurs logos mais cela fonctionne:$ sudo wget http://upload.wikimedia.org/wikipedia/commons/2/21/Matlab_Logo.png -O /usr/share/pixmaps/matlab.png
Neil Traft
7

C'est très étrange. matlab -desktopdevrait vraiment faire l'affaire.

Approche 1: voyez ce qui ne va pas avec le lanceur

J'ai une icône MATLAB fonctionnelle dans ma barre latérale Unity. Je peux cliquer dessus, il conserve l'icône correcte et n'ouvre pas de terminal. Pour autant que je puisse voir, c'est à peu près la même chose que votre code, cependant:

[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

Le code ci-dessus se trouve dans matlab.desktop, qui est placé dans /usr/share/applications/. Les seules différences que je vois qui pourraient avoir une importance sont (i) le Execchemin, mais si vous avez installé des liens symboliques pendant vos installations MATLAB, le vôtre devrait fonctionner très bien et (ii) j'utilise MATLAB R2011b.

Comme vous, j'utilise Ubuntu 12.04.

Au cas où j'aurais raté quelque chose, vous pourriez essayer d'utiliser mon code pour démarrer MATLAB, qui sait, cela pourrait fonctionner.

Approche 2: une solution de contournement sale avec le terminal

Vous avez mentionné l'entrée matlab -desktopdans les travaux du terminal (c'est-à-dire l'ajout Terminal=true). Cependant, cela vous donne deux écrans regroupés sous MATLAB.

Vous pouvez essayer de résoudre ce problème en modifiant la façon dont vous appelez le processus. La clé ici serait le &symbole de l'esperluette . Ce qui fait, c'est exécuter le code précédent, sans attendre qu'il se termine. Idéalement, il devrait démarrer le terminal, laisser le terminal démarrer MATLAB et fermer immédiatement le terminal, laissant MATLAB en cours d'exécution. Que se passe-t-il si vous démarrez matlab depuis le terminal avec l'esperluette après la ligne, ou:

matlab -desktop &

Si cela fonctionne, vous pouvez essayer (i) de créer un lanceur avec Terminal=truele code ci-dessus ou (ii) de créer un lanceur qui se réfère à un script bash, qui à son tour appelle le code ci-dessus.

Pour vous, l'approche 1 n'a pas aidé. Si l'approche 2 ne fonctionne pas non plus, il peut être bon de jouer un peu, voyez ce que vous pouvez et ne pouvez pas faire avec les esperluette, le terminal et les scripts bash. Je suis à peu près à court de bonnes idées, mais quelqu'un de plus intelligent que moi pourrait alors vous aider.

Tomas
la source
J'ai essayé votre code, mais sans succès. De plus, (i) j'ai installé des liens symboliques lors de l'installation de Matlab. (ii) Cela pourrait bien sûr être la différence qui compte - malheureusement, c'est une licence académique et je R2011a est la dernière édition à ma disposition, donc je ne peux pas le tester avec R2011b = (
Tomas Aschan
Je viens de modifier mon article, en ajoutant une autre idée. Laisse-nous savoir comment ça marche pour toi.
Tomas
Merci! Cependant, cela n'a pas fait beaucoup de différence. Je semble avoir été un peu flou sur mes symptômes; veuillez consulter la mise à jour OP pour obtenir des éclaircissements.
Tomas Aschan
Aha, vous pouvez donc démarrer MATLAB en utilisant le lanceur que vous avez créé. C'est juste l'icône qui ne va pas. Je crains que si vous utilisez la solution de terminal décrite dans l'approche 2, vous n'obtiendrez pas la bonne icône. J'ai eu exactement le même problème, mais j'ai pu appeler MATLAB en utilisant matlab -desktop(voir approche 1). Pour moi, cela invoque MATLAB, avec l'écran de démarrage et l'icône correcte pour l'interface principale. Il est placé sous le lanceur verrouillé. Si vous voulez l'icône correcte et ne pouvez pas exécuter MATLAB avec un lanceur avec matlab -desktop, je suis à court d'idées. Je vous ferai savoir si je trouve quelque chose.
Tomas
Comment voyez-vous ce texte correspondant au fichier .desktop?
DBinJP
4

J'ai installé un fichier / script de configuration Matlab à partir du Centre logiciel. Il répertorie le lanceur Matlab dans le tableau de bord et fonctionne parfaitement pour Matlab2011a dans Ubuntu 12.04. Mais cela ne fonctionne pas depuis le lanceur. Je veux dire, si vous le verrouillez sur le lanceur et essayez de le démarrer à partir de là, cela ne fonctionnera pas, du moins cela ne fonctionne pas pour moi. Je dois donc le démarrer depuis le tableau de bord.

Pour l'installer, allez sur Ubuntu Software Center , recherchez le Matlab , il doit être le premier de la liste (l'icône est un logo Matlab). Il suffit de l'installer et il s'occupera du reste.

maqtanim
la source
1
Bon conseil! Cependant, il vient exactement avec les mêmes problèmes que mon lanceur auto-créé.
Tomas Aschan
super, merci @maqtanim! fonctionne comme un charme pour moi (ubuntu 12.10 amd64)
amc
Fonctionne parfaitement pour moi (Matlab R2013a le 12.10). Avant d'installer cela, je n'avais même pas de lanceur. Lien vers le centre logiciel: apt.ubuntu.com/p/matlab-support
Tobold
3

Voici ce que j'ai fait pour que les choses fonctionnent correctement à partir d'une nouvelle installation ( version R2010b sur Ubuntu 12.04 ).

  1. Installez le package de support matlab à partir du centre de logiciels comme suggéré . Ou vous pouvez utiliser la commande suivante: sudo apt-get install matlab-support.

  2. Créez un fichier .desktop local: gedit ~/.local/share/applications/matlab.desktop. Pour une raison quelconque, l'enregistrer dans / usr / share / applications l'a empêché de fonctionner lors de ma première connexion.

  3. Copiez et collez le code suivant et enregistrez. Le changement important est la ligne 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. Ouvrez les applications dossier dans lequel vous venez d' enregistrer le fichier matlab.desktop: nautilus ~/.local/share/applications.

  5. Faites glisser et déposez le fichier matlab.desktop dans le lanceur d'unité.

Garrett Foster
la source
Cela semble vraiment prometteur! Cependant, il y a quelque chose de plus que je dois faire - après cela, cliquer sur l'icône Matlab dans mon lanceur fait ce qui suit: 1) une fenêtre de démarrage s'affiche, avec sa propre icône de lanceur distincte, et l'icône sur laquelle j'ai cliqué commence à clignoter (fondu et en dehors). 2) la fenêtre de démarrage, et son icône disparaît, et l'icône du lanceur I continue de clignoter. 3) L'icône cesse de clignoter et rien ne se passe.
Tomas Aschan
J'ai également vérifié que le fichier matlab.desktop m'appartient (pas root) et que tous les utilisateurs ont des droits de lecture et d'exécution.
Tomas Aschan
Cependant, si je démarre Matlab depuis le terminal ou Guake, il utilise l'icône que je viens de mettre dans le lanceur - donc quelque chose ne va pas =)
Tomas Aschan
L'écran de démarrage apparaîtra de lui-même, mais disparaîtra. Cela est dû au fait qu'il a une classe différente de celle de la machine virtuelle Matlab (programme principal). Pour autant que je ne démarre pas, je ne suis pas sûr. D'autant plus que vous dites que ça commence dans le terminal (je suppose en utilisant la même commande matlab -desktop)
Garrett Foster
Oui, j'utilise la même commande. matlab &fonctionne également sans problème (c'est-à-dire que le -desktopcommutateur n'est pas nécessaire lors du démarrage à partir du terminal).
Tomas Aschan
1

J'y arrive peut-être un peu tard, mais j'ai réussi à le faire en ajoutant une entrée à l'application «Menu principal». Je l'ai répertorié comme une «application», puis j'ai fourni le chemin d'accès complet à l'exécutable dans le répertoire MATLAB en tant que commande.

J'ai également dû ajouter le drapeau '-desktop' (sans guillemets). De plus, j'ai également dû utiliser l'indicateur '-glnx86' car j'utilise la version Student sur un système 64 bits, mais cela a également bien fonctionné.

J'ai ensuite réussi à obtenir une icône de ce site Web .

Celui-ci peut ensuite être localisé dans le menu de l'application et glissé vers le bas dans le lanceur. La seule chose qui agit un peu étrange est que lorsque je clique dessus, une autre icône MATLAB apparaît dans le lanceur au lieu de simplement utiliser celle qui s'y trouve déjà. Si quelqu'un peut trouver un moyen de résoudre ce problème, ce serait formidable ... mais je peux vivre avec.

Tim
la source