Как сделать, чтобы файловый менеджер Nautilus запомнил мои открытые вкладки?
Можно ли сохранить открытые вкладки между закрытием и открытием файлового менеджера Nautilus?
Желательно даже при разных выходах из системы и перезагрузках.
4 ответа
(Очень) ограниченные параметры командной строки 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) окна.
Чтобы сохранить окно (окна) + все его вкладки:
нажмите клавишу быстрого доступа. Окно (а) исчезнет (казалось бы, близко).В следующий раз, когда вы щелкнете по пусковой установке, окно (окна) наутилуса появятся точно так же, как и в прошлый раз, даже положение окна будет сохранено.
это оно
Заметка
- В тестах, которые я запускал, я не мог найти никаких недостатков (14.04). Если вы можете столкнуться с любым, пожалуйста, укажите!
- В разделе " Как использовать -секцию" я предложил щелкнуть значок nautilus, чтобы переназначить возможные несопоставленные окна. Сочетание клавиш будет делать то же самое, поэтому вы можете увидеть, что работает наиболее удобно для вас. Кроме того, если вы открыли папку с помощью двойного щелчка после того, как вы открыли несвязанные или более папок, несопоставленные папки все равно будут переназначены ярлыком.
РЕДАКТИРОВАТЬ:
Пользователи Nemo
Пользователи 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, перейдите в меню "Закладки" и добавьте закладку.