Wie kann ich den Nautilus-Dateimanager an meine geöffneten Registerkarten erinnern?


10

Ist es möglich, meine geöffneten Registerkarten zwischen dem Schließen und Öffnen des Nautilus-Dateimanagers beizubehalten?

Am besten auch über verschiedene Abmeldungen und Neustarts hinweg.



1
In einer Sitzung oder nach Neustart / Abmeldung?
Jacob Vlijm

@JacobVlijm vorzugsweise sogar dauerhaft über Neustart / Abmeldung.
Orschiro

Sofern der Link von Parto keine Lösung bietet, sind die Befehlszeilenoptionen / -integration von nautilus recht begrenzt. Es gibt keine Möglichkeit, das aktuell geöffnete Verzeichnis zu lesen oder über die Befehlszeile zu ändern. Sich daran zu erinnern, was du nicht sehen kannst, scheint mir unmöglich. Innerhalb einer Sitzung wäre jedoch eine Trick & Cheat-Option möglich.
Jacob Vlijm

@JacobVlijm etwas dagegen zu erklären, wie man das Erinnern innerhalb einer Sitzung erreicht? Das wäre schon eine tolle Sache. :)
Orschiro

Antworten:


7

(Sehr) eingeschränkte Befehlszeilenoptionen von Nautilus

Leider bietet nautilus weder Befehlszeilenoptionen zum Lesen des geöffneten Verzeichnisses seiner Fenster noch eine Option zum Senden eines vorhandenen Fensters an ein anderes Verzeichnis. Da Sie sich nicht erinnern können, was Sie nicht sehen, gehen uns auf den ersten Blick die Optionen aus.

jedoch

Wir müssen xdotoolnicht tun, was nautilusnicht, sondern zumindest das von Ihnen beschriebene Verhalten vortäuschen . Wir können das so machen, dass "Sie es glauben würden", wenn Sie nicht wüssten, wie es gemacht wird.

Obwohl die folgende Lösung einen Neustart nicht überlebt, ist das "Erinnern" (möglicherweise mit Registerkarten versehen) des Fensters und aller geöffneten Verzeichnisse innerhalb einer Sitzung sehr gut möglich. Da Sie erwähnt haben, dass Sie daran als "zweite Wahl" interessiert sind, ist es hier.

Wie es funktioniert; der Prozess

Obwohl wir ein Fenster nicht schließen und seine Registerkarten und geöffneten Verzeichnisse beibehalten können , können wir mithilfe von ein vorhandenes Fenster scheinbar (und vollständig) verschwinden lassen xdotool.

Wenn wir anschließend das Verhalten des nautilusLaunchers so ändern , dass zuerst nach möglichen nicht zugeordneten Fenstern gesucht wird, die neu zugeordnet werden können, bevor ein neues geöffnet wird, haben wir effektiv genau das gleiche Verhalten, als nautiluswürden wir uns an die zuletzt verwendeten Fenster erinnern.

Wie stellt man das ein

  1. Kopieren Sie das folgende Skript in eine leere Datei und speichern Sie es unter 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. Das Skript benötigt beides wmctrlund xdotool:

    sudo apt-get install wmctrl xdotool
    
  3. Kopieren Sie den nautilusLauncher von /usr/share/applicationsnach~/.local/share/applications

    für 15.04 und höher:

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

    für frühere Ubuntu-Versionen:

    cp /usr/share/applications/nautilus.desktop  ~/.local/share/applications
    
  4. Öffnen Sie die lokale Kopie mit gedit:

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

    (im Falle von 15.04 +)

    und suchen Sie nach der ersten Zeile, beginnend mit Exec=. Ändern Sie es in:

    Exec=python3 /path/to/remember.py
    

    Speichern und schließen Sie die Datei.

  5. Erstellen Sie eine Tastenkombination mit demselben Befehl: Wählen Sie: Systemeinstellungen> "Tastatur"> "Tastenkombinationen"> "Benutzerdefinierte Tastenkombinationen". Klicken Sie auf das "+" und fügen Sie den Befehl hinzu:

    python3 /path/to/remember.py
    
  6. Melden Sie sich jetzt ab und wieder an

Wie benutzt man

Die Verwendung ist sehr einfach:

  • Gehen Sie wie gewohnt vor, um ein Fenster zu öffnen: Klicken Sie auf den Nautilus-Launcher. Tab das Fenster wie Sie möchten:

    Geben Sie hier die Bildbeschreibung ein

  • Um ein Fenster endgültig zu schließen , schließen Sie es, indem Sie auf das Feld "Schließen" ( x ) des Fensters klicken .

  • So behalten Sie die Fenster und alle Registerkarten bei:
    Drücken Sie die Tastenkombination. Die Fenster verschwinden (scheinbar geschlossen).

    Geben Sie hier die Bildbeschreibung ein

  • Wenn Sie das nächste Mal auf den Launcher klicken, werden die Nautilus-Fenster genau wie beim letzten Mal angezeigt, auch die Fensterpositionen bleiben erhalten.

    Geben Sie hier die Bildbeschreibung ein

Das ist es

Hinweis

  • In den von mir durchgeführten Tests konnte ich keinen Nachteil feststellen (14.04). Wenn Sie auf etwas stoßen könnten, erwähnen Sie bitte!
  • Im Abschnitt Verwendung verwenden von schlug ich vor, auf das Nautilus-Symbol zu klicken, um mögliche nicht zugeordnete Fenster neu zuzuordnen. Die Tastenkombination macht jedoch dasselbe, sodass Sie sehen können, was für Sie am bequemsten ist. Wenn Sie einen Ordner nach dem Aufheben der Zuordnung zu oder mehreren Ordnern durch Doppelklick geöffnet haben , werden nicht zugeordnete Ordner weiterhin über die Verknüpfung neu zugeordnet.

BEARBEITEN:

Nemo-Benutzer

Nemo-Benutzer können die oben genannte Lösung ebenfalls verwenden, aber:

  • Ändern Sie im Kopfbereich des Skripts:

    app = "nautilus"
    

    in:

    app = "nemo"
    
  • Verwenden Sie in Punkt 3:

    cp /usr/share/applications/nemo.desktop ~/.local/share/applications
    
  • Verwenden Sie in Punkt 4:

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

Getestet, erwies sich als mit nemo arbeitend


Tolle Arbeitslösung und gut dokumentiert. Vielen Dank!
Orschiro

@orschiro macht immer Spaß, wenn es funktioniert :) Gern geschehen!
Jacob Vlijm

5

Ich empfehle stattdessen die Verwendung eines anderen Dateimanagers, wenn dies für Sie in Ordnung ist, da Nautilus diese Funktion nicht bietet .

Hier ist eine alternative App, die den Trick macht: SpaceFM

Hier erfahren Sie, wie Sie es installieren.

Es verfügt über umfangreiche Funktionen wie das erneute Öffnen der letzten Registerkarten .

So machen Sie es zum Standard- Dateimanager:

xdg-mime default spacefm.desktop inode/directory



0

Der einfachste Weg, auf Ordner zuzugreifen, ist das Lesezeichen. Sie werden Ihre Registerkarten nicht geöffnet lassen, aber Sie können zumindest die gewünschten Ordner schnell sehen (und wenn Sie darüber nachdenken, fungieren die Lesezeichen als Registerkarten).

Öffnen Sie einfach einen Ordner in Nautilus, gehen Sie zum Lesezeichen-Menü und fügen Sie ein Lesezeichen hinzu.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.