UI-Dialog
view release on metacpan or search on metacpan
lib/UI/Dialog/Backend/Nautilus.pm view on Meta::CPAN
$str =~ s!^\w+\://!!;
return($str);
}
#NAUTILUS_SCRIPT_SELECTED_FILE_PATHS: newline-delimited paths for selected files (only if local)
sub paths {
my $self = shift();
if ($self->_is_env()) {
return(split(/\n/,$ENV{'NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'}))
unless not $ENV{'NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'};
my @paths = ();
foreach my $uri ($self->uris()) {
my $path = $uri;
my $desktop = $self->_get_desktop_dir();
$path =~ s!^x\-nautilus\-desktop\:///trash!$ENV{'HOME'}/.Trash!;
$path =~ s!^x\-nautilus\-desktop\://!$desktop!;
push(@paths,$self->uri_unescape($path));
}
return(@paths);
} else { return(0); }
}
#NAUTILUS_SCRIPT_SELECTED_URIS: newline-delimited URIs for selected files
sub uris {
my $self = shift();
if ($self->_is_env()) {
return(split(/\n/,$ENV{'NAUTILUS_SCRIPT_SELECTED_URIS'}));
} else { return(0); }
}
#NAUTILUS_SCRIPT_CURRENT_URI: URI for current location
sub path {
my $self = shift();
return('error') unless $self->_is_env();
my $URI = $ENV{'NAUTILUS_SCRIPT_CURRENT_URI'} || '';
my $desktop = $self->_get_desktop_dir();
$URI =~ s!^x\-nautilus\-desktop\:///trash!$ENV{'HOME'}/.Trash!;
$URI =~ s!^x\-nautilus\-desktop\://!$desktop!;
return(($self->uri_unescape($URI)||$URI));
}
#NAUTILUS_SCRIPT_CURRENT_URI: URI for current location
sub uri {
my $self = shift();
return($ENV{'NAUTILUS_SCRIPT_CURRENT_URI'}) if $self->_is_env();
return(0);
}
#NAUTILUS_SCRIPT_WINDOW_GEOMETRY: position and size of current window
sub geometry {
my $self = shift();
if ($self->_is_env()) {
#: Width, Height, X, Y
return($1,$2,$3,$4) if $ENV{'NAUTILUS_SCRIPT_WINDOW_GEOMETRY'} =~ /(\d+)x(\d+)\+(\d+)\+(\d+)/;
} else { return(0,0,0,0); }
}
sub _get_desktop_dir {
my $self = shift();
# Figure out the user's home directory
my @user = getpwuid($>);
my $home = undef;
if (@user > 7 && -d $user[7]) {
$home = $user[7];
}
# check for XDG paths to home directory
my $xdg_desktop_dir = $ENV{XDG_DESKTOP_DIR} || undef;
if (defined $xdg_desktop_dir && -d $xdg_desktop_dir) {
return $xdg_desktop_dir;
}
my $xdg_config_home = $ENV{XDG_CONFIG_HOME} || $home.'/.config';
if (-d $xdg_config_home && -f $xdg_config_home.'/user-dirs.dirs') {
foreach (`. "${xdg_config_home}/user-dirs.dirs"; env`) {
chomp;
next unless /=/;
my ($var, $value) = split(/=/, $_);
$ENV{$var} = $value;
}
}
$xdg_desktop_dir = $ENV{XDG_DESKTOP_DIR} || undef;
if (defined $xdg_desktop_dir && -d $xdg_desktop_dir) {
return $xdg_desktop_dir;
}
return $home."/Desktop" if -d $home."/Desktop";
# finally defaulting to just home
return $home;
}
1;
( run in 2.110 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )