Comment puis-je faire en sorte que le gestionnaire de fichiers Nautilus se souvienne de mes onglets ouverts?


10

Est-il possible de conserver mes onglets ouverts entre la fermeture et l'ouverture du gestionnaire de fichiers Nautilus?

De préférence même entre différentes déconnexions et redémarrages.



1
En une seule session, ou après redémarrage / déconnexion?
Jacob Vlijm

@JacobVlijm de préférence même persistant au redémarrage / déconnexion.
orschiro

À moins que le lien de Parto ne fournisse une solution, les options / l'intégration en ligne de commande de nautilus sont assez limitées. Il n'y a pas d'option pour lire le répertoire actuellement ouvert, ni pour le modifier à partir de la ligne de commande. Se souvenir de ce que vous ne voyez pas me semble impossible. En une seule session, une option astuce et triche serait cependant possible.
Jacob Vlijm

@JacobVlijm esprit expliquant comment réaliser le souvenir en une seule session? Ce serait déjà une bonne chose pour commencer. :)
orschiro

Réponses:


7

Options de ligne de commande (très) limitées de Nautilus

Malheureusement, nautilus n'offre pas d'options de ligne de commande pour lire le répertoire ouvert de ses fenêtres, ni aucune option pour envoyer une fenêtre existante vers un autre répertoire. Comme vous ne vous souvenez pas de ce que vous ne voyez pas, nous manquons d'options à première vue.

toutefois

Nous avons xdotool, non pas pour faire ce nautilusqui ne fonctionne pas, mais au moins pour simuler le comportement que vous décrivez. Nous pouvons le faire de telle manière que «vous le croiriez» si vous ne saviez pas comment procéder.

Bien que la solution ci-dessous ne survive pas à un redémarrage, la fenêtre de "mémorisation" (éventuellement à onglets) et tous les répertoires ouverts est très possible en une seule session. Puisque vous avez mentionné être intéressé par cela en tant que "deuxième choix", le voici.

Comment ça fonctionne; le processus

Bien que nous ne puissions pas fermer une fenêtre et conserver ses onglets et répertoires ouverts, nous pouvons faire disparaître une fenêtre existante en apparence (et complètement), à l'aide de xdotool.

Si nous modifions par la suite le comportement du nautiluslanceur de manière à ce qu'il recherche d' abord les éventuelles fenêtres non mappées à remapper, avant d'en ouvrir une nouvelle, nous avons effectivement exactement le même comportement que si nautilusnous nous souvenions des dernières fenêtres utilisées.

Comment installer

  1. Copiez le script ci-dessous dans un fichier vide, enregistrez-le sous 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. Le script a besoin des deux wmctrlet xdotool:

    sudo apt-get install wmctrl xdotool
    
  3. Copiez le nautiluslanceur de /usr/share/applicationsà~/.local/share/applications

    pour 15.04 et versions ultérieures:

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

    pour les versions antérieures d'Ubuntu:

    cp /usr/share/applications/nautilus.desktop  ~/.local/share/applications
    
  4. ouvrez la copie locale avec gedit:

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

    (en cas de 15.04 +)

    et recherchez la première ligne, en commençant par Exec=. Changez-le en:

    Exec=python3 /path/to/remember.py
    

    Enregistrez et fermez le fichier.

  5. Créez un raccourci clavier avec la même commande: Choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:

    python3 /path/to/remember.py
    
  6. Déconnectez-vous et reconnectez-vous

Comment utiliser

L'utilisation est très simple:

  • Pour ouvrir une fenêtre, faites comme d'habitude: cliquez sur le lanceur nautilus. Tabulez la fenêtre comme vous le souhaitez:

    entrez la description de l'image ici

  • Pour fermer définitivement une fenêtre , fermez-la en cliquant sur la case "fermer" ( x ) de la fenêtre .

  • Pour conserver la ou les fenêtres + tous ses onglets:
    appuyez sur la touche de raccourci. La ou les fenêtres disparaîtront (apparemment proches).

    entrez la description de l'image ici

  • La prochaine fois que vous cliquerez sur le lanceur, la ou les fenêtres nautilus apparaîtront exactement comme la dernière fois, même la ou les positions de la fenêtre seront conservées.

    entrez la description de l'image ici

C'est ça

Remarque

  • Dans les tests que j'ai effectués, je n'ai trouvé aucun inconvénient (14.04). Si vous en rencontrez, merci de le mentionner!
  • Dans la section Comment utiliser , j'ai suggéré de cliquer sur l'icône nautilus pour remapper les éventuelles fenêtres non mappées. Cependant, la touche de raccourci fera de même, afin que vous puissiez voir ce qui vous convient le mieux. De plus, si vous avez ouvert un dossier par double-clic après avoir démappé un ou plusieurs dossiers, les dossiers non mappés seront toujours remappés par le raccourci.

ÉDITER:

Utilisateurs de Nemo

Les utilisateurs de Nemo peuvent également utiliser la solution ci-dessus, mais:

  • Dans la section d'en-tête du script, modifiez:

    app = "nautilus"
    

    dans:

    app = "nemo"
    
  • Au point 3, utilisez:

    cp /usr/share/applications/nemo.desktop ~/.local/share/applications
    
  • Au point 4, utilisez:

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

Testé, s'est avéré fonctionner avec Nemo


Excellente solution de travail et bien documentée. Merci beaucoup!
orschiro

@orschiro toujours amusant si ça marche :) Vous êtes les bienvenus!
Jacob Vlijm

5

Je recommande d'utiliser un autre gestionnaire de fichiers à la place si cela vous convient car Nautilus ne dispose pas de cette fonctionnalité .

Voici une application alternative qui fait l'affaire: SpaceFM

Voici comment l'installer.

Il a des fonctionnalités riches telles que, bien sûr, rouvrir les derniers onglets .

Pour en faire le gestionnaire de fichiers par défaut :

xdg-mime default spacefm.desktop inode/directory



0

Le moyen le plus simple d'accéder aux dossiers est le signet. Vous ne garderez pas vos onglets ouverts, mais vous pouvez au moins voir rapidement les dossiers que vous souhaitez (et si vous y pensez, les signets agissent comme des onglets).

Ouvrez simplement un dossier sur Nautilus, allez dans le menu Signet et ajoutez un signet.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.