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 )