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.


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.


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.


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.



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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.