Làm cách nào để thay đổi thư mục làm việc khi mở tệp bằng cách nhấp đúp vào màn hình ubfox?


10

Muốn mở một tệp (tệp .pdb: định dạng cấu trúc protein, đừng bận tâm) bằng cách nhấp đúp.

"Open with" được hướng dẫn thủ công để thực thi "pymol" (một chương trình mở định dạng .pdb) với Ubuntu Tweak.

Tuy nhiên, tôi thấy rằng thư mục làm việc$ HOME.

Vì các tệp khác trong thư mục tôi đã mở tệp rất quan trọng nên tôi muốn truy cập chúng.

Tôi đoán rằng "pymol" được thực thi trên $ HOME trong khi đường dẫn tuyệt đối của "tệp pdb" (tệp nhấp đúp) được truyền dưới dạng đối số.

Tôi đoán đây là một vấn đề chung và đặt một câu hỏi:

Làm thế nào tôi có thể để hệ thống thay đổi "thư mục làm việc" thành "thư mục mà tôi đã nhấp vào tệp" và thực hiện một chương trình?

Câu trả lời:


16

Mặc dù đây là năm sau, đây là những gì làm việc cho tôi:

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

% k cung cấp cho bạn đường dẫn của thư mục của trình khởi chạy mà bạn vừa khởi chạy.


1
% k không hoạt động (cũng không phải% d) nhưng tôi cần phần bash -c
Marc Van Daele

1
Vui mừng tôi có thể giúp đỡ gián tiếp. Bạn cần phần bash -c để xác định ~chính xác. Bạn không cần bash -c nếu bạn sử dụng đường dẫn trực tiếp / nhà / marc.
TuxForLife 16/07/2016

1
bash -c đã hoàn thành công việc. đã giúp tôi rất nhiều cảm ơn :)
Muthu

2
% K giải quyết theo đường dẫn đầy đủ, bao gồm tệp máy tính để bàn, vì vậy cd "%k"sẽ không hoạt động. Nhưng bạn có thể sử dụng cd "$(dirname %k)".
ngà

Tôi bối rối, tại sao bạn đi vào một thư mục sử dụng "% k" và sau đó lệnh ngay sau khi &&thực thi một cái gì đó liên quan đến ~?
vdegenne

5

Không có giải pháp nào ở trên làm việc với debian của tôi. Cũng %dbị phản đối. Xem Đặc điểm kỹ thuật của máy tính để bàn .

Vì vậy, tôi đang sử dụng tập lệnh bash sau để chạy pymol. Trước tiên, bạn cần tạo tệp bash script sau và lưu nó vào /usr/local/bin/run_pymol.sh. Tôi đã lưu tệp vào /usr/localvì có vẻ như xdg-openkhông hiểu thư mục HOME là gì.

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

Thứ hai, cấp quyền thực thi cho tập tin đó. Mở một terminal và gõ các lệnh sau để cho phép và xác nhận.

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

Cuối cùng, sửa đổi pymol.desktoptệp của bạn như sau và sau đó pymol của bạn sẽ bắt đầu trong thư mục chứa tệp đã cho đầu tiên.

#!/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;

Hy vọng nó sẽ giúp các bạn :-)


3
Tôi đã có thể đặt Path=/my/pathvà điều đó làm việc tốt. Path - If entry is of type Application, the working directory to run the program in.
Ripster

2

Tôi không hiểu tại sao giải pháp trên đó lại được nâng cao như vậy, nó làm điều hoàn toàn khác. Nó thay đổi thư mục làm việc thành những nơi có tệp .desktop, trong khi câu hỏi sắp thay đổi thư mục làm việc thành những thư mục có (các) tệp đã mở.

Giải pháp của tôi:

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

Hãy nhớ rằng việc đặt các biến env cho các tệp .desktop là khác nhau, như vậy

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

0

Bạn có thể đi đến /usr/share/applicationsvà tìm đúng file.desktopcái được gọi bất cứ khi nào bạn mở một loại tệp cụ thể. Sau đó chỉnh sửa nó và trong execdòng thêm cd PATH &&vào đầu dòng.


-1

ĐỒNG Ý -

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

đã không làm việc cho tôi vì PATH không được xác định để chỉ đến đường dẫn của% F. Các biến duy nhất có sẵn trong bất kỳ tệp ứng dụng máy tính để bàn nào là:

  • % fa tên tập tin duy nhất.
  • % F nhiều tên tệp.
  • % ua URL đơn.
  • % U nhiều URL.
  • % da thư mục duy nhất. Được sử dụng cùng với% f để định vị tệp.
  • % D nhiều thư mục. Được sử dụng cùng với% F để định vị tệp.
  • % na tên tệp duy nhất không có đường dẫn.
  • % N nhiều tên tệp không có đường dẫn.
  • % ka URI hoặc tên tệp cục bộ của vị trí tệp máy tính để bàn.
  • % v tên của mục nhập Thiết bị.

Đó là:% d là thư mục duy nhất bạn đang tìm kiếm, vì nó không có ý nghĩa để thay đổi thành nhiều thư mục. Vì vậy, hãy truy cập / usr / share / application và chỉnh sửa tệp application-name.desktop (trong trường hợp của bạn là pymol.desktop); bạn phải có đặc quyền siêu người dùng để làm điều đó. Sau đó xác định vị trí dòng bắt đầu bằng "Exec =". Nó có thể đọc

Exec=<application-name> %F

(Trong trường hợp của bạn Exec = pymol% F). Thay đổi dòng này thành

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

Lưu tệp máy tính để bàn đó và lần sau khi bạn nhấp vào tệp .pdb, thư mục làm việc của bạn phải là tệp .pdb này, vì vậy pymol có thể thấy tất cả các tệp của bạn ở đó.

Tất nhiên, bạn cũng có thể bắt đầu pymol từ dòng lệnh sau khi lần đầu tiên được điều hướng đến thư mục chứa các tệp của bạn, nhưng tôi đoán bạn muốn có một giải pháp GUI, vì vậy bạn phải chỉnh sửa một chút :-)

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.