Cara memperluas manajer file nautilus gnome dengan skrip khusus

Cara memperluas manajer file nautilus gnome dengan skrip khusus

Meskipun gnome, dalam 3 nya.x iterasi telah menjadi objek banyak perdebatan, karena paradigma desktop non-tradisionalnya, itu mungkin desktop yang paling banyak digunakan di Linux. Manajer File Default yang termasuk dalam GNOME adalah Nautilus (nama aplikasi baru adalah "File"). Dalam tutorial ini kita akan melihat bagaimana kita dapat memperluas file manajer dengan fungsi yang disediakan oleh skrip khusus.

Dalam tutorial ini Anda akan belajar:

  • Cara menggunakan skrip khusus untuk memperluas fungsionalitas nautilus


Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Distribusi-independen
Perangkat lunak Manajer File Nautilus
Lainnya Tidak diperlukan persyaratan khusus untuk mengikuti tutorial ini
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Membuat direktori skrip

Hal pertama yang ingin kami lakukan adalah membuat direktori yang akan meng -host skrip kami: ~/.lokal/berbagi/nautilus/skrip. Setelah ditempatkan di direktori ini, skrip akan secara otomatis muncul di menu konteks Nautilus yang ditampilkan ketika kami memilih satu atau lebih file:

$ mkdir -p ~/.lokal/berbagi/nautilus/skrip

Dalam perintah di atas kami menggunakan -P Beralih (pendek untuk --orang tua) untuk memastikan bahwa semua direktori di jalur yang ditentukan dibuat sesuai kebutuhan, dan tidak ada kesalahan yang dihasilkan jika beberapa dari mereka sudah ada. Dengan direktori kami di tempat, kami dapat mulai mengerjakan skrip kami yang sangat berguna: perhatikan bahwa mereka akan dimasukkan dengan benar dalam menu konteks nautilus hanya jika dibuat dapat dieksekusi. Sebelum menulis kode, kita harus belajar mengetahui beberapa variabel yang dapat kita gunakan di dalam skrip: mereka adalah cara utama kita dapat berinteraksi dengan status manajer file, mengakses informasi yang sangat berguna.



Variabel skrip nautilus

Agar skrip kami entah bagaimana berguna, harus dimungkinkan untuk berinteraksi dengan status file manajer dan dapat merujuk, misalnya, jalur dan nama file yang dipilih, atau direktori kerja saat ini: kami dapat mengakses informasi ini melalui beberapa Variabel ditetapkan persis untuk tujuan ini. Mari kita lihat mereka.

Pertama -tama kami memiliki Nautilus_script_selected_file_paths variabel. Seperti yang harus selalu terjadi, nama variabel cukup jelas: variabel ini memegang jalur sistem file lengkap dari file yang saat ini dipilih di file manager. Nilai variabel adalah string; jalur file dibatasi oleh penggunaan garis baru karakter.

Variabel lain yang sangat berguna adalah Nautilus_script_selected_uris. Kita dapat menggunakan variabel ini, seperti yang baru saja kita lihat, untuk merujuk file yang dipilih, dengan satu perbedaan: file tidak dirujuk oleh jalur mereka, tetapi oleh mereka Uri, atau "Pengidentifikasi Sumber Daya Terpadu". Peran variabel ini menjadi jelas saat bekerja terpencil Sistem file: Dalam hal ini, jalur sederhana tidak akan berfungsi, dan Nautilus_script_select_file_paths Variabel akan kosong. Dalam situasi seperti itu, untuk mengakses file, kami juga perlu mengetahui jenis protokol yang digunakan: file yang dipilih di File Manager melalui sftp Protokol, misalnya, akan dirujuk sebagai sftp: // path/to/file.

Akhirnya, kami memiliki Nautilus_script_current_uri dan Nautilus_script_window_geometry variabel. Yang pertama berisi Uri direktori dibuka di manger file; Informasi terakhir tentang geometri (lebar dan tinggi) dan posisi jendela manajer file (misalnya: 631 × 642+26+23).

Contoh praktis

Sebagai contoh, kami akan membangun skrip yang sangat sederhana: Tujuannya adalah untuk mengatur gambar yang dipilih di File Manager di pangkalan tanggal pembuatannya. Dalam hal ini skrip akan ditulis Python, bahasa yang didukung secara default pada setiap distribusi; Kami tentu saja dapat menulis skrip bash, atau menggunakan bahasa skrip yang didukung lainnya.

Saat ini hampir semua gambar digital berisi metadata yang dapat kita gunakan untuk mengambil semua jenis informasi, seperti jenis kamera atau perangkat yang digunakan untuk membuat gambar dan pengaturan yang digunakan. Apa yang kita bicarakan disebut exif Tag: apa yang menarik minat kita dalam hal ini OriginalDateTime Lapangan (36867). Script akan dapat mengatur hanya gambar yang mencakup tag itu, dan akan mengatur ulang di direktori yang dibuat menggunakan pola "tahun/bulan". Gambar yang tidak ada informasi yang akan ditempatkan di direktori yang disebut "tidak disortir". Inilah naskah kami, kami akan menyimpannya sebagai “Atur.py ”:

#!/usr/bin/env python3 """ Author: Egidio Docile Organize selected pictures by their creation date, using the exif DateTimeOriginal tag """ import datetime import os from PIL import Image DATETIME_ORIGINAL=36867 def main(): for path in os.getEnv ('nautilus_script_selected_file_paths', ").splitline (): coba: exif_data = gambar.Buka (jalur)._getExif () Kecuali OsError: Lanjutkan Coba: Tanggal = Datetime.tanggal Waktu.strPTime (exif_data [datetime_original], '%y:%m:%d%h:%m:%s') direktori = os.jalur.Bergabunglah (tanggal.strftime ('%y'), tanggal.strftime ('%b')) kecuali (KeyError, ValueError, TypeError): Directory = "Unsorted" OS.makedirs (direktori, eksist_ok = true) os.Ganti nama (Path, OS.jalur.Bergabunglah (direktori, OS.jalur.Basename (Path))) if __name__ == '__main__': main ()
Menyalin

Seperti yang Anda lihat, kami mengakses dan membaca Nautilus_script_selected_file_paths variabel menggunakan os.getenv metode, juga memberikan string kosong sebagai nilai default, jika variabel tidak diatur. Kami kemudian menggunakan garis terpisah Metode untuk "meledak" string yang merupakan nilai variabel yang baru saja kami sebutkan, ke dalam daftar, menggunakan karakter baru sebagai pembatas. Akhirnya kami memproses setiap jalur file dalam loop untuk.



Tentu saja skrip dapat ditingkatkan, tetapi mari kita verifikasi bahwa itu berhasil. Setelah kami meletakkannya di ~/.lokal/berbagi/nautilus/skrip direktori, kita harus membuatnya dapat dieksekusi dengan menjalankan:

$ chmod +x ~/.lokal/berbagi/nautilus/skrip/atur.py

Entri baru akan muncul di menu konteks File Manager, saat file dipilih:



Entri konteks-menu untuk skrip kami

Dan inilah skrip kami sedang beraksi. Kami memilih gambar yang ingin kami urutkan dan klik “Script/Organize.py ”di menu konteks:

Menggunakan dialog grafis dalam skrip

Mungkin ada beberapa kasus di mana skrip kami, untuk bekerja dengan benar, harus dapat berinteraksi dengan pengguna, mungkin untuk meminta konfirmasi sebelum melakukan operasi. Kami dapat membuat dialog seperti itu dalam skrip kami, tergantung pada bahasa pemrograman yang kami gunakan. Saat menulis skrip bash, misalnya, kita dapat menggunakan zenity, program untuk membuat GTK Kotak dialog, yang biasanya disertakan dengan instalasi GNOME; Jika tidak, kami dapat menginstalnya menggunakan manajer paket distribusi favorit kami. Di Fedora, misalnya kita dapat menjalankan:

$ sudo dnf menginstal zenity

Pada distribusi berbasis Debian, sebaliknya kita dapat menggunakan apt-get:

$ sudo apt-get install zenity

Paket ini juga termasuk dalam repositori archlinux "ekstra":

$ sudo Pacman -s zenity

Mari kita lihat contoh tentang cara menggunakan zenity. Kali ini kami akan menulis skrip bash yang, ketika dieksekusi, akan memberi nama semua nama file yang dipilih, setelah meminta, dan menerima, konfirmasi pengguna.

#!/bin/bash set -e set -u set -o pipefail Jika zenity --question --Title = "konfirmasi" --text = "Haruskah saya menjalankan skrip?"; lalu echo" $ nautilus_script_selected_file_paths "| sementara baca -r selected_file; do file =" $ (basename "$ selected_file") "mv" $ file "" $ file ,, "Done fi
Menyalin

Dalam skrip kami memohon zenity dengan --pertanyaan, --judul Dan --teks pilihan:
Mereka digunakan masing -masing, untuk menampilkan dialog pertanyaan, untuk mengatur judul jendela popup yang akan ditampilkan, dan untuk mengatur teks dialog yang sebenarnya. Dalam hal ini, kode keluar zenity akan 0 jika pengguna mengklik pada "ya" dan 1 jika dia mengklik tombol "Tidak". Seperti yang kita ketahui, kode keluar dari 0 berarti bahwa perintah itu berhasil dieksekusi, oleh karena itu kode di dalam pernyataan IF akan dieksekusi. Untuk memberi huruf kecil file yang kami gunakan $ parameter ,, ekspansi parameter.



Dialog Zenity

LoadPosition In-Article-ads-Banner_31

Saat menggunakan bahasa pemrograman yang lebih canggih seperti Python, kita dapat mengakses beberapa jenis perpustakaan grafis, untuk menghasilkan dialog, seperti Tkinter yang merupakan perangkat python GUI standar de-facto, atau pygobject untuk menggunakan GTK Toolkit dan Perpustakaan.

Kesimpulan

Dalam tutorial ini kami melihat bagaimana, dalam beberapa langkah mudah, kami dapat memperluas manajer file nautilus menggunakan skrip yang dibuat khusus yang ditulis dalam berbagai jenis bahasa pemrograman. Kami melihat di mana skrip harus ditempatkan di sistem file, dan apa variabel yang dapat kami referensi di dalamnya untuk mendapatkan jalur atau URI dari file yang dipilih, URI dari direktori yang dibuka di file manajer file dan geometrinya. Akhirnya kami berdua, satu ditulis dalam Python dan yang lainnya di Bash. Di yang terakhir, kami juga melihat bagaimana menghasilkan dialog grafis menggunakan zenity: Jika Anda ingin tahu tentang utilitas ini, tetaplah disini, kami akan segera membicarakannya, di sini di LinuxConfig.org.

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Cara menulis ekstensi nautilus dengan nautilus-python
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Menguasai loop skrip bash
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Cara memasang gambar iso di linux
  • Can Linux mendapatkan virus? Menjelajahi kerentanan Linux…
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…