Jak dostosować menu kontekstowe w Nautilus?

29

Od czasu do czasu wpadam na pomysły działań, które chciałbym mieć w menu kontekstowym Nautilus. Jak je tam dodać? Czy istnieje coś takiego jak wtyczka Thunar UCA dla Nautilus?

Ivan
źródło
„Utwórz nowy dokument” po kliknięciu prawym przyciskiem myszy, zapoznaj się z tym askubuntu.com/questions/777711/…
HMagdy

Odpowiedzi:

25

Poniższa odpowiedź jest nieaktualna: niedawno zaktualizowana odpowiedź jest .


Menu kontekstowe Nautilusa można było dostosowywać za pomocą rozszerzeń Nautilus . Ostrzegamy, że ten link prowadzi do zarchiwizowanego dokumentu; Gnome devs usunął tę dokumentację i nie obsługuje już tego rodzaju dostosowań. Może jednak nadal działać.

Możesz także umieścić skrypty zwykłej powłoki w katalogu ~/.local/share/nautilus/scripts( ~/.gnome2/nautilus-scriptswe wczesnych wersjach), a pojawią się one w menu kontekstowym pliku w podmenu Skrypty .

ulidtko
źródło
3
Należy pamiętać, że jak powiedziano w askubuntu.com/questions/281062/... jeśli korzystasz z systemu Ubuntu 13.04, który korzysta z nowszej wersji Nautilus, powinieneś używać ~/.local/share/nautilus/scriptsfolderu do umieszczania skryptów. I nawet wtedy będą wyświetlane tylko skrypty kiedy klikniesz prawym przyciskiem myszy plik lub folder, a nie puste miejsce.
Logan
2
czy to nie jest przestarzałe?
@cipricus to jest. Odpowiedzi udzielono w 2011 r., Czyli 6 lat temu . 12 wydań Ubuntu wcześniej.
ulidtko
pytanie nie jest oznaczone jako specyficzne dla wydania i są bardzo aktualne odpowiedzi
@ deser - Nie widzę sensu w dostosowywaniu pytania do nieaktualnej odpowiedzi tylko dlatego, że w przeszłości ta odpowiedź była oznaczona jako ostateczna. To sprawiłoby, że zaktualizowana (i najczęściej głosowana) odpowiedź wyglądałaby tutaj nie na miejscu, kiedy najlepszym sposobem byłoby oznaczenie tej ostatniej odpowiedzi jako ostatecznej. - Innym sposobem byłoby dodanie krótkiej edycji do ostatecznej, obecnie nieaktualnej odpowiedzi, łączącej ze zaktualizowaną: co właśnie zrobiłem.
30

Aktualizacja dla Ubuntu 18.04

W dniu wydania Ubuntu 18.04 Nautilus-Actions był / nie jest już dostępny. Wydaje się również, że został zastąpiony przez nowy program o nazwie Filemanager-Actions, który inaczej wygląda identycznie.


Aby zainstalować ten program, zobacz to rozwiązanie.


Akcje Nautilus

Możemy zdefiniować własne pozycje menu kontekstowego klikając prawym przyciskiem myszy za pomocą akcji nautilus Zainstaluj działania nautilus .

  • Uruchom narzędzie konfiguracyjne Nautilus-Actions albo z poziomu Dash, albo z terminala za pomocą

    nautilus-actions-config-tool
    

wprowadź opis zdjęcia tutaj

  • W zakładce Akcja podaj sensowną etykietę swojej akcji, np. „Otwórz w Terminatorze” i wybierz, aby wyświetlać ją w menu wyboru lub menu kontekstowym.

  • Następnie otwórz kartę Polecenia , aby wprowadzić polecenia do uruchomienia

wprowadź opis zdjęcia tutaj

  • Podaj pełną ścieżkę do polecenia ( /usr/bin/command_to_run) i opcji programu.

  • Po wylogowaniu i ponownym uruchomieniu wyświetli się menu kontekstowe z prawym przyciskiem myszy:

wprowadź opis zdjęcia tutaj


Takkat
źródło
1
Czy to wciąż jest aktualne?
RolandiXor
2
Akcje Nautilus działają zgodnie z oczekiwaniami w 12.04
Takkat
11

Można użyć rozszerzenia python-nautilus jako alternatywy dla nautilus-actions.

Żeby zainstalować:

sudo apt-get install python-nautilus

Prosty przykład:

import os

from gi.repository import Nautilus, GObject

class ColumnExtension(GObject.GObject, Nautilus.MenuProvider):
    def __init__(self):
        pass
    def menu_activate_cb(self, menu, file):
         os.system("write here your simple bash command & pid=$!")

    def get_background_items(self, window, file):
        item = Nautilus.MenuItem(name='ExampleMenuProvider::Foo2', 
                                         label='Name of your item', 
                                         tip='',
                                         icon='')
        item.connect('activate', self.menu_activate_cb, file)
        return item,

Skopiuj ten skrypt Pythona ~/.local/share/nautilus-python/extensionsi zrestartuj nautilus. Po kliknięciu pulpitu prawym przyciskiem myszy i wybraniu elementu, zostanie wykonane proste polecenie bash :)

mnrl
źródło
może być konieczne utworzenie folderów nautilus-pythoni extensionsfolderów, jeśli ich tam nie ma.
souravc
Wypróbowałem większość rozwiązań w tym temacie i okazało się, że najlepsze jest rozwiązanie Python. Chociaż nie jest idealny, głównie z powodu braku dokumentacji, pozwala na bardziej elastyczne skrypty i przenośność.
Ricardo Rodrigues,
3

Jeśli chcesz być w stanie zrobić coś w dowolnym momencie, zrób jak mówi ulidtko i użyj ~/.gnome2/nautilus-scripts.

Jeśli chcesz mieć możliwość dostosowania, gdy go widzisz, zainstaluj pakiet nautilus-Actions, a następnie przejdź do System-> Preferencje-> Konfiguracja działań Nautilus.

zpletan
źródło
3

Era 29 listopada 2016 r. Ubuntu 14.04, 16.04 i 16.10 plus wcześniejsze wersje.

Zobacz instrukcje Nautilusa dotyczące tworzenia własnego skryptu tutaj ( Pomoc Ubuntu - Skrypty Nautilus jak to zrobić ). Zasadniczo ty:

  • Przejdź do katalogu ~/.local/share/nautilus/scripts/
  • Umieść tam swój skrypt (napisany w języku Bash, Perl lub Python).
  • Oznacz skrypt jako wykonywalny za pomocą Nautilus lub z terminala za pomocą chmod +x script_name
  • Nautilus udostępnia skrypty środowiskowe: NAUTILUS_SCRIPT_SELECTED_FILE_PATHS, NAUTILUS_SCRIPT_SELECTED_URIS, NAUTILUS_SCRIPT_CURRENT_URI i NAUTILUS_SCRIPT_WINDOW_GEOMETRY

Istnieją przykładowe skrypty znajdujące się w ( Help Ubuntu - Nautilus Sample Scripts ) do plików e-mail, montowania pliku ISO, ustawiania plików tylko do odczytu, edycji pliku z uprawnieniami gedit ROOT, otwierania terminala w bieżącej lokalizacji itp.

Przejrzyj skrypty i weź jeden jako szablon do szyfrowania plików, przesyłania do chmury, kompresji do kopii zapasowej lub cokolwiek innego, co musisz zrobić.

WinEunuuchs2Unix
źródło
2

TL; DR

Najlepszym rozwiązaniem dla twórców aplikacji jest użycie python-nautilus .

Utwórz skrypt w języku Python ( poniższe przykłady i złą dokumentację ) i skopiuj go do odpowiedniego folderu:

mkdir -p ~/.local/share/nautilus-python/extensions && cp script.py ~/.local/share/nautilus-python/extensions

Szczegółowe wyjaśnienie

Powiedzmy, że chcemy stworzyć aplikację, że użytkownik instaluje ze skryptu lub .debpliku, z myślą o tym będę wyjaśniając, dlaczego myślę, python-nautilusjest lepszym rozwiązaniem w porównaniu z nautilus-actions i nautilus skryptów .

Akcje Nautilus

Jest to jedyne rozwiązanie, które oferuje interfejs GUI, a zatem ułatwia tworzenie złożonych zachowań, na przykład decydowanie, które pozycje menu mają być wyświetlane, jeśli typem wybranego pliku jest mime text/plain.

Główny problem z tym rozwiązaniem polega na tym, że nie jest łatwo (jeśli to możliwe) zaimportować wpisy na inny komputer bez Narzędzia konfiguracyjnego i importującego je użytkownika, powiedzmy, że nie byłoby możliwe wykonanie skryptu.

Skrypty Nautilus

Jest to prostsze rozwiązanie, wybierz skrypt, umieść go w folderze i gotowe. To zdecydowanie pozwoliłoby skryptowi instalacyjnemu lub .debplikowi utworzyć nowy wpis w menu kontekstowym. Jakie są problemy? Gdzie zaczynam...

  • Zawsze pojawia się w podmenu Skrypty.
  • Nie pokazuje, jeśli nic nie zostało wybrane.
  • Nie pozwala ci zdecydować, czy powinieneś pokazać wpis, czy nie.
  • Nie zezwala na Podpowiedzi ani inne tytuły. (może jestem wybredna)

Dobra aplikacja nie używa takich skrótów, ponieważ psuje to wrażenia użytkownika.

python-nautilus

Nie jest tak łatwe do stworzenia jak poprzednie rozwiązania, ale oferuje to, co najlepsze z obu światów. Skrypty i dostosowywanie.

To rozwiązanie umożliwia utworzenie skryptu w języku Python, który odbiera pliki wybrane w nautilusie i pozwala zdecydować, czy chcesz wyświetlić wpis, czy nie i co zrobić z tym wpisem. Pozwala także tworzyć podmenu i / lub fajne rzeczy.

Wadą jest duży brak dokumentacji, a programiści, którzy chcą tylko dodać wpis, mogą stracić kilka godzin na stworzenie działającego prototypu (w moich badaniach znalazłem rozwiązanie oparte na C, które było znacznie bardziej skomplikowane niż to).

Zwykle używam Visual Studio Code, podczas gdy w Windows oferuje pozycję menu kontekstowego Open with Visual Studio Code, brakuje mu tej samej funkcjonalności w Linuksie, z rozwiązaniem Python łatwo byłoby rozwiązać problem. Myślę, że aplikacje w Linuksie mogą skorzystać z integracji nautilusa.

Mam nadzieję, że to wyjaśnienie pomogło ci zdecydować, co wybrać.

Ricardo Rodrigues
źródło
Właśnie dlatego chciałem również dodać menu kontekstowe. Czy mógłbyś opublikować swoje rozwiązanie „Open with VS Code” python-nautilus? Dzięki.
Sharpiro,
Cra0zy poprawił moją wersję do pasującego rozwiązania: gist.github.com/cra0zy/f8ec780e16201f81ccd5234856546414
Ricardo Rodrigues