Portál AbcLinuxu, 7. května 2025 07:28

Dotaz: Linux Desktop Entry: nelze spustit xterm -hold -e skript.sh %u

9.7.2016 21:16 Deryl | skóre: 11
Linux Desktop Entry: nelze spustit xterm -hold -e skript.sh %u
Přečteno: 370×
Odpovědět | Admin
Zdravím,

nevím přesně, kdy nastala změna, ale přestal fungovat následující $HOME/.local/share/applications/wtf.desktop:
[Desktop Entry]
Exec=/usr/bin/xterm -hold -e /usr/local/bin/wtf.sh %f
MimeType=image/jpeg;image/x-canon-cr2;image/x-canon-crw;image/x-panasonic-raw;image/x-panasonic-raw2;image/x-olympus-raw
;image/x-olympus-orf
Name=WTF
Type=Application
Terminal=No
NoDisplay=Yes
Icon=camera-photo-symbolic
Když jej spustím např. přes digiKam (pravé tlačítko myšky na obrázku, Otevřít s..., WTF), tak v terminálu akorát vidím chybu:

/usr/bin/xterm No absolute path found for shell: /srv/Photos/2016-07/XXX/beauty.jpeg

což primárně značí, že digiKam/MATE desktop/kdo-ví-co se snaží spustit něco jako

/usr/bin/xterm /srv/Photos/2016-07/XXX/beauty.jpeg

což selže s tou výše uvedenou chybovou hláškou.

Co mne mate nejvíce je, že chyba je stejná, i když vyhodím všechny parametry a ponechám pouze Exec=xterm - tedy něco se pokouší otevřít xterm s jediným parametrem, jímž je %f. Chyba se liší až v momentu, kdy to odkážu na něco nesmyslného, např. Exec=xtermX: /bin/sh: xtermX: command not found

Tj. všechny parametry za prvním příkazem v řádku Exec jsou zřejmě ignorovány.

Co s tím? To mám ke všem svým skriptům napsat wrapper pro .desktop, který by spouštěl "xterm -hold -e ..."?

P.S. Archlinux.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Bedňa avatar 10.7.2016 23:07 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Linux Desktop Entry: nelze spustit xterm -hold -e skript.sh %u
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak sem hoď čo je v tom skipte wtf.sh.
KERNEL ULTRAS video channel >>>
11.7.2016 18:46 Deryl
Rozbalit Rozbalit vše Re: Linux Desktop Entry: nelze spustit xterm -hold -e skript.sh %u
Ten skript má 500 řádků, asi nemá cenu to sem házet.

Nicméně, tentýž skript spuštěný z příkazové řádky:
$ /usr/bin/xterm -hold -e /usr/local/bin/wtf.sh /srv/Photos/2016-07/XXX/beauty.jpeg
funguje skvěle. Nemusím říkat, že to funguje i bez xterm ... -e.

Stejná chyba je i při spuštění ze souborového manažeru Caja (MATE desktop), není to tedy nová vychytávka digiKamu či jeho KDE závislostí. A cca před měsícem nebyl problém. Takže buď bug nebo nová feature. (To jsou ty nevýhody rolling distribucí.)

P.S. Skript má za úkol projít všechny JPEGy v aktuálním adresáři, najít novější verze (dle suffixu) a přejmenovat je na základní verzi při zachování IPTC/Exif/XMP metadat z té původní verze. Dále prohledá adresář raw a nalezne-li RAW soubor, k němuž neexistuje JPEG (shodného jména), tento RAW soubor přehodí do jiného adresáře. Prostě taková úklidovka řešící problémy při používání více editorů fotek a RAW konvertorů.
11.7.2016 19:12 Deryl
Rozbalit Rozbalit vše Re: Linux Desktop Entry: nelze spustit xterm -hold -e skript.sh %u
pro klid mé duše, toto je obsah testovacího skriptu:
$ cat /usr/local/bin/wtf.sh
#!/bin/bash
echo $@
exit
11.7.2016 20:07 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Linux Desktop Entry: nelze spustit xterm -hold -e skript.sh %u
Odpovědět | | Sbalit | Link | Blokovat | Admin
/usr/bin/xterm No absolute path found for shell: /srv/Photos/2016-07/XXX/beauty.jpeg

Za slovem „xterm“ se ztratila dvojtečka, že?

Pokud ano, tak to je chybová hláška programu xterm, který zřejmě byl spuštěn bez parametru „-e“, a tak si myslí, že první neznámý přepínač je shell, který se má spustit místo výchozího. No a „/srv/Photos/2016-07/XXX/beauty.jpeg“ nesplňuje podmínky, který xterm klade na shell.

Doporučuji nástrojem „strace“, zjistit, jak se ten xterm opravdu zavolá po kliknutí na ve vašem oblíbeném programu a kdo ho volá.

11.7.2016 20:19 chrono
Rozbalit Rozbalit vše Re: Linux Desktop Entry: nelze spustit xterm -hold -e skript.sh %u
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ak sa pri xterm použije parameter -e, tak musí byť nastavená premenná $SHELL a ten shell musí byť v /etc/shells.

V tomto konkrétnom prípade by malo stačiť odstrániť ten parameter -e (pretože k tomu skriptu je tam celá cesta). Prípadne by asi bolo možné za tým -e niečo ako "bash -c /usr/local/bin/wtf.sh %f". Je dosť možné, že použiteľných riešení je viac.
11.7.2016 21:29 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Linux Desktop Entry: nelze spustit xterm -hold -e skript.sh %u
Nemusí být nastavená proměnná SHELL. Podívejte se do manuálu nebo si to vyzkoušejte.
11.7.2016 23:42 Deryl
Rozbalit Rozbalit vše Re: Linux Desktop Entry: nelze spustit xterm -hold -e skript.sh %u
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak problém je v digiKamu, chybně parsuje výstup z Kservice, či co. Bude opraveno ve verzi 5.1.

Zkoušel jsem znovu, zda to funguje v Caja, a ono ano. Nevím, proč předtím nikoliv.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.