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.
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.
Odpowiedzi:
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 nautilus
nie, 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.
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 nautilus
uruchamiają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 nautilus
pamiętali ostatnio używane okna.
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)
Skrypt potrzebuje zarówno wmctrl
a xdotool
:
sudo apt-get install wmctrl xdotool
Skopiuj program nautilus
uruchamiający z /usr/share/applications
do~/.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
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.
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
Teraz wyloguj się i zaloguj ponownie
Użycie jest bardzo proste:
Aby otworzyć okno, wykonaj jak zwykle: kliknij program uruchamiający nautilus. Zakładki w oknie, jak chcesz:
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).
Następnym razem, gdy klikniesz program uruchamiający, okna nautilusa pojawią się dokładnie tak jak ostatnim razem, nawet pozycje okien zostaną zachowane.
Otóż to
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
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
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
Wypróbuj te skrypty, aby zapisać i przywrócić zakładki menedżera plików nautilus. https://github.com/susurri/nautilus_save_tabs/
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ę.