Bem, parece que posso usar o Nautilus antigo para fazer isso, mas prefiro saber se há um aplicativo independente que possa se comportar assim. Agradecimentos a Informações de metadados de música e EXIF na exibição de lista do Nautilus [Extensão de colunas do Nautilus - PPA] ~ Web Upd8: Blog do Ubuntu / Linux , eu aprendi sobre o plugin Python "Nautilus Columns", e foi relativamente fácil modificá-lo para mostrar um campo "summary" dos primeiros bytes em um arquivo.
O código está abaixo, como coltextsummary.py
- siga as instruções nos comentários, depois que o Nautilus for reiniciado, na guia Nautilus / Editar / Preferências ... / Colunas da lista, marque a coluna "Resumo" (deve seja o último); em seguida, feche a janela "Preferências de gerenciamento de arquivos". Agora, quando você alterna para o modo de exibição de lista, deve haver uma coluna "Resumo", com os primeiros 50 caracteres de cada arquivo mostrado. Nota: testado no Nautilus 2.32.2.1, Ubuntu 11.04.
Primeiro, observe que você precisa de permissão de superusuário para navegar em /sys/kernel/debug
e, de fato:
sudo nautilus /sys/kernel/debug
... parece funcionar bem, também no modo de exibição de lista. No entanto, se você tentar abrir o diretório tracing
aqui, ou clicando duas vezes ou expandindo o nó no modo de exibição de lista, o Nautilus fará apenas uma "rotação vazia" dizendo "Carregando":
Aúnicamaneiradefazerissofuncionarnessediretóriofoiquandotenteiexecutarogdb
,parainspecionarqualpoderiaseroproblema:
$sudogdb--argsnautilus/sys/kernel/debug...Readingsymbolsfrom/usr/bin/nautilus...(nodebuggingsymbolsfound)...done.(gdb)r...
Note que, mesmo com a abordagem gdb
, o Nautilus fará "empty" "loading" se você tentar abrir /sys/kernel/debug/tracing
diretamente da linha de comando e alterna para List View; ou se você tentar abrir tracing
clicando duas vezes em sua entrada em /sys/kernel/debug
. A única maneira de obter itens de árvore com expansão é executá-lo conforme mencionado acima e usar o Modo de Exibição de Lista para /sys/kernel/debug
e expandir o nó tracing
(e seus filhos) para lá.
Bem - de qualquer forma, é por isso que eu gostaria que houvesse uma GUI independente para isso (não ter que executar nautilus
em gdb
:)
); mas até isso vai me ajudar por agora ...
O código do plug-in:
coltextsummary.py
:
#!/usr/bin/python
# based on bsc-v2.py from "nautilus-columns",
# https://launchpad.net/~nilarimogard/+archive/webupd8/+packages?batch=75&memo=225&start=225
# this script can installed to the current user account by running the following commands:
# mkdir ~/.nautilus/python-extensions
# cp coltextsummary.py ~/.nautilus/python-extensions
# chmod a+x ~/.nautilus/python-extensions/coltextsummary.py
# alternatively, you can be able to place the script in:
# /usr/lib/nautilus/extensions-2.0/python/
# (here to make it available to all users - also superuser)
# nautilus -q # to refresh
__author__ = "sdaau"
__version__ = "0.0.1"
__appname__ = "nautilus-coltextsummary"
import os
import urllib
import nautilus
import select
class ColumnExtension(nautilus.ColumnProvider, nautilus.InfoProvider):
__dbg = 0
def __init__(self):
print "Initializing" , __appname__ , __version__
pass
def get_columns(self):
return (
nautilus.Column("NautilusPython::summary_column","summary","Summary","Text Content Summary"),
)
def update_file_info(self, file):
# set defaults to blank
file.add_string_attribute('summary', '[none]')
if file.get_uri_scheme() != 'file':
return
# strip file:// to get absolute path
filename = urllib.unquote(file.get_uri()[7:])
# for some reason, even here we can end up with directories!
if self.__dbg==1: print filename
# so try another check to skip them:
if not(os.path.isfile(filename)):
if self.__dbg==1: print "Not a file: " + filename + " ; skipping..."
return
# http://stackoverflow.com/questions/21429369/read-file-with-timeout-in-python
# get summary, for all files # if file.is_mime_type('image/jpeg'):
timeout = 0.5
maxbytes = 50
f = open(filename, "r")
rrdy, wrdy, xrdy = select.select([f], [], [], timeout);
summary="."
if rrdy == []:
summary = "[n/a]"
else:
summary = os.read(f.fileno(), maxbytes)
summary = summary.replace('\n', ' ; ')
file.add_string_attribute('summary', summary)
f.close()
self.get_columns()