Làm cách nào tôi có thể đặt biến 'Đường dẫn' trong tệp .desktop tương đối với vị trí đặt tệp máy tính để bàn?


11

Tôi muốn đặt biến 'Đường dẫn' trong tệp .desktop liên quan đến vị trí đặt tệp máy tính để bàn và tôi không thể quản lý để làm điều đó.

Khi tôi không khai báo hoặc đặt thành trống, nó sẽ mặc định vào thư mục nhà của tôi bất kể tôi chạy nó từ đâu; và nó không chấp nhận các giá trị liên quan đến vị trí hiện tại của tôi trong hệ thống tệp.


Tôi đã có vấn đề này. Tôi đã tìm thấy cách giải quyết, mặc dù đôi khi hoàn toàn phức tạp tùy thuộc vào những gì bạn đang làm. Bạn đang sử dụng một công việc xung quanh tại thời điểm này? Nếu không, tôi có thể giúp với điều đó. Tôi đã không tìm thấy tài liệu xdg giải thích nhiều về điều này.
bambfox

OP bạn vẫn đang tìm kiếm một câu trả lời? Nếu vậy, bạn có thể cần phải đăng lại câu hỏi của mình vì câu hỏi này được đánh dấu để đóng. Trân trọng,
Ringtail

Câu trả lời:


3

Bạn không thể đặt CWD bên trong tệp .desktop. Nếu bạn muốn một ứng dụng có một CWD cụ thể, bạn sẽ cần phải viết một tập lệnh bao bọc đơn giản cho ứng dụng, trông giống như thế này:

#!/bin/sh

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

Bạn có thể thay thế your_programở đó bằng $@và chạy tập lệnh bằng your_program làm đối số, như run-in-dir.sh your_program. Bằng cách này, bạn có thể sử dụng cùng một tập lệnh để bọc bất kỳ chương trình nào bạn muốn bắt đầu trong thư mục đó.


14

Bạn có thể loại bỏ xung quanh điều này bằng cách sử dụng tập lệnh bash mini nội tuyến trên Exec của bạn. Điều này sẽ thêm đường dẫn của tệp .desktop vào PATH trước khi chạy lệnh của bạn.

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

% k sẽ được thay thế bằng đường dẫn của tệp máy tính để bàn. Các dirnamelệnh chops bỏ phần tên tập tin, chỉ để lại thư mục. Khi PATH được đặt như thế này, your_commandcó thể được gọi mà không có đường dẫn đầy đủ.


1
Tôi đã nhấp để nhanh chóng và bỏ phiếu sai nhưng giải pháp của bạn là hoàn hảo.
CrandellWS

1
điều này có thể làm việc tuyệt vời với câu hỏi / câu trả lời khác stackoverflow.com/a/3464561/1815624
CrandellWS

2

Tôi đã sử dụng điều này:

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

% K là tên đầy đủ của tệp .desktop bao gồm cả đường dẫn của nó. Sau đó, nó được sử dụng bởi dirname để lấy một vị trí và thay đổi thư mục thành vị trí đó. Cuối cùng, bây giờ nó ở đúng nơi, nó tìm thấy tập lệnh và chạy nó.


0

Đối với tên thư mục có khoảng trắng trong tên, điều này cuối cùng cũng có tác dụng với tôi:

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

Tín dụng vào /unix//a/144428/61349


0

Điều này làm việc cho tôi Ubuntu 14.04:

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

Thông số mới nhất nói rằng % k trỏ đến vị trí của tệp máy tính để bàn:

% k - Vị trí của tệp máy tính để bàn là URI (ví dụ: được lấy từ hệ thống vfolder) hoặc tên tệp cục bộ hoặc trống nếu không biết vị trí.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.