Как сделать, чтобы файловый менеджер Nautilus запомнил мои открытые вкладки?

Можно ли сохранить открытые вкладки между закрытием и открытием файлового менеджера Nautilus?

Желательно даже при разных выходах из системы и перезагрузках.

4 ответа

Решение

(Очень) ограниченные параметры командной строки nautilus

К сожалению, nautilus не предлагает параметров командной строки для чтения открытого каталога своих окон, а также не имеет возможности отправить существующее окно в другой каталог. Поскольку вы не можете вспомнить, что вы не видите, у нас заканчиваются варианты с первого взгляда.

тем не мение

У нас есть xdotool не делать то, что nautilus нет, но, по крайней мере, подделать поведение, которое вы описываете. Мы можем сделать это таким образом, чтобы "вы поверили бы", если бы не знали, как это делается.

Хотя приведенное ниже решение не переживает перезапуск, окно "запоминания" (возможно, с вкладками) и все открытые каталоги вполне возможны в течение одного сеанса. Поскольку вы упомянули, что вас это заинтересовало как "второй выбор", вот оно.

Как это устроено; процесс

Хотя мы не можем закрыть окно и сохранить его вкладки и открытые каталоги, мы можем сделать так, чтобы существующее окно казалось (и полностью) исчезло с помощью xdotool,

Если мы впоследствии изменим поведение nautilus запускается таким образом, что сначала ищет возможные переназначенные несопоставленные окна, прежде чем открывать новое, фактически мы имеем точно такое же поведение, как если бы nautilus запомнил бы последние использованные окна.

Как настроить

  1. Скопируйте приведенный ниже скрипт в пустой файл и сохраните его как 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)
    
  2. Скрипт нуждается в обоих wmctrl а также xdotool:

    sudo apt-get install wmctrl xdotool
    
  3. Скопируйте 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
    
  4. откройте локальную копию с помощью gedit:

    gedit ~/.local/share/applications/org.gnome.Nautilus.desktop
    

    (в случае 15.04 +)

    и ищите первую строку, начиная с Exec=, Измените это на:

    Exec=python3 /path/to/remember.py
    

    Сохраните и закройте файл.

  5. Создайте сочетание клавиш с помощью той же команды: Выберите: "Системные настройки" > "Клавиатура" > "Сочетания клавиш" > "Пользовательские сочетания клавиш". Нажмите "+" и добавьте команду:

    python3 /path/to/remember.py
    
  6. Теперь выйдите и вернитесь

Как пользоваться

Использование очень просто:

  • Чтобы открыть окно, сделайте как обычно: нажмите на кнопку запуска 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, перейдите в меню "Закладки" и добавьте закладку.

Другие вопросы по тегам