Cara Memperluas Pengurus Fail Gnome Nautilus dengan skrip tersuai

Cara Memperluas Pengurus Fail Gnome Nautilus dengan skrip tersuai

Walaupun gnome, dalam 3.X Iteration telah menjadi objek banyak perdebatan, kerana paradigma desktop yang tidak tradisional, mungkin desktop yang paling banyak digunakan di Linux. Pengurus fail lalai yang dimasukkan ke dalam GNOME ialah Nautilus (nama baru aplikasi adalah "Fail"). Dalam tutorial ini kita akan melihat bagaimana kita dapat melanjutkan pengurus fail dengan fungsi yang disediakan oleh skrip tersuai.

Dalam tutorial ini anda akan belajar:

  • Cara menggunakan skrip tersuai untuk melanjutkan fungsi nautilus


Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Pengedaran-bebas
Perisian Pengurus fail nautilus
Yang lain Tiada keperluan khusus diperlukan untuk mengikuti tutorial ini
Konvensyen # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Membuat Direktori Skrip

Perkara pertama yang ingin kami lakukan ialah membuat direktori yang akan menjadi tuan rumah skrip kami: ~/.Tempatan/Saham/Nautilus/Skrip. Setelah diletakkan dalam direktori ini, skrip akan muncul secara automatik dalam menu konteks Nautilus yang dipaparkan apabila kita memilih satu atau lebih fail:

$ mkdir -p ~/.Tempatan/Saham/Nautilus/Skrip

Dalam perintah di atas kami menggunakan -p Tukar (pendek untuk --ibu bapa) untuk memastikan bahawa semua direktori dalam laluan yang ditentukan dibuat seperti yang diperlukan, dan tidak ada kesilapan yang dihasilkan jika ada di antara mereka yang sudah ada. Dengan direktori kami, kami boleh mula mengusahakan skrip kami yang sangat berguna: perhatikan bahawa mereka akan dimasukkan dengan betul dalam menu konteks Nautilus hanya jika mereka dibuat boleh dilaksanakan. Sebelum menulis kod kita harus belajar mengetahui beberapa pembolehubah yang boleh kita gunakan di dalam skrip: mereka adalah cara utama kita dapat berinteraksi dengan status pengurus fail, mengakses maklumat yang sangat berguna.



Pembolehubah skrip Nautilus

Untuk skrip kami entah bagaimana berguna, adalah mungkin untuk berinteraksi dengan status pengurus fail dan dapat merujuk, sebagai contoh, jalan dan nama fail terpilih, atau direktori kerja semasa: kita boleh mengakses maklumat ini melalui beberapa Pembolehubah ditetapkan tepat untuk tujuan ini. Mari lihat mereka.

Pertama sekali kita mempunyai Nautilus_script_selected_file_paths pembolehubah. Seperti yang sepatutnya berlaku, nama pembolehubah cukup jelas: pembolehubah ini memegang laluan sistem fail penuh fail yang kini dipilih dalam pengurus fail. Nilai pembolehubah adalah rentetan; laluan fail dibatasi dengan penggunaan baris baru watak.

Pembolehubah lain yang sangat berguna ialah Nautilus_script_selected_uris. Kita boleh menggunakan pembolehubah ini, seperti yang kita lihat, untuk merujuk fail yang dipilih, dengan satu perbezaan: fail tidak dirujuk oleh jalan mereka, tetapi oleh mereka Uri, atau "Pengenalpastian Sumber Bersepadu". Peranan pemboleh ubah ini menjadi jelas ketika bekerja Jauh Sistem fail: Dalam kes itu, laluan mudah tidak akan berfungsi, dan Nautilus_script_select_file_paths Pembolehubah akan kosong. Dalam keadaan sedemikian, untuk mengakses fail, kita juga perlu mengetahui jenis protokol yang digunakan: fail yang dipilih dalam pengurus fail melalui sftp Protokol, sebagai contoh, akan dirujuk sebagai sftp: // jalan/ke/fail.

Akhirnya, kami mempunyai Nautilus_script_current_uri dan juga Nautilus_script_window_geometry pembolehubah. Yang pertama mengandungi Uri Direktori yang dibuka dalam palungan fail; Maklumat terakhir mengenai geometri (lebar dan ketinggian) dan kedudukan tetingkap Pengurus Fail (contohnya: 631 × 642+26+23).

Contoh praktikal

Sebagai contoh, kami akan membina skrip yang sangat mudah: Tujuannya adalah untuk mengatur gambar yang dipilih dalam pengurus fail di dasar tarikh penciptaan mereka. Dalam kes ini skrip akan ditulis dalam python, bahasa yang disokong secara lalai pada setiap pengedaran; Kita boleh, tentu saja, juga menulis skrip bash, atau menggunakan bahasa skrip yang disokong lain.

Kini hampir semua imej digital mengandungi metadata yang boleh kita gunakan untuk mendapatkan semua jenis maklumat, seperti jenis kamera atau peranti yang digunakan untuk membuat gambar dan tetapan yang digunakan. Apa yang kita bicarakan dipanggil exif Tags: Apa yang menarik minat kita dalam kes ini adalah OriginalDateTime medan (36867). Skrip akan dapat menyusun hanya gambar yang termasuk tag itu, dan akan menyusun semula mereka dalam direktori yang dibuat menggunakan corak "tahun/bulan". Gambar yang tidak mengandungi maklumat akan diletakkan dalam direktori yang disebut "Unsorted". Inilah skrip kami, kami akan menyelamatkannya sebagai "mengatur.py ”:

#!/usr/bin/env python3 "" "Pengarang: egidio decile menganjurkan gambar yang dipilih oleh tarikh penciptaan mereka, menggunakan tag exif DateTimeOriginal" "" import import datetime OS dari PIL import imej datetime_original = 36867 def main (): untuk jalan di OS.getenv ('nautilus_script_selected_file_paths', ").splitlines (): cuba: exif_data = gambar.Buka (jalan)._getExif () Kecuali OsError: Teruskan Cuba: Tarikh = DateTime.masa tarikh.strpTime (exif_data [datetime_original], '%y:%m:%d%h:%m:%s') direktori = os.jalan.tarikh menyertai.strftime ('%y'), tarikh.strftime ('%b')) Kecuali (KeyError, ValueError, TypeError): direktori = "Unsorted" OS.makedirs (direktori, wujud_ok = benar) os.Namakan semula (jalan, OS.jalan.Sertai (direktori, OS.jalan.nama bas (jalan))) jika __name__ == '__main__': main ()
Salinan

Seperti yang anda lihat, kami mengakses dan membaca Nautilus_script_selected_file_paths pembolehubah menggunakan OS.getenv kaedah, juga menyediakan rentetan kosong sebagai nilai lalai, sekiranya pemboleh ubah tidak ditetapkan. Kami kemudian menggunakan Splitlines Kaedah untuk "meletup" rentetan yang merupakan nilai pembolehubah yang baru saja kita sebutkan, ke dalam senarai, menggunakan watak baru sebagai pembatas. Akhirnya kami memproses setiap laluan fail dalam gelung untuk.



Sudah tentu skrip dapat diperbaiki, tetapi mari sahkan bahawa ia berfungsi. Sebaik sahaja kita meletakkannya di ~/.Tempatan/Saham/Nautilus/Skrip Direktori, kita mesti membuatnya boleh dilaksanakan dengan menjalankan:

$ chmod +x ~/.Tempatan/Saham/Nautilus/Skrip/Susun.py

Entri baru harus muncul dalam menu konteks Pengurus Fail, apabila fail dipilih:



Entri menu konteks untuk skrip kami

Dan inilah skrip kami dalam tindakan. Kami memilih imej yang ingin kami tentukan dan klik pada "Skrip/Susun.py "dalam menu konteks:

Menggunakan dialog grafik dalam skrip

Mungkin terdapat beberapa kes di mana skrip kami, berfungsi dengan betul, harus dapat berinteraksi dengan pengguna, mungkin untuk meminta pengesahan sebelum melakukan operasi. Kami boleh membuat dialog sedemikian dalam skrip kami, bergantung kepada bahasa pengaturcaraan yang kami gunakan. Semasa menulis skrip bash, sebagai contoh, kita boleh menggunakan Zenity, program untuk membuat Gtk Kotak dialog, yang biasanya disertakan dengan pemasangan GNOME; Sekiranya bukan kita boleh memasangnya menggunakan Pengurus Pakej Pengedaran Kegemaran kami. Di Fedora, contohnya kita boleh menjalankan:

$ sudo DNF memasang zenity

Mengenai pengagihan berasaskan Debian, sebaliknya kita boleh menggunakan apt-get:

$ sudo apt-get pemasangan zenity

Pakej ini juga termasuk dalam repositori archlinux "tambahan":

$ sudo pacman -s Zenity

Mari lihat contoh cara menggunakan Zenity. Kali ini kita akan menulis skrip bash yang, apabila dilaksanakan, akan mengundurkan nama semua fail yang dipilih, setelah meminta, dan menerima, pengesahan pengguna.

#!/Bin/Bash Set -e Set -u Set -O Pipefail Jika Zenity -Question --Title = "Pengesahan" --Text = "Sekiranya saya menjalankan skrip?"; kemudian echo" $ nautilus_script_selected_file_paths "| Walaupun membaca -r dipilih_file; do file =" $ (baseName "$ selected_file") "mv" $ file "" $ file ,, "
Salinan

Dalam skrip yang kami panggil Zenity dengan --soalan, --tajuk dan --teks Pilihan:
masing -masing digunakan, untuk memaparkan dialog soalan, untuk menetapkan tajuk tetingkap pop timbul yang akan dipaparkan, dan menetapkan teks dialog sebenar. Dalam kes ini, kod keluar zenity akan menjadi 0 jika pengguna mengklik pada "ya" dan 1 jika dia mengklik butang "tidak". Seperti yang kita ketahu. Untuk mengurangkan fail yang kami gunakan $ parameter ,, pengembangan parameter.



Dialog Zenity

loadposition in-artle-ads-baner_31

Apabila menggunakan bahasa pengaturcaraan yang lebih canggih seperti Python, kami dapat mengakses beberapa jenis perpustakaan grafik, untuk menghasilkan dialog, seperti TKInter yang merupakan toolkit Python GUI standard de-facto, atau pygobject untuk menggunakan Gtk Toolkit dan perpustakaan.

Kesimpulan

Dalam tutorial ini kita melihat bagaimana, dalam beberapa langkah mudah, kita dapat memperluaskan pengurus fail Nautilus menggunakan skrip dibuat khas yang ditulis dalam pelbagai jenis bahasa pengaturcaraan. Kami melihat di mana skrip harus diletakkan di dalam sistem fail, dan apakah pembolehubah yang dapat kita rujuk di dalamnya untuk mendapatkan jalan atau URI dari fail yang dipilih, URI direktori dibuka dalam pengurus fail fail dan geometrinya. Akhirnya kita dua contoh, yang ditulis dalam Python dan yang lain di Bash. Pada yang terakhir, kita juga melihat bagaimana untuk menghasilkan dialog grafik menggunakan Zenity: Sekiranya anda ingin tahu tentang utiliti ini, tunggu, kami akan membincangkannya tidak lama lagi, di sini di Linuxconfig.org.

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Fail Konfigurasi Linux: 30 teratas yang paling penting
  • Cara Menulis Sambungan Nautilus dengan Nautilus-Python
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Menguasai Gelung Skrip Bash
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
  • Cara Gunung ISO di Linux
  • Bolehkah linux mendapat virus? Meneroka kelemahan Linux ..
  • Perkara yang perlu dilakukan setelah memasang Ubuntu 22.04 Jur -ubur Jammy ..