Bagaimana saya bisa membuat pengelola file Nautilus mengingat tab terbuka saya?

10

Apakah mungkin untuk menjaga tab terbuka saya antara penutupan dan pembukaan pengelola file Nautilus?

Lebih disukai bahkan di logout dan restart berbeda.

orschiro
sumber
1
Dalam satu sesi, atau setelah restart / logout?
Jacob Vlijm
@JacobVlijm lebih disukai bahkan persisten di restart / logout.
orschiro
Kecuali tautan Parto memberikan solusi, opsi / integrasi baris perintah nautilus sangat terbatas. Tidak ada pilihan untuk membaca direktori yang sedang dibuka, atau mengubahnya dari baris perintah. Mengingat apa yang tidak bisa Anda lihat tampaknya mustahil bagi saya. Namun dalam satu sesi opsi trik & cheat akan dimungkinkan.
Jacob Vlijm
@JacobVlijm keberatan menjelaskan cara mencapai pengingatan dalam satu sesi? Itu akan menjadi hal yang bagus untuk memulai. :)
orschiro

Jawaban:

7

(Sangat) opsi baris perintah terbatas nautilus

Sayangnya, nautilus tidak menawarkan opsi baris perintah untuk membaca direktori yang dibuka dari windows-nya, juga tidak memiliki opsi untuk mengirim jendela yang ada ke direktori lain. Karena Anda tidak dapat mengingat apa yang tidak Anda lihat, kami kehabisan pilihan pada pandangan pertama.

Namun

Kami memiliki xdotool, bukan untuk melakukan apa yang nautilustidak, tetapi untuk setidaknya memalsukan perilaku yang Anda gambarkan. Kita bisa melakukannya sedemikian rupa sehingga "Anda akan percaya itu" jika Anda tidak tahu bagaimana melakukannya.

Meskipun solusi di bawah ini tidak selamat dari restart, jendela "mengingat" (mungkin ditabalkan) dan semua direktori yang dibuka sangat mungkin dalam satu sesi. Karena Anda disebutkan tertarik pada itu sebagai "pilihan kedua", ini dia.

Bagaimana itu bekerja; proses

Meskipun Kami tidak dapat menutup jendela dan mempertahankan tab dan membuka direktori, kami dapat membuat jendela yang ada tampak (dan sepenuhnya) menghilang, dengan bantuan xdotool.

Jika kita kemudian mengubah perilaku nautiluslauncher sedemikian rupa sehingga pertama kali mencari kemungkinan jendela yang belum dipetakan untuk dipetakan , sebelum membuka yang baru, secara efektif kita memiliki perilaku yang persis sama seolah-olah nautilusakan mengingat jendela yang terakhir digunakan.

Cara mengatur

  1. Salin skrip di bawah ini ke file kosong, simpan sebagai 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. Script membutuhkan keduanya wmctrldan xdotool:

    sudo apt-get install wmctrl xdotool
    
  3. Salin nautiluspeluncur dari /usr/share/applicationske~/.local/share/applications

    untuk 15,04 dan lebih baru:

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

    untuk versi Ubuntu sebelumnya:

    cp /usr/share/applications/nautilus.desktop  ~/.local/share/applications
    
  4. buka salinan lokal dengan gedit:

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

    (dalam hal 15.04 +)

    dan cari baris pertama , dimulai dengan Exec=. Ubah itu menjadi:

    Exec=python3 /path/to/remember.py
    

    Simpan dan tutup file.

  5. Buat pintasan keyboard dengan perintah yang sama: Pilih: Pengaturan Sistem> "Keyboard"> "Pintasan"> "Pintasan Khusus". Klik "+" dan tambahkan perintah:

    python3 /path/to/remember.py
    
  6. Sekarang logout dan kembali

Cara Penggunaan

Penggunaannya sangat sederhana:

  • Untuk membuka jendela, lakukan seperti biasa: klik pada peluncur nautilus. Tab jendela sesuka Anda:

    masukkan deskripsi gambar di sini

  • Untuk menutup jendela secara pasti , tutup dengan mengklik kotak "tutup" ( x ) jendela .

  • Untuk mempertahankan jendela (s) + semua tabnya:
    tekan tombol pintas. Jendela-jendela akan menghilang (tampak dekat).

    masukkan deskripsi gambar di sini

  • Lain kali ketika Anda mengklik peluncur, jendela nautilus akan muncul persis seperti terakhir kali, bahkan posisi jendela akan dipertahankan.

    masukkan deskripsi gambar di sini

Itu dia

Catatan

  • Dalam tes aku berlari, aku tidak bisa menemukan apa pun downside (14,04). Jika Anda mungkin mengalami apa pun, sebutkan!
  • Dalam bagian Cara menggunakan- , saya menyarankan untuk mengklik ikon nautilus untuk memetakan ulang kemungkinan jendela yang belum dipetakan. Tombol pintas akan melakukan hal yang sama, sehingga Anda dapat melihat mana yang paling nyaman bagi Anda. Juga, jika Anda membuka folder dengan mengklik dua kali setelah Anda tidak memetakan pada atau lebih banyak folder, folder yang belum dipetakan masih akan dipetakan kembali oleh pintasan.

EDIT:

Pengguna Nemo

Pengguna Nemo dapat menggunakan solusi di atas secara merata, tetapi:

  • Di bagian kepala skrip, ubah:

    app = "nautilus"
    

    ke:

    app = "nemo"
    
  • Di poin 3, gunakan:

    cp /usr/share/applications/nemo.desktop ~/.local/share/applications
    
  • Di poin 4, gunakan:

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

Diuji, terbukti bisa bekerja dengan nemo

Yakub Vlijm
sumber
Solusi kerja hebat dan terdokumentasi dengan baik. Terima kasih banyak!
orschiro
@orschiro selalu menyenangkan jika berhasil :) Terima kasih!
Jacob Vlijm
5

Saya sarankan menggunakan manajer file lain jika tidak apa-apa dengan Anda karena Nautilus tidak memiliki fitur itu .

Berikut ini salah satu aplikasi alternatif yang melakukan trik: SpaceFM

Berikut cara menginstalnya.

Ini memiliki fitur yang kaya seperti, tentu saja, buka kembali tab terakhir .

Untuk menjadikannya pengelola file default :

xdg-mime default spacefm.desktop inode/directory

Giraldi
sumber
0

Cara termudah untuk mengakses folder adalah bookmark. Anda tidak akan membiarkan tab terbuka tetapi setidaknya Anda dapat melihat folder yang Anda inginkan dengan cepat (dan jika dipikir-pikir, bookmark berfungsi sebagai tab).

Cukup buka folder di Nautilus, buka menu Bookmark dan tambahkan bookmark.

lapisdecor
sumber