ตั้งค่าตัวแปรในไฟล์ .desktop


75

มีวิธีการตั้งค่าตัวแปรสภาพแวดล้อมในไฟล์ .desktop หรือไม่ ฉันพยายามเรียกใช้แอปพลิเคชัน (eclipse) ด้วยสไตล์ gtk ที่กำหนดเองดังนั้นโดยทั่วไปฉันต้องการได้ผลลัพธ์ดังต่อไปนี้โดยเรียกใช้ไฟล์ .desktop:

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

ฉันพยายามใส่ไว้ใน bash script แล้วเรียกใช้จากไฟล์ .desktop แต่ก็ไม่ได้รวมเข้ากับ Unity launcher ได้ดี

คำตอบ:


111

คุณสามารถเพิ่มตัวแปรสภาพแวดล้อมลงในแอปพลิเคชันโดยแก้ไข.desktopไฟล์ ตัวอย่างเช่นหากต้องการเรียกใช้ "digiKam" ด้วยตัวแปรสภาพแวดล้อมAPPMENU_DISPLAY_BOTH=1ให้ค้นหาdigikam.desktopไฟล์ที่เกี่ยวข้องและเพิ่มการตั้งค่าของตัวแปรผ่านenvคำสั่งลงในรายการ "Exec":

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

ในกรณีของคุณ:

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

1
ฉันจะตั้งค่าตัวแปร env ที่มีผู้ใช้ได้$HOMEอย่างไร? ไม่ขยายExec=env MYVAR="$HOME/foo"หรือExec=env MYVAR="~/foo"ขยาย แต่พวกเขาจะผ่านอย่างแท้จริง
400 the Cat

ดูเหมือนว่าคุณสามารถทำได้ตามที่อธิบายไว้ในstackoverflow.com/a/8980518/1446479
peedee

9

อีกทางเลือกหนึ่งในการแก้ไข.desktopไฟล์คือใส่สคริปต์ตัวตัด~/binคำ

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

วิธีนี้การกำหนดเองจะไม่ถูกเขียนทับในครั้งถัดไปที่มีการอัปเดตแพคเกจแอปพลิเคชัน

แก้ไข:

คำแนะนำเกี่ยวกับสาเหตุที่ทำให้งานนี้คุณเห็นได้โดยตรวจสอบสิ่งที่PATHตัวแปรนั้นมี ในกรณีของฉัน:

$ 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

~/bin/usr/binคือโฟลเดอร์แรกในรายการและจึงจะมองก่อน


หากคุณเพียงแค่ใส่ไฟล์ .desktop ของคุณในการตั้งค่าท้องถิ่นของคุณไฟล์ดังกล่าวจะไม่ถูกลบล้างด้วยซ้ำ
Auspex

@Auspex: จริง แต่ในเวลาเดียวกันถ้าคุณใช้สำเนาโลคัลคุณจะไม่ได้รับประโยชน์จากการอัพเดตที่เป็นไปได้ของ.desktopไฟล์ที่เป็นเจ้าของแพ็คเกจ
Gunnar Hjalmarsson

ฉันไม่เห็นว่าการใส่เครื่องห่อหุ้ม~/binจะช่วยได้อย่างไร .desktopไฟล์ที่เป็นเจ้าของแพ็กเกจจะไม่มีทางเห็นเสื้อคลุมนั้น! คุณต้องใช้ด้วยupdate-alternatives
Auspex

@Auspex: .desktopไฟล์ไม่จำเป็นต้อง "เห็น" wrapper มันก็ดำเนินการeclipseและเนื่องจากเสื้อคลุมจะเลือกแทนPATH /usr/bin/eclipseฉันแก้ไขคำตอบเพื่อชี้แจง
Gunnar Hjalmarsson

ใช่ไฟล์ .desktop ไม่จำเป็นต้องดู wrapper ฉันคิดว่าแฟ้มเดสก์ทอปเฉลี่ยระบุเส้นทางที่เต็ม แต่ในการตรวจสอบต่อไปผมคิดว่าส่วนใหญ่ของคนที่ระบบไม่เพียงแค่ระบุคำสั่งชื่อและอื่น ๆจะเห็นเสื้อคลุมของคุณ อย่างไรก็ตามไฟล์เดสก์ท็อป Eclipse เดียวที่ฉันมีอยู่ในรูปแบบที่ระบุในคำถามซึ่งให้เส้นทางแบบเต็มไปยังไบนารีของ Eclipse
Auspex
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.