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

8

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

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

    
задан orschiro 24.02.2016 в 12:47
источник

4 ответа

6

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

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

Однако

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

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

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

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

Если мы впоследствии изменим поведение пусковой установки nautilus таким образом, чтобы она сначала искала возможное unmapped windows для переназначения, прежде чем открывать новую, эффективно точно такое же поведение, как если бы 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 + )

    и найдите строку first , начиная с Exec= . Измените его на:

    Exec=python3 /path/to/remember.py
    

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

  5. Создайте комбинацию клавиш с той же командой: Выберите: System Settings > «Клавиатура» > «Ярлыки» > «Пользовательские ярлыки». Нажмите «+» и добавьте команду:

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

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

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

  • Чтобы открыть окно, сделайте как обычно: нажмите на пусковую установку nautilus. Вставьте окно по своему усмотрению:

  • Чтобызакрытьокноокончательно,закройтеего,щелкнувокно«закрыть»(x)окна.

  • Чтобысохранитьокно(ы)+всееговкладки:
    нажмитеклавишубыстрогодоступа.Окно(окна)исчезнет(казалосьбы,близко).

  • Вследующийраз,когдавынажметекнопкузапуска,окна(ы)nautilusбудутотображатьсяточнотакже,каквпоследнийраз,дажеположение(позиции)окнабудетсохранено.

Этоон

Примечание

  • Втестахяпобежал,янесмогнайтилюбойнедостаток(14.04).еслитыможетстолкнутьсяслюбым,пожалуйста,укажите!
  • ВразделеКакиспользоватьяпредложилщелкнутьзначокnautilus,чтобыпереназначитьвозможныенезакрашенныеокна.Однакоклавишабыстрогодоступасделаеттожесамое,поэтомувыможетеувидеть,чтонаиболееудобнодлявас.Крометого,есливыоткрылипапку,дваждыщелкнувпосле,вынеоткрылиилиустановилинесколькопапок,тонеактивныепапкипо-прежнемубудутпереназначеныярлыком.

EDIT:

ПользователиNemo

ПользователиNemoмогутодинаковоиспользоватьрешениевыше,но:

  • Вглавномразделескриптаизмените:

    app="nautilus"
    

    в

    app = "nemo"
    
  • В пункте 3 используйте:

    cp /usr/share/applications/nemo.desktop ~/.local/share/applications
    
  • В пункте 4 используйте:

    gedit ~/.local/share/applications/nemo.desktop
    

Протестировано, оказалось, что работает с nemo

    
ответ дан Jacob Vlijm 25.02.2016 в 20:42
источник
4

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

Вот одно из альтернативных приложений, которое делает трюк: SpaceFM

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

У этого есть богатые возможности, такие как, конечно, повторно открыть последние вкладки .

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

xdg-mime default spacefm.desktop inode/directory

    
ответ дан Giraldi 17.01.2017 в 07:29
1

Попробуйте эти сценарии для сохранения и восстановления вкладок файлового менеджера nautilus. Ссылка

    
ответ дан susurri 24.07.2017 в 08:58
0

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

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

    
ответ дан lapisdecor 24.02.2016 в 14:05