Como posso fazer com que o gerenciador de arquivos Nautilus se lembre das minhas abas abertas?


10

É possível preservar minhas guias abertas entre o fechamento e a abertura do gerenciador de arquivos Nautilus?

De preferência, mesmo em diferentes logins e reinicializações.



1
Em uma sessão ou após reiniciar / sair?
24416 Jacob Vlijm

@JacobVlijm preferencialmente até persistente durante a reinicialização / logout.
orschiro

A menos que o link de Parto forneça uma solução, as opções / integração de linha de comando do nautilus são bastante limitadas. Não há opção para ler o diretório aberto no momento, nem alterá-lo na linha de comando. Lembrar o que você não pode ver me parece impossível. Dentro de uma sessão, uma opção de truque e fraude seria possível.
Jacob Vlijm

@JacobVlijm mente explicando como conseguir a lembrança em uma sessão? Isso já seria uma grande coisa para começar. :)
orschiro

Respostas:


7

Opções de linha de comando (muito) limitadas do nautilus

Infelizmente, o nautilus não oferece opções de linha de comando para ler o diretório aberto de suas janelas, nem possui opção para enviar uma janela existente para outro diretório. Como você não consegue se lembrar do que não vê, estamos ficando sem opções à primeira vista.

Contudo

Temos xdotool, não de fazer o nautilusque não faz, mas pelo menos fingir o comportamento que você descreve. Podemos fazer isso de tal maneira que "você acreditaria" se não soubesse como isso é feito.

Embora a solução abaixo não sobreviva à reinicialização, a janela "lembrando" (possivelmente com guias) e todos os diretórios abertos é muito bem possível em uma sessão. Desde que você mencionou estar interessado nisso como uma "segunda opção", aqui está.

Como funciona; o processo

Embora não possamos fechar uma janela e preservar seus guias e listas abertas, nós pode fazer uma janela existente aparentemente (e completamente) desaparecem, com a ajuda de xdotool.

Se subsequentemente alterarmos o comportamento do nautilusiniciador de forma que ele primeiro procure possíveis janelas não mapeadas para remapear, antes de abrir um novo, efetivamente teremos exatamente o mesmo comportamento que se nautiluslembraria da última (s) janela (s) usada (s).

Como configurar

  1. Copie o script abaixo em um arquivo vazio, salve-o 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. O script precisa de ambos wmctrle xdotool:

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

    para 15.04 e posterior:

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

    para versões anteriores do Ubuntu:

    cp /usr/share/applications/nautilus.desktop  ~/.local/share/applications
    
  4. abra a cópia local com o gedit:

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

    (no caso de 15.04 +)

    e procure a primeira linha, começando com Exec=. Mude para:

    Exec=python3 /path/to/remember.py
    

    Salve e feche o arquivo.

  5. Crie um atalho de teclado com o mesmo comando: Escolha: Configurações do sistema> "Teclado"> "Atalhos"> "Atalhos personalizados". Clique no "+" e adicione o comando:

    python3 /path/to/remember.py
    
  6. Agora saia e entre novamente

Como usar

O uso é muito simples:

  • Para abrir uma janela, faça como de costume: clique no iniciador do nautilus. Tabule a janela conforme desejar:

    insira a descrição da imagem aqui

  • Para fechar uma janela definitivamente , feche-a clicando na caixa "fechar" ( x ) da janela .

  • Para preservar a janela (s) + todas as suas guias:
    pressione a tecla de atalho. As janelas desaparecerão (aparentemente fechadas).

    insira a descrição da imagem aqui

  • Na próxima vez em que você clicar no iniciador, as janelas do nautilus aparecerão exatamente como na última vez, até as posições das janelas serão preservadas.

    insira a descrição da imagem aqui

É isso aí

Nota

  • Nos testes que fiz, não encontrei nenhuma desvantagem (14.04). Se você encontrar algum, mencione!
  • Na seção Como usar , sugeri clicar no ícone do nautilus para remapear possíveis janelas não mapeadas. A tecla de atalho fará o mesmo, no entanto, para que você possa ver o que funciona mais conveniente para você. Além disso, se você abriu uma pasta clicando duas vezes após desmarcar uma ou mais pastas, as pastas não mapeadas ainda serão remapeadas pelo atalho.

EDITAR:

Usuários Nemo

Os usuários do Nemo também podem usar a solução acima, mas:

  • Na seção principal do script, altere:

    app = "nautilus"
    

    para dentro:

    app = "nemo"
    
  • No ponto 3, use:

    cp /usr/share/applications/nemo.desktop ~/.local/share/applications
    
  • No ponto 4, use:

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

Testado, provou estar trabalhando com nemo


Ótima solução de trabalho e bem documentada. Muito obrigado!
Orschiro

@orschiro sempre divertido se funcionar :) De nada!
Jacob Vlijm

5

Eu recomendo usar outro gerenciador de arquivos, se isso não for problema com você, pois o Nautilus não possui esse recurso .

Aqui está um aplicativo alternativo que faz o truque: SpaceFM

Veja como instalá-lo.

Possui recursos avançados, como, é claro, reabrir as últimas guias .

Para torná-lo o gerenciador de arquivos padrão :

xdg-mime default spacefm.desktop inode/directory



0

A maneira mais fácil de acessar pastas é marcar. Você não manterá suas guias abertas, mas poderá pelo menos ver as pastas que deseja rapidamente (e, se pensar sobre isso, os indicadores funcionarão como guias).

Basta abrir uma pasta no Nautilus, vá para o menu Favorito e adicione um marcador.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.