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.
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.
Câu trả lời:
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ì nautilus
khô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à.
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 nautilus
trì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ư nautilus
sẽ nhớ (các) cửa sổ được sử dụng cuối cùng.
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)
Kịch bản cần cả hai wmctrl
và xdotool
:
sudo apt-get install wmctrl xdotool
Sao chép nautilus
trì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
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.
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
Bây giờ đăng xuất và đăng nhập lại
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:
Để đó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).
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.
Đó là nó
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
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
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
Hãy thử các tập lệnh này để lưu và khôi phục các tab của trình quản lý tệp nautilus. https://github.com/susurri/nautilus_save_tabs/
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.