A página Propriedades do Nautilus mostra tamanho em bytes para várias seleções e para diretórios?

4

No Nautilus, o item Propriedades de um único mostra o tamanho como:
um valor arredondado para uma casa decimal ... nn.n KB, MB, GB ...
seguido por uma contagem exata de bytes

Para itens não únicos , o Nautilus mostra apenas um tamanho arredondado .

(Single item)   Size:  1.4 GB (1501773824 bytes)

(Multi items)   Size:  5 items, totalling 1.4 GB
(directory)     Size:  5 items, totalling 1.4 GB

Existe alguma maneira de fazer o Nautilus exibir a contagem exata de bytes em todas situações?

Gosto da maneira como a caixa de diálogo Propriedades permite copiar esses dados de tamanho, mas geralmente quero trabalhar com o tamanho exato (não uma aproximação).

O Konqueror mostra o tamanho real total, mas não permite copiar o valor para a área de transferência.

NB: A solução zerwas fornecida ( abaixo ) funciona bem, exceto que ela atinge um número inteiro máximo de 4,294967,296 bytes ( 4 GB) ...
Portanto, para qualquer um que esteja lendo isso e interessado em usar esse método, aqui está o código alterado, que serve para um inteiro "long long" ... 9,223,372,036,854,775,807 bytes (8 EB .. E xaBytes).
A primeira linha (/ * new * /) está na linha número 2337

/* new */   long long ll_total_size = total_size;
/* MOD */   size_str = g_format_size_for_display (ll_total_size);
/* MOD */   text = g_strdup_printf (ngettext("%'d item, with size %s (%lld bytes",
/* MOD */                    "%'d items, totalling %s (%lld bytes)",
/* ASIS */                   total_count),
/* MOD */               total_count, size_str, ll_total_size);

Nova informação exibida:

(Single item)   Size:  1.4 GB (1501773824 bytes)

(Multi items)   Size:  5 items, totalling 1.4 GB (1502027641 bytes)
(directory)     Size:  5 items, totalling 1.4 GB (1502027641 bytes)
--
(directory)     Size:  188,120 items, totalling 766.8 GB (823295045767 bytes)
    
por Peter.O 17.10.2010 / 09:23

1 resposta

7

O valor exibido é chamado pela função g_format_size_for_display do GLib. Você precisa editar o código-fonte do nautilus para alterar esse comportamento apenas adicionando um% i à saída:

Etapa 1 : faça o download da fonte, instale as dependências e abra o arquivo para editá-lo

mkdir -p .p/nautilus && cd .p/nautilus
sudo apt-get build-dep nautilus
apt-get source nautilus && cd nautilus*
gedit src/file-manager/fm-properties-window.c

Passo 2 : altere o código

Agora vá para a linha 2338 (no Nautilus 2.30) e altere with size %s para with size %s (%i Bytes) . Faça o mesmo para totalling %s . Altere para totalling %s (%i Bytes) Agora deve ficar assim:

    text = g_strdup_printf (ngettext("%'d item, with size %s (%i Bytes)",
                     "%'d items, totalling %s (%i Bytes)",

Etapa 3 : compile

Agora você pode simplesmente compilar o Nautilus como qualquer outro aplicativo

./configure --prefix=/usr
make
sudo make install
nautilus -q

Observe que o Nautilus será sobrescrito sempre que houver uma atualização através do gerenciamento de pacotes. Isso significa que você precisa criar e instalar novamente manualmente.

Há também uma maneira alternativa usando um script do Nautilus, mas isso adicionaria outra entrada no meny do botão direito em vez de ter o valor na janela de propriedades.

    
por zerwas 17.10.2010 / 13:28