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.
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.
Réponses:
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 nautilus
qui 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.
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 nautilus
lanceur 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 nautilus
nous nous souvenions des dernières fenêtres utilisées.
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)
Le script a besoin des deux wmctrl
et xdotool
:
sudo apt-get install wmctrl xdotool
Copiez le nautilus
lanceur 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
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.
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
Déconnectez-vous et reconnectez-vous
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:
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).
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.
C'est ça
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
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
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
Essayez ces scripts pour enregistrer et restaurer les onglets du gestionnaire de fichiers nautilus. https://github.com/susurri/nautilus_save_tabs/
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.