Como nautilus
não tem uma opção de linha de comando para alternar entre a visualização de lista e de ícones, nem tem a opção de definir prerências de exibição por pasta , não há clean maneira de fazer isso.
Começando como um experimento, a opção abaixo era ver se isso poderia ser feito de qualquer maneira, de maneira razoavelmente funcional.
Como mencionado em um comentário, a solução está tão suja quanto possível, mas se mostrou totalmente funcional e, nas horas em que a testei, não me deparei com problemas. A decisão de usá-lo ou não é sua.
Os scripts e o que eles fazem
A solução consiste em dois scripts; um para ser executado a partir de uma tecla de atalho para adicionar a janela ativa (nautilus) a uma lista. As janelas listadas serão automaticamente definidas para exibição de lista , outras janelas estão em exibição de ícones por padrão. Claro que você pode configurá-lo vice-versa, dependendo do tipo de exibição que você gostaria de definir como padrão
A mudança de / para visualização de lista é feita simulando ou Ctrl + 1 ou Ctrl + 2 , que são os atalhos em nautilus
para definir a visualização de lista ou de ícones.
Como funciona na prática
Executando o primeiro script em segundo plano, a visualização padrão das janelas do nautilus é visualização de ícones .
Se você quiser definir a exibição de lista para uma pasta específica, navegue até a pasta (abra-a), com a janela da pasta aberta e na frente, pressione (por exemplo, Ctrl + Alt + A )
Isso adicionará o nome da janela a uma lista (mantida em um arquivo oculto em seu diretório pessoal). Na próxima vez que você abrir a pasta, ela mudará automaticamente para a exibição de lista e voltará para a exibição de ícones quando você navegar pelo tyo de outra pasta.
Para remover a pasta da lista, pressione Ctrl + Alt + R com a pasta em questão na frente.
Como configurar
-
Os scripts precisam dos dois
wmctrl
exdotool
:sudo apt-get install wmctrl sudo apt-get install xdotool
-
Copie o script abaixo em um arquivo vazio, salve-o como
add_folder.py
Este é o script para adicionar ou remover a janela de / para a visualização de lista .#!/usr/bin/env python3 import subprocess import os import sys add = sys.argv[1] wlist = os.environ["HOME"]+"/.window_list.txt" get = lambda cmd: subprocess.check_output(cmd).decode("utf-8") window = get(["xdotool", "getactivewindow", "getwindowname"]).strip()+"\n" def add_window(): if os.path.exists(wlist): current = open(wlist).readlines() if not window in current: new = current+[window] open(wlist, "w").writelines(new) else: open(wlist, "w").write(window) def remove_window(): if os.path.exists(wlist): current = open(wlist).readlines() if window in current: current.remove(window) open(wlist, "w").writelines(current) if add == "+": add_window() elif add == "-": remove_window()
-
Teste o script pelo comando:
python3 /path/to/add_folder.py +
Um arquivo oculto deve ser criado em
~/home
, denominado.window_list.txt
. Você precisará pressionar Ctrl + H para torná-lo visível (arquivos com um nome, iniciando com '.' São invisíveis por padrão)Se funcionar bem, adicione os dois comandos:
python3 /path/to/add_folder.py + python3 /path/to/add_folder.py -
para uma combinação de teclas de atalho (usei Ctrl + Alt + R e Ctrl + Alt + A ): escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o (s) comando (s)
-
-
Copie o script abaixo em um arquivo vazio, salve-o como
set_view.py
Este é o script de segundo plano para alterar a visualização da janela para exibição de lista ou exibição de ícone .#!/usr/bin/env python3 import subprocess import time import os wlist = os.environ["HOME"]+"/.window_list.txt" def get(cmd): try: return subprocess.check_output(cmd).decode("utf-8") except subprocess.CalledProcessError: return "" def check_window(): pid = subprocess.check_output(["pidof", "nautilus"]).decode("utf-8").strip() wlist = get(["wmctrl", "-lp"]).splitlines() front = get(["xdotool", "getactivewindow", "getwindowname"]).strip() return (front, [w for w in wlist if all([pid in w, front in w])]) match1 = check_window() while True: time.sleep(1) match2 = check_window() if all([match2 != match1, match2[1] != []]): w = match2[0] try: if w in open(wlist).read().splitlines(): cmd = "xdotool key Ctrl+1" subprocess.Popen(["/bin/bash", "-c", cmd]) else: cmd = "xdotool key Ctrl+2" subprocess.Popen(["/bin/bash", "-c", cmd]) except FileNotFoundError: pass match1 = match2
Teste-o executando a partir de uma janela de terminal:
python3 /path/to/set_view.py
Navegue pelas suas pastas e adicione / remova as pastas à lista de exibição de lista, conforme descrito em
2.
(lembre-se, a exibição de lista será ativada da próxima vez em que você abrir a pasta)
É isso aí!
Nota
Como o script não vê se as pastas listadas ainda existem em seus diretórios, o arquivo ~/.window_list.txt
pode incluir algumas entradas desatualizadas ao longo do tempo, se você excluir as pastas listadas.
Você pode impedir que o dat use o atalho que você configurou para fazer isso ou simplesmente percorrer o arquivo de vez em quando.