¿Cómo puedo hacer que el administrador de archivos Nautilus recuerde mis pestañas abiertas?


10

¿Es posible conservar mis pestañas abiertas entre el cierre y la apertura del administrador de archivos Nautilus?

Preferiblemente incluso en diferentes cierres de sesión y reinicios.



1
¿En una sesión o después de reiniciar / cerrar sesión?
Jacob Vlijm

@JacobVlijm preferiblemente incluso persistente durante el reinicio / cierre de sesión.
orschiro

A menos que el enlace de Parto proporcione una solución, las opciones / integración de la línea de comandos de nautilus son bastante limitadas. No hay opción para leer el directorio abierto actualmente, ni para cambiarlo desde la línea de comandos. Recordar lo que no puedes ver me parece imposible. Sin embargo, dentro de una sesión, sería posible una opción de truco y trampa.
Jacob Vlijm

¿@JacobVlijm te explica cómo lograr el recuerdo dentro de una sesión? Para empezar, eso ya sería una gran cosa. :)
orschiro

Respuestas:


7

Opciones de línea de comandos (muy) limitadas de nautilus

Desafortunadamente, nautilus no ofrece opciones de línea de comandos para leer el directorio abierto de sus ventanas, ni tiene ninguna opción para enviar una ventana existente a otro directorio. Como no puede recordar lo que no ve, nos estamos quedando sin opciones a primera vista.

sin embargo

Tenemos que xdotool, no hacer lo nautilusque no, sino al menos fingir el comportamiento que usted describe. Podemos hacerlo de tal manera que "lo creería" si no supiera cómo se hace.

Aunque la solución a continuación no sobrevive a un reinicio, la ventana "recordar" (posiblemente con pestañas) y todos los directorios abiertos es muy posible dentro de una sesión. Como mencionó estar interesado en eso como una "segunda opción", aquí está.

Cómo funciona; el proceso

Aunque no podemos cerrar una ventana y preservar sus pestañas y directorios abiertos, nos podemos hacer una ventana existente en apariencia (y totalmente) desaparece, con la ayuda de xdotool.

Si posteriormente cambiamos el comportamiento del nautilusiniciador de tal manera que primero busque posibles ventanas no asignadas para reasignarlas, antes de abrir una nueva, efectivamente tenemos exactamente el mismo comportamiento como si nautilusrecordara las últimas ventanas utilizadas.

Como instalar

  1. Copie el script a continuación en un archivo vacío, guárdelo como 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. El script necesita ambos wmctrly xdotool:

    sudo apt-get install wmctrl xdotool
    
  3. Copie el nautilusiniciador de /usr/share/applicationsa~/.local/share/applications

    para 15.04 y posterior:

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

    para versiones anteriores de Ubuntu:

    cp /usr/share/applications/nautilus.desktop  ~/.local/share/applications
    
  4. abra la copia local con gedit:

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

    (en caso de 15.04 +)

    y busca la primera línea, comenzando con Exec=. Cámbielo a:

    Exec=python3 /path/to/remember.py
    

    Guarde y cierre el archivo.

  5. Cree un método abreviado de teclado con el mismo comando: Elija: Configuración del sistema> "Teclado"> "Métodos abreviados"> "Métodos abreviados personalizados". Haga clic en "+" y agregue el comando:

    python3 /path/to/remember.py
    
  6. Ahora cierre sesión y vuelva a iniciarla

Cómo utilizar

El uso es muy simple:

  • Para abrir una ventana, haz lo de siempre: haz clic en el iniciador de nautilus. Pestaña la ventana como quieras:

    ingrese la descripción de la imagen aquí

  • Para cerrar una ventana definitivamente , ciérrela haciendo clic en el cuadro "cerrar" ( x ) de la ventana .

  • Para preservar la (s) ventana (s) + todas sus pestañas:
    presione la tecla de acceso directo. Las ventanas se desvanecerán (aparentemente cerradas).

    ingrese la descripción de la imagen aquí

  • La próxima vez que haga clic en el iniciador, las ventanas de nautilus aparecerán exactamente como la última vez, incluso se conservarán las posiciones de las ventanas.

    ingrese la descripción de la imagen aquí

Eso es

Nota

  • En las pruebas que realicé, no pude encontrar ningún inconveniente (14.04). Si te encuentras con alguno, ¡menciónalo!
  • En la sección Cómo usar , sugerí hacer clic en el icono de nautilus para reasignar posibles ventanas no asignadas. Sin embargo, la tecla de acceso directo hará lo mismo, para que pueda ver lo que le resulte más conveniente. Además, si abrió una carpeta haciendo doble clic después de desasignar en o más carpetas, el acceso directo reasignará las carpetas sin asignar.

EDITAR:

Usuarios de Nemo

Los usuarios de Nemo pueden usar igualmente la solución anterior, pero:

  • En la sección principal del script, cambie:

    app = "nautilus"
    

    dentro:

    app = "nemo"
    
  • En el punto 3, use:

    cp /usr/share/applications/nemo.desktop ~/.local/share/applications
    
  • En el punto 4, use:

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

Probado, demostró estar trabajando con nemo


Gran solución de trabajo y bien documentada. ¡Muchas gracias!
orschiro

@orschiro siempre es divertido si funciona :) ¡De nada!
Jacob Vlijm

5

Recomiendo usar otro administrador de archivos en su lugar si está bien, ya que Nautilus no tiene esa función .

Aquí hay una aplicación alternativa que hace el truco: SpaceFM

Aquí se explica cómo instalarlo.

Tiene características ricas como, por supuesto, volver a abrir las últimas pestañas .

Para convertirlo en el administrador de archivos predeterminado :

xdg-mime default spacefm.desktop inode/directory



0

La forma más fácil de acceder a las carpetas es marcar. No mantendrá sus pestañas abiertas, pero al menos puede ver las carpetas que desea rápidamente (y si lo piensa, los marcadores actúan como pestañas).

Simplemente abra una carpeta en Nautilus, vaya al menú Marcador y agregue un marcador.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.