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


10

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

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


1
Связанный: askubuntu.com/questions/52112/…
Parto

1
В одном сеансе или после перезагрузки / выхода?
Джейкоб Влейм

@JacobVlijm желательно даже постоянный при перезапуске / выходе из системы.
Орширо

Если ссылка Parto не обеспечивает решение, параметры командной строки nautilus / интеграция весьма ограничены. Нет возможности ни прочитать текущий открытый каталог, ни изменить его из командной строки. Вспоминание того, что ты не видишь, кажется мне невозможным. Однако в течение одного сеанса возможен трюк и читерство.
Джейкоб Влейм

@JacobVlijm ум объяснить, как добиться запоминания в течение одного сеанса? Это было бы уже здорово для начала. :)
Орширо

Ответы:


7

(Очень) ограниченные параметры командной строки 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
    

Проверено, доказано, что работает с немо


Отличное рабочее решение и хорошо документировано. Большое спасибо!
Орширо

@orschiro всегда весело, если это работает :) Всегда пожалуйста!
Джейкоб Влейм

5

Вместо этого я рекомендую использовать другой файловый менеджер, если у вас все в порядке, поскольку у Nautilus такой функции нет .

Вот одно альтернативное приложение, которое делает свое дело : SpaceFM

Вот как это установить.

Он имеет богатые функции, такие как, конечно, открыть последние вкладки .

Чтобы сделать его файловым менеджером по умолчанию :

xdg-mime default spacefm.desktop inode/directory



0

Самый простой способ доступа к папкам - это закладки. Вы не будете держать вкладки открытыми, но по крайней мере сможете быстро увидеть нужные папки (а если подумать, закладки действуют как вкладки).

Просто откройте папку на Nautilus, перейдите в меню «Закладки» и добавьте закладку.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.