Можно ли сохранить открытые вкладки между закрытием и открытием файлового менеджера Nautilus?
Желательно даже при разных выходах из системы и перезагрузках.
Можно ли сохранить открытые вкладки между закрытием и открытием файлового менеджера Nautilus?
Желательно даже при разных выходах из системы и перезагрузках.
Ответы:
К сожалению, nautilus не предлагает параметров командной строки для чтения открытого каталога своих окон, а также не имеет возможности отправить существующее окно в другой каталог. Поскольку вы не можете вспомнить, что вы не видите, у нас заканчиваются варианты с первого взгляда.
Однако
У нас есть xdotool
не для того, чтобы делать то, nautilus
что нет, а для того, чтобы, по крайней мере, подделать поведение, которое вы описываете Мы можем сделать это так, чтобы «вы поверили бы», если бы не знали, как это делается.
Хотя приведенное ниже решение не переживает перезапуск, окно «запоминания» (возможно, с вкладками) и все открытые каталоги вполне возможны в течение одного сеанса. Поскольку вы упомянули, что вас это заинтересовало как «второй выбор», вот оно.
Хотя мы не можем закрыть окно и сохранить его вкладки и открытые каталоги, мы можем сделать так, чтобы существующее окно казалось (и полностью) исчезло с помощью xdotool
.
Если мы впоследствии изменим поведение nautilus
модуля запуска таким образом, чтобы он сначала искал возможные непопоставленные окна для перераспределения, прежде чем открывать новое, мы фактически будем вести себя точно так же, как если nautilus
бы запомнили последние использованные окна.
Скопируйте приведенный ниже скрипт в пустой файл и сохраните его как 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)
Скрипту нужны оба wmctrl
и xdotool
:
sudo apt-get install wmctrl xdotool
Скопируйте панель nautilus
запуска из /usr/share/applications
в~/.local/share/applications
на 15.04 и позже:
cp /usr/share/applications/org.gnome.Nautilus.desktop ~/.local/share/applications
для более ранних версий Ubuntu:
cp /usr/share/applications/nautilus.desktop ~/.local/share/applications
откройте локальную копию с помощью gedit:
gedit ~/.local/share/applications/org.gnome.Nautilus.desktop
(в случае 15.04 +
)
и ищите первую строку, начиная с Exec=
. Измените это на:
Exec=python3 /path/to/remember.py
Сохраните и закройте файл.
Создайте сочетание клавиш с помощью той же команды: Выберите: «Системные настройки»> «Клавиатура»> «Сочетания клавиш»> «Пользовательские сочетания клавиш». Нажмите «+» и добавьте команду:
python3 /path/to/remember.py
Теперь выйдите и вернитесь
Использование очень просто:
Чтобы открыть окно, сделайте как обычно: нажмите на кнопку запуска nautilus. Вкладка окна, как вам нравится:
Чтобы окончательно закрыть окно , закройте его, нажав на окно «закрыть» ( x ) окна.
Чтобы сохранить окно (окна) + все его вкладки:
нажмите клавишу быстрого доступа. Окно (а) исчезнет (казалось бы, близко).
В следующий раз, когда вы щелкнете по пусковой установке, окно (окна) наутилуса появятся точно так же, как и в прошлый раз, даже положение окна будет сохранено.
это оно
Пользователи Nemo могут в равной степени использовать вышеуказанное решение, но:
В разделе заголовка скрипта измените:
app = "nautilus"
в:
app = "nemo"
В пункте 3 используйте:
cp /usr/share/applications/nemo.desktop ~/.local/share/applications
В пункте 4 используйте:
gedit ~/.local/share/applications/nemo.desktop
Проверено, доказано, что работает с немо
Вместо этого я рекомендую использовать другой файловый менеджер, если у вас все в порядке, поскольку у Nautilus такой функции нет .
Вот одно альтернативное приложение, которое делает свое дело : SpaceFM
Он имеет богатые функции, такие как, конечно, открыть последние вкладки .
Чтобы сделать его файловым менеджером по умолчанию :
xdg-mime default spacefm.desktop inode/directory
Попробуйте эти сценарии, чтобы сохранить и восстановить вкладки файлового менеджера nautilus. https://github.com/susurri/nautilus_save_tabs/
Самый простой способ доступа к папкам - это закладки. Вы не будете держать вкладки открытыми, но по крайней мере сможете быстро увидеть нужные папки (а если подумать, закладки действуют как вкладки).
Просто откройте папку на Nautilus, перейдите в меню «Закладки» и добавьте закладку.