Como faço um lançador do Matlab para o Unity?

21

Estou tentando instalar um ativador Matlab R2011a para o Unity no Ubuntu 12.04. Eu tentei este guia (embora eu saiba que é para o 11.10 e menciona que mesmo o 11.10 é um SO não suportado para o Matlab R2011a) mas sem qualquer solução satisfatória.

Este é o meu arquivo de inicialização, /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;

Eu abro o painel de instrumentos e procuro por "matlab". Este lançador é encontrado entre aplicativos. Eu clico nele, e a tela inicial do Matlab aparece, mas quando desaparece o programa não inicia. (Eu verifiquei com htop que nenhum processo matlab está sendo executado em segundo plano também.)

Se eu adicionar

Terminal=true

para o arquivo do iniciador, o programa inicia OK e abre um terminal, bem como o Matlab. No entanto, tanto o terminal quanto o próprio Matlab aparecem na área do Launcher, com o ícone do Matlab, então parece que tenho duas instâncias do Matlab rodando quando na verdade é apenas uma. (Na verdade, eles aparecem como dois programas diferentes, e não apenas duas instâncias do mesmo - os ícones são independentes, não agrupados.)

Isso definitivamente não é o ideal. Eu esperava criar um lançador que eu pudesse bloquear na área do lançador, e então o mesmo ícone seria o ícone da instância ativa do Matlab quando o programa estivesse rodando.

Como faço para criar um lançador para o Matlab que funcione como esperado?

Atualização: Eu aparentemente estava um pouco incerto sobre meus sintomas, tentarei esclarecer um pouco. Eu também tentei algumas sugestões a partir das respostas e investiguei o que acontece. Minha configuração atual (um arquivo de inicialização com Terminal=true e Exec=matlab -desktop -nosplash & ) renderiza o seguinte comportamento:

  1. Eu abro o Dash pressionando a tecla Windows no meu laptop e procuro por "matlab". Ele encontra o lançador chamado "MATLAB R2011a". Eu clico nele.
  2. Uma janela de terminal é aberta, usando o ícone ao qual me referi no arquivo do ativador. Quase imediatamente, a tela inicial do MATLAB também é aberta, usando o mesmo ícone (e, portanto, sendo agrupada com a janela do terminal no lançador).
  3. A tela inicial desaparece e o mesmo acontece com um dos ícones no iniciador. O ambiente de área de trabalho do MATLAB é aberto, usando uma versão diferente do ícone , que é exibido ao lado do ícone da janela do terminal (não agrupada a ele).

Eu posso bloquear o ícone da janela do terminal no launcher e iniciar o MATLAB clicando nele com sucesso, mas não parece ótimo iniciar o programa com um ícone e alternar para ele com outro. Eu também tentei o seguinte:

  • Exec sem oe comercial & no comando do iniciador, mas não fez diferença.
  • A execução de matlab -nosplash manualmente a partir de um terminal ainda mostra a tela inicial. (O que, então, a opção de nosplash realmente faz?)
por Tomas Lycken 19.05.2012 / 15:17

5 respostas

13

A resposta de Garrett quase funciona para mim, mas ao invés disso eu tenho que usar

StartupWMClass=sun-awt-X11-XFramePeer

Isso ainda dá um ícone de lançador extra enquanto a splashscreen é visível (porque a WM_CLASS da tela de spash é apenas "MATLAB"), mas a janela fica agrupada adequadamente sob o lançador.

Novas instâncias do Matlab (iniciadas pelo terminal, ou Synapse, ou de outro tty com export DISPLAY=:0 ) também são agrupadas sob este launcher, e a opção quit do launcher mata todas elas.

Eu encontrei este valor WM_CLASS usando

$ xprop WM_CLASS

e, em seguida, clicando na janela do Matlab, um comando que recebi de Superusuário .

Para evitar o ícone de lançador extra temporário, você também pode adicionar o -nosplash sinalizador após o -desktop um.

Então, meu ~/.local/share/applications/MATLAB.desktop é assim:

[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

Isso está no Ubuntu 12.10, com o Matlab R2012b

    
por tsbertalan 10.03.2013 / 09:25
7

Isso é muito estranho. matlab -desktop realmente deveria fazer o truque.

Abordagem 1: veja o que há de errado com o lançador

Eu tenho um ícone do MATLAB em funcionamento na barra lateral do Unity. Eu posso clicar nele, ele mantém o ícone correto e não abre um terminal. Até onde eu sei, é praticamente o mesmo que o seu 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

O código acima está em matlab.desktop, que é colocado em /usr/share/applications/ . As únicas diferenças que vejo que podem importar são (i) o caminho Exec , mas se você instalou links simbólicos durante as instalações do seu MATLAB, o seu deve funcionar bem e (ii) eu estou executando o MATLAB R2011b.

Como você, estou executando o Ubuntu 12.04.

Caso eu tenha perdido alguma coisa, você pode tentar usar meu código para iniciar o MATLAB, quem sabe, pode funcionar.

Abordagem 2: uma solução alternativa suja com o terminal

Você mencionou a inserção de matlab -desktop nos trabalhos do terminal (por exemplo, adicionando Terminal=true ). No entanto, isso dá a você duas telas agrupadas sob o MATLAB.

Você pode tentar corrigir isso alterando o modo como chama o processo. A chave aqui seria o símbolo% am_and & . O que isso faz é executar o código anterior, não esperando que ele termine. O ideal seria iniciar o terminal, deixar o terminal iniciar o MATLAB e fechar imediatamente o terminal, deixando o MATLAB em funcionamento. O que acontece se você iniciar o matlab a partir do terminal com o "e" comercial após a linha ou:

matlab -desktop &

Se isso funcionar, você pode tentar (i) fazer um lançador com Terminal=true e o código acima ou (ii) fazer um lançador que se refira a um script bash, que por sua vez chama o código acima.

Para você, o Approach 1 não ajudou. Se a Abordagem 2 não funcionar, pode ser bom brincar um pouco, ver o que você pode e não pode fazer com os scripts de e comercial, terminal e bash. Estou com boas idéias, mas alguém mais esperto do que eu poderia ajudá-lo.

    
por Tomas 21.05.2012 / 07:24
4

Eu instalei um arquivo / script de configuração do Matlab no Centro de Software. Ele lista o lançador do Matlab no painel e funciona perfeitamente para o Matlab2011a no Ubuntu 12.04. Mas não está funcionando no lançador. Quero dizer, se você bloqueá-lo no lançador e tentar iniciá-lo de lá, então não vai funcionar, pelo menos não está funcionando para mim. Então eu tenho que começar a partir do traço.

Para instalar isto, vá para o Ubuntu Software Center , procure pelo Matlab , ele deve ser o primeiro da lista (o ícone é um logo do Matlab) . Basta instalá-lo e ele cuidará do resto.

    
por maqtanim 21.05.2012 / 06:34
3

Aqui está o que eu fiz para fazer as coisas funcionarem corretamente começando com uma nova instalação ( versão R2010b no Ubuntu 12.04 ).

  1. Instale o pacote matlab-support do centro de software como sugerido . Ou você pode usar o seguinte comando: sudo apt-get install matlab-support .

  2. Crie um arquivo .desktop local: gedit ~/.local/share/applications/matlab.desktop . Por alguma razão, salvá-lo em / usr / share / applications fez com que ele não funcionasse quando eu faria o login pela primeira vez.

  3. Copie e cole o seguinte código e salve. A mudança importante é a linha 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 a pasta de aplicativos em que você acabou de salvar o arquivo matlab.desktop: nautilus ~/.local/share/applications .

  5. Arraste e solte o arquivo matlab.desktop para o iniciador de unidade.

por Garrett Foster 24.05.2012 / 07:27
1

Estou chegando um pouco atrasado, mas consegui fazer isso adicionando uma entrada ao aplicativo 'Main Menu'. Eu listei como um 'aplicativo' e, em seguida, forneceu o caminho completo para o executável no diretório MATLAB como o comando.

Eu também tive que adicionar a bandeira '-desktop' (sem aspas). Além disso, eu também tive que usar o sinalizador '-glnx86' como estou usando a versão do aluno em um sistema de 64 bits, mas isso também funcionou bem.

Eu então consegui obter um ícone desse site .

Isso pode ser localizado no menu do aplicativo e arrastado para o lançador. A única coisa que está agindo um pouco estranho é que quando eu clico nele, outro ícone do MATLAB aparece no lançador, em vez de apenas fazer uso do que já está lá. Se alguém puder encontrar uma maneira de resolver isso, então isso seria ótimo ... mas eu posso viver com isso como é.

    
por Tim 11.10.2012 / 19:42