Як змусити менеджер файлів Nautilus запам'ятати свої відкриті вкладки?


10

Чи можливо зберегти відкриті вкладки між закриттям та відкриттям файлового менеджера Nautilus?

Переважно навіть через різні виходи та перезавантаження.



1
За один сеанс чи після перезавантаження / виходу?
Яків Влійм

@JacobVlijm бажано навіть наполегливий під час перезавантаження / виходу.
orschiro

Якщо посилання Парто не пропонує рішення, параметри / інтеграція командного рядка nautilus досить обмежені. Немає можливості читати наразі відкритий каталог, а також не змінювати його з командного рядка. Запам'ятати те, що ви не бачите, мені здається неможливим. Протягом одного сеансу можливий варіант хитрості та накрутки.
Яків Влійм

@JacobVlijm розум пояснює, як досягти запам'ятовування протягом одного сеансу? Це було б вже чудово. :)
orschiro

Відповіді:


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

@orschiro завжди весело, якщо це працює :) Ласкаво просимо!
Яків Влійм

5

Я рекомендую замість цього використовувати інший файловий менеджер, якщо з вами це нормально, оскільки Nautilus не має такої функції .

Ось одна альтернативна програма, яка робить фокус: SpaceFM

Ось як її встановити.

Він має багаті функції, такі як, звичайно, знову відкрити останні вкладки .

Щоб зробити його менеджером файлів за замовчуванням :

xdg-mime default spacefm.desktop inode/directory



0

Найпростіший спосіб доступу до папок - це закладка. Ви не будете тримати вкладки відкритими, але ви можете принаймні швидко бачити потрібні папки (і якщо ви думаєте про це, закладки виконують функції вкладок).

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.