Come posso impostare la variabile 'Path' in un file .desktop in modo che sia relativa alla posizione in cui si trova il file desktop?


11

Voglio impostare la variabile "Path" in un file .desktop in relazione alla posizione in cui si trova il file desktop e non riesco a farlo.

Quando non lo dichiaro o non lo imposto in bianco, viene impostato automaticamente sulla mia cartella home, indipendentemente da dove lo eseguo; e non accetta valori relativi alla mia posizione corrente all'interno del file system.


Ho avuto questo problema. Ho trovato soluzioni alternative, anche se a volte radicalmente complicate a seconda di ciò che stai facendo. Stai usando un lavoro in giro in questo momento? In caso contrario, potrei essere in grado di aiutarti. Non ho trovato documenti xdg che spiegano molto su questo.
bambuntu

OP stai ancora cercando una risposta? In tal caso, potrebbe essere necessario ripubblicare la domanda poiché questa è contrassegnata per la chiusura. Saluti,
Ringtail

Risposte:


3

Non è possibile impostare il CWD all'interno di un file .desktop. Se desideri che un'applicazione abbia un CWD specifico, dovrai scrivere un semplice script wrapper per l'applicazione, che assomigli a questo:

#!/bin/sh

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

Puoi sostituirlo your_program$@ed eseguire lo script con your_program come argomento, ad esempio run-in-dir.sh your_program. In questo modo è possibile utilizzare lo stesso script per racchiudere qualsiasi programma che si desidera avviare in quella directory.


14

Puoi aggirare il problema usando un mini-script bash in linea sul tuo Exec. Ciò aggiungerà il percorso del file .desktop a PATH prima di eseguire il comando.

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

% k verrà sostituito dal percorso del file desktop stesso. Il dirnamecomando taglia la parte del nome file, lasciando solo la directory. Una volta impostato PATH in questo modo, your_commandpuò essere invocato senza un percorso completo.


1
Ho cliccato per accelerare e ho votato quello sbagliato ma la tua soluzione è perfetta.
CrandellWS,

1
questo potrebbe funzionare benissimo con quest'altra domanda / risposta stackoverflow.com/a/3464561/1815624
CrandellWS

2

Ho usato questo:

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

% K è il nome completo del file .desktop incluso il suo percorso. Viene quindi utilizzato da dirname per ottenere una posizione e cambiare directory in quella posizione. Infine, ora che si trova nel posto giusto, trova lo script e lo esegue.


0

Per i nomi di directory con spazi nel nome, alla fine ha funzionato per me:

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

Ringraziamo /unix//a/144428/61349


0

Questo ha funzionato per me Ubuntu 14.04:

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

Le specifiche più recenti indicano che % k indica la posizione del file desktop:

% k - Il percorso del file desktop come URI (se ad esempio ottenuto dal sistema vfolder) o come nome file locale o vuoto se non è noto alcun percorso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.