Действительно ли возможно сохранить мои открытые вкладки между закрытием и открытием файлового менеджера Наутилуса?
Предпочтительно даже через различные выходы из системы и перезапуски.
К сожалению, nautilus не предлагает команду параметры строки для чтения открытого каталога его окон, а также нет возможности отправить существующее окно в другой каталог. Поскольку вы не можете вспомнить то, что не видите, у нас заканчиваются возможности на первый взгляд.
Однако
У нас есть xdotool
, чтобы не делать того, что не делает nautilus
не, но как минимум подделывать поведение, которое вы описываете. Мы можем сделать это таким образом, чтобы «вы поверили», если бы не знали, как это делается.
Хотя решение ниже не выдерживает перезапуска, «запоминающее» (возможно с вкладками) окно и все открытое каталоги вполне возможно в рамках одного сеанса. Поскольку вы упомянули, что вас это интересует как «второй вариант», вот он.
Хотя мы не можем закрыть окно и сохранить его вкладки и открытые каталоги, мы можем заставить существующее окно, казалось бы (и полностью) исчезнуть, с помощью ] xdotool
.
Если мы впоследствии изменим поведение программы запуска nautilus
таким образом, что она сначала будет искать возможные несопоставленные окна для переназначения, прежде чем открывать новое во-первых, мы имеем точно такое же поведение, как если бы наутилус
запомнил последнее использованное окно (окна).
Скопируйте приведенный ниже сценарий в пустой файл, сохраните его как Remember.py
#! / usr / bin / env python3
подпроцесс импорта
импорт ОС
app = "наутилус"
wfile = os.environ ["HOME"] + "/. unmapped _" + app
def получить (cmd):
# просто вспомогательная функция
вернуть subprocess.check_output (cmd) .decode ("utf-8"). strip ()
def check_windowtype (w_id):
# проверить тип окна; отключать отображение только "ОБЫЧНЫХ" окон
вернуть "_NET_WM_WINDOW_TYPE_NORMAL" в get (["xprop", "-id", w_id])
def get_pid (приложение):
# (попытаться) получить pid приложения
пытаться:
return get (["pgrep", app])
кроме subprocess.CalledProcessError:
проходить
def get_matches (pid):
# получить список окон, выбрать допустимые (реальные) окна приложения
ws = get (["wmctrl", "-lpG"]). splitlines ()
match = [w.split () для w в ws, если pid в w]
вернуть [w вместо w в совпадениях, если check_windowtype (w [0]) == True]
пытаться:
# пытаемся прочитать файл с несопоставленными окнами
wininf = [l.split () для l в open (wfile) .readlines ()]
кроме FileNotFoundError:
# если их нет, отменить отображение окон текущего приложения
filebrowserwins = get_matches (get_pid (приложение))
если filebrowser выигрывает:
open (wfile, "wt"). write (("\ n"). join (("") .join (l) для l в filebrowserwins))
для w в [w [0] для w в filebrowserwins]:
subprocess.Popen (["xdotool", "windowunmap", w])
еще:
arg = "--new-window" if app == "nautilus" else ""
subprocess.Popen ([приложение, аргумент])
еще:
# переназначить несопоставленные окна
для w в 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.
Протестировано, доказано, что работает с nemo
Я рекомендую вместо этого использовать другой файловый менеджер , если вас это устраивает, поскольку Nautilus не имеет этой функции .
Вот одно альтернативное приложение, которое может помочь: SpaceFM
Оно имеет богатые функции, такие как, конечно, повторно открывать последние вкладки .
Чтобы заставить это по умолчанию файловый менеджер:
xdg-mime по умолчанию spacefm.desktop inode / directory
Попробуйте эти сценарии для сохранения и восстановления вкладок файлового менеджера nautilus. https://github.com/susurri/nautilus_save_tabs/
Самый простой способ доступа к папкам - создание закладок. Вы не будете держать свои вкладки открытыми, но вы можете по крайней мере быстро увидеть нужные папки (и, если подумать, закладки действуют как вкладки).
Просто откройте папку в Nautilus, перейдите в меню закладок и добавьте закладку .