Bagaimana cara mengubah direktori kerja ketika membuka file dengan mengklik ganda pada desktop ubuntu?

10

Ingin membuka file (file .pdb: format struktur protein, apalagi) dengan klik dua kali.

"Buka dengan" diarahkan secara manual untuk menjalankan "pymol" (program yang membuka format .pdb) dengan Ubuntu Tweak.

Namun, saya menemukan bahwa direktori yang berfungsi adalah $ HOME.

Seperti file lain pada direktori saya membuka file itu sangat penting saya ingin mengaksesnya.

Saya kira "pymol" dijalankan pada $ HOME sementara path absolut dari "file pdb" (file klik ganda) dilewatkan sebagai argumen.

Saya kira ini adalah masalah yang agak umum dan mengajukan pertanyaan:

Bagaimana saya bisa membiarkan sistem mengubah "direktori kerja" menjadi "direktori tempat saya mengklik file" dan menjalankan program?

Seungpyo Hong
sumber

Jawaban:

16

Meskipun ini bertahun-tahun kemudian, inilah yang berhasil bagi saya:

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

% k memberi Anda jalur direktori peluncur yang baru saja Anda luncurkan.

TuxForLife
sumber
1
% k tidak bekerja (juga% d) tetapi saya memang membutuhkan bagian bash -c
Marc Van Daele
1
Senang saya bisa membantu secara tidak langsung. Anda memerlukan bagian bash -c untuk mendefinisikan ~dengan benar. Anda tidak perlu bash -c jika Anda menggunakan jalur direct / home / marc.
TuxForLife
1
bash -c melakukan pekerjaan itu. banyak membantu saya, terima kasih :)
Muthu
2
% K menyelesaikan ke path lengkap, termasuk file desktop, jadi cd "%k"tidak akan berfungsi. Tapi Anda bisa menggunakannya cd "$(dirname %k)".
ivant
Saya bingung, mengapa Anda masuk ke direktori menggunakan "% k" dan kemudian perintah setelahnya &&mengeksekusi sesuatu yang relatif ~?
vdegenne
5

Tidak ada solusi di atas yang berfungsi pada debian saya. Juga %dsudah usang. Lihat Spesifikasi Entri Desktop .

Jadi saya menggunakan skrip bash berikut untuk menjalankan pymol. Pertama, Anda perlu membuat file skrip bash berikut dan menyimpannya /usr/local/bin/run_pymol.sh. Saya menyimpan file /usr/localkarena sepertinya xdg-opentidak mengerti apa itu direktori HOME atau lebih.

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

Kedua, berikan izin yang dapat dieksekusi ke file itu. Buka terminal dan ketikkan perintah berikut untuk memberi izin dan mengonfirmasi.

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

Akhirnya, modifikasi pymol.desktopfile Anda sebagai berikut dan kemudian pymol Anda akan mulai di direktori tempat file pertama yang diberikan berada.

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

Semoga ini bisa membantu kalian :-)

Λlisue
sumber
3
Saya dapat menempatkan Path=/my/pathdan itu bekerja dengan baik. Path - If entry is of type Application, the working directory to run the program in.
Ripster
2

Saya tidak mengerti mengapa solusi di sana begitu tervotasikan, ia melakukan hal yang sangat berbeda. Ini mengubah direktori kerja ke tempat di mana file .desktop berada, sementara pertanyaan hendak mengubah direktori kerja ke yang memiliki file yang dibuka.

Solusi saya:

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

Ingatlah bahwa pengaturan variabel env untuk file .desktop berbeda, seperti itu

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

Anda dapat pergi ke /usr/share/applicationsdan menemukan hak file.desktopyang dipanggil setiap kali Anda membuka jenis file tertentu. Kemudian edit dan exectambahkan baris cd PATH &&ke awal baris.

Mostafa Shahverdy
sumber
-1

BAIK -

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

tidak berfungsi untuk saya karena PATH tidak didefinisikan untuk menunjuk ke jalur% F. Satu-satunya variabel yang tersedia di file desktop aplikasi apa pun adalah:

  • % fa nama file tunggal.
  • % F beberapa nama file.
  • % ua URL tunggal.
  • % U beberapa URL.
  • % da direktori tunggal. Digunakan bersama dengan% f untuk mencari file.
  • % D beberapa direktori. Digunakan bersama dengan% F untuk mencari file.
  • % na nama file tunggal tanpa path.
  • % N beberapa nama file tanpa path.
  • % ka URI atau nama file lokal dari lokasi file desktop.
  • % v nama entri Perangkat.

Itu dia:% d adalah direktori tunggal yang Anda cari, karena tidak masuk akal untuk berubah ke beberapa direktori. Jadi buka / usr / share / aplikasi dan edit file application-name.desktop (dalam kasus Anda pymol.desktop); Anda harus memiliki hak superuser untuk melakukan itu. Kemudian cari baris yang dimulai dengan "Exec =". Mungkin berbunyi

Exec=<application-name> %F

(Dalam kasus Anda, Exec = pymol% F). Ubah baris ini menjadi

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

Simpan file desktop itu, dan lain kali Anda mengklik file .pdb, direktori kerja Anda seharusnya menjadi file .pdb ini, jadi pymol dapat melihat semua file Anda di sana.

Tentu saja, Anda juga dapat memulai pymol dari baris perintah setelah pertama kali menavigasi ke direktori di mana file Anda berada, tetapi saya kira Anda menginginkan solusi GUI, jadi Anda harus melakukan sedikit penyuntingan :-)

pengguna147058
sumber