Đặt biến trong tệp .desktop


75

Có cách nào để đặt biến môi trường trong tệp .desktop không? Tôi đang cố chạy ứng dụng (nhật thực) với kiểu gtk tùy chỉnh, vì vậy về cơ bản tôi muốn nhận được kết quả sau bằng cách chạy tệp .desktop:

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

Tôi đã cố gắng đưa nó vào tập lệnh bash và chạy nó từ tệp .desktop, nhưng sau đó nó không tích hợp tốt với trình khởi chạy Unity.

Câu trả lời:


111

Bạn có thể thêm một biến môi trường vào một ứng dụng bằng cách chỉnh sửa .desktoptệp của nó . Ví dụ: để chạy "digiKam" với biến môi trường APPMENU_DISPLAY_BOTH=1, hãy tìm digikam.desktoptệp tương ứng và thêm cài đặt của biến, thông qua envlệnh, vào mục "Exec":

Exec=env APPMENU_DISPLAY_BOTH=1 digikam -caption "%c" %i

Trong trường hợp của bạn:

Exec=env GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

1
Làm cách nào tôi có thể đặt biến env chứa người dùng $HOME? Cả Exec=env MYVAR="$HOME/foo"cũng không Exec=env MYVAR="~/foo"được mở rộng. Thay vào đó, chúng được thông qua theo nghĩa đen.
400 con mèo

có vẻ như bạn có thể làm điều đó như được mô tả trong stackoverflow.com/a/8980518/1446479
peedee

9

Một cách khác để sửa đổi .desktoptệp là đặt tập lệnh bao bọc trong ví dụ ~/bin.

$ cat ~/bin/eclipse
#!/bin/sh
export GTK2_RC_FILES=gtkrc.custom
exec /usr/bin/eclipse "$@"

Bằng cách này, tùy chỉnh sẽ không bị ghi đè vào lần tới khi gói ứng dụng được cập nhật.

Biên tập:

Một gợi ý về lý do tại sao điều này hoạt động bạn có thể thấy bằng cách kiểm tra những gì PATHbiến chứa. Trong trường hợp của tôi:

$ echo $PATH
/home/gunnar/bin:/home/gunnar/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

~/binlà thư mục đầu tiên trong danh sách, và do đó được xem xét trước đó /usr/bin.


Nếu bạn chỉ đặt tệp .desktop của mình vào cài đặt cục bộ thì dù sao nó cũng sẽ không bị ghi đè.
Auspex

@Auspex: Đúng. Nhưng đồng thời, nếu bạn sử dụng một bản sao cục bộ, bạn sẽ không được hưởng lợi từ các bản cập nhật có thể có của .desktoptệp sở hữu gói .
Gunnar Hjalmarsson

Tôi không thấy làm thế nào để đặt một trình bao bọc ~/binsẽ giúp với điều đó. Các .desktoptập tin thuộc sở hữu gói sẽ không bao giờ nhìn thấy trình bao bọc đó! Bạn cũng cần phải sử dụngupdate-alternatives
Auspex

@Auspex: .desktopTệp không cần phải "xem" trình bao bọc. Nó chỉ thực thi eclipse, và do PATHtrình bao bọc được chọn thay vì /usr/bin/eclipse. Tôi chỉnh sửa câu trả lời để làm rõ.
Gunnar Hjalmarsson

Có, tệp .desktop không cần phải xem trình bao bọc. Tôi đã nghĩ rằng tệp .desktop trung bình chỉ định một đường dẫn đầy đủ, nhưng khi kiểm tra thêm, tôi nghĩ rằng hầu hết các hệ thống chỉ xác định một tên lệnh tên và vì vậy sẽ thấy trình bao bọc của bạn. Tuy nhiên, các tệp máy tính để bàn Eclipse duy nhất mà tôi có có định dạng được chỉ định trong câu hỏi mà đưa ra một đường dẫn đầy đủ đến tệp nhị phân Eclipse.
Auspex
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.