เป็นไปได้ไหมที่จะรักษาแท็บที่เปิดอยู่ระหว่างการปิดและการเปิดตัวจัดการไฟล์ Nautilus?
ยิ่งกว่าในการล็อกเอาต์และรีสตาร์ทที่ต่างกัน
เป็นไปได้ไหมที่จะรักษาแท็บที่เปิดอยู่ระหว่างการปิดและการเปิดตัวจัดการไฟล์ Nautilus?
ยิ่งกว่าในการล็อกเอาต์และรีสตาร์ทที่ต่างกัน
คำตอบ:
ขออภัย nautilus ไม่มีตัวเลือกบรรทัดคำสั่งเพื่ออ่านไดเรกทอรีที่เปิดอยู่ของ windows และไม่มีตัวเลือกใด ๆ ในการส่งหน้าต่างที่มีอยู่ไปยังไดเรกทอรีอื่น เนื่องจากคุณจำไม่ได้ว่าคุณไม่เห็นอะไรเรามีทางเลือกมากมายตั้งแต่แรกเห็น
อย่างไรก็ตาม
เรามีxdotool
ไม่ทำสิ่งที่nautilus
ไม่ได้ แต่อย่างน้อยก็ปลอมพฤติกรรมที่คุณอธิบาย เราสามารถทำได้ในลักษณะที่ "คุณจะเชื่อ" ถ้าคุณไม่รู้ว่ามันทำอย่างไร
แม้ว่าวิธีการแก้ปัญหาด้านล่างจะไม่สามารถรีสตาร์ทได้ แต่หน้าต่าง "การจดจำ" (อาจเป็นแท็บ) และไดเรกทอรีที่เปิดอยู่ทั้งหมดนั้นสามารถทำได้ภายในหนึ่งเซสชัน เนื่องจากคุณพูดถึงว่าสนใจในฐานะ "ตัวเลือกที่สอง" นี่คือ
แม้ว่าเราไม่สามารถปิดหน้าต่างและรักษาแท็บและไดเรกทอรีเปิดของเราสามารถทำให้หน้าต่างที่มีอยู่ดูเหมือน (และสมบูรณ์) xdotool
หายไปด้วยความช่วยเหลือของ
ถ้าเราต่อมาเปลี่ยนพฤติกรรมของnautilus
ตัวเปิดในลักษณะที่ว่ามันเป็นครั้งแรกรูปลักษณ์ที่เป็นไปได้สำหรับหน้าต่าง unmappedเพื่อ remap, ก่อนที่จะเปิดใหม่ได้อย่างมีประสิทธิภาพเรามีว่าพฤติกรรมเช่นเดียวกับถ้าnautilus
จะจำหน้าต่างที่ใช้ล่าสุด (s)
คัดลอกสคริปต์ด้านล่างลงในไฟล์ว่างแล้วบันทึกเป็น 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)
สคริปต์ต้องการทั้งwmctrl
และxdotool
:
sudo apt-get install wmctrl xdotool
คัดลอก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
เปิดสำเนาโลคัลด้วย gedit:
gedit ~/.local/share/applications/org.gnome.Nautilus.desktop
(ในกรณีของ15.04 +
)
และมองหาแรกExec=
สายที่เริ่มต้นด้วย เปลี่ยนเป็น:
Exec=python3 /path/to/remember.py
บันทึกและปิดไฟล์
สร้างแป้นพิมพ์ลัดด้วยคำสั่งเดียวกัน: เลือก: การตั้งค่าระบบ> "แป้นพิมพ์"> "ทางลัด"> "ทางลัดที่กำหนดเอง" คลิกที่ "+" และเพิ่มคำสั่ง:
python3 /path/to/remember.py
ตอนนี้ออกจากระบบและกลับเข้ามาใหม่
การใช้งานง่ายมาก:
หากต้องการเปิดหน้าต่างให้ทำตามปกติ: คลิกที่ตัวเรียกใช้ nautilus แท็บหน้าต่างตามที่คุณต้องการ:
หากต้องการปิดหน้าต่างอย่างแน่นอนให้ปิดโดยคลิกที่กล่อง "ปิด" ( x ) ของหน้าต่าง
ในการคงหน้าต่าง + แท็บทั้งหมดไว้:
กดปุ่มทางลัด หน้าต่างจะหายไป (ดูเหมือนจะปิด)
ครั้งต่อไปเมื่อคุณคลิกตัวเรียกใช้งานหน้าต่าง nautilus จะปรากฏขึ้นเหมือนครั้งที่แล้วแม้ตำแหน่งของหน้าต่างจะยังคงอยู่
แค่นั้นแหละ
ผู้ใช้ Nemo สามารถใช้วิธีแก้ปัญหาข้างต้นได้อย่างเท่าเทียมกัน แต่:
ในส่วนหัวของสคริปต์ให้เปลี่ยน:
app = "nautilus"
เป็น:
app = "nemo"
ในจุดที่ 3 ให้ใช้:
cp /usr/share/applications/nemo.desktop ~/.local/share/applications
ในจุดที่ 4 ให้ใช้:
gedit ~/.local/share/applications/nemo.desktop
ผ่านการทดสอบพิสูจน์แล้วว่าทำงานร่วมกับ nemo ได้
ฉันแนะนำให้ใช้ตัวจัดการไฟล์อื่นแทนถ้าไม่เป็นไรกับคุณเนื่องจากNautilus ไม่มีคุณสมบัตินั้น
นี่คือแอปสำรองหนึ่งแอปที่ใช้เคล็ดลับ: SpaceFM
มันมีคุณสมบัติที่อุดมไปด้วยเช่นของหลักสูตรเปิดแท็บสุดท้าย
วิธีทำให้เป็นตัวจัดการไฟล์เริ่มต้น :
xdg-mime default spacefm.desktop inode/directory
ลองใช้สคริปต์เหล่านี้เพื่อบันทึกและกู้คืนแท็บของตัวจัดการไฟล์ nautilus https://github.com/susurri/nautilus_save_tabs/
วิธีที่ง่ายที่สุดในการเข้าถึงโฟลเดอร์คือการทำบุ๊คมาร์ค คุณจะไม่เปิดแท็บ แต่อย่างน้อยคุณจะเห็นโฟลเดอร์ที่คุณต้องการได้อย่างรวดเร็ว (และถ้าคุณคิดถึงมันบุ๊คมาร์คจะทำหน้าที่เป็นแท็บ)
เพียงเปิดโฟลเดอร์ใน Nautilus ไปที่เมนู Bookmark และเพิ่มบุ๊คมาร์ค