วิธีการเปลี่ยนไดเร็กตอรี่ที่ใช้งานได้เมื่อเปิดไฟล์โดยดับเบิลคลิกบนหน้าเดสก์ท็อปอูบุนตู?


10

ต้องการเปิดไฟล์ (ไฟล์. pdb: รูปแบบโครงสร้างโปรตีนไม่เป็นไร) โดยดับเบิลคลิก

"open with" ถูกกำหนดด้วยตนเองให้เรียกใช้งาน "pymol" (โปรแกรมที่เปิดรูปแบบ. pdb) ด้วย Ubuntu Tweak

อย่างไรก็ตามฉันพบว่าไดเรกทอรีการทำงานคือ$ HOME

เนื่องจากไฟล์อื่น ๆ ในไดเรกทอรีที่ฉันเปิดไฟล์นั้นเป็นสิ่งสำคัญที่ฉันต้องการเข้าถึง

ฉันเดาว่า "pymol" จะถูกดำเนินการใน $ HOME ในขณะที่เส้นทางที่แน่นอนของ "pdb file" (ไฟล์ดับเบิลคลิก) ถูกส่งผ่านเป็นอาร์กิวเมนต์

ฉันเดาว่านี่เป็นปัญหาทั่วไปและถามคำถาม:

ฉันจะให้ระบบเปลี่ยน"ไดเรกทอรีทำงาน"เป็น"ไดเรกทอรีที่ฉันคลิกไฟล์"และดำเนินการโปรแกรมได้อย่างไร

คำตอบ:


16

แม้ว่านี่จะเป็นปีต่อ ๆ ไปนี่คือสิ่งที่ได้ผลสำหรับฉัน

Exec=bash -c 'cd "%k" && ~/path/to/your/file'

% kให้เส้นทางของไดเรกทอรีของตัวเรียกใช้ที่คุณเพิ่งเปิดตัว


1
% k ไม่ทำงาน (หรือ% d) แต่ฉันต้องการส่วนทุบตี -c
Marc Van Daele

1
ดีใจที่ฉันสามารถช่วยทางอ้อม คุณต้องการส่วน bash -c เพื่อกำหนด~อย่างถูกต้อง คุณไม่จำเป็นต้องใช้ bash -c หากคุณใช้เส้นทางตรง / home / marc
TuxForLife

1
bash -c ทำงานเสร็จแล้ว ช่วยฉันได้มากขอบคุณ :)
Muthu

2
% k แก้ไขไปยังพา ธ แบบเต็มรวมถึงไฟล์เดสก์ท็อปดังนั้นจึงใช้cd "%k"งานไม่ได้ cd "$(dirname %k)"แต่คุณสามารถใช้
ivant

ฉันสับสนทำไมคุณไปในไดเรกทอรีโดยใช้ "% k" แล้วคำสั่งหลังจากนั้น&&ก็ดำเนินการบางอย่างที่เกี่ยวข้องกับ~?
vdegenne

5

วิธีการแก้ปัญหาข้างต้นไม่ได้ผลกับเดเบียนของฉัน ยัง%dเลิกใช้แล้ว ดูรายการข้อมูลจำเพาะสก์ท็อป

ดังนั้นฉันใช้สคริปต์ทุบตีต่อไปนี้เพื่อเรียกใช้ pymol /usr/local/bin/run_pymol.shแรกที่คุณต้องสร้างไฟล์สคริปต์ทุบตีต่อไปนี้และบันทึกไว้ใน ฉันบันทึกไฟล์ไว้/usr/localเพราะดูเหมือนว่าxdg-openไม่เข้าใจไดเรกทอรี HOME หรืออะไร

#!/usr/bin/env bash
# change working directory
cd `dirname $1`
# run pymol
/usr/bin/env pymol $@

ประการที่สองให้สิทธิ์ในการปฏิบัติการกับไฟล์นั้น เปิดเทอร์มินัลแล้วพิมพ์คำสั่งต่อไปนี้เพื่อให้อนุญาตและเพื่อยืนยัน

% chmod +x /usr/local/bin/run_pymol.sh
% run_pymol.sh

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

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=PyMOL Molecular Graphics System
GenericName=Molecular Modeller
Comment=Model molecular structures and produce high-quality images of them
Type=Application
Exec=/usr/local/bin/run_pymol.sh %U
TryExec=pymol
Icon=pymol
MimeType=chemical/x-pdb
Categories=Education;Science;Chemistry;

หวังว่าจะช่วยพวกคุณ :-)


3
ฉันสามารถวางPath=/my/pathและทำงานได้ดี Path - If entry is of type Application, the working directory to run the program in.
Ripster

2

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

ทางออกของฉัน:

Exec=/bin/bash -c 'cd $(dirname $0) && micro $0'

โปรดจำไว้ว่าการตั้งค่าตัวแปร env สำหรับไฟล์ .desktop นั้นต่างกัน

Exec=env CPATH=../include /bin/bash -c 'cd $(dirname $0) && micro $0'

0

คุณสามารถไปที่/usr/share/applicationsและค้นหาไฟล์ที่เหมาะสมfile.desktopที่ถูกเรียกเมื่อใดก็ตามที่คุณเปิดไฟล์ประเภทใดประเภทหนึ่ง จากนั้นแก้ไขและในexecบรรทัดเพิ่มcd PATH &&ไปยังจุดเริ่มต้นของบรรทัด


-1

ตกลง -

Exec=cd PATH &&  <application-name> %F

ไม่ทำงานสำหรับฉันเนื่องจาก PATH ไม่ได้กำหนดให้ชี้ไปที่เส้นทางของ% F ตัวแปรเดียวที่มีในไฟล์เดสก์ท็อปของแอปพลิเคชันคือ:

  • ชื่อไฟล์% fa เดียว
  • ชื่อไฟล์หลาย% F
  • % ua URL เดียว
  • % U หลาย URL
  • ไดเรกทอรีเดียว% ดา ใช้ร่วมกับ% f เพื่อค้นหาไฟล์
  • ไดเรกทอรีหลาย% D ใช้ร่วมกับ% F เพื่อค้นหาไฟล์
  • % na ชื่อไฟล์เดียวโดยไม่มีเส้นทาง
  • % N ชื่อไฟล์หลายรายการโดยไม่มีเส้นทาง
  • % ka URI หรือชื่อไฟล์ท้องถิ่นของตำแหน่งของไฟล์เดสก์ท็อป
  • % v ชื่อของรายการอุปกรณ์

ที่นั่นคือ:% d เป็นไดเรกทอรีเดียวที่คุณกำลังมองหาเนื่องจากไม่เหมาะสมที่จะเปลี่ยนเป็นหลายไดเรกทอรี ดังนั้นไปที่ / usr / share / applications และแก้ไขไฟล์ application-name.desktop (ในกรณีของคุณ pymol.desktop); คุณต้องมีสิทธิ์ superuser ในการทำเช่นนั้น จากนั้นค้นหาบรรทัดที่ขึ้นต้นด้วย "Exec =" มันอาจอ่าน

Exec=<application-name> %F

(ในกรณีของคุณ Exec = pymol% F) เปลี่ยนบรรทัดนี้เป็น

Exec=cd %d && <application-name> %F

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

แน่นอนคุณสามารถเริ่ม pymol จากบรรทัดคำสั่งหลังจากไปที่ไดเรกทอรีที่ไฟล์ของคุณเป็นครั้งแรก แต่ฉันคิดว่าคุณต้องการโซลูชัน GUI ดังนั้นคุณต้องแก้ไขเล็กน้อย :-)

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