Спасибо за направление Добей! Это проблема с цитированием.
Я прочитал здесь документ: http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
[d3 ] Существует два правила: 1 - мы должны использовать \ s для представления пространства в обычных строках; 2-Строка Exec является специальной, если в любой ее части есть место, мы должны процитировать эту часть.Для линии TryExec это нормальная строка, поэтому я должен написать TryExec=/home/allfox/Ubuntu\sOne/fun_goods/thumbnailer/gnome_thumbnailer_with_mplayer .
Для строки Exec я должен написать Exec="/home/allfox/Ubuntu One/fun_goods/thumbnailer/gnome_thumbnailer_with_mplayer" %u %o %s.
Теперь он работает;)
Почему эти спецификации не используют одно и то же правило на всех линиях? Мне потребовалось столько времени, чтобы выяснить проблему> _ & lt; .
Для всех желающих я также разместил свой thumbnailer здесь:
#!/usr/bin/env perl
use strict;
use 5.010;
# allfox's GNOME thumbnailer using MPlayer
use File::Temp qw(tempdir);
use List::Util qw(min);
use File::Spec qw();
use URI::Escape qw(uri_unescape);
&thumbnailer(@ARGV);
sub thumbnailer
{
my($mplayer) = `which mplayer`;
chomp $mplayer;
my($input, $output, $size) = @_;
$input = uri_unescape($input);
$output = uri_unescape($output);
if($input =~ /\.part$/i)
{
return;
}
my $common_arguments = '-nosound -noautosub -really-quiet -noar -noconsolecontrols -nojoystick -nolirc -nomouseinput -nosub';
my $video_information = `$mplayer -identify -frames 0 $common_arguments '$input'`;
$video_information =~ /^ID_VIDEO_WIDTH=(?<width>[0-9.]+)
.*
^ID_VIDEO_HEIGHT=(?<height>[0-9.]+)
.*
^ID_LENGTH=(?<length>[0-9.]+)
/msix;
my $width = $+{'width'} / 1;
my $height = $+{'height'} / 1;
my $length = $+{'length'} / 1;
if(defined $size)
{
if($width > $height)
{
my $scale_to = min $width, $size;
$width = $scale_to;
$height = $height * ($scale_to / $width);
}
else
{
my $scale_to = min $height, $size;
$width = $width * ($scale_to / $height);
$height = $scale_to;
}
}
my($temp_frames) = tempdir('gnome_thumbnailer_with_mplayer-XXXXXXXXXXXX', TMPDIR => 1, CLEANUP => 1);
for(1..3)
{
$length /= 3;
if(0 == system "$mplayer -vo jpeg:quality=100:outdir='$temp_frames' -ss $length -frames 1 $common_arguments '$input'")
{
last;
}
}
my $convert = `which convert`;
chomp $convert;
opendir TEMP_FRAMES, $temp_frames;
for(readdir TEMP_FRAMES)
{
if(/^\d+/)
{
my $jpeg_result = File::Spec->catfile($temp_frames, $_);
system "$convert '$jpeg_result' -thumbnail ${width}x$height png:'$output'";
last;
}
}
closedir TEMP_FRAMES;
}
Я не знаю apt-btrfs-snapshot, но из того, что я быстро прочитал в коде, он просто использует функцию моментального снимка btrfs перед действиями apt.
btrfs использует много B-деревьев для хранения данных. Дублирование сохраняется до минимума (даже не используя hardlink, а copy-on-write). Читайте: «он будет использовать столько же памяти, что вы удаляете данные вне /home".
EDIT:
После прочтения кода у apt-btrfs-snapshot возникли некоторые проблемы. Например:
он делает большие предположения: ваш btrfs должен иметь конкретное имя субволона (ваш корневой объем должен быть назван «@»), если ваши /home и /var/lib находятся на одном и том же subvolume как ваш корень /, они также будут сняты.Я не знаю apt-btrfs-snapshot, но из того, что я быстро прочитал в коде, он просто использует функцию моментального снимка btrfs перед действиями apt.
btrfs использует много B-деревьев для хранения данных. Дублирование сохраняется до минимума (даже не используя hardlink, а copy-on-write). Читайте: «он будет использовать столько же памяти, что вы удаляете данные вне /home".
EDIT:
После прочтения кода у apt-btrfs-snapshot возникли некоторые проблемы. Например:
он делает большие предположения: ваш btrfs должен иметь конкретное имя субволона (ваш корневой объем должен быть назван «@»), если ваши /home и /var/lib находятся на одном и том же subvolume как ваш корень /, они также будут сняты.Я не знаю apt-btrfs-snapshot, но из того, что я быстро прочитал в коде, он просто использует функцию моментального снимка btrfs перед действиями apt.
btrfs использует много B-деревьев для хранения данных. Дублирование сохраняется до минимума (даже не используя hardlink, а copy-on-write). Читайте: «он будет использовать столько же памяти, что вы удаляете данные вне /home".
EDIT:
После прочтения кода у apt-btrfs-snapshot возникли некоторые проблемы. Например:
он делает большие предположения: ваш btrfs должен иметь конкретное имя субволона (ваш корневой объем должен быть назван «@»), если ваши /home и /var/lib находятся на одном и том же subvolume как ваш корень /, они также будут сняты.Я не знаю apt-btrfs-snapshot, но из того, что я быстро прочитал в коде, он просто использует функцию моментального снимка btrfs перед действиями apt.
btrfs использует много B-деревьев для хранения данных. Дублирование сохраняется до минимума (даже не используя hardlink, а copy-on-write). Читайте: «он будет использовать столько же памяти, что вы удаляете данные вне /home".
EDIT:
После прочтения кода у apt-btrfs-snapshot возникли некоторые проблемы. Например:
он делает большие предположения: ваш btrfs должен иметь конкретное имя субволона (ваш корневой объем должен быть назван «@»), если ваши /home и /var/lib находятся на одном и том же subvolume как ваш корень /, они также будут сняты. Я не знаю apt-btrfs-snapshot
, но из того, что я быстро прочитал в коде, он просто использует функцию моментального снимка btrfs перед действиями apt
.
btrfs
использует много B-деревьев для хранения данных. Дублирование сохраняется до минимума (даже не используя hardlink, а copy-on-write). Читайте: «он будет использовать столько more-memory , что вы удаляете данные за пределами /home".
EDIT:
После прочтения кода apt-btrfs-snapshot
имеют некоторые проблемы. Например:
btrfs
должен иметь конкретное имя субволона (ваш корневой объем должен быть назван « @
») / home
и / var / lib
находятся в одном и том же субволе, как ваш корень /
, они также будут быть снято снизу. Я не знаю apt-btrfs-snapshot
, но из того, что я быстро прочитал в коде, он просто использует функцию моментального снимка btrfs перед действиями apt
.
btrfs
использует много B-деревьев для хранения данных. Дублирование сохраняется до минимума (даже не используя hardlink, а copy-on-write). Читайте: «он будет использовать столько more-memory , что вы удаляете данные за пределами /home".
EDIT:
После прочтения кода apt-btrfs-snapshot
имеют некоторые проблемы. Например:
btrfs
должен иметь конкретное имя субволона (ваш корневой объем должен быть назван « @
») / home
и / var / lib
находятся в одном и том же подвыполнении, как ваш корень /
, они также будут быть снято снизу. Я не знаю apt-btrfs-snapshot
, но из того, что я быстро прочитал в коде, он просто использует функцию моментального снимка btrfs перед действиями apt
.
btrfs
использует много B-деревьев для хранения данных. Дублирование сохраняется до минимума (даже не используя hardlink, а copy-on-write). Читайте: «он будет использовать столько more-memory , что вы удаляете данные за пределами /home".
EDIT:
После прочтения кода apt-btrfs-snapshot
имеют некоторые проблемы. Например:
btrfs
должен иметь конкретное имя субволона (ваш корневой объем должен быть назван « @
») / home
и / var / lib
находятся в одном и том же подвыполнении, как ваш корень /
, они также будут быть снято снизу. Я не знаю apt-btrfs-snapshot
, но из того, что я быстро прочитал в коде, он просто использует функцию моментального снимка btrfs перед действиями apt
.
btrfs
использует много B-деревьев для хранения данных. Дублирование сохраняется до минимума (даже не используя hardlink, а copy-on-write). Читайте: «он будет использовать столько more-memory , что вы удаляете данные за пределами /home".
EDIT:
После прочтения кода apt-btrfs-snapshot
имеют некоторые проблемы. Например:
btrfs
должен иметь конкретное имя субволона (ваш корневой объем должен быть назван « @
») / home
и / var / lib
находятся в одном и том же подвыполнении, как ваш корень /
, они также будут быть снято снизу.