É 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.
É 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.
Respostas:
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 nautilus
que 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á.
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 nautilus
iniciador 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 nautilus
lembraria da última (s) janela (s) usada (s).
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)
O script precisa de ambos wmctrl
e xdotool
:
sudo apt-get install wmctrl xdotool
Copie o nautilus
iniciador de /usr/share/applications
para~/.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
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.
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
Agora saia e entre novamente
O uso é muito simples:
Para abrir uma janela, faça como de costume: clique no iniciador do nautilus. Tabule a janela conforme desejar:
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).
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.
É isso aí
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
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
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
Experimente estes scripts para salvar e restaurar guias do gerenciador de arquivos nautilus. https://github.com/susurri/nautilus_save_tabs/
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.