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

22

Estou tentando instalar um lançador do Matlab R2011a para Unity no Ubuntu 12.04. Eu tentei este guia (embora eu saiba que é para a 11.10 e mencione que até a 11.10 é um sistema operacional não suportado para o Matlab R2011a), mas sem nenhuma solução satisfatória.

Este é o meu arquivo do 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 o painel de instrumentos e procuro "matlab". Este iniciador é encontrado entre aplicativos. Clico nele e a tela inicial do Matlab aparece, mas quando desaparece, o programa não inicia. (Eu verifiquei htopque 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 e o Matlab. No entanto, o terminal e o próprio Matlab aparecem na área do Launcher, com o ícone Matlab, então parece que eu tenho duas instâncias do Matlab em execução 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.)

Definitivamente, isso não é o ideal. Eu esperava criar um iniciador que eu possa bloquear na área do iniciador e, em seguida, esse mesmo ícone será o ícone da instância ativa do Matlab quando o programa estiver em execução.

Como crio um lançador para o Matlab que funciona conforme o esperado?

Atualização: aparentemente eu não estava muito claro sobre meus sintomas, vou tentar esclarecer um pouco. Eu também tentei algumas sugestões das respostas e investiguei mais o que acontece. Minha configuração atual (um arquivo iniciador com Terminal=truee Exec=matlab -desktop -nosplash &) renderiza o seguinte comportamento:

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

Posso bloquear o ícone da janela do terminal no iniciador e iniciar com êxito o MATLAB clicando nele, mas não parece ótimo que eu inicie o programa com um ícone e mude para outro. Eu também tentei o seguinte:

  • Execsem o e comercial &no comando do iniciador, mas não fez diferença.
  • A execução matlab -nosplashmanual de um terminal ainda mostra a tela inicial. (O que, então, a opção nosplash realmente faz?)
Tomas Aschan
fonte
O que acontece quando você executa matlabmanualmente em uma janela do Terminal?
Eliah Kagan
@EliahKagan: Isso funciona perfeitamente bem. Parece que não importa se eu corro matlabou matlab -desktoptambém.
Tomas Aschan
Estou tendo exatamente o mesmo problema com os ícones. Também instalei o pacote Ubuntu para matlab a partir dos repositórios. Acho que é muito estranho que quando você começar Matlab outro ícone é criado e se você bloquear o novo para o lançador, o novo não vai Matlab aberto ...
Felipe

Respostas:

14

A resposta de Garrett quase funciona para mim, mas eu tenho que usar

StartupWMClass=sun-awt-X11-XFramePeer

Isso ainda fornece um ícone extra do iniciador enquanto a tela inicial está visível (porque o WM_CLASS da tela inicial é apenas "MATLAB"), mas a janela é agrupada corretamente no iniciador.

Novas instâncias do Matlab (iniciadas pelo terminal, ou Synapse, ou de outro tty com export DISPLAY=:0) também são agrupadas nesse iniciador, e a opção de encerrar do iniciador mata todos eles.

Encontrei esse valor WM_CLASS usando

$ xprop WM_CLASS

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

Para impedir o ícone do lançador extra temporário, você também pode adicionar a -nosplashbandeira após a -desktopmesma.

Então, minha ~/.local/share/applications/MATLAB.desktopaparência é 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

Este é no Ubuntu 12.10, com Matlab R2012b

tsbertalan
fonte
Isso funciona exatamente como eu gostaria. Muito obrigado!
Tomas Aschan
2
Eu expandi um pouco sua resposta . explicação aqui
flying sheep o
Não sei onde outras pessoas got seus logotipos, mas isso funciona:$ sudo wget http://upload.wikimedia.org/wikipedia/commons/2/21/Matlab_Logo.png -O /usr/share/pixmaps/matlab.png
Neil Traft
7

Isso é muito estranho. matlab -desktoprealmente deve fazer o truque.

Abordagem 1: veja o que há de errado com o iniciador

Eu tenho um ícone do MATLAB em funcionamento na minha 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 Execcaminho, mas se você instalou links simbólicos durante as instalações do MATLAB, o seu deve funcionar bem e (ii) 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 entrar matlab -desktopnas obras do terminal (ou seja, adicionar Terminal=true). No entanto, isso oferece duas telas agrupadas no MATLAB.

Você pode tentar corrigir isso alterando a forma como chama o processo. A chave aqui seria o &símbolo e comercial . O que isso faz é executar o código anterior, sem esperar que ele termine. O ideal seria iniciar o terminal, deixar o terminal iniciar o MATLAB e fechar imediatamente o terminal, deixando o MATLAB funcionando. 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) criar um iniciador com Terminal=trueo código acima ou (ii) criar um iniciador que se refira a um script bash, que por sua vez chama o código acima.

Para você, a Abordagem 1 não ajudou. Se a Abordagem 2 não funcionar, pode ser bom brincar um pouco, veja o que você pode ou não fazer com os scripts "e" comercial, terminal e bash. Estou praticamente sem boas idéias, mas alguém mais inteligente que eu talvez possa ajudá-lo.

Tomas
fonte
Eu tentei seu código, mas sem sucesso. Além disso, (i) eu instalei links simbólicos durante a instalação do Matlab. (ii) Naturalmente, essa poderia ser a diferença que importa - infelizmente, essa é uma licença acadêmica e eu R2011a é a edição mais recente disponível para mim, então não posso testá-la com R2011b = (
Tomas Aschan
Acabei de editar minha postagem, adicionando outra ideia. Deixe-nos saber como isso funciona para você.
Tomas
Obrigado! No entanto, isso não fez muita diferença. Parece que não tenho certeza dos meus sintomas; consulte a atualização do OP para alguns esclarecimentos.
Tomas Aschan
Ah, então você pode iniciar o MATLAB usando o iniciador que você criou. É apenas o ícone que está errado. Receio que, se você recorrer à solução de terminal descrita na Abordagem 2, não conseguirá o ícone certo. Eu tive exatamente o mesmo problema, mas poderia ligar para o MATLAB usando matlab -desktop(consulte a Abordagem 1). Para mim, isso chama o MATLAB, com a tela inicial e o ícone correto para a interface principal. É colocado sob o iniciador bloqueado. Se você deseja o ícone correto e não pode executar o MATLAB através de um iniciador matlab -desktop, estou sem ideias. Avisarei se eu apresentar alguma coisa.
Tomas
Como você vê o texto correspondente ao arquivo .desktop?
precisa saber é o seguinte
4

Instalei um arquivo / script de configuração do Matlab no Software Center. Ele lista o iniciador do Matlab no painel e funciona perfeitamente para o Matlab2011a no Ubuntu 12.04. Mas não está funcionando no iniciador. Quero dizer, se você bloqueá-lo no iniciador e tentar iniciá-lo a partir daí, não funcionará, pelo menos não está funcionando para mim. Então eu tenho que começar do zero.

Para instalar isso, acesse o Ubuntu Software Center , procure o Matlab , ele deve ser o primeiro da lista (o ícone é um logotipo do Matlab). Basta instalá-lo e ele cuidará do resto.

maqtanim
fonte
1
Boa dica! No entanto, ele vem exatamente com os mesmos problemas do meu iniciador auto-criado.
Tomas Aschan
ótimo, obrigado @maqtanim! funciona como um encanto para mim (ubuntu 12.10 amd64)
amc
Funcionou perfeitamente para mim (Matlab R2013a em 12.10). Antes de instalar isso, eu nem tinha um lançador. Link para o Software Center: apt.ubuntu.com/p/matlab-support
Tobold 15/03
3

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

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

  2. Criar 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 primeiro login.

  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 as aplicações pasta onde você salvou o arquivo matlab.desktop: nautilus ~/.local/share/applications.

  5. Arraste e solte o arquivo matlab.desktop no iniciador da unidade.

Garrett Foster
fonte
Isso parece realmente promissor! No entanto, há algo mais que preciso fazer - depois de fazer isso, clicar no ícone do Matlab no meu iniciador faz o seguinte: 1) uma janela inicial é exibida, com seu próprio ícone do iniciador separado, e o ícone em que clicou começa a piscar (desaparecendo e Fora). 2) a janela inicial e seu ícone desaparecem e o ícone do iniciador continua piscando. 3) O ícone para de piscar e nada acontece.
Tomas Aschan
Também assegurei que o arquivo matlab.desktop seja de minha propriedade (não raiz) e que todos os usuários tenham direitos de leitura e execução.
Tomas Aschan
No entanto, se eu começar Matlab a partir do terminal ou Guake, ele usa o ícone Acabei de colocar no lançador - então algo está = direito)
Tomas Aschan
A tela inicial aparecerá por si só, mas desaparecerá. Isso se deve ao fato de ter uma classe diferente da máquina virtual Matlab (programa principal). Quanto a não começar, não tenho certeza. Especialmente desde que você diz que começa no terminal (Estou assumindo usando o mesmo comando matlab -desktop)
Garrett Foster
Sim, eu uso o mesmo comando. matlab &também funciona sem problemas (ou seja, o -desktopinterruptor não é necessário ao iniciar a partir do terminal).
Tomas Aschan
1

Talvez eu esteja chegando um pouco tarde, mas consegui fazer isso adicionando uma entrada ao aplicativo 'Menu principal'. Listei-o como um 'Aplicativo' e, em seguida, forneci 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', pois estou usando a versão do aluno em um sistema de 64 bits, mas isso também funcionou bem.

Consegui, então, obter um ícone deste site .

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

Tim
fonte