Como posso definir pastas específicas para a exibição de lista ou ícone no nautilus?

4

Existe uma maneira de usar diferentes pastas em cada pasta? Algumas pastas que eu gosto de ver como ícones e outros é melhor ver como lista.

    
por E_Angel 12.04.2015 / 17:53

1 resposta

4

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

  1. Os scripts precisam dos dois wmctrl e xdotool :

    sudo apt-get install wmctrl
    sudo apt-get install xdotool
    
  2. 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)

  3. 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.

    
por Jacob Vlijm 13.04.2015 / 09:12

Tags