Come faccio a creare un launcher Matlab per Unity?


22

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 menziona che anche 11.10 è un sistema operativo 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 trattino e cerco "matlab". Questo lanciatore si trova tra le applicazioni. Lo faccio clic e viene visualizzata la schermata iniziale di Matlab, ma quando scompare il programma non si avvia. (Ho verificato htopche nessun processo matlab è in esecuzione in background.)

Se aggiungo

Terminal=true

al file di avvio, il programma si avvia OK e apre un terminale e Matlab. Tuttavia, sia il terminale sia lo stesso Matlab vengono visualizzati nell'area Launcher, con l'icona Matlab, quindi sembra che io abbia due istanze 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 insieme.)

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

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

Aggiornamento: apparentemente non ero chiaro sui miei sintomi, cercherò di chiarire un po '. Ho anche provato alcuni suggerimenti dalle risposte e ho ulteriormente indagato su ciò che accade. La mia configurazione corrente (un file di avvio con Terminal=truee Exec=matlab -desktop -nosplash &) rende il seguente comportamento:

  1. Apro Dash premendo il tasto Windows sul mio laptop e cerco "matlab". Trova il programma di avvio chiamato "MATLAB R2011a". Lo clicco.
  2. Si apre una finestra del terminale, utilizzando l'icona a cui ho fatto riferimento 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 allo stesso modo una delle icone nel programma di avvio. Si apre l'ambiente desktop MATLAB, 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 sul programma di avvio e avviare MATLAB con successo facendo clic su di essa, ma non mi sembra ottimale avviare il programma con un'icona e passare ad essa con un'altra. Ho anche provato quanto segue:

  • Execsenza la e commerciale &nel comando di avvio, ma non ha fatto differenza.
  • L'esecuzione matlab -nosplashmanuale da un terminale mostra ancora la schermata iniziale. (Che cosa fa davvero l'opzione nosplash?)

Cosa succede quando si esegue matlabmanualmente in una finestra Terminale?
Eliah Kagan,

@EliahKagan: funziona perfettamente. Non sembra importare se corro matlabo matlab -desktop, neanche.
Tomas Aschan,

Sto riscontrando lo stesso identico problema con le icone. Ho anche installato il pacchetto Ubuntu per matlab dai repository. Trovo davvero strano che una volta avviato matlab venga creata un'altra icona e se blocchi il nuovo sul launcher, il nuovo non aprirà matlab ...
Felipe

Risposte:


14

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

StartupWMClass=sun-awt-X11-XFramePeer

Ciò fornisce ancora un'icona di avvio aggiuntiva mentre la schermata di avvio è visibile (poiché WM_CLASS della schermata di avvio è solo "MATLAB"), ma la finestra viene correttamente raggruppata sotto il programma di avvio.

Anche le nuove istanze di Matlab (avviate dal terminale, da Synapse o da un'altra tty con export DISPLAY=:0) vengono raggruppate sotto questo lanciatore e l'opzione di chiusura del lanciatore li uccide tutti.

Ho trovato questo valore WM_CLASS usando

$ xprop WM_CLASS

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

Per evitare l'icona del lanciatore extra temporaneo, puoi anche aggiungere il -nosplashflag dopo -desktopquello.

Quindi, il mio ~/.local/share/applications/MATLAB.desktopassomiglia 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


Funziona esattamente come vorrei. Molte grazie!
Tomas Aschan,

2
ho ampliato un po 'la tua risposta . spiegazione qui
volo di pecore il

Non so dove altre persone abbiano i loro loghi ma questo funziona:$ sudo wget http://upload.wikimedia.org/wikipedia/commons/2/21/Matlab_Logo.png -O /usr/share/pixmaps/matlab.png
Neil Traft,

7

È molto strano. matlab -desktopdovrebbe davvero fare il trucco.

Approccio 1: scopri cosa c'è che non va nel programma di avvio

Ho un'icona MATLAB funzionante nella barra laterale di Unity. Posso fare clic su di esso, mantiene l'icona corretta e non apre un terminale. Per quanto posso vedere, è praticamente lo stesso del 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 sopra è in matlab.desktop, che è inserito in /usr/share/applications/. Le uniche differenze che vedo che potrebbero importare sono (i) il Execpercorso, ma se hai installato collegamenti simbolici durante le tue installazioni MATLAB le tue dovrebbero funzionare bene e (ii) sto eseguendo MATLAB R2011b.

Come te, eseguo Ubuntu 12.04.

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

Approccio 2: una soluzione sporca con il terminale

Hai detto di entrare matlab -desktopnelle opere terminali (cioè aggiungendo Terminal=true). Tuttavia, ciò 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 e commerciale . Quello che fa è eseguire il codice precedente, non aspettando che finisca. Idealmente, dovrebbe avviare il terminale, consentire al terminale di avviare MATLAB e chiudere immediatamente il terminale, lasciando MATLAB in esecuzione. Cosa succede se si avvia matlab dal terminale con la e commerciale dopo la linea o:

matlab -desktop &

Se funziona, puoi provare a (i) creare un launcher con Terminal=truee il codice sopra o (ii) creare un launcher che si riferisce a uno script bash, che a sua volta chiama il codice sopra.

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


Ho provato il tuo codice, ma senza successo. Inoltre, (i) ho installato collegamenti simbolici durante l'installazione di Matlab. (ii) Questa potrebbe ovviamente essere la differenza che conta - sfortunatamente, questa è una licenza accademica e I R2011a è l'ultima edizione disponibile per me, quindi non posso provarlo con R2011b = (
Tomas Aschan

Ho appena modificato il mio post, aggiungendo un'altra idea. Facci sapere come funziona per te.
Tomas,

Grazie! Tuttavia, non ha fatto molta differenza. Mi sembra di essere stato un po 'poco chiaro sui miei sintomi; consultare l'aggiornamento OP per alcuni chiarimenti.
Tomas Aschan,

Ah, quindi puoi iniziare MATLAB usando quel lanciatore che hai creato. È solo l'icona che non va. Temo che se si ricorre alla soluzione terminale descritta nell'approccio 2, non si otterrà l'icona giusta. Ho avuto lo stesso identico problema, ma potevo chiamare MATLAB usando matlab -desktop(vedi Approccio 1). Per me, ciò richiama MATLAB, con la schermata iniziale e l'icona corretta per l'interfaccia principale. Viene posizionato sotto il launcher bloccato. Se si desidera l'icona corretta e non è possibile eseguire MATLAB attraverso un launcher matlab -desktop, non ho più idee. Ti farò sapere se mi viene in mente qualcosa.
Tomas,

Come vedi quel testo corrispondente al file .desktop?
DBinJP,

4

Ho installato un file / script di configurazione Matlab dal Software Center. Elenca il launcher Matlab nel trattino e funziona perfettamente per Matlab2011a in Ubuntu 12.04. Ma non funziona dal programma di avvio. 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 ricominciare da capo.

Per installarlo, vai su Ubuntu Software Center , cerca il Matlab , dovrebbe essere il primo nell'elenco (l'icona è un logo Matlab). Basta installarlo e al resto penserà il resto.


1
Bel consiglio! Tuttavia, si presenta esattamente con gli stessi problemi del mio launcher auto-creato.
Tomas Aschan,

ottimo, grazie @maqtanim! funziona come un incanto per me (ubuntu 12.10 amd64)
amc,

Ha funzionato perfettamente per me (Matlab R2013a il 12.10). Prima di installare questo non avevo nemmeno un launcher. Link al Software Center: apt.ubuntu.com/p/matlab-support
Tobold

3

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

  1. Installa il pacchetto di supporto matlab dal centro software come suggerito . Oppure si può utilizzare il seguente comando: sudo apt-get install matlab-support.

  2. Creare un file .desktop locali: gedit ~/.local/share/applications/matlab.desktop. Per qualche motivo, salvarlo in / usr / share / applicazioni non ha funzionato al primo accesso.

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

  5. Trascina e rilascia il file matlab.desktop nel launcher di unità.


Sembra davvero promettente! Tuttavia, c'è qualcosa in più che devo fare: dopo aver fatto questo, facendo clic sull'icona Matlab nel mio programma di avvio procedi come segue: 1) viene visualizzata una finestra di avvio, con la sua icona di avvio separata e l'icona su cui ho fatto clic inizia a lampeggiare (dissolvenza e su). 2) la finestra iniziale e l'icona scompare e l'icona di avvio I continua a lampeggiare. 3) L'icona smette di lampeggiare e non succede nulla.
Tomas Aschan,

Mi sono anche assicurato che il file matlab.desktop sia di mia proprietà (non root) e che tutti gli utenti abbiano i diritti di lettura ed esecuzione.
Tomas Aschan,

Tuttavia, se avvio Matlab dal terminale o Guake, utilizza l'icona che ho appena inserito nel programma di avvio - quindi qualcosa è giusto =)
Tomas Aschan

La schermata iniziale verrà visualizzata da sola, ma scompare. Ciò è dovuto al fatto che ha una classe diversa rispetto alla macchina virtuale Matlab (programma principale). Per quanto riguarda non iniziare, non sono sicuro. Tanto più che dici che inizia nel terminal (suppongo che usi lo stesso comando matlab -desktop)
Garrett Foster

Sì, utilizzo lo stesso comando. matlab &funziona anche senza problemi (ovvero l' -desktopinterruttore non è necessario quando si parte dal terminale).
Tomas Aschan,

1

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

Ho anche dovuto aggiungere la bandiera '-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 programma di avvio. L'unica cosa che si comporta in modo un po 'strano è che quando faccio clic su di essa, un'altra icona MATLAB appare nel programma di avvio invece di usare solo quella già presente. Se qualcuno riuscisse a trovare un modo per risolverlo, sarebbe fantastico ... ma posso conviverci così com'è.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.