¿Cómo hago un lanzador de Matlab para Unity?

22

Estoy tratando de instalar un lanzador Matlab R2011a para Unity en Ubuntu 12.04. He probado esta guía (aunque sé que es para 11.10 y menciona que incluso 11.10 es un sistema operativo no compatible para Matlab R2011a) pero sin ninguna solución satisfactoria.

Este es mi archivo de inicio /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;

Abro el panel de instrumentos y busco "matlab". Este lanzador se encuentra entre las aplicaciones. Lo hago clic y aparece la pantalla de bienvenida de Matlab, pero cuando desaparece, el programa no se inicia. (He verificado con htopque tampoco se ejecutan procesos de matlab en segundo plano).

Si agrego

Terminal=true

en el archivo de inicio, el programa inicia OK y abre un terminal y Matlab. Sin embargo, tanto la terminal como Matlab se muestran en el área del Iniciador, con el ícono de Matlab, por lo que parece que tengo dos instancias de Matlab ejecutándose cuando realmente es solo una. (En realidad, aparecen como dos programas diferentes, y no solo como dos instancias de lo mismo: los íconos son independientes, no están agrupados).

Esto definitivamente no es óptimo. Tenía la esperanza de crear un iniciador que pueda bloquear en el área del iniciador, y luego ese mismo ícono será el ícono de la instancia activa de Matlab cuando el programa se esté ejecutando.

¿Cómo creo un lanzador para Matlab que funcione como se espera?

Actualización: Aparentemente no estaba claro sobre mis síntomas, intentaré aclarar un poco. También probé algunas sugerencias de las respuestas e investigé más a fondo lo que sucede. Mi configuración actual (un archivo de inicio con Terminal=truey Exec=matlab -desktop -nosplash &) presenta el siguiente comportamiento:

  1. Abro Dash presionando la tecla de Windows en mi computadora portátil y busco "matlab". Encuentra el lanzador llamado "MATLAB R2011a". Lo hago clic
  2. Se abre una ventana de terminal, usando el icono al que me referí en el archivo de inicio. Casi de inmediato, la pantalla de bienvenida de MATLAB también se abre, usando el mismo ícono (y, por lo tanto, se agrupa con la ventana de terminal en el iniciador).
  3. La pantalla de inicio desaparece y también uno de los íconos del iniciador. Se abre el entorno de escritorio de MATLAB, utilizando una versión diferente del icono que se muestra junto al icono de la ventana del terminal (no agrupado con él).

Puedo bloquear el ícono de la ventana de terminal en el iniciador e iniciar MATLAB con éxito haciendo clic en él, pero no me parece óptimo que inicie el programa con un ícono y lo cambie con otro. También probé lo siguiente:

  • Execsin el signo y &en el comando del lanzador, pero no hizo la diferencia.
  • La ejecución matlab -nosplashmanual desde un terminal aún muestra la pantalla de inicio. (Entonces, ¿qué hace realmente la opción nosplash?)
Tomás Aschan
fuente
¿Qué sucede cuando se ejecuta matlabmanualmente en una ventana de Terminal?
Eliah Kagan
@EliahKagan: Eso funciona perfectamente bien. No parece importar si corro matlabo matlab -desktoptampoco.
Tomas Aschan
Tengo exactamente el mismo problema con los iconos. También instalé el paquete de Ubuntu para matlab desde los repositorios. Me parece realmente extraño que una vez que comience matlab se cree otro ícono y si bloquea el nuevo en el iniciador, el nuevo no abrirá matlab ...
Felipe

Respuestas:

14

La respuesta de Garrett casi funciona para mí, pero en cambio tengo que usar

StartupWMClass=sun-awt-X11-XFramePeer

Esto todavía da un ícono de iniciador adicional mientras la pantalla de bienvenida está visible (porque el WM_CLASS de la pantalla de spash es solo "MATLAB"), pero luego la ventana se agrupa correctamente debajo del iniciador.

Las nuevas instancias de Matlab (comenzadas por terminal, o Synapse, o desde otro tty con export DISPLAY=:0) también se agrupan en este lanzador, y la opción de dejar de fumar del lanzador las mata a todas.

Encontré este valor WM_CLASS usando

$ xprop WM_CLASS

y luego haciendo clic en la ventana de Matlab, un comando que recibí de Superusuario .

Para evitar el icono de lanzador adicional temporal, también puede agregar la -nosplashbandera después de la -desktop.

Entonces, mi ~/.local/share/applications/MATLAB.desktopaspecto es el siguiente:

[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

Esto está en Ubuntu 12.10, con Matlab R2012b

tsbertalan
fuente
Esto funciona exactamente como me gustaría. ¡Muchas gracias!
Tomas Aschan
2
He ampliado un poco tu respuesta . explicación aquí
ovejas voladoras
No sé de dónde obtuvieron sus logotipos otras personas, pero esto funciona:$ sudo wget http://upload.wikimedia.org/wikipedia/commons/2/21/Matlab_Logo.png -O /usr/share/pixmaps/matlab.png
Neil Traft
7

Eso es muy raro. matlab -desktopRealmente debería hacer el truco.

Enfoque 1: vea qué le pasa al lanzador

Tengo un icono de MATLAB en funcionamiento en mi barra lateral de Unity. Puedo hacer clic en él, mantiene el icono correcto y no abre una terminal. Sin embargo, hasta donde puedo ver, es más o menos lo mismo que su código:

[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

El código anterior está en matlab.desktop, que se coloca en /usr/share/applications/. Las únicas diferencias que veo que podrían importar son (i) la Execruta, pero si instaló enlaces simbólicos durante las instalaciones de MATLAB, la suya debería funcionar bien y (ii) estoy ejecutando MATLAB R2011b.

Como tú, estoy ejecutando Ubuntu 12.04.

En caso de que me haya perdido algo, podría intentar usar mi código para iniciar MATLAB, quién sabe, podría funcionar.

Enfoque 2: una solución sucia con el terminal

Usted mencionó que entrar matlab -desktopen el terminal funciona (es decir, agregar Terminal=true). Sin embargo, eso le da dos pantallas agrupadas bajo MATLAB.

Puede intentar solucionar esto cambiando la forma en que llama al proceso. La clave aquí sería el &símbolo de ampersand . Lo que hace es ejecutar el código anterior, sin esperar a que termine. Idealmente, iniciaría el terminal, dejaría que el terminal iniciara MATLAB e inmediatamente cerraría el terminal, dejando MATLAB en ejecución. ¿Qué sucede si comienzas matlab desde la terminal con el ampersand después de la línea, o:

matlab -desktop &

Si eso funciona, puede intentar (i) hacer un lanzador con Terminal=trueel código anterior o (ii) hacer un lanzador que se refiera a un script bash, que a su vez llama al código anterior.

Para usted, el Enfoque 1 no ayudó. Si el Enfoque 2 tampoco funciona, puede ser bueno jugar un poco, vea lo que puede y no puede hacer con los scripts de ampersand, terminal y bash. No tengo buenas ideas, pero alguien más inteligente que yo podría ayudarte en ese momento.

Tomás
fuente
Probé tu código, pero sin éxito. Además, (i) instalé enlaces simbólicos durante la instalación de Matlab. (ii) Por supuesto, esa podría ser la diferencia que importa: desafortunadamente, esta es una licencia académica y yo R2011a es la última edición disponible para mí, por lo que no puedo probarlo con R2011b = (
Tomas Aschan
Acabo de editar mi publicación, agregando otra idea. Háganos saber cómo funciona eso para usted.
Tomás
¡Gracias! Sin embargo, no hizo mucha diferencia. Parece que no he sido muy claro sobre mis síntomas; por favor vea la actualización de OP para alguna aclaración.
Tomas Aschan
Ajá, para que puedas iniciar MATLAB usando el lanzador que has creado. Es solo el icono que está mal. Me temo que si recurre a la solución de terminal descrita en el Enfoque 2, no obtendrá el icono correcto. Tuve exactamente el mismo problema, pero pude llamar a MATLAB usando matlab -desktop(ver Enfoque 1). Para mí, eso convoca a MATLAB, con la pantalla de bienvenida y el ícono correcto para la interfaz principal. Se coloca debajo del lanzador bloqueado. Si desea el ícono correcto y no puede ejecutar MATLAB a través de un iniciador con matlab -desktop, no tengo ideas. Te haré saber si se me ocurre algo.
Tomás
¿Cómo ves ese texto correspondiente al archivo .desktop?
DBinJP
4

Instalé un archivo / script de configuración de Matlab desde el Centro de software. Enumera el iniciador de Matlab en el tablero y funciona perfectamente para Matlab2011a en Ubuntu 12.04. Pero no funciona desde el lanzador. Quiero decir, si lo bloqueas en el iniciador e intentas iniciarlo desde allí, entonces no funcionará, al menos no funciona para mí. Así que tengo que comenzar desde el tablero.

Para instalar esto, vaya al Centro de software de Ubuntu , busque el Matlab , debe ser el primero en la lista (el icono es un logotipo de Matlab). Simplemente instálelo y se encargará del resto.

maqtanim
fuente
1
¡Buen consejo! Sin embargo, viene con exactamente los mismos problemas que mi lanzador creado por mí mismo.
Tomas Aschan
genial, gracias @maqtanim! funciona como un encanto para mí (ubuntu 12.10 amd64)
amc
Funcionó perfectamente para mí (Matlab R2013a en 12.10). Antes de instalar esto, ni siquiera tenía un lanzador. Enlace al Centro de software: apt.ubuntu.com/p/matlab-support
Tobold
3

Esto es lo que hice para que las cosas funcionen correctamente comenzando con una nueva instalación ( versión R2010b en Ubuntu 12.04 ).

  1. Instale el paquete matlab-support desde el centro de software como se sugiere . O puede utilizar el siguiente comando: sudo apt-get install matlab-support.

  2. Crear un archivo .desktop locales: gedit ~/.local/share/applications/matlab.desktop. Por alguna razón, guardarlo en / usr / share / aplicaciones hizo que no funcionara cuando inicie sesión por primera vez.

  3. Copie y pegue el siguiente código y guárdelo. El cambio importante es la línea 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. Abrir las aplicaciones de la carpeta en la que acaba de guardar el archivo matlab.desktop: nautilus ~/.local/share/applications.

  5. Arrastre y suelte el archivo matlab.desktop en el iniciador de la unidad.

Garrett Foster
fuente
¡Esto parece muy prometedor! Sin embargo, hay algo más que necesito hacer: después de hacer esto, al hacer clic en el ícono de Matlab en mi iniciador se hace lo siguiente: 1) se muestra una ventana de bienvenida, con su propio ícono de iniciador separado, y el ícono en el que hice clic comienza a parpadear (desvaneciéndose y fuera). 2) la ventana de bienvenida, y su ícono desaparece, y el ícono del iniciador I continúa parpadeando. 3) El icono deja de parpadear y no sucede nada.
Tomas Aschan
También me he asegurado de que el archivo matlab.desktop es mío (no root) y que todos los usuarios tienen derechos de lectura y ejecución.
Tomas Aschan
Sin embargo, si inicio Matlab desde la terminal o Guake, usa el ícono que acabo de poner en el lanzador, así que algo está bien =)
Tomas Aschan
La pantalla de inicio se mostrará por sí sola, pero desaparecerá. Esto se debe a que tiene una clase diferente que la máquina virtual de Matlab (programa principal). En cuanto a no comenzar, no estoy seguro. Especialmente porque dices que comienza en la terminal (supongo que usa el mismo comando matlab -desktop)
Garrett Foster
Sí, uso el mismo comando. matlab &También funciona sin problemas (es decir, el -desktopinterruptor no es necesario cuando se inicia desde la terminal).
Tomas Aschan
1

Tal vez estoy llegando a esto un poco tarde, pero he logrado hacer esto agregando una entrada a la aplicación 'Menú principal'. Lo enumeré como una 'Aplicación' y luego proporcioné la ruta completa al ejecutable en el directorio de MATLAB como el Comando.

También tuve que agregar la bandera '-desktop' (sin comillas). Además, también tuve que usar el indicador '-glnx86' ya que estoy usando la versión para estudiantes en un sistema de 64 bits, pero eso también funcionó bien.

Luego logré obtener un ícono de este sitio web .

Esto se puede ubicar en el menú de la aplicación y arrastrar hacia el lanzador. Lo único que está actuando un poco extraño es que cuando hago clic en él, aparece otro ícono de MATLAB en el iniciador en lugar de simplemente usar el que ya está allí. Si alguien puede encontrar una manera de resolver esto, entonces sería genial ... pero puedo vivir con eso tal como está.

Tim
fuente