Làm cách nào để quản lý tệp Nautilus nhớ các tab đang mở?


10

Có thể duy trì các tab đang mở của tôi giữa đóng và mở trình quản lý tệp Nautilus không?

Tốt nhất là ngay cả trên các đăng xuất khác nhau và khởi động lại.



1
Trong một phiên, hoặc sau khi khởi động lại / đăng xuất?
Jacob Vlijm

@JacobVlijm tốt nhất là thậm chí liên tục trong quá trình khởi động lại / đăng xuất.
orschiro

Trừ khi liên kết của Parto cung cấp giải pháp, các tùy chọn / tích hợp dòng lệnh của nautilus khá hạn chế. Không có tùy chọn để đọc thư mục hiện đang mở, cũng không thay đổi nó từ dòng lệnh. Nhớ những gì bạn không thể nhìn thấy dường như là không thể đối với tôi. Trong vòng một phiên, một lựa chọn lừa & gian lận sẽ có thể xảy ra.
Jacob Vlijm

@JacobVlijm tâm giải thích làm thế nào để đạt được việc ghi nhớ trong một phiên? Đó sẽ là một điều tuyệt vời để bắt đầu. :)
orschiro

Câu trả lời:


7

(Rất) tùy chọn dòng lệnh giới hạn của nautilus

Thật không may, nautilus không cung cấp các tùy chọn dòng lệnh để đọc thư mục đã mở của các cửa sổ của nó, và cũng không có tùy chọn nào để gửi một cửa sổ hiện có đến một thư mục khác. Vì bạn không thể nhớ những gì bạn không nhìn thấy, chúng tôi đang cạn kiệt các lựa chọn từ cái nhìn đầu tiên.

Tuy nhiên

Chúng tôi có xdotool, không phải làm những gì nautiluskhông, nhưng ít nhất là giả mạo hành vi mà bạn mô tả. Chúng tôi có thể làm điều đó theo cách mà "bạn sẽ tin" nếu bạn không biết nó được thực hiện như thế nào.

Mặc dù giải pháp bên dưới không tồn tại khi khởi động lại, nhưng cửa sổ "ghi nhớ" (có thể được gắn thẻ) và tất cả các thư mục đã mở là rất có thể trong một phiên. Vì bạn đã đề cập đến việc quan tâm đến điều đó như là một "sự lựa chọn thứ hai", nên đây là.

Làm thế nào nó hoạt động; quá trình

Mặc dù Chúng tôi không thể đóng một cửa sổ và giữ các tab của nó và các thư mục đã mở, chúng tôi có thể làm cho một cửa sổ hiện có dường như (và hoàn toàn) biến mất, với sự trợ giúp của xdotool.

Nếu sau đó chúng ta thay đổi hành vi của nautilustrình khởi chạy theo cách mà trước tiên nó sẽ tìm các cửa sổ chưa được ánh xạ có thể ánh xạ lại, trước khi mở một cửa sổ mới, thì chúng ta có chính xác hành vi giống như nautilussẽ nhớ (các) cửa sổ được sử dụng cuối cùng.

Làm thế nào để thiết lập

  1. Sao chép tập lệnh bên dưới vào một tập tin trống, lưu nó dưới dạng 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. Kịch bản cần cả hai wmctrlxdotool:

    sudo apt-get install wmctrl xdotool
    
  3. Sao chép nautilustrình khởi chạy từ /usr/share/applicationsđến~/.local/share/applications

    cho 15.04 trở lên:

    cp /usr/share/applications/org.gnome.Nautilus.desktop ~/.local/share/applications
    

    cho các phiên bản Ubuntu trước đó:

    cp /usr/share/applications/nautilus.desktop  ~/.local/share/applications
    
  4. mở bản sao cục bộ bằng gedit:

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

    (trong trường hợp 15.04 +)

    và tìm kiếm dòng đầu tiên , bắt đầu với Exec=. Thay đổi nó thành:

    Exec=python3 /path/to/remember.py
    

    Lưu và đóng tập tin.

  5. Tạo lối tắt bàn phím với cùng một lệnh: Chọn: Cài đặt hệ thống> "Bàn phím"> "Phím tắt"> "Phím tắt tùy chỉnh". Nhấp vào "+" và thêm lệnh:

    python3 /path/to/remember.py
    
  6. Bây giờ đăng xuất và đăng nhập lại

Cách sử dụng

Cách sử dụng rất đơn giản:

  • Để mở một cửa sổ, hãy làm như bình thường: nhấp vào trình khởi chạy nautilus. Tab cửa sổ như bạn muốn:

    nhập mô tả hình ảnh ở đây

  • Để đóng một cửa sổ dứt khoát , hãy đóng nó bằng cách nhấp vào hộp "đóng" ( x ) của cửa sổ .

  • Để giữ (các) cửa sổ + tất cả các tab của nó:
    nhấn phím tắt. (Các) cửa sổ sẽ biến mất (dường như gần).

    nhập mô tả hình ảnh ở đây

  • Lần tới khi bạn nhấp vào trình khởi chạy, (các) cửa sổ nautilus sẽ xuất hiện chính xác như lần trước, ngay cả (các) vị trí cửa sổ sẽ được giữ nguyên.

    nhập mô tả hình ảnh ở đây

Đó là nó

Ghi chú

  • Trong các thử nghiệm tôi đã chạy, tôi không thể tìm thấy bất kỳ nhược điểm nào (14.04). Nếu bạn có thể gặp phải bất kỳ, xin vui lòng đề cập!
  • Trong phần Cách sử dụng , tôi đề nghị nhấp vào biểu tượng nautilus để ánh xạ lại các cửa sổ chưa được ánh xạ có thể. Tuy nhiên, phím tắt sẽ làm tương tự, vì vậy bạn có thể thấy những gì hoạt động thuận tiện nhất cho bạn. Ngoài ra, nếu bạn đã mở một thư mục bằng cách nhấp đúp sau khi bạn chưa bật hoặc nhiều thư mục, các thư mục chưa được ánh xạ vẫn sẽ được ánh xạ lại bằng phím tắt.

BIÊN TẬP:

Người dùng Nemo

Người dùng Nemo cũng có thể sử dụng giải pháp như trên, nhưng:

  • Trong phần đầu của tập lệnh, thay đổi:

    app = "nautilus"
    

    vào:

    app = "nemo"
    
  • Trong điểm 3, sử dụng:

    cp /usr/share/applications/nemo.desktop ~/.local/share/applications
    
  • Trong điểm 4, sử dụng:

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

Đã thử nghiệm, đã được chứng minh là làm việc với nemo


Giải pháp làm việc tuyệt vời và tài liệu tốt. Cảm ơn rât nhiều!
orschiro

@orschiro luôn vui vẻ nếu nó hoạt động :) Bạn được chào đón!
Jacob Vlijm

5

Tôi khuyên bạn nên sử dụng trình quản lý tệp khác thay vào đó nếu điều đó ổn với bạn vì Nautilus không có tính năng đó .

Đây là một ứng dụng thay thế thực hiện thủ thuật: SpaceFM

Đây là cách cài đặt nó.

Nó có các tính năng phong phú như, tất nhiên, mở lại các tab cuối cùng .

Để làm cho nó là trình quản lý tập tin mặc định :

xdg-mime default spacefm.desktop inode/directory



0

Cách dễ nhất để truy cập các thư mục là đánh dấu trang. Bạn sẽ không giữ các tab của mình mở nhưng ít nhất bạn có thể thấy các thư mục bạn muốn một cách nhanh chóng (và nếu bạn nghĩ về nó, các dấu trang hoạt động như các tab).

Chỉ cần mở một thư mục trên Nautilus, vào menu Bookmark và thêm dấu trang.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.