Come posso fare in modo che il gestore file Nautilus ricordi le mie schede aperte?


10

È possibile conservare le mie schede aperte tra la chiusura e l'apertura del file manager Nautilus?

Preferibilmente anche attraverso diversi logout e riavvii.



1
In una sessione o dopo il riavvio / logout?
Jacob Vlijm,

@JacobVlijm preferibilmente anche persistente nel riavvio / logout.
Orschiro,

A meno che il collegamento di Parto non fornisca una soluzione, le opzioni / integrazione della riga di comando di nautilus sono piuttosto limitate. Non è possibile leggere la directory attualmente aperta né modificarla dalla riga di comando. Ricordare ciò che non puoi vedere mi sembra impossibile. Entro una sessione, tuttavia, sarebbe possibile un'opzione trick & cheat.
Jacob Vlijm,

@JacobVlijm ti sta spiegando come ottenere il ricordo in una sessione? Sarebbe già un'ottima cosa per cominciare. :)
Orschiro,

Risposte:


7

Opzioni (molto) limitate della riga di comando di nautilus

Sfortunatamente, nautilus non offre opzioni da riga di comando per leggere la directory aperta delle sue finestre, né ha alcuna opzione per inviare una finestra esistente in un'altra directory. Dato che non ricordi cosa non vedi, a prima vista stiamo esaurendo le opzioni.

però

Dobbiamo xdotool, non fare ciò che nautilusnon lo fa, ma almeno falsificare il comportamento che descrivi. Possiamo farlo in modo tale che "ci crederesti" se non sapessi come si fa.

Sebbene la soluzione seguente non sopravviva a un riavvio, la finestra "ricordare" (possibilmente a schede) e tutte le directory aperte è molto ben possibile in una sessione. Dato che hai detto di essere interessato a questo come una "seconda scelta", eccolo qui.

Come funziona; il processo

Anche se non possiamo chiudere una finestra e preservare le schede aperte e le directory, si può fare una finestra esistente apparentemente (e completamente) scomparire, con l'aiuto di xdotool.

Se successivamente si modifica il comportamento del nautilusprogramma di avvio in modo tale che esso primi sguardi per possibili finestre non mappati per rimappare, prima di aprire uno nuovo, in modo efficace abbiamo esattamente lo stesso comportamento, come se nautilussarebbe ricordare l'ultima finestra utilizzata (s).

Come impostare

  1. Copia lo script qui sotto in un file vuoto, salvalo come 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. Lo script ha bisogno di entrambi wmctrle xdotool:

    sudo apt-get install wmctrl xdotool
    
  3. Copia il programma di nautilusavvio da /usr/share/applicationsa~/.local/share/applications

    per il 15.04 e successivi:

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

    per le versioni precedenti di Ubuntu:

    cp /usr/share/applications/nautilus.desktop  ~/.local/share/applications
    
  4. apri la copia locale con gedit:

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

    (in caso di 15.04 +)

    e cerca la prima riga, a partire da Exec=. Modificalo in:

    Exec=python3 /path/to/remember.py
    

    Salva e chiudi il file.

  5. Crea una scorciatoia da tastiera con lo stesso comando: Scegli: Impostazioni di sistema> "Tastiera"> "Scorciatoie"> "Scorciatoie personalizzate". Fai clic su "+" e aggiungi il comando:

    python3 /path/to/remember.py
    
  6. Ora disconnettiti e accedi nuovamente

Come usare

L'uso è molto semplice:

  • Per aprire una finestra, fai come di consueto: fai clic sul launcher nautilus. Tab la finestra come ti piace:

    inserisci qui la descrizione dell'immagine

  • Per chiudere definitivamente una finestra , chiudila facendo clic sulla casella "chiudi" ( x ) della finestra.

  • Per conservare la finestra (e) + tutte le sue schede:
    premere il tasto di scelta rapida. Le finestre svaniranno (apparentemente vicine).

    inserisci qui la descrizione dell'immagine

  • La prossima volta che fai clic sul programma di avvio, le finestre del nautilus appariranno esattamente come l'ultima volta, anche le posizioni della finestra verranno conservate.

    inserisci qui la descrizione dell'immagine

Questo è tutto

Nota

  • Nei test eseguiti, non sono riuscito a trovare alcun aspetto negativo (14.04). Se potresti imbatterti in qualcuno, per favore menziona!
  • Nella sezione Come usare , ho suggerito di fare clic sull'icona nautilus per rimappare eventuali finestre non mappate. Il tasto di scelta rapida farà lo stesso, quindi puoi vedere quale funziona meglio per te. Inoltre, se è stata aperta una cartella con un doppio clic dopo aver decompresso o più cartelle, le scorciatoie rimarranno comunque rimappate.

MODIFICARE:

Utenti Nemo

Gli utenti di Nemo possono ugualmente utilizzare la soluzione sopra, ma:

  • Nella sezione head dello script, modifica:

    app = "nautilus"
    

    in:

    app = "nemo"
    
  • Al punto 3, utilizzare:

    cp /usr/share/applications/nemo.desktop ~/.local/share/applications
    
  • Al punto 4, utilizzare:

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

Testato, ha dimostrato di funzionare con nemo


Ottima soluzione funzionante e ben documentata. Grazie mille!
Orschiro,

@orschiro sempre divertente se funziona :) Prego!
Jacob Vlijm,

5

Ti consiglio invece di utilizzare altri file manager se per te va bene dato che Nautilus non ha questa funzione .

Ecco un'app alternativa che fa il trucco: SpaceFM

Ecco come installarlo.

Ha funzionalità avanzate come, ovviamente, riaprire le ultime schede .

Per renderlo il file manager predefinito :

xdg-mime default spacefm.desktop inode/directory



0

Il modo più semplice per accedere alle cartelle è il bookmarking. Non tieni aperte le tue schede ma puoi almeno vedere rapidamente le cartelle che desideri (e se ci pensi, i segnalibri agiscono come schede).

Basta aprire una cartella su Nautilus, andare al menu Segnalibro e aggiungere un segnalibro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.