[gnome-panel] launcher werkt niet

Pagina: 1
Acties:

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Een wat vaag probleem.
Ik heb een programma launcher op mijn panel staan die niet werkt: het programma start gewoon niet. Vanaf de command line start het programma wel. Als ik in de eigenschappen van de launcher "start programma in terminal" aanvink. Doet het programma het wel.
Het lijkt er dus op dat dit programma expliciet een terminal (stdin, stdout ??) nodig heeft, en dat gnome-panel die niet levert. Wat zou dat kunnen zijn.
Het gaat om de linux versie van Matlab. De gui is in java geschreven met de swt toolkit.

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Iemand een idee?

Verwijderd

Het zou heel goed kunnen zijn dat het programma een terminal nodig heeft. Maar de launcher start nu toch? Wat is nu precies het probleem?

  • Drgn
  • Registratie: Februari 2004
  • Niet online
Doe je echt precíes hetzelfde in de terminal als in de launcher? Of start je het programma in de terminal met ./programma?
Ik heb dit namelijk ook wel eens gehad; het programma (geen matlab overigens) leek afhankelijk te zijn van andere bestanden in de installatiedirectory, wat gnome niet wilde snappen. Dat heb ik toen heel lelijk, maar simpel, opgelost door de launcher een sh bestandje te laten starten met daarin:

code:
1
2
#! /bin/bash
cd /locatie/van/het/programma && ./programma


Maar dit is een beetje een long-shot, de info in je startpost is wat summier.

Leave the gun, get the canoli


  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Op dit moment wordt er een terminal venster geopend en wordt daarin het commando "matlab" aangeroepen. Het "probleem" is dat dat stomme terminal venter open blijft, terwijl je er niets mee kunt.

Ik heb het commando dat de launcher aanroept aan gepast. Eerst het hele path naar het "matlab" commando er voor gezet, daarna een script a la "Drgn" gemaakt en in de launcher gebruikt, maar het resultaat blijft hetzelfde. Ik krijg het matlab splash screen te zien en daarna breekt matlab af.
Dit gaat te snel om het process wat te analyseren.

Als ik matlab van de commando regel start werkt het dus wel. De uiteindelijke executalbel opent een heel aantal file descriptors:
code:
1
2
3
4
ls /proc/pid-van-matlab/fd/
lr-x------ 1 username users 64 2007-07-31 10:53 0 -> /dev/null
l-wx------ 1 username users 64 2007-07-31 09:40 1 -> /dev/null
lrwx------ 1 username users 64 2007-07-31 10:53 2 -> /dev/pts/0

en dan nog een hele stapel sockets, pipes en gewone files.
Matlab gebruikt dus een terminal voor zijn stderr, terwijl stdin en stdout naat /dev/null verwijzen.
Een vergelijking met gedit (werkt wel vanaf gnome-panel):
code:
1
2
3
4
ls /proc/pid-van-gedit/fd/
lr-x------ 1 username users 64 2007-07-31 10:57 0 -> /dev/null
l-wx------ 1 username users 64 2007-07-31 10:57 1 -> pipe:[39850]
l-wx------ 1 username users 64 2007-07-31 10:57 2 -> pipe:[39850]

gedit houdt dus inderdaad geen pseudoterminal open, maar communiceert met pipes met zijn parent. Hetzelfde geldt voor gnumeric. Als ik gedit van uit een terminal start houdt hij inderdaad wel een pseudoterminal open:
code:
1
2
3
lrwx------ 1 username users 64 2007-07-31 11:02 0 -> /dev/pts/5
lrwx------ 1 username users 64 2007-07-31 11:02 1 -> /dev/pts/5
lrwx------ 1 username users 64 2007-07-31 11:01 2 -> /dev/pts/5

Blijkbaar kan matlab niet met pipes communiceren met zijn parent. Is dit op een of andere manier logisch?

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 01-02 13:45

deadinspace

The what goes where now?

Sir Isaac schreef op dinsdag 31 juli 2007 @ 11:09:
Blijkbaar kan matlab niet met pipes communiceren met zijn parent. Is dit op een of andere manier logisch?
Dat zou normaalgesproken niks uit moeten maken. Het maakt wel uit voor programma's die geavanceerde text input/output willen doen (zoals de bewerkbare prompts die de meeste shells hebben, of password-prompts waar je de input niet ziet), maar daar valt stderr eigenlijk nooit onder.

Wat je kan proberen is het volgende shellscriptje aanroepen vanuit de launcher:
#! /bin/sh

matlab "$@" 2> /dev/null

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Vanaf de command line werkt het redirecten van stderr:
code:
1
2
3
lrwx------ 1 username users 64 2007-07-31 13:07 /proc/22511/fd/0 -> /dev/null
l-wx------ 1 username users 64 2007-07-31 13:08 /proc/22511/fd/1 -> /dev/null
l-wx------ 1 username users 64 2007-07-31 13:07 /proc/22511/fd/2 -> /dev/null

Maar voor gnome-panel maakt het nog steeds niet uit. Ik zal het eens met een andere DE proberen.

Verwijderd

deadinspace schreef op dinsdag 31 juli 2007 @ 12:56:
[...]

...

Wat je kan proberen is het volgende shellscriptje aanroepen vanuit de launcher:
#! /bin/sh

matlab "$@" 2> /dev/null
Wat doet dat scriptje? Of is het het zelfde als:

matlab > /dev/null 2>&1

Errors doorsturen naar normale output die hij dan weer naar /dev/null stuurt.

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 01-02 13:45

deadinspace

The what goes where now?

Sir Isaac schreef op dinsdag 31 juli 2007 @ 13:14:
Vanaf de command line werkt het redirecten van stderr:
...
Maar voor gnome-panel maakt het nog steeds niet uit. Ik zal het eens met een andere DE proberen.
Doe je het wel via een shellscriptje? Een gnome launcher kan geen i/o redirecten; alles wat je na het programma zet wordt als argumenten aan het programma gevoerd. Mocht dat nog steeds niet helpen, probeer dan ook eens stdout en stdin te redirecten?
... > /dev/null < /dev/null
Verwijderd schreef op dinsdag 31 juli 2007 @ 13:14:
Wat doet dat scriptje? Of is het het zelfde als:

matlab > /dev/null 2>&1

Errors doorsturen naar normale output die hij dan weer naar /dev/null stuurt.
Mijn manier redirect alleen stderror naar /dev/null; stdout mag zijn gewone gang gaan.

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
@deadinspace:
Ik deed het inderdaad met een shell script. Gnome-panel kent alleen executables. Je kunt er geen complete commando regels is zetten. Een commando als "cd /usr/local/matlab/bin/ && ./matlab" werkt ook niet.

Ik het het nu ook met XFCE en icewm geprobeerd, met hetzelfde resultaat. :(

Verwijderd

code:
1
matlab -desktop

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Bedankt, dat was hem inderdaad. Ik was al bang dat dit topic onbeantwoord in de vergetelheid zou verzinken. Ik vraag me af wat matlab zonder deze optie probeert.
Pagina: 1