Jak ustawić zmienną „Ścieżka” w pliku .desktop w stosunku do położenia, w którym znajduje się plik na pulpicie?

11

Chcę ustawić zmienną „Ścieżka” w pliku .desktop w stosunku do lokalizacji, w której znajduje się plik pulpitu i nie mogę tego zrobić.

Kiedy go nie deklaruję ani nie ustawiam na puste, domyślnie jest to folder domowy, bez względu na to, skąd go uruchamiam; i nie przyjmuje wartości w stosunku do mojej bieżącej lokalizacji w systemie plików.

kicsyromy
źródło
Miałem ten problem. Znalazłem obejścia, choć czasami radykalnie skomplikowane w zależności od tego, co robisz. Czy korzystasz obecnie z obejścia? Jeśli nie, mogę ci w tym pomóc. Nie znalazłem dokumentów xdg, które dużo to wyjaśniają.
bambuntu
OP nadal szukasz odpowiedzi? Jeśli tak, może być konieczne ponowne przesłanie pytania, ponieważ jest ono przeznaczone do zamknięcia. Pozdrawiam,
Dzwonek

Odpowiedzi:

3

Nie można ustawić CWD w pliku .desktop. Jeśli chcesz, aby aplikacja miała określony CWD, musisz napisać prosty skrypt opakowania dla aplikacji, który wygląda mniej więcej tak:

#!/bin/sh

(cd /where/you/want/it/to/be && exec your_program)

Możesz your_programtam zamienić $@i uruchomić skrypt z argumentem twój_program, np run-in-dir.sh your_program. W ten sposób możesz użyć tego samego skryptu, aby owinąć dowolny program, który chcesz uruchomić w tym katalogu.

dobey
źródło
14

Możesz się z tym pogodzić, używając wbudowanego mini-skryptu bash na swoim Exec. Spowoduje to dodanie ścieżki pliku .desktop do PATH przed uruchomieniem polecenia.

Exec=bash -c "export PATH=$PATH:`dirname %k`; your_command"

% k zostanie zastąpione ścieżką samego pliku pulpitu. dirnameKomenda kotlety off części nazwy pliku, pozostawiając tylko katalog. Po ustawieniu takiej ścieżki PATH your_commandmożna wywoływać bez pełnej ścieżki.

roadmr
źródło
1
Kliknąłem, aby szybko i głosowałem za niewłaściwy, ale twoje rozwiązanie jest idealne.
CrandellWS,
1
to może świetnie współpracować z innym pytaniem / odpowiedzią stackoverflow.com/a/3464561/1815624
CrandellWS
2

Użyłem tego:

Exec=bash -c 'cd $(dirname %k) && ./SCRIPT_NAME'

% K to pełna nazwa pliku .desktop wraz z jego ścieżką. Następnie jest używany przez dirname, aby uzyskać lokalizację i zmienić katalog na tę lokalizację. Wreszcie, gdy jest już we właściwym miejscu, znajduje skrypt i uruchamia go.

Marian
źródło
0

W przypadku nazw katalogów ze spacjami w nazwie to w końcu zadziałało:

Exec=/bin/bash -c 'cd "$(dirname "$0")"; wine game.exe -windowed' %k

Kredyt na /unix//a/144428/61349

ThorSummoner
źródło
0

To działało dla mnie Ubuntu 14.04:

Exec=bash -c "cd %k && ./app.run"

Najnowsza specyfikacja mówi, że % k wskazuje lokalizację pliku na pulpicie:

% k - Lokalizacja pliku pulpitu jako URI (jeśli na przykład pochodzi z systemu vfolder) lub lokalnej nazwy pliku lub pusta, jeśli nie jest znana żadna lokalizacja.

nexayq
źródło