Come posso creare un launcher Matlab per Unity?

21

Sto cercando di installare un launcher Matlab R2011a per Unity in Ubuntu 12.04. Ho provato questa guida (anche se so che è per 11.10 e menzioni che anche 11.10 è un OS non supportato per Matlab R2011a) ma senza alcuna soluzione soddisfacente.

Questo è il mio file di avvio, /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;

Apro il pannello del cruscotto e cerco "matlab". Questo launcher si trova tra le applicazioni. Lo clicco e compare la schermata iniziale di Matlab, ma quando scompare il programma non parte. (Ho verificato con htop che nessun processo matlab è in esecuzione in background.)

Se aggiungo

Terminal=true

nel file di avvio, il programma inizia OK e apre un terminale e anche Matlab. Tuttavia, sia il terminale che lo stesso Matlab appaiono nell'area Launcher, con l'icona Matlab, quindi sembra che io abbia istanze di due Matlab in esecuzione quando in realtà è solo una. (In realtà, si presentano come due programmi diversi, e non solo due istanze dello stesso - le icone sono indipendenti, non raggruppate.)

Questo non è assolutamente ottimale. Speravo di creare un launcher che posso bloccare nell'area di avvio, e quindi quella stessa icona sarà l'icona per l'istanza Matlab attiva quando il programma è in esecuzione.

Come faccio a creare un launcher per Matlab che funzioni come previsto?

Aggiornamento: ero apparentemente poco chiaro sui miei sintomi, cercherò di chiarire un po '. Ho anche provato alcuni suggerimenti dalle risposte e ho studiato ulteriormente cosa succede. La mia configurazione corrente (un file di avvio con Terminal=true e Exec=matlab -desktop -nosplash & ) restituisce il seguente comportamento:

  1. Apro Dash premendo il tasto Windows sul mio laptop e cerco "matlab". Trova il programma di avvio denominato "MATLAB R2011a". Lo clicco.
  2. Si apre una finestra di terminale che utilizza l'icona a cui mi riferisco nel file di avvio. Quasi immediatamente, si apre anche la schermata iniziale di MATLAB, usando la stessa icona (e quindi raggruppata con la finestra del terminale nel programma di avvio).
  3. La schermata iniziale scompare e, quindi, una delle icone nel programma di avvio. L'ambiente desktop MATLAB si apre, utilizzando una versione diversa dell'icona che viene visualizzata accanto all'icona per la finestra del terminale (non raggruppata con essa).

Posso bloccare l'icona della finestra del terminale al programma di avvio e avviare MATLAB con successo facendo clic su di esso, ma non mi sembra ottimale iniziare il programma con un'icona e passare ad esso con un altro. Ho anche provato quanto segue:

  • Exec senza la e commerciale & nel comando di avvio, ma non ha fatto differenza.
  • L'esecuzione manuale di matlab -nosplash da un terminale mostra ancora la schermata iniziale. (Cosa fa, quindi, l'opzione nosplash?)
posta Tomas Lycken 19.05.2012 - 15:17

5 risposte

13

La risposta di Garrett quasi funziona per me, ma invece devo usare

StartupWMClass=sun-awt-X11-XFramePeer

Questo fornisce ancora un'ulteriore icona di avvio mentre la schermata iniziale è visibile (perché il WM_CLASS della schermata spash è solo "MATLAB"), ma la finestra viene correttamente raggruppata sotto il programma di avvio.

Nuove istanze di Matlab (avviate da terminale, o Synapse, o da un altro tty con export DISPLAY=:0 ) vengono anch'esse raggruppate in questo launcher e l'opzione di chiusura del launcher le uccide tutte.

Ho trovato questo valore WM_CLASS utilizzando

$ xprop WM_CLASS

e quindi facendo clic sulla finestra di Matlab, un comando che ho ricevuto da Superuser .

Per impedire l'icona di avvio extra temporaneo, puoi anche aggiungere il flag -nosplash dopo -desktop .

Quindi, il mio ~/.local/share/applications/MATLAB.desktop assomiglia a questo:

[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

Questo è su Ubuntu 12.10, con Matlab R2012b

    
risposta data tsbertalan 10.03.2013 - 09:25
7

È molto strano. matlab -desktop dovrebbe davvero fare il trucco.

Metodo 1: vedi cosa c'è di sbagliato nel programma di avvio

Ho un'icona MATLAB funzionante nella barra laterale di Unity. Posso cliccarlo, mantiene l'icona corretta e non apre un terminale. Per quanto posso vedere è praticamente uguale al tuo codice, però:

[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

Il codice precedente è in matlab.desktop, che è posto in /usr/share/applications/ . Le uniche differenze che vedo potrebbero essere (i) il percorso Exec , ma se hai installato i link simbolici durante le tue installazioni MATLAB il tuo dovrebbe funzionare bene e (ii) sto utilizzando MATLAB R2011b.

Come te, sto usando Ubuntu 12.04.

Nel caso in cui mi sia sfuggito qualcosa, potresti provare a usare il mio codice per avviare MATLAB, chissà, potrebbe funzionare.

Approccio 2: una soluzione sporca con il terminale

Hai menzionato l'immissione di matlab -desktop nei lavori del terminale (ad esempio aggiungendo Terminal=true ). Tuttavia, questo ti dà due schermate raggruppate sotto il MATLAB.

Potresti provare a risolvere questo problema cambiando il modo in cui chiami il processo. La chiave qui sarebbe il simbolo commerciale e & . Quello che fa è eseguire il codice precedente, non aspettando che finisca. Idealmente, avrebbe avviato il terminale, lasciato che il terminale avvii MATLAB e chiudesse immediatamente il terminale, lasciando in esecuzione MATLAB. Cosa succede se si avvia matlab dal terminale con la e commerciale dopo la linea, o:

matlab -desktop &

Se funziona, puoi provare (i) a fare un launcher con Terminal=true e il codice sopra o (ii) facendo un launcher che fa riferimento a uno script bash, che a sua volta chiama il codice precedente.

Per te, l'approccio 1 non ha aiutato. Se Approach 2 non funziona, potrebbe essere utile giocare un po ', vedere cosa si può e non si può fare con la e commerciale, il terminale e gli script di bash. Sono praticamente fuori di buone idee, ma qualcuno più intelligente di me potrebbe essere in grado di aiutarti allora.

    
risposta data Tomas 21.05.2012 - 07:24
4

Ho installato un file / script di configurazione Matlab dal Software Center. Elenca il launcher Matlab nel cruscotto e funziona perfettamente per Matlab2011a in Ubuntu 12.04. Ma non funziona dal launcher. Voglio dire, se lo blocchi sul programma di avvio e provi ad avviarlo da lì, allora non funzionerà, almeno non funziona per me. Quindi devo iniziare dal cruscotto.

Per installarlo, vai su Centro software Ubuntu , cerca Matlab , dovrebbe essere il primo della lista (l'icona è un logo Matlab) . Basta installarlo e si occuperà del resto.

    
risposta data maqtanim 21.05.2012 - 06:34
3

Ecco cosa ho fatto per far funzionare le cose correttamente a partire da una nuova installazione ( versione R2010b su Ubuntu 12.04 ).

  1. Installa il pacchetto matlab-support dal centro software come suggerito . Oppure puoi utilizzare il seguente comando: sudo apt-get install matlab-support .

  2. Crea un file .desktop locale: gedit ~/.local/share/applications/matlab.desktop . Per qualche ragione, il salvataggio in / usr / share / applications ha causato il mancato funzionamento al primo accesso.

  3. Copia e incolla il seguente codice e salva. La modifica importante è la riga 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. Apri la cartella delle applicazioni in cui hai appena salvato il file matlab.desktop: nautilus ~/.local/share/applications .

  5. Trascina e rilascia il file matlab.desktop sul launcher dell'unità.

risposta data Garrett Foster 24.05.2012 - 07:27
1

Forse ci arriveremo un po 'in ritardo, ma sono riuscito a farlo aggiungendo una voce all'applicazione "Menu principale". L'ho elencato come 'Applicazione' e poi ho fornito il comando completo dell'eseguibile nella directory MATLAB come comando.

Ho anche dovuto aggiungere il flag '-desktop' (senza virgolette). Inoltre, ho anche dovuto usare il flag "-glnx86" mentre sto usando la versione per studenti su un sistema a 64 bit, ma anche questo ha funzionato bene.

Sono quindi riuscito a ottenere un'icona da questo sito web .

Questo può quindi essere posizionato nel menu dell'applicazione e trascinato verso il basso nel launcher. L'unica cosa che agisce in modo un po 'strano è che quando faccio clic su di esso, un'altra icona MATLAB appare nel launcher invece di usare solo quella già presente. Se qualcuno può trovare un modo per risolvere questo, sarebbe fantastico ... ma posso conviverci così com'è.

    
risposta data Tim 11.10.2012 - 19:42

Leggi altre domande sui tag