Jak przedłużyć menedżer plików Gnome Nautilus o niestandardowe skrypty

Jak przedłużyć menedżer plików Gnome Nautilus o niestandardowe skrypty

Chociaż gnome, w jego 3.X iteracja była przedmiotem wielu debat, ze względu na nietradycyjny paradygmat pulpitu, jest to prawdopodobnie najczęściej używany komputer na Linux. Domyślnym menedżerem plików zawartym w Gnome jest Nautilus (nowa nazwa aplikacji to „pliki”). W tym samouczku zobaczymy, w jaki sposób możemy rozszerzyć menedżera plików o funkcje dostarczone przez niestandardowe skrypty.

W tym samouczku nauczysz się:

  • Jak używać niestandardowych skryptów do rozszerzenia funkcji Nautilus


Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny od rozkładu
Oprogramowanie Nautilus Plik Manager
Inny Nie są potrzebne konkretne wymagania, aby przestrzegać tego samouczka
Konwencje # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Tworzenie katalogu skryptów

Pierwszą rzeczą, którą chcemy zrobić, jest utworzenie katalogu, który będzie hostował nasze skrypty: ~/.lokalne/share/nautilus/scenariusze. Po umieszczeniu w tym katalogu skrypty pojawią się automatycznie w menu kontekstowym Nautilus wyświetlonym po wybierzeniu jednego lub więcej plików:

$ mkdir -p ~//.lokalne/share/nautilus/scenariusze

W powyższym poleceniu użyliśmy -P przełącznik (skrót --rodzice) Aby upewnić się, że wszystkie katalogi na określonej ścieżce są tworzone w razie potrzeby, i nie generowane są błędy, jeśli niektóre z nich już istnieją. Dzięki naszemu katalogowi możemy zacząć pracować nad naszymi bardzo przydatnymi skryptami: Zauważ, że zostaną poprawnie uwzględnione w menu kontekstowym Nautilus tylko wtedy, gdy zostaną wykonane wykonywalny. Przed napisaniem kodu powinniśmy nauczyć się znać niektóre zmienne, których możemy użyć w skryptach: są to główny sposób, w jaki możemy wchodzić w interakcje ze statusem menedżera plików, uzyskując dostęp do bardzo przydatnych informacji.



Zmienne skryptów Nautilus

Aby nasze skrypty były w jakiś sposób przydatne, powinna być możliwa interakcja ze statusem menedżera plików i być w stanie odwoływać się, na przykład ścieżka i nazwy wybranych plików lub bieżącego katalogu roboczego: możemy uzyskać dostęp do tych informacji za pomocą niektórych za pośrednictwem niektórych informacji zmienne ustawione dokładnie do tego celu. Zobaczmy je.

Przede wszystkim mamy Nautilus_script_seleced_file_paths zmienny. Tak jak zawsze powinna się zdarzyć, nazwa zmiennej jest dość oczywista: ta zmienna zawiera pełną ścieżkę systemu plików plików aktualnie wybranych w menedżerze plików. Wartość zmienna jest ciągiem; Ścieżki plików są ograniczone za pomocą Nowa linia postacie.

Inną bardzo przydatną zmienną jest Nautilus_script_seleced_uris. Możemy użyć tej zmiennej, takiej jak ta, którą właśnie widzieliśmy, aby odwoływać się do wybranych plików, z jedną różnicą: Do plików nie odwołuje się ich ścieżki, ale URI, lub „Unified Resource Identyfikator”. Rola tej zmiennej staje się widoczna podczas pracy zdalny systemy plików: w takim przypadku proste ścieżki nie będą działać, a Nautilus_script_select_file_paths Zmienna będzie pusta. W takich sytuacjach, aby uzyskać dostęp do plików, musimy również znać typ protokołu w użyciu: plik wybrany w menedżerze plików za pośrednictwem sftp Na przykład protokół zostanie odwołany jako sftp: // ścieżka/do/plik.

Wreszcie mamy Nautilus_script_current_uri i Nautilus_script_window_geometria zmienne. Ten pierwszy zawiera URI katalogu otwartego w pliku Manger; Te ostatnie informacje o geometrii (szerokość i wysokość) i pozycji okna menedżera plików (np.: 631 × 642+26+23).

Praktyczny przykład

Jako przykład zbudujemy bardzo prosty skrypt: jego celem będzie organizowanie zdjęć wybranych w menedżerze plików na podstawie daty ich utworzenia. W takim przypadku skrypt zostanie napisany w pyton, język, który jest domyślnie obsługiwany dla każdej dystrybucji; Możemy oczywiście pisać scenariusze bash lub używać dowolnego innego obsługiwanego języka scenariuszy.

W dzisiejszych czasach prawie wszystkie obrazy cyfrowe zawierają metadane, których możemy użyć do pobierania wszelkiego rodzaju informacji, takich jak typ aparatu lub urządzenia używanego do tworzenia obrazu i używanych ustawień. To, o czym mówimy Exif Tagi: w tym przypadku interesuje nas w tym przypadku OryginalnyDateTime pole (36867). Skrypt będzie w stanie uporządkować tylko zdjęcia zawierające ten tag, i zmienią je w katalogach utworzonych za pomocą nazwy „roku/miesiąc”. Zdjęcia zawierające żadne informacje nie zostaną umieszczone w katalogu o nazwie „Unsorted”. Oto nasz skrypt, zapiszymy go jako „zorganizuj.py ”:

#!/usr/bin/env python3 „” „Autor: egidio leosile zorganizuj wybrane zdjęcia według daty utworzenia, używając znacznika EXIF ​​dataTimeoriginal” „„ Import Importu.getenv ('nautilus_script_seleced_file_paths', ").splitLines (): try: exif_data = obraz.Otwarte (ścieżka)._GetExif () Z wyjątkiem Oserror: kontynuuj próbę: data = dataTime.Datetime.strPTime (exif_data [dataTime_original], „%y:%m:%d%h:%m:%s ') katalog = OS.ścieżka.Dołącz (data.Strftime („%y”), data.Strftime ('%b')) z wyjątkiem (keyerror, valueerror, typeerror): Directory = „Unsorted” OS.Makedirs (Directory, exive_ok = true) OS.Zmień nazwę (ścieżka, OS.ścieżka.dołącz (Directory, OS.ścieżka.Basename (ścieżka))) Jeśli __name__ == '__main__': main ()
Kopiuj

Jak widać, uzyskujemy dostęp do i czytamy Nautilus_script_seleced_file_paths zmienna za pomocą OS.getenv metoda, zapewniając również pusty ciąg jako wartość domyślną, na wypadek, gdyby zmienna nie jest ustawiona. Następnie użyliśmy podzielone linie metoda „eksplodowania” ciągu, która jest wartością zmiennej, o której właśnie wspomnialiśmy, w liście, używając nowej postaci jako ogranicznika. Wreszcie przetworzyliśmy każdą ścieżkę pliku w pętli dla.



Oczywiście skrypt można poprawić, ale sprawdźmy, że działa. Kiedyś umieścimy to w ~/.lokalne/share/nautilus/scenariusze Directory, musimy uczynić go wykonywaniem, uruchamiając:

$ chmod +x ~//.lokalne/share/nautilus/scenariusze/zorganizuj.py

Nowy wpis powinien pojawić się w menu kontekstowym menedżera plików, po wybraniu plików:



Wpis kontekstowy dla naszego skryptu

A oto nasz skrypt w akcji. Wybieramy obrazy, które chcemy sortować i kliknąć „Skrypt/zorganizuj.py ”w menu kontekstowym:

Za pomocą graficznych dialogów w skryptach

Mogą istnieć pewne przypadki, w których nasze skrypty, do poprawnej pracy, powinny być w stanie wchodzić w interakcje z użytkownikiem, być może poprosić o potwierdzenie przed wykonaniem operacji. Możemy tworzyć takie dialogi w naszych skryptach, w zależności od języka programowania, którego używamy. Na przykład podczas pisania scenariuszy Bash możemy użyć Zenity, program do tworzenia GTK Dialogowe pola, które są zwykle dołączone do instalacji GNOME; Jeśli nie jest, możemy go zainstalować za pomocą naszego ulubionego menedżera pakietów dystrybucyjnych. Na przykład na Fedorze możemy uruchomić:

$ sudo dnf instaluj zenity

Zamiast tego w dystrybucjach opartych na debian możemy użyć apt-get:

$ sudo apt-get instaluj zenity

Pakiet jest również zawarty w „dodatkowych” repozytoriach Arritlinux:

$ sudo pacman -s zenity

Zobaczmy przykład, jak używać Zenity. Tym razem napiszemy skrypt bash, który po wykonaniu będzie niewielki pod względem nazwy wszystkich wybranych plików, po prośbie i otrzymaniu potwierdzenia użytkownika.

#!/bin/bash set -e set -u Set -o PipeFail If Zenity -Question - -title = "potwierdzenie" --text = "powinienem uruchomić skrypt?"; następnie echo" $ nautilus_script_seleced_file_paths "| podczas przeczytania -r wybranego_file; do pliku =" $ (basename "$ selected_file") "mv" $ file "" $ plik ,, „Zrobiono fi Fi
Kopiuj

W skrypcie wywołaliśmy Zenity z --pytanie, --tytuł I --tekst Opcje:
Są one używane odpowiednio, aby wyświetlić dialog pytań, aby ustawić tytuł okna wyskakującego, które zostanie wyświetlone, i ustawić rzeczywisty tekst dialogowy. W takim przypadku kod wyjściowy Zenity wyniesie 0, jeśli użytkownik kliknie „Tak” i 1, jeśli kliknie przycisk „Nie”. Jak wiemy, kod wyjściowy 0 oznacza, że ​​polecenie zostało pomyślnie wykonane, dlatego kod wewnątrz instrukcji IF zostanie wykonany. Do małej litery pliku użyliśmy $ parametr ,, Rozszerzenie parametru.



Dialog Zenity

Ladposition in-Article-ADS-Banner_31

Podczas korzystania z bardziej wyrafinowanych języków programowania, takich jak Python, możemy uzyskać dostęp do kilku rodzajów bibliotek graficznych, aby wygenerować dialogi, takie jak Tkinter, który jest standardowym zestawem narzędzi Python Python lub PygObject do użycia GTK narzędzia i biblioteki.

Wnioski

W tym samouczku widzieliśmy, jak, w kilku łatwych krokach, możemy przedłużyć menedżer plików Nautilus za pomocą niestandardowych skryptów napisanych w różnych typach języków programowania. Widzieliśmy, gdzie scenariusze powinny być umieszczone w systemie plików, a jakie są zmienne, które możemy odwoływać do nich, aby uzyskać ścieżki lub URI wybranego pliku, URI katalogu otwartego w menedżerze plików i jego geometrii. Wreszcie my dwa przykłady, jeden napisany w Pythonie, a drugi w Bash. W tym ostatnim widzieliśmy również, jak wygenerować dialog graficzny za pomocą Zenity: Jeśli jesteś ciekawy tego narzędzia, bądźcie czujni, wkrótce o tym porozmawiamy, tutaj, w Linuxconfig.org.

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze
  • Jak napisać rozszerzenia Nautilus z Nautilus-Python
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Mastering Bash Script Loops
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Jak montować obraz ISO na Linux
  • Czy Linux może uzyskać wirusy? Badanie podatności Linuksa…
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 22.04 JAMMY Jellyfish…