Jak sprawić, by menedżer plików Nautilus pamiętał moje otwarte zakładki?

10

Czy można zachować moje otwarte zakładki między zamknięciem a otwarciem menedżera plików Nautilus?

Najlepiej nawet dla różnych wylogowań i restartów.

orschiro
źródło
1
W jednej sesji lub po ponownym uruchomieniu / wylogowaniu?
Jacob Vlijm
@JacobVlijm najlepiej nawet uporczywie podczas restartu / wylogowania.
orschiro
O ile link Parto nie stanowi rozwiązania, opcje / integracja wiersza poleceń nautilus jest dość ograniczona. Nie ma opcji odczytu aktualnie otwartego katalogu ani zmiany go z wiersza poleceń. Pamiętanie tego, czego nie widzisz, wydaje mi się niemożliwe. W ramach jednej sesji możliwa byłaby opcja trick & cheat.
Jacob Vlijm
@JacobVlijm umysł wyjaśnia, jak osiągnąć pamięć w ciągu jednej sesji? To byłaby świetna rzecz na początek. :)
orschiro

Odpowiedzi:

7

(Bardzo) ograniczone opcje wiersza poleceń nautilus

Niestety, nautilus nie oferuje opcji wiersza poleceń do odczytu otwartego katalogu swoich okien, ani nie ma opcji wysłania istniejącego okna do innego katalogu. Ponieważ nie pamiętasz tego, czego nie widzisz, na pierwszy rzut oka zabrakło opcji.

jednak

Musimy nie robić tego xdotool, co nautilusnie, ale przynajmniej udawać opisywane zachowanie. Możemy to zrobić w taki sposób, aby „uwierzyłbyś”, gdybyś nie wiedział, jak to się robi.

Chociaż poniższe rozwiązanie nie przetrwa restartu, okno „zapamiętywania” (ewentualnie z kartami) i wszystkie otwarte katalogi są bardzo możliwe w ciągu jednej sesji. Ponieważ wspomniałeś, że jesteś zainteresowany „drugim wyborem”, oto jest.

Jak to działa; proces

Chociaż nie możemy zamknąć okno i zachować swoje zakładki i otworzył katalogi, my może uczynić istniejący okno pozornie (i całkowicie) zniknie z pomocą xdotool.

Jeśli następnie zmienimy zachowanie programu nautilusuruchamiającego w taki sposób, że najpierw szuka możliwych niezapapowanych okien do ponownego mapowania, przed otwarciem nowego, faktycznie mamy dokładnie takie samo zachowanie, jakbyśmy nautiluspamiętali ostatnio używane okna.

Jak skonfigurować

  1. Skopiuj poniższy skrypt do pustego pliku i zapisz go jako remember.py

    #!/usr/bin/env python3
    import subprocess
    import os
    
    app = "nautilus"
    
    wfile = os.environ["HOME"]+"/.unmapped_"+app
    
    def get(cmd):
        # simply a helper function
        return subprocess.check_output(cmd).decode("utf-8").strip()
    
    def check_windowtype(w_id):
        # check the type of window; only unmap "NORMAL" windows
        return "_NET_WM_WINDOW_TYPE_NORMAL" in get(["xprop", "-id", w_id])
    
    def get_pid(app):
        # (try to) get the pid of the application 
        try:
            return get(["pgrep", app])
        except subprocess.CalledProcessError:
            pass
    
    def get_matches(pid):
        # get the window list, select the valid (real) app's windows
        ws = get(["wmctrl", "-lpG"]).splitlines()
        matches = [w.split() for w in ws if pid in w]
        return [w for w in matches if check_windowtype(w[0]) == True]
    
    try:
        # try to read the file with unmapped windows
        wininf = [l.split() for l in open(wfile).readlines()]
    except FileNotFoundError:
        # if there are no, unmap the current app's windows
        filebrowserwins = get_matches(get_pid(app))
        if filebrowserwins:
            open(wfile, "wt").write(("\n").join((" ").join(l) for l in filebrowserwins))
            for w in [w[0] for w in filebrowserwins]:
                subprocess.Popen(["xdotool", "windowunmap", w])
        else:
            arg = "--new-window" if app == "nautilus" else "" 
            subprocess.Popen([app, arg])
    else:
        # re- map unmapped windows
        for w in wininf:
            wid = w[0]; geo = w[3:7]
            subprocess.call(["xdotool", "windowmap", wid])
            subprocess.Popen(["wmctrl", "-ir", wid, "-e", "0,"+(",").join(geo)])
        os.remove(wfile)
    
  2. Skrypt potrzebuje zarówno wmctrla xdotool:

    sudo apt-get install wmctrl xdotool
    
  3. Skopiuj program nautilusuruchamiający z /usr/share/applicationsdo~/.local/share/applications

    dla 15.04 i późniejszych:

    cp /usr/share/applications/org.gnome.Nautilus.desktop ~/.local/share/applications
    

    dla wcześniejszych wersji Ubuntu:

    cp /usr/share/applications/nautilus.desktop  ~/.local/share/applications
    
  4. otwórz lokalną kopię za pomocą gedit:

    gedit ~/.local/share/applications/org.gnome.Nautilus.desktop
    

    (w przypadku 15.04 +)

    i poszukaj pierwszej linii, zaczynając od Exec=. Zmień to na:

    Exec=python3 /path/to/remember.py
    

    Zapisz i zamknij plik.

  5. Utwórz skrót klawiaturowy za pomocą tego samego polecenia: Wybierz: Ustawienia systemu> „Klawiatura”> „Skróty”> „Skróty niestandardowe”. Kliknij „+” i dodaj polecenie:

    python3 /path/to/remember.py
    
  6. Teraz wyloguj się i zaloguj ponownie

Jak używać

Użycie jest bardzo proste:

  • Aby otworzyć okno, wykonaj jak zwykle: kliknij program uruchamiający nautilus. Zakładki w oknie, jak chcesz:

    wprowadź opis zdjęcia tutaj

  • Aby definitywnie zamknąć okno , zamknij je, klikając pole „zamknij” ( x ) okna.

  • Aby zachować okno (okna) + wszystkie jego zakładki:
    naciśnij klawisz skrótu. Okno zniknie (pozornie zamknięte).

    wprowadź opis zdjęcia tutaj

  • Następnym razem, gdy klikniesz program uruchamiający, okna nautilusa pojawią się dokładnie tak jak ostatnim razem, nawet pozycje okien zostaną zachowane.

    wprowadź opis zdjęcia tutaj

Otóż ​​to

Uwaga

  • W testach, które przeprowadziłem, nie mogłem znaleźć żadnych wad (14.04). Jeśli możesz je spotkać, proszę wspomnieć!
  • W sekcji Jak używać -sugerowałem, aby kliknąć ikonę nautilus, aby odwzorować możliwe niezmapowane okna. Klawisz skrótu zrobi to samo, dzięki czemu można zobaczyć, co jest dla Ciebie najwygodniejsze. Ponadto, jeśli otworzyłeś folder podwójnym kliknięciem po cofnięciu mapowania na więcej folderach, niezmapowane foldery nadal zostaną ponownie mapowane przez skrót.

EDYTOWAĆ:

Użytkownicy Nemo

Użytkownicy Nemo mogą równie dobrze skorzystać z powyższego rozwiązania, ale:

  • W sekcji głównej skryptu zmień:

    app = "nautilus"
    

    w:

    app = "nemo"
    
  • W punkcie 3 użyj:

    cp /usr/share/applications/nemo.desktop ~/.local/share/applications
    
  • W punkcie 4 użyj:

    gedit ~/.local/share/applications/nemo.desktop
    

Testowany, okazał się działać z nemo

Jacob Vlijm
źródło
Świetne rozwiązanie robocze i dobrze udokumentowane. Dziękuję Ci bardzo!
orschiro
@orschiro zawsze fajnie, jeśli to działa :) Nie ma za co!
Jacob Vlijm
5

Polecam użycie innego menedżera plików, jeśli nie masz nic przeciwko, ponieważ Nautilus nie ma tej funkcji .

Oto jedna alternatywna aplikacja, która załatwia sprawę : SpaceFM

Oto jak go zainstalować.

Ma bogate funkcje, takie jak, oczywiście, ponowne otwieranie ostatnich zakładek .

Aby ustawić go jako domyślny menedżer plików:

xdg-mime default spacefm.desktop inode/directory

Giraldi
źródło
0

Najłatwiejszym sposobem uzyskania dostępu do folderów jest tworzenie zakładek. Nie będziesz mieć otwartych kart, ale możesz przynajmniej szybko zobaczyć foldery, które chcesz (i jeśli o tym pomyślisz, zakładki działają jak karty).

Wystarczy otworzyć folder w Nautilusie, przejść do menu Zakładki i dodać zakładkę.

lapisdecor
źródło