È possibile conservare le mie schede aperte tra la chiusura e l'apertura del file manager Nautilus?
Preferibilmente anche attraverso diversi logout e riavvii.
È possibile conservare le mie schede aperte tra la chiusura e l'apertura del file manager Nautilus?
Preferibilmente anche attraverso diversi logout e riavvii.
Risposte:
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 nautilus
non 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.
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 nautilus
programma 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 nautilus
sarebbe ricordare l'ultima finestra utilizzata (s).
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)
Lo script ha bisogno di entrambi wmctrl
e xdotool
:
sudo apt-get install wmctrl xdotool
Copia il programma di nautilus
avvio da /usr/share/applications
a~/.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
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.
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
Ora disconnettiti e accedi nuovamente
L'uso è molto semplice:
Per aprire una finestra, fai come di consueto: fai clic sul launcher nautilus. Tab la finestra come ti piace:
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).
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.
Questo è tutto
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
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
Ha funzionalità avanzate come, ovviamente, riaprire le ultime schede .
Per renderlo il file manager predefinito :
xdg-mime default spacefm.desktop inode/directory
Prova questi script per salvare e ripristinare le schede del file manager nautilus. https://github.com/susurri/nautilus_save_tabs/
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.