Cara Memperluas Pengurus Fail Gnome Nautilus dengan skrip tersuai
- 2872
- 464
- Clarence Powlowski
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
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 ..
- « Cara Mengaktifkan Autologin di Kali Linux
- Cara menggunakan widget grafik dalam skrip bash dengan Zenity »