¿Cómo hago un launcher Matlab para Unity?

21

Estoy tratando de instalar un iniciador Matlab R2011a para Unity en Ubuntu 12.04. He intentado 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 iniciador, /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. Hago clic en él y aparece la pantalla de presentación de Matlab, pero cuando desaparece, el programa no se inicia. (He verificado con htop que tampoco se están ejecutando procesos matlab en el fondo).

Si agrego

Terminal=true

al archivo iniciador, el programa comienza bien y abre un terminal y Matlab. Sin embargo, tanto el terminal como Matlab se muestran en el área del Iniciador, con el icono de Matlab, por lo que parece que tengo dos instancias de Matlab ejecutándose cuando en realidad es solo una. (En realidad, se muestran como dos programas diferentes, y no solo dos instancias del mismo: los iconos 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 icono será el icono de la instancia activa de Matlab cuando se esté ejecutando el programa.

¿Cómo creo un iniciador para Matlab que funciona como se espera?

Actualización: Al parecer no estaba muy claro sobre mis síntomas, trataré de aclarar un poco. También probé algunas sugerencias de las respuestas y seguí investigando lo que sucede. Mi configuración actual (un archivo de inicio con Terminal=true y Exec=matlab -desktop -nosplash & ) representa el siguiente comportamiento:

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

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

  • Exec sin el ampersand & en el comando de inicio, pero no hizo la diferencia.
  • La ejecución de matlab -nosplash manualmente desde un terminal sigue mostrando la pantalla de bienvenida. (Entonces, ¿la opción nosplash realmente funciona?)
pregunta Tomas Lycken 19.05.2012 - 13:17

5 respuestas

13

La respuesta de Garrett casi me funciona, pero en su lugar tengo que usar

StartupWMClass=sun-awt-X11-XFramePeer

Esto todavía da un ícono de iniciador extra mientras la pantalla de presentación es visible (porque WM_CLASS de la pantalla de búsqueda es solo "MATLAB"), pero luego la ventana se agrupa apropiadamente debajo del iniciador.

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

Encontré este valor de WM_CLASS usando

$ xprop WM_CLASS

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

Para evitar el icono del extractor temporal adicional, también puede agregar el indicador -nosplash después del -desktop one.

Entonces, mi ~/.local/share/applications/MATLAB.desktop se ve así:

[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

    
respondido por el tsbertalan 10.03.2013 - 08:25
7

Eso es muy extraño. matlab -desktop realmente debería hacer el truco.

Método 1: ver qué pasa con el iniciador

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 un terminal. Por lo que puedo ver, es más o menos lo mismo que tu 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 ruta Exec , pero si instaló enlaces simbólicos durante las instalaciones de MATLAB, el suyo 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.

Método 2: una solución sucia con el terminal

Mencionaste que ingresaste matlab -desktop en la terminal funciona (es decir, agregando Terminal=true ). Sin embargo, eso le da dos pantallas agrupadas en el MATLAB.

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

matlab -desktop &

Si eso funciona, podrías intentar (i) crear un iniciador con Terminal=true y el código anterior o (ii) crear un iniciador que haga referencia a un script bash, que a su vez llama al código anterior.

Para ti, el Método 1 no ayudó. Si el Método 2 tampoco funciona, podría ser bueno jugar un poco, ver lo que puede y no puede hacer con los scripts de ampersand, terminal y bash. Casi no tengo buenas ideas, pero alguien más inteligente que yo podría ayudarte luego.

    
respondido por el Tomas 21.05.2012 - 05:24
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 está funcionando desde el iniciador. Quiero decir, si lo bloquea en el iniciador e intenta 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 Matlab , debería ser el primero en la lista (el icono es un logotipo de Matlab) . Simplemente instálalo y se encargará del resto.

    
respondido por el maqtanim 21.05.2012 - 04:34
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 de soporte de matlab desde el centro de software como sugerido . O puede usar el siguiente comando: sudo apt-get install matlab-support .

  2. Crea un archivo local .desktop: gedit ~/.local/share/applications/matlab.desktop . Por alguna razón, guardarlo en / usr / share / applications hizo que no funcionara cuando primero inicié sesión.

  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. Abra la carpeta de aplicaciones donde acaba de guardar el archivo matlab.desktop: nautilus ~/.local/share/applications .

  5. Arrastra y suelta el archivo matlab.desktop en el selector de unidades.

respondido por el Garrett Foster 24.05.2012 - 05:27
1

Tal vez llegue a esto un poco tarde, pero logré 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 MATLAB como el Comando.

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

Luego logré obtener un icono de este sitio web .

Esto se puede ubicar en el menú de la aplicación y arrastrar hacia abajo en el iniciador. 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 solo hacer uso del que ya está allí. Si alguien puede encontrar una manera de resolver esto, entonces sería genial ... pero puedo vivir como está.

    
respondido por el Tim 11.10.2012 - 17:42

Lea otras preguntas en las etiquetas