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.
Odpowiedzi:
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:
Możesz
your_program
tam zamienić$@
i uruchomić skrypt z argumentem twój_program, nprun-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.źródło
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.
% k zostanie zastąpione ścieżką samego pliku pulpitu.
dirname
Komenda kotlety off części nazwy pliku, pozostawiając tylko katalog. Po ustawieniu takiej ścieżki PATHyour_command
można wywoływać bez pełnej ścieżki.źródło
Użyłem tego:
% 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.
źródło
W przypadku nazw katalogów ze spacjami w nazwie to w końcu zadziałało:
Kredyt na /unix//a/144428/61349
źródło
To działało dla mnie Ubuntu 14.04:
Najnowsza specyfikacja mówi, że % k wskazuje lokalizację pliku na pulpicie:
źródło