ฉันจะตั้งค่าตัวแปร 'เส้นทาง' ในไฟล์ .desktop ให้สัมพันธ์กับตำแหน่งที่ตั้งไฟล์เดสก์ท็อปได้อย่างไร


11

ฉันต้องการตั้งค่าตัวแปร 'เส้นทาง' ในไฟล์ .desktop เทียบกับตำแหน่งที่ตั้งไฟล์เดสก์ท็อปและฉันไม่สามารถจัดการกับสิ่งนั้นได้

เมื่อฉันไม่ประกาศหรือตั้งค่าให้ว่างเปล่ามันจะใช้ค่าเริ่มต้นไปที่โฟลเดอร์บ้านของฉันไม่ว่าฉันจะเรียกใช้จากที่ไหน และไม่ยอมรับค่าที่สัมพันธ์กับตำแหน่งปัจจุบันของฉันภายในระบบไฟล์


ฉันมีปัญหานี้ ฉันพบวิธีแก้ปัญหาแม้ว่าบางครั้งก็มีความซับซ้อนอย่างมากโดยขึ้นอยู่กับสิ่งที่คุณทำ คุณกำลังใช้งานในตอนนี้หรือไม่? ถ้าไม่ฉันอาจช่วยได้ ฉันไม่พบเอกสาร xdg ที่อธิบายเกี่ยวกับเรื่องนี้มาก
bambuntu

OP คุณยังต้องการคำตอบอยู่หรือ? ถ้าเป็นเช่นนั้นคุณอาจต้องโพสต์คำถามของคุณใหม่เนื่องจากมีการทำเครื่องหมายเพื่อปิด ขอแสดงความนับถือ
Ringtail

คำตอบ:


3

คุณไม่สามารถตั้งค่า CWD ภายในไฟล์ .desktop หากคุณต้องการให้แอปพลิเคชันมี CWD เฉพาะคุณจะต้องเขียนสคริปต์ตัวตัดคำอย่างง่ายสำหรับแอปพลิเคชันซึ่งมีลักษณะดังนี้:

#!/bin/sh

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

คุณสามารถเปลี่ยนyour_programที่นั่นด้วย$@และเรียกใช้สคริปต์ด้วย your_program run-in-dir.sh your_programเป็นอาร์กิวเมนต์เช่น วิธีนี้คุณสามารถใช้สคริปต์เดียวกันเพื่อตัดโปรแกรมที่คุณต้องการเริ่มต้นในไดเรกทอรีนั้น


14

คุณสามารถตัดสิ่งนี้ออกได้โดยใช้ bash mini-script ใน Exec ของคุณ สิ่งนี้จะเพิ่มพา ธ ของไฟล์. desktop ไปยัง PATH ก่อนที่จะเรียกใช้คำสั่งของคุณ

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

% k จะถูกแทนที่ด้วยพา ธ ของไฟล์เดสก์ท็อปเอง dirnameคำสั่งสับออกเป็นส่วนหนึ่งชื่อไฟล์เหลือเพียงไดเรกทอรี เมื่อตั้งค่า PATH เช่นนี้แล้วyour_commandสามารถเรียกใช้โดยไม่มีเส้นทางแบบเต็ม


1
ฉันคลิกอย่างรวดเร็วและลงคะแนนผิด แต่โซลูชันของคุณสมบูรณ์แบบ
CrandellWS

1
นี้สามารถใช้งานได้ดีกับคำถาม / คำตอบอื่น ๆstackoverflow.com/a/3464561/1815624
CrandellWS

2

ฉันใช้สิ่งนี้:

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

% k เป็นชื่อเต็มของไฟล์ .desktop รวมถึงพา ธ จากนั้นมันจะถูกใช้โดย dirname เพื่อรับตำแหน่งและเปลี่ยนไดเรกทอรีเป็นตำแหน่งนั้น ในที่สุดตอนนี้มันอยู่ในตำแหน่งที่ถูกต้องแล้วมันก็พบสคริปต์และรันมัน


0

สำหรับชื่อไดเรกทอรีที่มีช่องว่างในชื่อในที่สุดก็ใช้งานได้สำหรับฉัน:

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

มอบเครดิตให้กับ/unix//a/144428/61349


0

สิ่งนี้ใช้ได้กับฉัน Ubuntu 14.04:

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

ข้อมูลจำเพาะล่าสุดระบุว่า% kชี้ไปที่ตำแหน่งของไฟล์เดสก์ทอป:

% k - ตำแหน่งของไฟล์เดสก์ท็อปเป็นทั้ง URI (ถ้าได้รับจากระบบ vfolder) หรือชื่อไฟล์ท้องถิ่นหรือว่างเปล่าหากไม่ทราบตำแหน่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.