__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
#!/usr/bin/perl
use strict;
use warnings;
use v5.10; # for '//'
use open qw/:utf8 :std/;
use utf8;
use Config qw//;
use File::Find qw//;
use File::Spec qw//;
use XML::LibXML qw//;
{
my $have_display;
BEGIN {
if (!@ARGV) {
local $@;
$have_display = eval {use Gtk3; Gtk3::init_check ()};
}
}
my $parser = GirParser->new;
if (!@ARGV && $have_display) {
my @girs = find_girs ();
my $gui = GirGUI->new ($parser, @girs);
$gui->run;
exit;
}
if (!@ARGV) {
die 'Usage: perli11ndoc <library name>[::<element name>[::<element name>]]';
}
my $pattern = $ARGV[0];
my ($lib_pattern, @element_patterns) = split /::/, $pattern;
my $gir = find_gir ($lib_pattern);
$parser->open ($gir);
if (!@element_patterns) {
print $parser->format_namespace;
} else {
print $parser->format_search_results (@element_patterns);
}
}
# ------------------------------------------------------------------------------
sub find_gir {
my ($lib_pattern) = @_;
if ($lib_pattern !~ /^([^\d\-]+)-?(\d(?:\.\d)?)?$/) {
die "Cannot recognize the library name\n";
}
my $name_wanted = $1;
my $version_wanted = $2;
if (defined $version_wanted && $version_wanted !~ /\./) {
$version_wanted .= '.0';
}
my $match_func = sub {
if (defined $version_wanted) {
return $_ eq "$name_wanted-$version_wanted.gir";
} else {
return $_ =~ /^\Q$name_wanted\E-\d+\.\d+\.gir$/;
}
};
my @girs = find_girs ($match_func);
if (@girs == 0) {
die "Could not find any matching GIR file\n";
}
if (@girs > 1) {
my $girs_string = join (', ', map { $_->{path} } @girs);
die "Found multiple matching GIR files: $girs_string; please be more specific\n";
}
return $girs[0]->{path};
}
sub find_girs {
my ($match_func) = @_;
$match_func //= sub { 1 };
my @prefixes = ('/usr');
my @env_vars = (
{name => 'LD_LIBRARY_PATH', extra_depth => 1}, # /<prefix>/lib => /<prefix>
{name => 'GI_TYPELIB_PATH', extra_depth => 2}, # /<prefix>/lib/girepository-1.0 => /<prefix>
);
foreach my $env_var (@env_vars) {
next unless exists $ENV{$env_var->{name}};
my @dirs = split /$Config::Config{path_sep}/, $ENV{$env_var->{name}};
foreach my $dir (@dirs) {
my @dir_parts = File::Spec->splitdir ($dir);
my $prefix = File::Spec->catdir (
@dir_parts[0 .. ($#dir_parts-$env_var->{extra_depth})]);
if (-d $prefix) {
push @prefixes, Cwd::abs_path ($prefix);
}
}
}
my %seen;
my @search_dirs = grep { !$seen{$_}++ && -d $_ }
map { $_ . '/share/gir-1.0' }
@prefixes;
my @girs;
File::Find::find (sub {
if ($_ =~ m/\.gir$/ && $match_func->($_)) {
push @girs, {path => $File::Find::name,
dir => $File::Find::dir,
file => $_};
}
}, @search_dirs);
return @girs;
}
# ------------------------------------------------------------------------------
# --- GirParser ----------------------------------------------------------------
# ------------------------------------------------------------------------------
package GirParser;
use strict;
use warnings;
sub new {
my ($class) = @_;
return bless {}, $class
}
sub open {
my ($self, $gir) = @_;
$self->{gir} = $gir;
$self->{parser} = XML::LibXML->new;
$self->{dom} = $self->{parser}->load_xml (location => $gir);
$self->{xpc} = XML::LibXML::XPathContext->new;
$self->{xpc}->registerNs ('core', 'http://www.gtk.org/introspection/core/1.0');
$self->{repository} = $self->{dom}->documentElement;
my $namespace_list = $self->{xpc}->find ('core:namespace', $self->{repository});
if ($namespace_list->size != 1) {
die 'Can only handle a single namespace';
}
$self->{namespace} = $namespace_list->pop;
$self->{basename} = $self->construct_basename;
}
sub construct_basename {
my ($self) = @_;
my $name = $self->find_attribute ($self->{namespace}, 'name');
my $version = $self->find_attribute ($self->{namespace}, 'version');
$version =~ s/.0$//;
$version = '' if $version eq '1';
return $name . $version;
}
# ------------------------------------------------------------------------------
sub find_attribute {
my ($self, $element, $attribute) = @_;
my $attribute_list = $element->find ("\@$attribute");
return if $attribute_list->size != 1;
return $attribute_list->pop->value;
}
sub find_full_element_name {
my ($self, $element) = @_;
my $name = $self->find_attribute ($element, 'name');
return () unless defined $name;
if ($name =~ /\./) {
die "Unexpected fully qualified name '$name' encountered; aborting\n";
}
my $package = '';
my $current_element = $element;
while (1) {
my $parent = $current_element->parentNode;
last unless defined $parent;
if ($parent->nodeName eq 'namespace') {
$package = $self->{basename} . '::' . $package;
last;
}
$package = $self->find_attribute ($parent, 'name') . '::' . $package;
$current_element = $parent;
}
my $full_name = $package . $name;
$package =~ s/::$//;
return ($package, $name, $full_name);
}
sub find_node_by_path {
my ($self, $path) = @_;
my $match_list = $self->{xpc}->find ($path, $self->{namespace});
if ($match_list->size < 1) {
die "Cannot find a matching element for the path $path\n";
}
if ($match_list->size > 1) {
die "Found more than one matching element for the path $path\n";
}
return $match_list->pop;
}
sub find_parameters_and_return_value {
my ($self, $element) = @_;
my (@in, @out);
my $parameter_list = $self->{xpc}->find ('core:parameters/core:parameter', $element);
foreach my $parameter ($parameter_list->get_nodelist) {
my $direction = $self->find_attribute ($parameter, 'direction') // 'in';
if ($direction eq 'inout' || $direction eq 'out') {
push @out, $parameter;
}
if ($direction eq 'inout' || $direction eq 'in') {
push @in, $parameter;
}
}
my $retval = undef;
my $retval_list = $self->{xpc}->find ('core:return-value', $element);
if ($retval_list->size == 1) {
$retval = $retval_list->[0];
if (defined $retval) {
if ($self->find_type_name ($retval) eq 'none') {
$retval = undef;
}
}
}
return (\@in, $retval, \@out);
}
sub find_type_name {
my ($self, $element) = @_;
# arrays
my $array_list = $self->{xpc}->find ('core:array', $element);
if ($array_list->size == 1) {
my $array = $array_list->pop;
my $prefix = 'reference to array of ';
my $child_type_name = $self->find_type_name ($array);
return $prefix . $child_type_name;
}
# callbacks
my $callback_list = $self->{xpc}->find ('core:callback', $element);
if ($callback_list->size == 1) {
my $callback = $callback_list->pop;
my ($in, $retval, $out) = $self->find_parameters_and_return_value ($callback);
unshift @$out, $retval if defined $retval;
my $in_list = join ', ', map { $self->find_type_name ($_) } @$in;
my $out_list = join ', ', map { $self->find_type_name ($_) } @$out;
my $in_text = $in_list ne '' ? "in: $in_list" : '';
my $out_text = $out_list ne '' ? "; out: $out_list" : '';
return "callback ($in_text$out_text)";
}
# bare types
my $type_list = $self->{xpc}->find ('core:type', $element);
return '[unknown type]' unless $type_list->size == 1;
my $type = $type_list->pop;
return $self->find_attribute ($type, 'name');
}
# ------------------------------------------------------------------------------
sub enumerate_namespace {
my ($self, $descend) = @_;
$descend //= 0;
my @class_and_interface_sub_categories = (
[Constructors => 'core:constructor'],
[Methods => 'core:method'],
[Functions => 'core:function'],
[Signals => 'glib:signal'],
[Properties => 'core:property'],
[Fields => 'core:field'],
['Virtual methods' => 'core:virtual-method'],
);
my @record_sub_categories = (
[Constructors => 'core:constructor'],
[Methods => 'core:method'],
[Functions => 'core:function'],
[Fields => 'core:field'],
);
my @enum_and_bitfield_sub_categories = (
[Functions => 'core:function'],
);
my @categories = (
[Classes => 'core:class', \@class_and_interface_sub_categories, sub { shift =~ /Accessible$/ }],
[Interfaces => 'core:interface', \@class_and_interface_sub_categories],
[Records => 'core:record', \@record_sub_categories, sub { shift =~ /(?:Class|Iface|Interface|Private)$/ }],
[Enumerations => 'core:enumeration', \@enum_and_bitfield_sub_categories],
[Bitfields => 'core:bitfield', \@enum_and_bitfield_sub_categories],
[Functions => 'core:function'],
[Callbacks => 'core:callback'],
[Constants => 'core:constant'],
[Aliases => 'core:alias', undef, sub { shift =~ /_autoptr$/ }],
['Classes for accessibility' => 'core:class',
\@class_and_interface_sub_categories,
sub { shift !~ /Accessible$/ }],
['Records for object classes' => 'core:record',
\@record_sub_categories,
sub { shift !~ /Class$/ }],
['Records for interfaces' => 'core:record',
\@record_sub_categories,
sub { shift !~ /(?:Iface|Interface)$/ }],
);
my @results;
foreach my $category (@categories) {
my $heading = $category->[0];
my $path = $category->[1];
my $sub_categories = $category->[2] // undef;
my $skip = $category->[3] // sub { 0 }; # accept all by default
my $list = $self->{xpc}->find ($path, $self->{namespace});
next if $list->size == 0;
my @entries;
foreach my $node ($list->get_nodelist) {
my $node_path = $node->nodePath;
my $name = $self->find_attribute ($node, 'name');
next if $skip->($name);
my @sub_results;
if ($descend && defined $sub_categories) {
foreach my $sub_category (@$sub_categories) {
my $sub_heading = $sub_category->[0];
my $sub_path = $sub_category->[1];
my $sub_list = $self->{xpc}->find ($sub_path, $node);
next if $sub_list->size == 0;
my @sub_entries;
foreach my $sub_node ($sub_list->get_nodelist) {
my $sub_path = $sub_node->nodePath;
my $sub_name = $self->find_attribute ($sub_node, 'name');
push @sub_entries, {path => $sub_path,
name => $sub_name};
}
push @sub_results, [$sub_heading => \@sub_entries];
}
}
push @entries, {path => $node_path,
name => $name,
sub_results => \@sub_results};
}
next unless @entries;
push @results, [$heading => \@entries];
}
return \@results;
}
sub format_namespace {
my ($self) = @_;
my $text = '';
my $name = $self->find_attribute ($self->{namespace}, 'name');
my $version = $self->find_attribute ($self->{namespace}, 'version');
$text .= "NAMESPACE\n\n $name $version => " . $self->{basename} . "\n\n";
my $results = $self->enumerate_namespace;
foreach my $results (@$results) {
my $heading = uc $results->[0];
my $entries = $results->[1];
next unless @$entries;
$text .= "$heading\n\n";
foreach my $entry (@$entries) {
$text .= sprintf " [%s](%s)\n", $entry->{name}, $entry->{path};
}
$text .= "\n";
}
$text =~ s/\n\n\Z/\n/;
return $text;
}
# ------------------------------------------------------------------------------
sub format_search_results {
my ($self, @search_terms) = @_;
die 'Can only handle up to two search terms' if @search_terms > 2;
my $query = @search_terms == 1 ?
"*[\@name='$search_terms[0]']" :
"*[\@name='$search_terms[0]']/*[\@name='$search_terms[1]']";
my $match_list = $self->{xpc}->find ($query, $self->{namespace});
if ($match_list->size == 0) {
die "Cannot find a matching element for the search terms @search_terms\n";
}
my @matches = $match_list->get_nodelist;
if (@matches > 1) {
my $matches_string =
join (', ', map { $self->format_full_element_name ($_) }
@matches);
die "Found two many matches: $matches_string; please be more specific\n";
}
my $match = $matches[0];
return $self->format_node ($match);
}
sub format_node_by_path {
my ($self, $path) = @_;
my $node = $self->find_node_by_path ($path);
return $self->format_node ($node);
}
sub format_node_name_by_path {
my ($self, $path) = @_;
my $node = $self->find_node_by_path ($path);
return $self->format_full_element_name ($node);
}
sub format_node {
my ($self, $node) = @_;
my %categories = (
alias => 'format_alias',
bitfield => 'format_bitfield',
callback => 'format_callback',
class => 'format_class',
constant => 'format_constant',
constructor => 'format_constructor',
enumeration => 'format_enumeration',
field => 'format_field',
function => 'format_function',
method => 'format_method',
property => 'format_property',
interface => 'format_interface',
record => 'format_record',
'glib:signal' => 'format_signal',
'virtual-method' => 'format_virtual_method',
);
my $type = $node->nodeName;
my $handler = $categories{$type};
if (!defined $handler) {
die "Unknown node type '$type' encountered; aborting\n";
}
return $self->$handler ($node);
}
# ------------------------------------------------------------------------------
sub format_alias {
my ($self, $element) = @_;
my $text = '';
my $full_name = $self->format_full_element_name ($element);
my $type_name = $self->find_type_name ($element);
my $full_type_name = $self->format_full_type_name ($type_name);
$text .= "ALIAS\n\n $full_name = $full_type_name\n";
$text .= $self->format_description ($element);
return $text;
}
# ------------------------------------------------------------------------------
sub format_bitfield {
my ($self, $element) = @_;
return $self->format_bitfield_and_enumeration ($element, 'BITFIELD');
}
sub format_enumeration {
my ($self, $element) = @_;
return $self->format_bitfield_and_enumeration ($element, 'ENUMERATION');
}
sub format_bitfield_and_enumeration {
my ($self, $element, $heading) = @_;
my $text = '';
my $full_name = $self->format_full_element_name ($element);
$text .= "$heading\n\n $full_name\n";
$text .= $self->format_description ($element);
$text .= $self->format_sub_members ($element);
$text .= $self->format_sub_functions ($element, 'FUNCTIONS');
return $text;
}
# ------------------------------------------------------------------------------
sub format_callable {
my ($self, $element, $heading, $synopsis_format, $flags_formatter) = @_;
$flags_formatter //= 'format_callable_flags';
my $text = '';
my ($package, $name, $full_name) = $self->find_full_element_name ($element);
my $flags = $self->$flags_formatter ($element);
$text .= "$heading\n\n $full_name$flags\n";
my ($in, $retval, $out) = $self->find_parameters_and_return_value ($element);
# --- synopsis ---
my @in_names = map { '$' . $self->find_attribute ($_, 'name') } @$in;
my @out_names = map { '$' . $self->find_attribute ($_, 'name') } @$out;
if (defined $retval) {
unshift @out_names, '$retval';
}
my $in_list = join ', ', @in_names;
my $in_list_pre_comma = @in_names > 0 ? ", $in_list" : '';
my $in_list_post_comma = @in_names > 0 ? "$in_list, " : '';
my $out_list = join ', ', @out_names;
my $out_list_parens = @out_names > 1 ? "($out_list)" : $out_list;
my $out_list_assign = @out_names > 0 ? "$out_list_parens = " : '';
my $synopsis = $synopsis_format;
$synopsis =~ s/\[\[PACKAGE\]\]/$package/g;
$synopsis =~ s/\[\[NAME\]\]/$name/g;
$synopsis =~ s/\[\[NAME_UC\]\]/uc $name/ge;
$synopsis =~ s/\[\[FULL_NAME\]\]/$full_name/g;
$synopsis =~ s/\[\[IN_LIST\]\]/$in_list/g;
$synopsis =~ s/\[\[IN_LIST_PRE_COMMA\]\]/$in_list_pre_comma/g;
$synopsis =~ s/\[\[IN_LIST_POST_COMMA\]\]/$in_list_post_comma/g;
$synopsis =~ s/\[\[OUT_LIST\]\]/$out_list/g;
$synopsis =~ s/\[\[OUT_LIST_PARENS\]\]/$out_list_parens/g;
$synopsis =~ s/\[\[OUT_LIST_ASSIGN\]\]/$out_list_assign/g;
$text .= "\nSYNOPSIS\n\n $synopsis\n";
# --- description ---
$text .= $self->format_description ($element);
# --- in ---
if (@$in) {
$text .= "\nPARAMETERS\n\n";
foreach my $parameter (@$in) {
my $name = $self->find_attribute ($parameter, 'name');
my $type_name = $self->find_type_name ($parameter);
my $full_type_name = $self->format_full_type_name ($type_name);
$text .= " • $name: $full_type_name\n";
my $doc = $self->format_docs ($parameter, ' ');
if (defined $doc) {
$text .= "$doc\n";
}
$text .= "\n";
}
$text =~ s/\n\n\Z/\n/;
}
# --- retval & out ---
my $retval_type_name = 'none';
if (defined $retval) {
$retval_type_name = $self->find_type_name ($retval);
}
if ($retval_type_name ne 'none' || @$out) {
$text .= "\nRETURN VALUES\n\n";
if ($retval_type_name ne 'none') {
my $full_retval_type_name =
$self->format_full_type_name ($retval_type_name);
$text .= " • $full_retval_type_name\n";
my $doc = $self->format_docs ($retval, ' ');
if (defined $doc) {
$text .= "$doc\n\n";
}
}
if (@$out) {
foreach my $parameter (@$out) {
my $name = $self->find_attribute ($parameter, 'name');
my $type_name = $self->find_type_name ($parameter);
my $full_type_name = $self->format_full_type_name ($type_name);
$text .= " • $name: $full_type_name\n";
my $doc = $self->format_docs ($parameter, ' ');
if (defined $doc) {
$text .= "$doc\n\n";
}
}
}
$text =~ s/\n\n\Z/\n/;
}
return $text;
}
sub format_callback {
my ($self, $element) = @_;
my $synopsis_format = <<'__EOS__';
sub {
my ([[IN_LIST]]) = @_;
...
return [[OUT_LIST_PARENS]];
}
__EOS__
return $self->format_callable ($element, 'CALLBACK', $synopsis_format);
}
sub format_constructor {
my ($self, $element) = @_;
my $synopsis_format = '$object = [[PACKAGE]]->[[NAME]] ([[IN_LIST]])';
return $self->format_callable ($element, 'CONSTRUCTOR', $synopsis_format);
}
sub format_function {
my ($self, $element) = @_;
my $synopsis_format = '[[OUT_LIST_ASSIGN]][[FULL_NAME]] ([[IN_LIST]])';
return $self->format_callable ($element, 'FUNCTION', $synopsis_format);
}
sub format_method {
my ($self, $element) = @_;
my $synopsis_format = '[[OUT_LIST_ASSIGN]]$object->[[NAME]] ([[IN_LIST]])';
# Treat methods of class structs as functions.
{
my $parent = $element->parentNode;
if ($parent->nodeName eq 'record' &&
defined $self->find_attribute ($parent, 'glib:is-gtype-struct-for'))
{
$synopsis_format = '[[OUT_LIST_ASSIGN]][[FULL_NAME]] ($package[[IN_LIST_PRE_COMMA]])';
}
}
return $self->format_callable ($element, 'METHOD', $synopsis_format);
}
sub format_signal {
my ($self, $element) = @_;
my $synopsis_format = <<'__EOS__';
$object->signal_connect ('[[NAME]]' => sub {
my ($object, [[IN_LIST_POST_COMMA]]$data) = @_;
...
return [[OUT_LIST_PARENS]];
}, $data);
__EOS__
return $self->format_callable ($element,
'SIGNAL',
$synopsis_format,
'format_signal_flags');
}
sub format_virtual_method {
my ($self, $element) = @_;
my $synopsis_format = <<'__EOS__';
sub [[NAME_UC]] {
my ($object[[IN_LIST_PRE_COMMA]]) = @_;
...
return [[OUT_LIST_PARENS]];
}
__EOS__
return $self->format_callable ($element,
'VIRTUAL METHOD',
$synopsis_format,
'format_virtual_method_flags');
}
# ------------------------------------------------------------------------------
sub format_class {
my ($self, $element) = @_;
my $format_hierarchy_and_interfaces = sub {
my @parents;
my $current_element = $element;
while (1) {
my $parent_name = $self->find_attribute ($current_element, 'parent');
last unless defined $parent_name;
unshift @parents, $self->format_full_type_name ($parent_name);
# Stop if the parent is fully qualified, i.e., if it points elsewhere.
last if $parent_name =~ /\./;
my $parent_list =
$self->{xpc}->find ("core:class[\@name='$parent_name']",
$self->{namespace});
if ($parent_list->size != 1) {
die "Found no or too many classes with name '$parent_name'\n";
}
$current_element = $parent_list->pop;
}
my @children;
my $name = $self->find_attribute ($element, 'name');
my $children_list =
$self->{xpc}->find ("core:class[\@parent='$name']",
$self->{namespace});
foreach my $child ($children_list->get_nodelist) {
push @children, $self->format_full_element_name ($child);
}
my $hierarchy_text = '';
if (@parents || @children) {
push @parents, $self->format_full_element_name ($element);
$hierarchy_text = "\nHIERARCHY\n\n";
my $hook = '╰── '; # thanks, devhelp
my $spacer = ' ' x length $hook;
for (my $i = 0; $i < @parents; $i++) {
$hierarchy_text .=
' ' .
($i > 0 ? (($spacer x ($i-1)) . $hook) : '') .
$parents[$i] . "\n";
}
foreach my $child (@children) {
$hierarchy_text .=
' ' .
$spacer x $#parents . $hook .
$child . "\n";
}
}
my $impl_list = $self->{xpc}->find ('core:implements', $element);
my $impl_text =
$self->format_full_type_names ($impl_list, 'IMPLEMENTED INTERFACES');
return $hierarchy_text . $impl_text;
};
return $self->format_class_and_interface ($element, 'CLASS',
$format_hierarchy_and_interfaces);
}
sub format_interface {
my ($self, $element) = @_;
my $format_prerequisites_and_implementations = sub {
my $prereq_list = $self->{xpc}->find ('core:prerequisite', $element);
my $prereq_text =
$self->format_full_type_names ($prereq_list, 'PREREQUISITES');
my $name = $self->find_attribute ($element, 'name');
my $impl_list =
$self->{xpc}->find ("core:class[./core:implements[\@name='$name']]",
$self->{namespace});
my $impl_text =
$self->format_full_type_names ($impl_list, 'KNOWN IMPLEMENTATIONS');
return $prereq_text . $impl_text;
};
return $self->format_class_and_interface ($element, 'INTERFACE',
$format_prerequisites_and_implementations);
}
sub format_class_and_interface {
my ($self, $element, $heading, $intro) = @_;
my $text = '';
my $full_name = $self->format_full_element_name ($element);
$text .= "$heading\n\n $full_name\n";
$text .= $intro->();
$text .= $self->format_description ($element);
$text .= $self->format_sub_constructors ($element);
$text .= $self->format_sub_methods ($element);
$text .= $self->format_sub_functions ($element, 'CLASS FUNCTIONS');
$text .= $self->format_sub_signals ($element);
$text .= $self->format_sub_properties ($element);
$text .= $self->format_sub_fields ($element);
$text .= $self->format_sub_virtual_methods ($element);
return $text;
}
# ------------------------------------------------------------------------------
sub format_constant {
my ($self, $element) = @_;
my $text = '';
my $full_name = $self->format_full_element_name ($element);
my $value = $self->find_attribute ($element, 'value');
my $type_name = $self->find_type_name ($element);
my $full_type_name = $self->format_full_type_name ($type_name);
$text .= "CONSTANT\n\n $full_name = $value ($full_type_name)\n";
$text .= $self->format_description ($element);
return $text;
}
# ------------------------------------------------------------------------------
sub format_field {
my ($self, $element) = @_;
my $text = '';
my $full_name = $self->format_full_element_name ($element);
my $type_name = $self->find_type_name ($element);
my $full_type_name = $self->format_full_type_name ($type_name);
my $flags = $self->format_field_flags ($element);
$text .= "FIELD\n\n $full_name: $full_type_name$flags\n";
$text .= $self->format_description ($element);
return $text;
}
# ------------------------------------------------------------------------------
sub format_property {
my ($self, $element) = @_;
my $text = '';
my $full_name = $self->format_full_element_name ($element);
my $type_name = $self->find_type_name ($element);
my $full_type_name = $self->format_full_type_name ($type_name);
my $flags = $self->format_property_flags ($element);
$text .= "PROPERTY\n\n $full_name: $full_type_name$flags\n";
$text .= $self->format_description ($element);
return $text;
}
# ------------------------------------------------------------------------------
sub format_record {
my ($self, $element) = @_;
my $text = '';
my $full_name = $self->format_full_element_name ($element);
$text .= "RECORD\n\n $full_name\n";
$text .= $self->format_description ($element);
$text .= $self->format_sub_fields ($element);
$text .= $self->format_sub_constructors ($element);
$text .= $self->format_sub_methods ($element);
$text .= $self->format_sub_functions ($element, 'FUNCTIONS');
return $text;
}
# ------------------------------------------------------------------------------
sub format_sub_constructors {
my ($self, $element) = @_;
my $text = '';
my $ctor_list = $self->{xpc}->find ('core:constructor', $element);
if ($ctor_list->size > 0) {
$text .= "\nCONSTRUCTORS\n\n";
foreach my $ctor ($ctor_list->get_nodelist) {
my $name = $self->find_attribute ($ctor, 'name');
my $path = $ctor->nodePath;
my $flags = $self->format_callable_flags ($ctor,
qw/introspectable version/);
$text .= " • [$name]($path)$flags\n";
}
}
return $text;
}
sub format_sub_fields {
my ($self, $element) = @_;
my $text = '';
my $field_list = $self->{xpc}->find ('core:field', $element);
if ($field_list->size > 0) {
$text .= "\nFIELDS\n\n";
foreach my $field ($field_list->get_nodelist) {
my $name = $self->find_attribute ($field, 'name');
my $path = $field->nodePath;
my $type_name = $self->find_type_name ($field);
my $full_type_name = $self->format_full_type_name ($type_name);
my $flags = $self->format_field_flags ($field, qw/introspectable/);
$text .= " • [$name]($path): $full_type_name$flags\n";
}
}
return $text;
}
sub format_sub_functions {
my ($self, $element, $heading) = @_;
my $text = '';
my $function_list = $self->{xpc}->find ('core:function', $element);
if ($function_list->size > 0) {
$text .= "\n$heading\n\n";
foreach my $function ($function_list->get_nodelist) {
my $name = $self->find_attribute ($function, 'name');
my $path = $function->nodePath;
my $flags = $self->format_callable_flags ($function,
qw/introspectable version/);
$text .= " • [$name]($path)$flags\n";
}
}
return $text;
}
sub format_sub_members {
my ($self, $element) = @_;
my $text = '';
my $member_list = $self->{xpc}->find ('core:member', $element);
if ($member_list->size > 0) {
$text .= "\nMEMBERS\n";
foreach my $member ($member_list->get_nodelist) {
my $name = $self->find_attribute ($member, 'name');
my $value = $self->find_attribute ($member, 'value');
$text .= "\n • $name = $value\n";
my $doc = $self->format_docs ($member, ' ');
if (defined $doc) {
$text .= "$doc\n";
}
}
}
return $text;
}
sub format_sub_methods {
my ($self, $element) = @_;
my $text = '';
my $method_list = $self->{xpc}->find ('core:method', $element);
if ($method_list->size > 0) {
$text .= "\nMETHODS\n\n";
foreach my $method ($method_list->get_nodelist) {
my $name = $self->find_attribute ($method, 'name');
my $path = $method->nodePath;
my $flags = $self->format_callable_flags ($method,
qw/introspectable version/);
$text .= " • [$name]($path)$flags\n";
}
}
return $text;
}
sub format_sub_properties {
my ($self, $element) = @_;
my $text = '';
my $property_list = $self->{xpc}->find ('core:property', $element);
if ($property_list->size > 0) {
$text .= "\nPROPERTIES\n\n";
foreach my $property ($property_list->get_nodelist) {
my $name = $self->find_attribute ($property, 'name');
my $path = $property->nodePath;
my $type_name = $self->find_type_name ($property);
my $full_type_name = $self->format_full_type_name ($type_name);
my $flags = $self->format_property_flags ($property, qw/version/);
$text .= " • [$name]($path): $full_type_name$flags\n";
}
}
return $text;
}
sub format_sub_signals {
my ($self, $element) = @_;
my $text = '';
my $signal_list = $self->{xpc}->find ('glib:signal', $element);
if ($signal_list->size > 0) {
$text .= "\nSIGNALS\n\n";
foreach my $signal ($signal_list->get_nodelist) {
my $name = $self->find_attribute ($signal, 'name');
my $path = $signal->nodePath;
my $flags = $self->format_signal_flags ($signal, qw/version/);
$text .= " • [$name]($path)$flags\n";
}
}
return $text;
}
sub format_sub_virtual_methods {
my ($self, $element) = @_;
my $text = '';
my $vfunc_list = $self->{xpc}->find ('core:virtual-method', $element);
if ($vfunc_list->size > 0) {
$text .= "\nVIRTUAL METHODS\n\n";
foreach my $vfunc ($vfunc_list->get_nodelist) {
my $name = $self->find_attribute ($vfunc, 'name');
my $path = $vfunc->nodePath;
my $flags = $self->format_virtual_method_flags ($vfunc);
$text .= " • [$name]($path)$flags\n";
}
}
return $text;
}
# ------------------------------------------------------------------------------
sub format_deprecation_docs {
my ($self, $element) = @_;
my $deprecated = $self->find_attribute ($element, 'deprecated') // 0;
return unless $deprecated;
my $text = '';
my $version = $self->find_attribute ($element, 'deprecated-version');
if (defined $version) {
$text .= "Deprecated since: $version.";
}
my $doc_dep_list = $self->{xpc}->find ('core:doc-deprecated', $element);
if ($doc_dep_list->size == 1) {
$text .= ' ' . $doc_dep_list->pop->textContent;
}
return if $text eq '';
return $text;
}
sub format_description {
my ($self, $element) = @_;
my $docs = $self->format_docs ($element);
return defined $docs ? "\nDESCRIPTION\n\n$docs\n" : '';
}
sub format_docs {
my ($self, $element, $indent) = @_;
$indent //= ' ';
my $text = '';
# The normal docs.
my $docs_list = $self->{xpc}->find ('core:doc', $element);
if ($docs_list->size == 1) {
$text .= $docs_list->pop->textContent;
}
# The version constraint.
my $ver = $self->format_version_constraint ($element);
$text .= "\n\n$ver\n" if defined $ver;
# The deprecation docs.
my $dep = $self->format_deprecation_docs ($element);
$text .= "\n\n$dep\n" if defined $dep;
return if $text eq '';
# Extract code blocks so that they are not wrapped.
my $code_block_pattern = qr/\|\[\n?(.*?)\n?\]\|/s;
my $empty_code_block = '|[]|';
my $empty_code_block_pattern = qr/\|\[\]\|/;
my @code_blocks = $text =~ m/$code_block_pattern/g;
$text =~ s/$code_block_pattern/$empty_code_block/g;
# Remove leading white space as fill() otherwise takes it for starting a new
# paragraph. Do this after the code block extraction to preserve their
# indentation.
$text =~ s/^[ \t]+//mg;
require Text::Wrap;
my $formatted_text = Text::Wrap::fill ($indent, $indent, $text);
while ($formatted_text =~ m/$empty_code_block_pattern/g) {
my $code_block = shift @code_blocks;
$code_block =~ s/^/$indent/mg;
my $divider = '-' x (76-length($indent));
my $formatted_code_block =
"\n$indent$divider\n$code_block\n$indent$divider";
$formatted_text =~
s/(?:\n)?(?:$indent)?$empty_code_block_pattern/$formatted_code_block/;
}
return $formatted_text;
}
sub format_full_element_name {
my ($self, $element) = @_;
my (undef, undef, $full_name) = $self->find_full_element_name ($element);
return $full_name;
}
sub format_full_type_name {
my ($self, $name) = @_;
if ($name =~ /\./) { # fully qualified
$name =~ s/\./::/g;
return $name;
}
if ($name =~ /^[A-Z]/) { # local
return $self->{basename} . '::' . $name;
}
return $name; # global
}
sub format_full_type_names {
my ($self, $list, $heading) = @_;
my $text = '';
if ($list->size > 0) {
$text .= "\n$heading\n\n";
foreach my $node ($list->get_nodelist) {
my $type_name = $self->find_attribute ($node, 'name');
my $full_type_name = $self->format_full_type_name ($type_name);
$text .= " • $full_type_name\n";
}
}
return $text;
}
sub format_version_constraint {
my ($self, $element) = @_;
my $version = $self->find_attribute ($element, 'version');
return if !defined $version;
return "Since: $version.";
}
# ------------------------------------------------------------------------------
sub format_flags {
my ($self, $element, $available, $wanted) = @_;
$wanted //= [];
my @texts;
foreach my $flag (@$available) {
my $name = $flag->[0];
my $default = $flag->[1];
my $formatter = $flag->[2];
if (@$wanted) {
next unless grep { $_ eq $name } @$wanted;
}
my $value = $self->find_attribute ($element, $name) // $default;
my $text = $formatter->($value);
push @texts, $text if defined $text;
}
return '' unless @texts;
return ' [' . join (', ', @texts) . ']';
}
sub format_callable_flags {
my ($self, $element, @wanted) = @_;
# name, default, formatter
my @available = (
['introspectable', 1, sub { !$_[0] ? 'NOT INTROSPECTABLE' : undef }],
['deprecated', 0, sub { $_[0] ? "deprecated" : undef }],
['moved-to', undef, sub { defined $_[0] ? "moved to $_[0]" : undef }],
['shadowed-by', undef, sub { defined $_[0] ? "shadowed by $_[0]" : undef }], # FIXME: Format $_[0] properly.
['throws', 0, sub { $_[0] ? "throws" : undef }],
['version', undef, sub { defined $_[0] ? "available since $_[0]" : undef }],
['shadows', undef, sub { defined $_[0] ? "shadows $_[0]" : undef }], # FIXME: Format $_[0] properly.
);
return $self->format_flags ($element, \@available, \@wanted);
}
sub format_field_flags {
my ($self, $element, @wanted) = @_;
# name, default, formatter
my @available = (
['introspectable', 1, sub { !$_[0] ? 'NOT INTROSPECTABLE' : undef }],
['readable', 1, sub { $_[0] ? 'readable' : undef }],
['writable', 1, sub { $_[0] ? 'writable' : undef }],
);
return $self->format_flags ($element, \@available, \@wanted);
}
sub format_property_flags {
my ($self, $element, @wanted) = @_;
my @available = (
['deprecated', 0, sub { $_[0] ? "deprecated" : undef }],
['version', undef, sub { defined $_[0] ? "available since $_[0]" : undef }],
['readable', 1, sub { $_[0] ? 'readable' : undef }],
['writable', 0, sub { $_[0] ? 'writable' : undef }],
);
return $self->format_flags ($element, \@available, \@wanted);
}
sub format_signal_flags {
my ($self, $element, @wanted) = @_;
# name, default, formatter
my @available = (
['deprecated', 0, sub { $_[0] ? "deprecated" : undef }],
['version', undef, sub { defined $_[0] ? "available since $_[0]" : undef }],
['when', undef, sub { defined $_[0] ? "$_[0]" : undef }],
['no-recurse', 0, sub { $_[0] ? "no recurse" : undef }],
['detailed', 0, sub { $_[0] ? "detailed" : undef }],
);
return $self->format_flags ($element, \@available, \@wanted);
}
sub format_virtual_method_flags {
my ($self, $element, @wanted) = @_;
my $name = $self->find_attribute ($element, 'name');
my @available = (
['introspectable', 1, sub { !$_[0] ? 'NOT INTROSPECTABLE' : undef }],
['invoker', undef, sub { defined $_[0] && $_[0] ne $name ? "invoked by $_[0]" : undef }],
['version', undef, sub { defined $_[0] ? "available since $_[0]" : undef }],
);
return $self->format_flags ($element, \@available, \@wanted);
}
# ------------------------------------------------------------------------------
# --- GirGUI ----------------------------------------------------------------
# ------------------------------------------------------------------------------
package GirGUI;
use strict;
use warnings;
use File::Basename qw//;
sub TRUE () {1}
sub FALSE () {0}
sub FILE_MENU_COL_TEXT () { 0 }
sub FILE_MENU_COL_FILE () { 1 }
sub FILE_MENU_COL_DIR () { 2 }
sub FILE_MENU_COL_PATH () { 3 }
sub FILE_MENU_COL_IS_SENSITIVE () { 4 }
sub GIR_VIEW_COL_TEXT () { 0 }
sub GIR_VIEW_COL_PATH () { 1 }
sub GIR_VIEW_COL_IS_CATEGORY () { 2 }
sub GIR_VIEW_COL_IS_VISIBLE () { 3 }
sub new {
my ($class, $parser, @girs) = @_;
if (!Gtk3::CHECK_VERSION (3, 10, 0)) {
die "Need gtk+ >= 3.10 for the GUI\n";
}
my $self = bless {
parser => $parser,
}, $class;
my $window = Gtk3::Window->new;
$self->setup_file_menu (@girs);
$self->setup_gir_view;
$self->setup_search_entry;
$self->setup_path_bar;
$self->setup_result_view;
my $gir_view_window = Gtk3::ScrolledWindow->new;
$gir_view_window->add ($self->{gir_view});
my $result_view_window = Gtk3::ScrolledWindow->new;
$result_view_window->add ($self->{result_view});
my $side_box = Gtk3::Box->new ('vertical', 2);
$side_box->pack_start ($self->{file_menu}, FALSE, FALSE, 0);
$side_box->pack_start ($gir_view_window, TRUE, TRUE, 0);
$side_box->pack_start ($self->{search_entry}, FALSE, FALSE, 0);
$side_box->set (margin => 2);
my $result_box = Gtk3::Box->new ('vertical', 0);
$result_box->pack_start ($self->{path_bar}, FALSE, FALSE, 0);
$result_box->pack_start ($result_view_window, TRUE, TRUE, 0);
my $paned = Gtk3::Paned->new ('horizontal');
$paned->pack1 ($side_box, TRUE, TRUE);
$paned->pack2 ($result_box, TRUE, TRUE);
$paned->set_position (300);
$window->add ($paned);
$window->signal_connect (delete_event => sub { $self->quit; });
$window->set_default_geometry (900, 800);
my $accel_group = Gtk3::AccelGroup->new;
$accel_group->connect (Gtk3::Gdk::KEY_q (), qw/control-mask/, [], sub {
$self->quit;
return Gtk3::EVENT_STOP ();
});
$accel_group->connect (Gtk3::Gdk::KEY_k (), qw/control-mask/, [], sub {
$self->{search_entry}->grab_focus;
return Gtk3::EVENT_STOP ();
});
$window->add_accel_group ($accel_group);
$self->{window} = $window;
return $self;
}
sub filter_gir_view {
my ($self, $criterion) = @_;
my $view = $self->{gir_view};
my $model = $self->{gir_model};
my $filter_model = $self->{gir_filter_model};
if (!defined $criterion || $criterion eq '') {
# Make everything visible.
$model->foreach (sub {
my (undef, undef, $iter) = @_;
$model->set ($iter, GIR_VIEW_COL_IS_VISIBLE, TRUE);
return FALSE; # continue
});
# Scroll to selected element.
my $selection = $view->get_selection;
my ($selected_model, $selected_iter) = $selection->get_selected;
if (defined $selected_iter) {
my $selected_path = $selected_model->get_path ($selected_iter);
$view->scroll_to_cell ($selected_path, undef, FALSE, 0.5, 0.5);
}
} else {
my $re;
if ($criterion =~ m|\A/.+/\z|) {
$criterion =~ s|\A/(.+)/\z|$1|;
$re = qr/$criterion/;
} else {
$re = qr/\Q$criterion\E/i;
}
my $check_tree;
$check_tree = sub {
my ($iter) = @_;
my @children = map { $model->iter_nth_child ($iter, $_) }
0..$model->iter_n_children ($iter);
foreach my $child (@children) {
my ($text, $is_cat) = $model->get ($child,
GIR_VIEW_COL_TEXT,
GIR_VIEW_COL_IS_CATEGORY);
if ($is_cat || $text !~ $re) { # no match
$model->set ($child, GIR_VIEW_COL_IS_VISIBLE, FALSE);
$check_tree->($child); # descend
} else { # match
# Make the element and all its parents visible.
my $cur = $child;
do {
$model->set ($cur, GIR_VIEW_COL_IS_VISIBLE, TRUE);
} while (defined ($cur = $model->iter_parent ($cur)));
# Expand the matching element and all its parents.
$view->expand_to_path (
$filter_model->convert_child_path_to_path (
$model->get_path ($child)));
# No need to descend as we want all children of matching elements to
# be visible. (All elements are visible by default.)
}
}
};
$check_tree->(undef); # start with the virtual root node
}
}
sub display_results {
my ($self, $results) = @_;
my $b = $self->{result_buffer};
$b->delete ($b->get_start_iter (), $b->get_end_iter ());
my $iter = $b->get_start_iter ();
my $insert_part = sub {
my ($start, $end) = @_;
$b->insert ($iter, substr ($results, $start, $end - $start));
};
my ($prev_match_start, $prev_match_end) = (0, 0);
while ($results =~ m/\[([^\n\]]+)\]\(([^\n\)]+)\)/g) {
my ($link_text, $link_target) = ($1, $2);
my ($match_start, $match_end) = ($-[0], $+[0]);
if ($match_start != $prev_match_end) {
$insert_part->($prev_match_end, $match_start);
}
my $tag = $b->create_tag (undef, foreground => 'blue');
$tag->{__target} = $link_target;
$b->insert_with_tags ($iter, $link_text, $tag);
($prev_match_start, $prev_match_end) = ($match_start, $match_end);
}
my $end_offset = length ($results);
if ($prev_match_end != $end_offset) {
$insert_part->($prev_match_end, $end_offset);
}
}
sub run {
my ($self) = @_;
$self->{window}->show_all;
Gtk3::main ();
}
sub setup_file_menu {
my ($self, @girs) = @_;
my $file_model = Gtk3::TreeStore->new (qw/Glib::String
Glib::String
Glib::String
Glib::String
Glib::Boolean/);
my $file_menu = Gtk3::ComboBox->new_with_model ($file_model);
my $renderer = Gtk3::CellRendererText->new;
$file_menu->pack_start ($renderer, TRUE);
$file_menu->set_attributes ($renderer,
text => FILE_MENU_COL_TEXT,
sensitive => FILE_MENU_COL_IS_SENSITIVE);
$file_menu->set_id_column (FILE_MENU_COL_PATH);
my $prompt = '<Select GIR>';
$file_model->set ($file_model->append,
FILE_MENU_COL_TEXT, $prompt,
FILE_MENU_COL_IS_SENSITIVE, FALSE);
$file_menu->set_active (0);
my %dirs;
$dirs{$_->{dir}}++ for @girs;
my $n_dirs = scalar keys %dirs;
foreach my $gir (sort { $a->{file} cmp $b->{file} } @girs) {
my $text = File::Basename::fileparse ($gir->{file}, qr/\.gir$/);
if ($n_dirs > 1) {
my $dir = $gir->{dir};
$dir =~ s|/share/gir-1\.0$||;
$text .= ' (' . $dir . ')';
}
$file_model->set ($file_model->append,
FILE_MENU_COL_TEXT, $text,
FILE_MENU_COL_FILE, $gir->{file},
FILE_MENU_COL_DIR, $gir->{dir},
FILE_MENU_COL_PATH, $gir->{path},
FILE_MENU_COL_IS_SENSITIVE, TRUE);
}
$file_menu->signal_connect (changed => sub {
my (undef, $iter) = $file_menu->get_active_iter;
$self->{parser}->open ($file_model->get ($iter, FILE_MENU_COL_PATH));
$self->update_gir_view;
});
$self->{file_menu} = $file_menu;
}
sub setup_gir_view {
my ($self) = @_;
my $gir_model = Gtk3::TreeStore->new (qw/Glib::String
Glib::String
Glib::Boolean
Glib::Boolean/);
my $gir_filter_model = Gtk3::TreeModelFilter->new ($gir_model);
$gir_filter_model->set_visible_column (GIR_VIEW_COL_IS_VISIBLE);
my $gir_view = Gtk3::TreeView->new_with_model ($gir_filter_model);
$gir_view->insert_column_with_attributes (
GIR_VIEW_COL_TEXT, 'Element',
Gtk3::CellRendererText->new,
text => GIR_VIEW_COL_TEXT);
$gir_view->set_headers_visible (FALSE);
$gir_view->signal_connect (key_press_event => sub {
my (undef, $event) = @_;
if ($event->keyval == Gtk3::Gdk::KEY_Left () ||
$event->keyval == Gtk3::Gdk::KEY_Right ()) {
my $selection = $gir_view->get_selection;
my ($model, $iter) = $selection->get_selected;
if (defined $iter) {
my $path = $model->get_path ($iter);
if ($event->keyval == Gtk3::Gdk::KEY_Left ()) {
$gir_view->collapse_row ($path);
} else {
$gir_view->expand_row ($path, FALSE);
}
}
return Gtk3::EVENT_STOP ();
}
return Gtk3::EVENT_PROPAGATE ();
});
$gir_view->get_selection->signal_connect (changed => sub {
$self->go_to_selection
unless $self->{suppress_gir_view_selection_changes};
});
$self->{gir_model} = $gir_model;
$self->{gir_filter_model} = $gir_filter_model;
$self->{gir_view} = $gir_view;
}
sub setup_path_bar {
my ($self) = @_;
my $path_bar = PathBar->new (orientation => 'horizontal', spacing => 2);
$path_bar->set_update_func (sub {
my ($name, $path) = @_;
$self->update_results ($path);
});
$self->{path_bar} = $path_bar;
}
sub setup_search_entry {
my ($self) = @_;
my $wait_time_ms = 500;
my $search_entry = Gtk3::SearchEntry->new;
$search_entry->signal_connect (search_changed => sub {
# Use a timeout which is reset when the search text changes so that we do
# not filter the view too often.
if (defined $search_entry->{__timer_id}) {
Glib::Source->remove ($search_entry->{__timer_id});
}
$search_entry->{__timer_id} = Glib::Timeout->add ($wait_time_ms, sub {
$self->filter_gir_view ($search_entry->get_text);
$search_entry->{__timer_id} = undef;
return Glib::SOURCE_REMOVE ();
});
});
$self->{search_entry} = $search_entry;
}
sub setup_result_view {
my ($self) = @_;
my $result_buffer = Gtk3::TextBuffer->new (undef);
my $result_view = Gtk3::TextView->new_with_buffer ($result_buffer);
$result_view->set (editable => FALSE, margin => 2);
my $display = $result_view->get_display ();
$result_view->{__hand_cursor} = Gtk3::Gdk::Cursor->new_from_name ($display, 'pointer');
$result_view->{__regular_cursor} = Gtk3::Gdk::Cursor->new_from_name ($display, 'text');
my $hovering_over_link = sub {
my ($event) = @_;
my ($x, $y) = $result_view->window_to_buffer_coords ('widget', $event->x, $event->y);
my $iter = $result_view->get_iter_at_location ($x, $y);
if (!$iter) {
return;
}
my $tags = $iter->get_tags ();
foreach my $tag (@$tags) {
if (defined $tag->{__target}) {
return $tag;
}
}
return;
};
$result_view->{__hovering} = FALSE;
$result_view->signal_connect (motion_notify_event => sub {
my ($result_view, $event) = @_;
my $hovering = defined $hovering_over_link->($event);
if ($result_view->{__hovering} != $hovering) {
$result_view->{__hovering} = $hovering;
$result_view->get_window ('text')->set_cursor (
$hovering ? $result_view->{__hand_cursor} : $result_view->{__regular_cursor});
}
return Gtk3::EVENT_PROPAGATE ();
});
my $handle_button = sub {
my ($event, $cb) = @_;
if ($event->button == Gtk3::Gdk::BUTTON_PRIMARY ()) {
my $tag = $hovering_over_link->($event);
if (defined $tag) {
if (defined $cb) {
$cb->($tag);
}
return Gtk3::EVENT_STOP ();
}
}
return Gtk3::EVENT_PROPAGATE ();
};
$result_view->signal_connect (button_press_event => sub {
my ($result_view, $event) = @_;
return $handle_button->($event);
});
$result_view->signal_connect (button_release_event => sub {
my ($result_view, $event) = @_;
return $handle_button->($event, sub {
$self->go_to_path ($_[0]->{__target});
});
});
$self->{result_buffer} = $result_buffer;
$self->{result_view} = $result_view;
}
sub update_gir_view {
my ($self) = @_;
$self->{suppress_gir_view_selection_changes} = TRUE;
$self->{gir_model}->clear;
$self->{search_entry}->set_text ('');
$self->{path_bar}->clear;
my $inserter = sub {
my ($iter, $text, $path, $is_cat, $is_vis) = @_;
$self->{gir_model}->set ($iter,
GIR_VIEW_COL_TEXT, $text,
GIR_VIEW_COL_PATH, $path,
GIR_VIEW_COL_IS_CATEGORY, $is_cat,
GIR_VIEW_COL_IS_VISIBLE, $is_vis);
};
my $results = $self->{parser}->enumerate_namespace (TRUE);
foreach my $result (@$results) {
my $heading = $result->[0];
my $entries = $result->[1];
my $heading_iter = $self->{gir_model}->append;
$inserter->($heading_iter, $heading, undef, TRUE, TRUE);
next unless defined $entries;
foreach my $entry (@$entries) {
my $iter = $self->{gir_model}->append ($heading_iter);
$inserter->($iter, $entry->{name}, $entry->{path}, FALSE, TRUE);
next unless defined $entry->{sub_results};
foreach my $sub_result (@{$entry->{sub_results}}) {
my $sub_heading = $sub_result->[0];
my $sub_entries = $sub_result->[1];
my $sub_heading_iter = $self->{gir_model}->append ($iter);
$inserter->($sub_heading_iter, $sub_heading, undef, TRUE, TRUE);
next unless defined $sub_entries;
foreach my $sub_entry (@$sub_entries) {
my $sub_iter = $self->{gir_model}->append ($sub_heading_iter);
$inserter->($sub_iter, $sub_entry->{name}, $sub_entry->{path}, FALSE, TRUE);
}
}
}
}
$self->{suppress_gir_view_selection_changes} = FALSE;
$self->display_results ($self->{parser}->format_namespace);
}
sub go_to_selection {
my ($self) = @_;
my $selection = $self->{gir_view}->get_selection;
my ($model, $iter) = $selection->get_selected;
if (!defined $iter) {
$self->display_results ($self->{parser}->format_namespace);
} elsif (!$model->get ($iter, GIR_VIEW_COL_IS_CATEGORY)) {
my $path = $model->get ($iter, GIR_VIEW_COL_PATH);
$self->go_to_path ($path);
}
}
sub go_to_path {
my ($self, $path) = @_;
my $name = $self->{parser}->format_node_name_by_path ($path);
$self->{path_bar}->append ($name, $path); # indirectly calls update_results
}
sub update_results {
my ($self, $path) = @_;
$self->display_results ($self->{parser}->format_node_by_path ($path));
# Show and select the correponding tree entry.
$self->{gir_model}->foreach (sub {
my ($model, $tree_path, $iter) = @_;
my $this_path = $model->get ($iter, GIR_VIEW_COL_PATH);
if (defined $this_path && $this_path eq $path) {
$self->{gir_view}->expand_to_path ($tree_path);
$self->{gir_view}->scroll_to_cell ($tree_path, undef, FALSE, 0.0, 0.0);
$self->{suppress_gir_view_selection_changes} = TRUE;
{
$self->{gir_view}->get_selection ()->select_path ($tree_path);
}
$self->{suppress_gir_view_selection_changes} = FALSE;
return TRUE; # stop
}
return FALSE; # continue
});
}
sub quit {
my ($self) = @_;
Gtk3::main_quit ();
}
package PathBar;
# The BEGIN { eval } dance is to support not loading Gtk3 in text mode.
BEGIN { eval {use Glib::Object::Subclass qw/Gtk3::Box/;} }
sub TRUE () {1}
sub FALSE () {0}
sub INIT_INSTANCE {
my ($self) = @_;
my $back_button = Gtk3::Button->new;
$back_button->set_image (
Gtk3::Image->new_from_icon_name ('go-previous-symbolic', 'button'));
$back_button->set_sensitive (FALSE);
$back_button->signal_connect (clicked => sub { $self->{path_label}->go_back });
my $forward_button = Gtk3::Button->new;
$forward_button->set_image (
Gtk3::Image->new_from_icon_name ('go-next-symbolic', 'button'));
$forward_button->set_sensitive (FALSE);
$forward_button->signal_connect (clicked => sub { $self->{path_label}->go_forward });
my $nav_box = Gtk3::Box->new ('horizontal', 2);
$nav_box->pack_start ($back_button, FALSE, FALSE, 0);
$nav_box->pack_start ($forward_button, FALSE, FALSE, 0);
$nav_box->get_style_context->add_class ('linked');
my $path_label = PathLabel->new;
$path_label->set_update_func (sub {
my ($name, $path) = @_;
$self->update_buttons;
if (defined $self->{update_func}) {
$self->{update_func}->($name, $path);
}
});
$self->pack_start ($nav_box, FALSE, FALSE, 0);
$self->pack_start (Gtk3::VSeparator->new, FALSE, FALSE, 0);
$self->pack_start ($path_label, TRUE, TRUE, 0);
$self->set (margin => 2);
$self->{back_button} = $back_button;
$self->{forward_button} = $forward_button;
$self->{path_label} = $path_label;
return $self;
}
sub clear {
my ($self) = @_;
$self->{path_label}->clear ();
$self->update_buttons ();
}
sub append {
my ($self, $name, $path) = @_;
$self->{path_label}->append ($name, $path);
}
sub set_update_func {
my ($self, $func) = @_;
$self->{update_func} = $func;
}
sub update_buttons {
my ($self) = @_;
$self->{back_button}->set_sensitive ($self->{path_label}->can_go_back);
$self->{forward_button}->set_sensitive ($self->{path_label}->can_go_forward);
}
package PathLabel;
# The BEGIN { eval } dance is to support not loading Gtk3 in text mode.
BEGIN { eval {use Glib::Object::Subclass qw/Gtk3::Label/;} }
sub TRUE () {1}
sub FALSE () {0}
sub INIT_INSTANCE {
my ($self) = @_;
$self->signal_connect (activate_link => sub {
my (undef, $index) = @_;
$self->{current_child} = $index;
$self->update;
return Gtk3::EVENT_STOP ();
});
$self->set_track_visited_links (FALSE);
$self->clear ();
}
sub clear {
my ($self) = @_;
$self->{children} = [];
$self->{current_child} = undef;
$self->{natural_width} = 0;
$self->update ();
}
sub append {
my ($self, $name, $path) = @_;
my $cur = $self->{current_child};
# If the new entry is equal to the current entry, do nothing.
if (defined $cur) {
my $child = $self->{children}->[$cur];
if ($child->{name} eq $name && $child->{path} eq $path) {
return;
}
}
# If the current entry is not the last entry, remove all entries after the
# current one before appending the new entry.
if (defined $cur && $cur < $#{$self->{children}}) {
splice @{$self->{children}}, $cur+1;
}
push @{$self->{children}}, {name => $name, path => $path};
$self->{current_child} = $#{$self->{children}};
$self->update;
}
sub can_go_back {
my ($self) = @_;
return defined $self->{current_child} && $self->{current_child} > 0;
}
sub can_go_forward {
my ($self) = @_;
return defined $self->{current_child} && $self->{current_child} < $#{$self->{children}};
}
sub go_back {
my ($self) = @_;
return unless $self->{current_child} > 0;
$self->{current_child}--;
$self->update;
}
sub go_forward {
my ($self) = @_;
return unless $self->{current_child} < $#{$self->{children}};
$self->{current_child}++;
$self->update;
}
sub set_update_func {
my ($self, $func) = @_;
$self->{update_func} = $func;
}
sub update {
my ($self) = @_;
$self->set_markup ($self->_format_children);
if (defined $self->{current_child} && defined $self->{update_func}) {
my $child = $self->{children}->[$self->{current_child}];
$self->{update_func}->($child->{name}, $child->{path});
}
}
sub GET_PREFERRED_WIDTH {
#say 'GET_PREFERRED_WIDTH';
my ($self) = @_;
(undef, $self->{natural_width}) = $self->SUPER::GET_PREFERRED_WIDTH;
return (0, 0);
}
sub SIZE_ALLOCATE {
#say 'SIZE_ALLOCATE';
my ($self, $allocation) = @_;
if ($self->{natural_width} > $allocation->{width}) {
my @selected = ($self->{current_child});
while (1) {
my @candidates = @selected;
if ($selected[0] > 0) {
unshift @candidates, $selected[0]-1;
}
if ($selected[-1] < $#{$self->{children}}) {
push @candidates, $selected[-1]+1;
}
$self->set_markup ($self->_format_children (@candidates));
my ($ink_rect, $logical_rect) = $self->get_layout->get_extents;
my $text_width = $logical_rect->{width}/Pango::SCALE ();
if ($text_width > $allocation->{width}) {
last;
} else {
@selected = @candidates;
}
}
$self->set_markup ($self->_format_children (@selected));
}
$self->SUPER::SIZE_ALLOCATE ($allocation);
}
# Use undef as an indicator for left-out children.
sub _add_omission_markers {
my ($self, @indices) = @_;
if (!@indices) {
return @indices;
}
if ($indices[0] > 0) {
unshift @indices, undef;
}
if ($indices[-1] < $#{$self->{children}}) {
push @indices, undef;
}
return @indices;
}
sub _format_child {
my ($self, $index) = @_;
return '…' unless defined $index;
my $name = $self->{children}->[$index]->{name};
my $markup = $index == $self->{current_child}
? "<b>$name</b>"
: "<a href='$index'>$name</a>";
return $markup;
}
sub _format_children {
my ($self, @indices) = @_;
if (!@indices) {
@indices = 0..$#{$self->{children}};
}
@indices = $self->_add_omission_markers (@indices);
return join ' ▸ ', map { $self->_format_child ($_) } @indices;
}
__END__
=encoding utf8
=head1 NAME
perli11ndoc - view documentation of installed libraries bound using
Glib::Object::Introspection
=head1 ABSTRACT
perli11ndoc allows you to view Perl documentation for Glib libraries bound to
Perl using Glib::Object::Introspection. Glib::Object::Introspection uses the
gobject-introspection and libffi projects to dynamically create Perl bindings
for a wide variety of libraries. Examples include gtk+, webkit, libsoup and
many more. All libraries currently installed will be shown with Perl-specific
documentation and examples. Where Glib::Object::Introspection differs from the
C library, differences are pointed out and the Perl-specific interface is
defined.
=head1 DEPENDENCIES
perli11ndoc requires that XML::LibXML be installed to run. It also requires
that the corresponding C library headers be installed on the system to provide
documentation. For instance, on a Debian-based system you would need
libgtk-3-dev to see the Perl introspected documentation for Gtk3.
=head1 SEE ALSO
=over
=item perl-Glib: L<Glib>
=item gobject-introspection: L<http://live.gnome.org/GObjectIntrospection>
=item libffi: L<http://sourceware.org/libffi/>
=item Glib::Object::Introspection: L<https://metacpan.org/pod/Glib::Object::Introspection>
=back
=head1 AUTHORS
=over
=item Emmanuele Bassi <ebassi at linux intel com>
=item muppet <scott asofyet org>
=item Torsten Schönfeld <kaffeetisch at gmx de>
=back
=head1 LICENSE
This utility is free software; you can redistribute it and/or modify it under
the terms of the Lesser General Public License (LGPL). For more information,
see http://www.fsf.org/licenses/lgpl.txt
=cut
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| X11 | Folder | 0755 |
|
|
| GET | File | 15.87 KB | 0755 |
|
| HEAD | File | 15.87 KB | 0755 |
|
| POST | File | 15.87 KB | 0755 |
|
| X | File | 274 B | 0755 |
|
| Xephyr | File | 2.67 MB | 0755 |
|
| Xorg | File | 274 B | 0755 |
|
| Xwayland | File | 2.76 MB | 0755 |
|
| [ | File | 46.51 KB | 0755 |
|
| aa-enabled | File | 18.38 KB | 0755 |
|
| aa-exec | File | 18.38 KB | 0755 |
|
| aa-features-abi | File | 18.38 KB | 0755 |
|
| ab | File | 58.51 KB | 0755 |
|
| aconnect | File | 22.45 KB | 0755 |
|
| acpidbg | File | 1.58 KB | 0755 |
|
| add-apt-repository | File | 24.42 KB | 0755 |
|
| addr2line | File | 30.78 KB | 0755 |
|
| airscan-discover | File | 154.93 KB | 0755 |
|
| alsabat | File | 50.52 KB | 0755 |
|
| alsaloop | File | 91.41 KB | 0755 |
|
| alsamixer | File | 100.37 KB | 0755 |
|
| alsatplg | File | 86.45 KB | 0755 |
|
| alsaucm | File | 34.91 KB | 0755 |
|
| amidi | File | 30.46 KB | 0755 |
|
| amixer | File | 66.53 KB | 0755 |
|
| apg | File | 274 B | 0755 |
|
| apgbfm | File | 26.38 KB | 0755 |
|
| aplay | File | 86.5 KB | 0755 |
|
| aplaymidi | File | 26.46 KB | 0755 |
|
| aplaymidi2 | File | 22.47 KB | 0755 |
|
| apport-bug | File | 2.27 KB | 0755 |
|
| apport-cli | File | 13.56 KB | 0755 |
|
| apport-collect | File | 2.27 KB | 0755 |
|
| apport-unpack | File | 3.7 KB | 0755 |
|
| appres | File | 14.38 KB | 0755 |
|
| appstreamcli | File | 146.3 KB | 0755 |
|
| apropos | File | 47.36 KB | 0755 |
|
| apt | File | 18.46 KB | 0755 |
|
| apt-add-repository | File | 24.42 KB | 0755 |
|
| apt-cache | File | 90.54 KB | 0755 |
|
| apt-cdrom | File | 30.54 KB | 0755 |
|
| apt-config | File | 30.47 KB | 0755 |
|
| apt-extracttemplates | File | 26.53 KB | 0755 |
|
| apt-ftparchive | File | 246.55 KB | 0755 |
|
| apt-get | File | 58.54 KB | 0755 |
|
| apt-mark | File | 70.54 KB | 0755 |
|
| apt-sortpkgs | File | 42.47 KB | 0755 |
|
| aptdcon | File | 1.01 KB | 0755 |
|
| ar | File | 54.56 KB | 0755 |
|
| arch | File | 34.59 KB | 0755 |
|
| arecord | File | 86.5 KB | 0755 |
|
| arecordmidi | File | 34.47 KB | 0755 |
|
| arecordmidi2 | File | 26.48 KB | 0755 |
|
| arm2hpdl | File | 14.31 KB | 0755 |
|
| as | File | 795.52 KB | 0755 |
|
| aseqdump | File | 34.45 KB | 0755 |
|
| aseqnet | File | 22.51 KB | 0755 |
|
| aseqsend | File | 22.46 KB | 0755 |
|
| aspell | File | 162.55 KB | 0755 |
|
| aspell-import | File | 2 KB | 0755 |
|
| atobm | File | 14.3 KB | 0755 |
|
| awk | File | 190.84 KB | 0755 |
|
| axfer | File | 90.45 KB | 0755 |
|
| b2sum | File | 54.59 KB | 0755 |
|
| baobab | File | 302.52 KB | 0755 |
|
| base32 | File | 42.59 KB | 0755 |
|
| base64 | File | 42.59 KB | 0755 |
|
| basename | File | 34.59 KB | 0755 |
|
| basenc | File | 50.59 KB | 0755 |
|
| bash | File | 1.66 MB | 0755 |
|
| bashbug | File | 6.86 KB | 0755 |
|
| bc | File | 90.82 KB | 0755 |
|
| bdftopcf | File | 42.56 KB | 0755 |
|
| bdftruncate | File | 14.38 KB | 0755 |
|
| bitmap | File | 106.31 KB | 0755 |
|
| bluemoon | File | 38.45 KB | 0755 |
|
| bluetooth-sendto | File | 30.48 KB | 0755 |
|
| bluetoothctl | File | 574.27 KB | 0755 |
|
| bmtoa | File | 14.32 KB | 0755 |
|
| boltctl | File | 122.84 KB | 0755 |
|
| bpftrace | File | 4.57 MB | 0755 |
|
| bpftrace-aotrt | File | 3.2 MB | 0755 |
|
| brltty | File | 1.13 MB | 0755 |
|
| brltty-atb | File | 218.63 KB | 0755 |
|
| brltty-clip | File | 214.57 KB | 0755 |
|
| brltty-ctb | File | 330.8 KB | 0755 |
|
| brltty-hid | File | 274.84 KB | 0755 |
|
| brltty-ktb | File | 603.28 KB | 0755 |
|
| brltty-lscmds | File | 250.58 KB | 0755 |
|
| brltty-morse | File | 286.64 KB | 0755 |
|
| brltty-trtxt | File | 274.7 KB | 0755 |
|
| brltty-ttb | File | 318.88 KB | 0755 |
|
| brltty-tune | File | 302.7 KB | 0755 |
|
| broadwayd | File | 126.46 KB | 0755 |
|
| browse | File | 31.53 KB | 0755 |
|
| btattach | File | 30.45 KB | 0755 |
|
| btmgmt | File | 186.56 KB | 0755 |
|
| btmon | File | 1.16 MB | 0755 |
|
| btrfs | File | 1.49 MB | 0755 |
|
| btrfs-convert | File | 884.63 KB | 0755 |
|
| btrfs-find-root | File | 796.63 KB | 0755 |
|
| btrfs-image | File | 840.63 KB | 0755 |
|
| btrfs-map-logical | File | 796.63 KB | 0755 |
|
| btrfs-select-super | File | 792.63 KB | 0755 |
|
| btrfsck | File | 1.49 MB | 0755 |
|
| btrfstune | File | 832.63 KB | 0755 |
|
| bunzip2 | File | 38.45 KB | 0755 |
|
| busctl | File | 102.6 KB | 0755 |
|
| busybox | File | 2.34 MB | 0755 |
|
| bwrap | File | 82.54 KB | 0755 |
|
| bzcat | File | 38.45 KB | 0755 |
|
| bzcmp | File | 2.17 KB | 0755 |
|
| bzdiff | File | 2.17 KB | 0755 |
|
| bzegrep | File | 3.69 KB | 0755 |
|
| bzexe | File | 4.78 KB | 0755 |
|
| bzfgrep | File | 3.69 KB | 0755 |
|
| bzgrep | File | 3.69 KB | 0755 |
|
| bzip2 | File | 38.45 KB | 0755 |
|
| bzip2recover | File | 18.38 KB | 0755 |
|
| bzless | File | 1.27 KB | 0755 |
|
| bzmore | File | 1.27 KB | 0755 |
|
| c++filt | File | 26.34 KB | 0755 |
|
| c89 | File | 428 B | 0755 |
|
| c89-gcc | File | 428 B | 0755 |
|
| c99 | File | 454 B | 0755 |
|
| c99-gcc | File | 454 B | 0755 |
|
| c_rehash | File | 6.67 KB | 0755 |
|
| calibrate_ppa | File | 26.38 KB | 0755 |
|
| canberra-gtk-play | File | 18.3 KB | 0755 |
|
| cancel | File | 18.38 KB | 0755 |
|
| captoinfo | File | 94.49 KB | 0755 |
|
| cat | File | 42.54 KB | 0755 |
|
| catman | File | 30.84 KB | 0755 |
|
| cc | File | 1.13 MB | 0755 |
|
| cd-create-profile | File | 26.38 KB | 0755 |
|
| cd-fix-profile | File | 30.38 KB | 0755 |
|
| cd-iccdump | File | 14.38 KB | 0755 |
|
| cd-it8 | File | 26.38 KB | 0755 |
|
| certutil | File | 186.93 KB | 0755 |
|
| cgi-fcgi | File | 18.23 KB | 0755 |
|
| chacl | File | 18.3 KB | 0755 |
|
| chage | File | 83.23 KB | 2755 |
|
| chardet | File | 221 B | 0755 |
|
| chardetect | File | 221 B | 0755 |
|
| chattr | File | 14.38 KB | 0755 |
|
| chcon | File | 66.59 KB | 0755 |
|
| check-language-support | File | 2.71 KB | 0755 |
|
| checkgid | File | 14.38 KB | 0755 |
|
| chfn | File | 71.16 KB | 4755 |
|
| chgrp | File | 66.59 KB | 0755 |
|
| chktest | File | 14.38 KB | 0755 |
|
| chmod | File | 62.59 KB | 0755 |
|
| choom | File | 22.45 KB | 0755 |
|
| chown | File | 66.59 KB | 0755 |
|
| chrt | File | 30.45 KB | 0755 |
|
| chsh | File | 47.79 KB | 4755 |
|
| chvt | File | 14.45 KB | 0755 |
|
| cifsiostat | File | 26.55 KB | 0755 |
|
| ciptool | File | 38.56 KB | 0755 |
|
| ckbcomp | File | 147.14 KB | 0755 |
|
| cksum | File | 106.6 KB | 0755 |
|
| clear | File | 14.38 KB | 0755 |
|
| clear_console | File | 14.3 KB | 0755 |
|
| cloud-id | File | 972 B | 0755 |
|
| cloud-init | File | 976 B | 0755 |
|
| cloud-init-per | File | 2.06 KB | 0755 |
|
| cmp | File | 50.47 KB | 0755 |
|
| cmsutil | File | 46.47 KB | 0755 |
|
| codepage | File | 14.37 KB | 0755 |
|
| col | File | 22.46 KB | 0755 |
|
| colcrt | File | 14.46 KB | 0755 |
|
| colormgr | File | 58.45 KB | 0755 |
|
| colrm | File | 14.46 KB | 0755 |
|
| column | File | 38.46 KB | 0755 |
|
| comm | File | 38.59 KB | 0755 |
|
| corelist | File | 15.01 KB | 0755 |
|
| cp | File | 142.59 KB | 0755 |
|
| cpan | File | 8.16 KB | 0755 |
|
| cpan5.40-x86_64-linux-gnu | File | 8.18 KB | 0755 |
|
| cpio | File | 142.02 KB | 0755 |
|
| cpp | File | 1.13 MB | 0755 |
|
| cpp-14 | File | 1.13 MB | 0755 |
|
| cpupower | File | 1.58 KB | 0755 |
|
| crash | File | 13.91 MB | 0755 |
|
| crlutil | File | 98.48 KB | 0755 |
|
| crontab | File | 42.81 KB | 2755 |
|
| csplit | File | 54.59 KB | 0755 |
|
| ctstat | File | 22.73 KB | 0755 |
|
| cupstestppd | File | 74.45 KB | 0755 |
|
| curl | File | 310.48 KB | 0755 |
|
| cut | File | 42.59 KB | 0755 |
|
| cvt | File | 14.23 KB | 0755 |
|
| cvtsudoers | File | 377.3 KB | 0755 |
|
| dash | File | 146.84 KB | 0755 |
|
| date | File | 106.59 KB | 0755 |
|
| dbus-cleanup-sockets | File | 14.37 KB | 0755 |
|
| dbus-daemon | File | 242.72 KB | 0755 |
|
| dbus-monitor | File | 38.37 KB | 0755 |
|
| dbus-run-session | File | 14.37 KB | 0755 |
|
| dbus-send | File | 42.37 KB | 0755 |
|
| dbus-update-activation-environment | File | 18.37 KB | 0755 |
|
| dbus-uuidgen | File | 14.37 KB | 0755 |
|
| dbxtool | File | 22.45 KB | 0755 |
|
| dc | File | 50.24 KB | 0755 |
|
| dconf | File | 62.3 KB | 0755 |
|
| dd | File | 66.62 KB | 0755 |
|
| ddstdecode | File | 18.31 KB | 0755 |
|
| deallocvt | File | 14.45 KB | 0755 |
|
| deb-systemd-helper | File | 23.79 KB | 0755 |
|
| deb-systemd-invoke | File | 6.97 KB | 0755 |
|
| debconf | File | 2.8 KB | 0755 |
|
| debconf-apt-progress | File | 11.57 KB | 0755 |
|
| debconf-communicate | File | 623 B | 0755 |
|
| debconf-copydb | File | 1.68 KB | 0755 |
|
| debconf-escape | File | 668 B | 0755 |
|
| debconf-set-selections | File | 3.14 KB | 0755 |
|
| debconf-show | File | 1.78 KB | 0755 |
|
| debian-distro-info | File | 31.03 KB | 0755 |
|
| deja-dup | File | 402.59 KB | 0755 |
|
| delv | File | 61.4 KB | 0755 |
|
| derdump | File | 30.46 KB | 0755 |
|
| desktop-file-edit | File | 96.57 KB | 0755 |
|
| desktop-file-install | File | 96.57 KB | 0755 |
|
| desktop-file-validate | File | 80.85 KB | 0755 |
|
| df | File | 79.06 KB | 0755 |
|
| dh_bash-completion | File | 4.42 KB | 0755 |
|
| dh_installxmlcatalogs | File | 9.22 KB | 0755 |
|
| dh_perl_openssl | File | 1.53 KB | 0755 |
|
| diff | File | 154.63 KB | 0755 |
|
| diff3 | File | 66.59 KB | 0755 |
|
| dig | File | 154.95 KB | 0755 |
|
| dir | File | 155.02 KB | 0755 |
|
| dircolors | File | 46.59 KB | 0755 |
|
| dirmngr | File | 545.84 KB | 0755 |
|
| dirmngr-client | File | 55 KB | 0755 |
|
| dirname | File | 34.46 KB | 0755 |
|
| distro-info | File | 26.97 KB | 0755 |
|
| dmesg | File | 80.78 KB | 0755 |
|
| dnsdomainname | File | 22.3 KB | 0755 |
|
| do-release-upgrade | File | 9.05 KB | 0755 |
|
| domainname | File | 22.3 KB | 0755 |
|
| dpkg | File | 371.2 KB | 0755 |
|
| dpkg-deb | File | 162.66 KB | 0755 |
|
| dpkg-divert | File | 134.82 KB | 0755 |
|
| dpkg-maintscript-helper | File | 20.63 KB | 0755 |
|
| dpkg-query | File | 158.84 KB | 0755 |
|
| dpkg-realpath | File | 38.45 KB | 0755 |
|
| dpkg-split | File | 110.61 KB | 0755 |
|
| dpkg-statoverride | File | 54.63 KB | 0755 |
|
| dpkg-trigger | File | 46.61 KB | 0755 |
|
| driverless | File | 30.47 KB | 0755 |
|
| driverless-fax | File | 591 B | 0755 |
|
| du | File | 106.6 KB | 0755 |
|
| dumpkeys | File | 162.93 KB | 0755 |
|
| duplicity | File | 968 B | 0755 |
|
| dvipdf | File | 1007 B | 0755 |
|
| eatmydata | File | 2.74 KB | 0755 |
|
| ec2metadata | File | 8.38 KB | 0755 |
|
| echo | File | 34.46 KB | 0755 |
|
| ed | File | 70.63 KB | 0755 |
|
| editor | File | 328.65 KB | 0755 |
|
| editres | File | 72.77 KB | 0755 |
|
| efibootdump | File | 22.38 KB | 0755 |
|
| efibootmgr | File | 47.77 KB | 0755 |
|
| egrep | File | 41 B | 0755 |
|
| eject | File | 42.3 KB | 0755 |
|
| elfedit | File | 34.79 KB | 0755 |
|
| enc2xs | File | 40.97 KB | 0755 |
|
| encguess | File | 2.99 KB | 0755 |
|
| enchant-2 | File | 22.38 KB | 0755 |
|
| enchant-lsmod-2 | File | 14.38 KB | 0755 |
|
| env | File | 50.99 KB | 0755 |
|
| envsubst | File | 38.46 KB | 0755 |
|
| eog | File | 14.45 KB | 0755 |
|
| eps2eps | File | 639 B | 0755 |
|
| eqn | File | 204.52 KB | 0755 |
|
| esc-m | File | 14.16 KB | 0755 |
|
| eutp | File | 26.23 KB | 0755 |
|
| ex | File | 2.16 MB | 0755 |
|
| expand | File | 38.61 KB | 0755 |
|
| expiry | File | 22.63 KB | 2755 |
|
| expr | File | 46.49 KB | 0755 |
|
| factor | File | 70.59 KB | 0755 |
|
| fallocate | File | 26.45 KB | 0755 |
|
| false | File | 34.46 KB | 0755 |
|
| fc-cache | File | 22.45 KB | 0755 |
|
| fc-cat | File | 18.45 KB | 0755 |
|
| fc-conflist | File | 14.45 KB | 0755 |
|
| fc-list | File | 14.45 KB | 0755 |
|
| fc-match | File | 14.45 KB | 0755 |
|
| fc-pattern | File | 14.45 KB | 0755 |
|
| fc-query | File | 14.45 KB | 0755 |
|
| fc-scan | File | 14.45 KB | 0755 |
|
| fc-validate | File | 14.45 KB | 0755 |
|
| fcgistarter | File | 14.38 KB | 0755 |
|
| fgconsole | File | 14.45 KB | 0755 |
|
| fgrep | File | 41 B | 0755 |
|
| file | File | 30.6 KB | 0755 |
|
| file-roller | File | 562.61 KB | 0755 |
|
| file2brl | File | 26.3 KB | 0755 |
|
| find | File | 207.55 KB | 0755 |
|
| findmnt | File | 75.92 KB | 0755 |
|
| firefox | File | 2.32 KB | 0755 |
|
| flock | File | 26.56 KB | 0755 |
|
| fmt | File | 42.59 KB | 0755 |
|
| fold | File | 38.59 KB | 0755 |
|
| fonttosfnt | File | 46.48 KB | 0755 |
|
| foo2ddst | File | 34.96 KB | 0755 |
|
| foo2ddst-wrapper | File | 16.86 KB | 0755 |
|
| foo2hbpl2 | File | 30.98 KB | 0755 |
|
| foo2hbpl2-wrapper | File | 17.91 KB | 0755 |
|
| foo2hiperc | File | 42.99 KB | 0755 |
|
| foo2hiperc-wrapper | File | 18.11 KB | 0755 |
|
| foo2hp | File | 42.96 KB | 0755 |
|
| foo2hp2600-wrapper | File | 18.75 KB | 0755 |
|
| foo2lava | File | 42.99 KB | 0755 |
|
| foo2lava-wrapper | File | 19.61 KB | 0755 |
|
| foo2oak | File | 34.9 KB | 0755 |
|
| foo2oak-wrapper | File | 17.45 KB | 0755 |
|
| foo2qpdl | File | 43.02 KB | 0755 |
|
| foo2qpdl-wrapper | File | 19.06 KB | 0755 |
|
| foo2slx | File | 30.99 KB | 0755 |
|
| foo2slx-wrapper | File | 17.19 KB | 0755 |
|
| foo2xqx | File | 34.99 KB | 0755 |
|
| foo2xqx-wrapper | File | 17.16 KB | 0755 |
|
| foo2zjs | File | 43 KB | 0755 |
|
| foo2zjs-icc2ps | File | 14.39 KB | 0755 |
|
| foo2zjs-pstops | File | 2.93 KB | 0755 |
|
| foo2zjs-wrapper | File | 25.34 KB | 0755 |
|
| foomatic-rip | File | 115.48 KB | 0755 |
|
| fprintd-delete | File | 94.45 KB | 0755 |
|
| fprintd-enroll | File | 94.94 KB | 0755 |
|
| fprintd-list | File | 90.45 KB | 0755 |
|
| fprintd-verify | File | 90.45 KB | 0755 |
|
| free | File | 26.45 KB | 0755 |
|
| ftp | File | 182.9 KB | 0755 |
|
| funzip | File | 26.45 KB | 0755 |
|
| fuser | File | 43.42 KB | 0755 |
|
| fusermount | File | 38.45 KB | 4755 |
|
| fusermount3 | File | 38.45 KB | 4755 |
|
| fwupdmgr | File | 122.38 KB | 0755 |
|
| fwupdtool | File | 130.38 KB | 0755 |
|
| gamemoded | File | 166.73 KB | 0755 |
|
| gamma4scanimage | File | 14.38 KB | 0755 |
|
| gapplication | File | 22.46 KB | 0755 |
|
| gatttool | File | 126.56 KB | 0755 |
|
| gcalccmd | File | 286.46 KB | 0755 |
|
| gcc | File | 1.13 MB | 0755 |
|
| gcc-14 | File | 1.13 MB | 0755 |
|
| gcc-ar | File | 30.66 KB | 0755 |
|
| gcc-ar-14 | File | 30.66 KB | 0755 |
|
| gcc-nm | File | 30.66 KB | 0755 |
|
| gcc-nm-14 | File | 30.66 KB | 0755 |
|
| gcc-ranlib | File | 30.66 KB | 0755 |
|
| gcc-ranlib-14 | File | 30.66 KB | 0755 |
|
| gcore | File | 3.62 KB | 0755 |
|
| gcov | File | 468.19 KB | 0755 |
|
| gcov-14 | File | 468.19 KB | 0755 |
|
| gcov-dump | File | 380.14 KB | 0755 |
|
| gcov-dump-14 | File | 380.14 KB | 0755 |
|
| gcov-tool | File | 408.23 KB | 0755 |
|
| gcov-tool-14 | File | 408.23 KB | 0755 |
|
| gcr-viewer | File | 14.37 KB | 0755 |
|
| gcr-viewer-gtk4 | File | 34.45 KB | 0755 |
|
| gdb | File | 11.23 MB | 0755 |
|
| gdb-add-index | File | 4.55 KB | 0755 |
|
| gdbtui | File | 126 B | 0755 |
|
| gdbus | File | 54.46 KB | 0755 |
|
| gdctl | File | 51.15 KB | 0755 |
|
| gdk-pixbuf-csource | File | 14.4 KB | 0755 |
|
| gdk-pixbuf-pixdata | File | 14.38 KB | 0755 |
|
| gdk-pixbuf-thumbnailer | File | 18.47 KB | 0755 |
|
| gdm-config | File | 50.75 KB | 0755 |
|
| gdmflexiserver | File | 22.94 KB | 0755 |
|
| gencat | File | 34.52 KB | 0755 |
|
| geqn | File | 204.52 KB | 0755 |
|
| getconf | File | 26.44 KB | 0755 |
|
| getent | File | 38.8 KB | 0755 |
|
| getfacl | File | 30.38 KB | 0755 |
|
| getkeycodes | File | 14.45 KB | 0755 |
|
| getopt | File | 22.45 KB | 0755 |
|
| gettext | File | 38.46 KB | 0755 |
|
| gettext.sh | File | 5.05 KB | 0755 |
|
| ghostscript | File | 14.23 KB | 0755 |
|
| ginstall-info | File | 47.31 KB | 0755 |
|
| gio | File | 110.48 KB | 0755 |
|
| gio-querymodules | File | 18.38 KB | 0755 |
|
| gipddecode | File | 18.31 KB | 0755 |
|
| gjs | File | 22.71 KB | 0755 |
|
| gjs-console | File | 22.71 KB | 0755 |
|
| glib-compile-schemas | File | 54.46 KB | 0755 |
|
| gmake | File | 344.14 KB | 0755 |
|
| gnome-calculator | File | 822.91 KB | 0755 |
|
| gnome-calendar | File | 884.62 KB | 0755 |
|
| gnome-characters | File | 253 B | 0755 |
|
| gnome-clocks | File | 458.65 KB | 0755 |
|
| gnome-control-center | File | 4.28 MB | 0755 |
|
| gnome-disk-image-mounter | File | 22.46 KB | 0755 |
|
| gnome-disks | File | 687.57 KB | 0755 |
|
| gnome-extensions | File | 78.53 KB | 0755 |
|
| gnome-font-viewer | File | 82.73 KB | 0755 |
|
| gnome-help | File | 58.3 KB | 0755 |
|
| gnome-keyring | File | 22.62 KB | 0755 |
|
| gnome-keyring-3 | File | 22.62 KB | 0755 |
|
| gnome-keyring-daemon | File | 1.07 MB | 0755 |
|
| gnome-language-selector | File | 1.41 KB | 0755 |
|
| gnome-logs | File | 170.88 KB | 0755 |
|
| gnome-power-statistics | File | 66.43 KB | 0755 |
|
| gnome-session | File | 958 B | 0755 |
|
| gnome-session-inhibit | File | 22.38 KB | 0755 |
|
| gnome-session-properties | File | 66.41 KB | 0755 |
|
| gnome-session-quit | File | 14.68 KB | 0755 |
|
| gnome-shell | File | 30.8 KB | 0755 |
|
| gnome-shell-extension-tool | File | 1.67 KB | 0755 |
|
| gnome-shell-test-tool | File | 11.12 KB | 0755 |
|
| gnome-system-monitor | File | 427.49 KB | 0755 |
|
| gnome-terminal | File | 91.78 KB | 0755 |
|
| gnome-terminal.wrapper | File | 6.06 KB | 0755 |
|
| gnome-text-editor | File | 654.7 KB | 0755 |
|
| gnome-thumbnail-font | File | 26.47 KB | 0755 |
|
| gnome-www-browser | File | 2.32 KB | 0755 |
|
| gp-archive | File | 34.59 KB | 0755 |
|
| gp-collect-app | File | 54.42 KB | 0755 |
|
| gp-display-html | File | 630.35 KB | 0755 |
|
| gp-display-src | File | 30.41 KB | 0755 |
|
| gp-display-text | File | 166.42 KB | 0755 |
|
| gpasswd | File | 78.54 KB | 4755 |
|
| gpg | File | 1.3 MB | 0755 |
|
| gpg-agent | File | 397.59 KB | 0755 |
|
| gpg-connect-agent | File | 87.38 KB | 0755 |
|
| gpg-wks-client | File | 147.44 KB | 0755 |
|
| gpgconf | File | 119.44 KB | 0755 |
|
| gpgparsemail | File | 34.38 KB | 0755 |
|
| gpgsm | File | 577.44 KB | 0755 |
|
| gpgsplit | File | 26.62 KB | 0755 |
|
| gpgtar | File | 75.91 KB | 0755 |
|
| gpgv | File | 355.22 KB | 0755 |
|
| gpic | File | 228.12 KB | 0755 |
|
| gprof | File | 99.86 KB | 0755 |
|
| gprofng | File | 22.41 KB | 0755 |
|
| gprofng-archive | File | 34.59 KB | 0755 |
|
| gprofng-collect-app | File | 54.42 KB | 0755 |
|
| gprofng-display-html | File | 630.35 KB | 0755 |
|
| gprofng-display-src | File | 30.41 KB | 0755 |
|
| gprofng-display-text | File | 166.42 KB | 0755 |
|
| gpu-manager | File | 66.9 KB | 0755 |
|
| grdctl | File | 74.46 KB | 0755 |
|
| grep | File | 182.45 KB | 0755 |
|
| gresource | File | 26.38 KB | 0755 |
|
| groff | File | 102.58 KB | 0755 |
|
| grog | File | 18.75 KB | 0755 |
|
| grops | File | 202.62 KB | 0755 |
|
| grotty | File | 130.58 KB | 0755 |
|
| groups | File | 38.59 KB | 0755 |
|
| growpart | File | 29.19 KB | 0755 |
|
| grub-editenv | File | 401.24 KB | 0755 |
|
| grub-file | File | 749.96 KB | 0755 |
|
| grub-fstest | File | 871.4 KB | 0755 |
|
| grub-glue-efi | File | 102.96 KB | 0755 |
|
| grub-kbdcomp | File | 1.64 KB | 0755 |
|
| grub-menulst2cfg | File | 87.27 KB | 0755 |
|
| grub-mkfont | File | 131.52 KB | 0755 |
|
| grub-mkimage | File | 381.34 KB | 0755 |
|
| grub-mklayout | File | 107.3 KB | 0755 |
|
| grub-mknetdir | File | 437.85 KB | 0755 |
|
| grub-mkpasswd-pbkdf2 | File | 115.4 KB | 0755 |
|
| grub-mkrelpath | File | 259.87 KB | 0755 |
|
| grub-mkrescue | File | 1.01 MB | 0755 |
|
| grub-mkstandalone | File | 522.24 KB | 0755 |
|
| grub-mount | File | 694.29 KB | 0755 |
|
| grub-render-label | File | 766.3 KB | 0755 |
|
| grub-script-check | File | 126.84 KB | 0755 |
|
| grub-syslinux2cfg | File | 706.79 KB | 0755 |
|
| gs | File | 14.23 KB | 0755 |
|
| gsbj | File | 350 B | 0755 |
|
| gsdj | File | 352 B | 0755 |
|
| gsdj500 | File | 352 B | 0755 |
|
| gsettings | File | 30.38 KB | 0755 |
|
| gslj | File | 353 B | 0755 |
|
| gslp | File | 350 B | 0755 |
|
| gsnd | File | 277 B | 0755 |
|
| gst-device-monitor-1.0 | File | 22.4 KB | 0755 |
|
| gst-discoverer-1.0 | File | 38.48 KB | 0755 |
|
| gst-inspect-1.0 | File | 66.55 KB | 0755 |
|
| gst-launch-1.0 | File | 38.48 KB | 0755 |
|
| gst-play-1.0 | File | 54.48 KB | 0755 |
|
| gst-stats-1.0 | File | 34.46 KB | 0755 |
|
| gst-tester-1.0 | File | 18.38 KB | 0755 |
|
| gst-typefind-1.0 | File | 18.46 KB | 0755 |
|
| gstack | File | 2.98 KB | 0755 |
|
| gstreamer-codec-install | File | 22.23 KB | 0755 |
|
| gtbl | File | 154.55 KB | 0755 |
|
| gted | File | 654.7 KB | 0755 |
|
| gtf | File | 18.38 KB | 0755 |
|
| gtk-builder-tool | File | 34.8 KB | 0755 |
|
| gtk-encode-symbolic-svg | File | 22.48 KB | 0755 |
|
| gtk-launch | File | 18.53 KB | 0755 |
|
| gtk-query-settings | File | 14.38 KB | 0755 |
|
| gtk-update-icon-cache | File | 42.65 KB | 0755 |
|
| gtk4-broadwayd | File | 150.46 KB | 0755 |
|
| gtk4-builder-tool | File | 82.79 KB | 0755 |
|
| gtk4-encode-symbolic-svg | File | 11.71 MB | 0755 |
|
| gtk4-image-tool | File | 38.55 KB | 0755 |
|
| gtk4-launch | File | 18.53 KB | 0755 |
|
| gtk4-path-tool | File | 50.45 KB | 0755 |
|
| gtk4-query-settings | File | 14.38 KB | 0755 |
|
| gtk4-rendernode-tool | File | 46.45 KB | 0755 |
|
| gtk4-update-icon-cache | File | 42.65 KB | 0755 |
|
| gunzip | File | 2.28 KB | 0755 |
|
| gzexe | File | 6.29 KB | 0755 |
|
| gzip | File | 123.32 KB | 0755 |
|
| h2ph | File | 28.15 KB | 0755 |
|
| h2xs | File | 59.51 KB | 0755 |
|
| hardlink | File | 46.56 KB | 0755 |
|
| hbpldecode | File | 30.39 KB | 0755 |
|
| hciattach | File | 60.53 KB | 0755 |
|
| hciconfig | File | 158.56 KB | 0755 |
|
| hcitool | File | 166.16 KB | 0755 |
|
| hd | File | 54.47 KB | 0755 |
|
| head | File | 46.59 KB | 0755 |
|
| heif-thumbnailer | File | 34.4 KB | 0755 |
|
| helpztags | File | 2.46 KB | 0755 |
|
| hex2hcd | File | 18.45 KB | 0755 |
|
| hexdump | File | 54.47 KB | 0755 |
|
| hipercdecode | File | 18.31 KB | 0755 |
|
| host | File | 118.97 KB | 0755 |
|
| hostid | File | 34.59 KB | 0755 |
|
| hostname | File | 22.3 KB | 0755 |
|
| hostnamectl | File | 34.46 KB | 0755 |
|
| hp-align | File | 9.14 KB | 0755 |
|
| hp-check | File | 39.2 KB | 0755 |
|
| hp-clean | File | 7.05 KB | 0755 |
|
| hp-colorcal | File | 9.08 KB | 0755 |
|
| hp-config_usb_printer | File | 6.98 KB | 0755 |
|
| hp-doctor | File | 12.69 KB | 0755 |
|
| hp-firmware | File | 6.47 KB | 0755 |
|
| hp-info | File | 6.26 KB | 0755 |
|
| hp-levels | File | 6.85 KB | 0755 |
|
| hp-logcapture | File | 12.15 KB | 0755 |
|
| hp-makeuri | File | 5.6 KB | 0755 |
|
| hp-pkservice | File | 3.13 KB | 0755 |
|
| hp-plugin | File | 13.62 KB | 0755 |
|
| hp-plugin-ubuntu | File | 719 B | 0755 |
|
| hp-probe | File | 7.98 KB | 0755 |
|
| hp-query | File | 4.94 KB | 0755 |
|
| hp-scan | File | 88.25 KB | 0755 |
|
| hp-setup | File | 37.26 KB | 0755 |
|
| hp-testpage | File | 5.98 KB | 0755 |
|
| hp-timedate | File | 3.31 KB | 0755 |
|
| htcacheclean | File | 38.39 KB | 0755 |
|
| htdbm | File | 26.38 KB | 0755 |
|
| htdigest | File | 14.38 KB | 0755 |
|
| htpasswd | File | 30.38 KB | 0755 |
|
| httpserv | File | 38.4 KB | 0755 |
|
| hwe-support-status | File | 11.24 KB | 0755 |
|
| i386 | File | 26.73 KB | 0755 |
|
| ibd2sdi | File | 278.98 KB | 0755 |
|
| ibus | File | 86.45 KB | 0755 |
|
| ibus-daemon | File | 230.5 KB | 0755 |
|
| ibus-setup | File | 1.15 KB | 0755 |
|
| ibus-table-createdb | File | 1.11 KB | 0755 |
|
| iceauth | File | 42.5 KB | 0755 |
|
| ico | File | 50.44 KB | 0755 |
|
| iconv | File | 66.59 KB | 0755 |
|
| id | File | 42.59 KB | 0755 |
|
| iecset | File | 26.45 KB | 0755 |
|
| ijs_pxljr | File | 34.53 KB | 0755 |
|
| im-config | File | 11.03 KB | 0755 |
|
| im-launch | File | 2.07 KB | 0755 |
|
| inetutils-telnet | File | 221.9 KB | 0755 |
|
| info | File | 245.8 KB | 0755 |
|
| infobrowser | File | 245.8 KB | 0755 |
|
| infocmp | File | 70.45 KB | 0755 |
|
| infotocap | File | 94.49 KB | 0755 |
|
| innochecksum | File | 179.63 KB | 0755 |
|
| inputattach | File | 33.75 KB | 0755 |
|
| install | File | 142.59 KB | 0755 |
|
| install-info | File | 47.31 KB | 0755 |
|
| instmodsh | File | 4.27 KB | 0755 |
|
| intel-virtual-output | File | 66.31 KB | 0755 |
|
| ionice | File | 18.45 KB | 0755 |
|
| iostat | File | 58.55 KB | 0755 |
|
| ip | File | 904.97 KB | 0755 |
|
| ipcmk | File | 22.52 KB | 0755 |
|
| ipcrm | File | 18.45 KB | 0755 |
|
| ipcs | File | 38.45 KB | 0755 |
|
| ipod-read-sysinfo-extended | File | 22.38 KB | 0755 |
|
| ipod-time-sync | File | 14.38 KB | 0755 |
|
| ippfind | File | 46.48 KB | 0755 |
|
| ipptool | File | 106.38 KB | 0755 |
|
| iptables-xml | File | 105.02 KB | 0755 |
|
| ischroot | File | 14.55 KB | 0755 |
|
| isdv4-serial-debugger | File | 18.31 KB | 0755 |
|
| isdv4-serial-inputattach | File | 18.31 KB | 0755 |
|
| ispell-wrapper | File | 7.05 KB | 0755 |
|
| join | File | 54.63 KB | 0755 |
|
| journalctl | File | 91.19 KB | 0755 |
|
| jpgicc | File | 38.47 KB | 0755 |
|
| jq | File | 34.23 KB | 0755 |
|
| json-patch-jsondiff | File | 1004 B | 0755 |
|
| json_pp | File | 4.9 KB | 0755 |
|
| jsondiff | File | 1004 B | 0755 |
|
| jsonpatch | File | 3.77 KB | 0755 |
|
| jsonpointer | File | 1.79 KB | 0755 |
|
| jsonschema | File | 213 B | 0755 |
|
| kbd_mode | File | 14.74 KB | 0755 |
|
| kbdinfo | File | 18.45 KB | 0755 |
|
| kbxutil | File | 70.91 KB | 0755 |
|
| kernel-install | File | 54.71 KB | 0755 |
|
| kill | File | 22.45 KB | 0755 |
|
| killall | File | 31.42 KB | 0755 |
|
| kmod | File | 194.31 KB | 0755 |
|
| kmodsign | File | 18.45 KB | 0755 |
|
| l2ping | File | 18.38 KB | 0755 |
|
| l2test | File | 34.72 KB | 0755 |
|
| laptop-detect | File | 3.74 KB | 0755 |
|
| lavadecode | File | 22.39 KB | 0755 |
|
| ld | File | 1.78 MB | 0755 |
|
| ld.bfd | File | 1.78 MB | 0755 |
|
| ld.so | File | 245.65 KB | 0755 |
|
| ldapadd | File | 66.53 KB | 0755 |
|
| ldapcompare | File | 66.53 KB | 0755 |
|
| ldapdelete | File | 66.55 KB | 0755 |
|
| ldapexop | File | 66.53 KB | 0755 |
|
| ldapmodify | File | 66.53 KB | 0755 |
|
| ldapmodrdn | File | 62.53 KB | 0755 |
|
| ldappasswd | File | 66.53 KB | 0755 |
|
| ldapsearch | File | 102.55 KB | 0755 |
|
| ldapurl | File | 14.38 KB | 0755 |
|
| ldapwhoami | File | 62.53 KB | 0755 |
|
| ldd | File | 5.26 KB | 0755 |
|
| less | File | 216.21 KB | 0755 |
|
| lessecho | File | 14.38 KB | 0755 |
|
| lessfile | File | 8.83 KB | 0755 |
|
| lesskey | File | 23.79 KB | 0755 |
|
| lesspipe | File | 8.83 KB | 0755 |
|
| lexgrog | File | 111.59 KB | 0755 |
|
| libnetcfg | File | 15.41 KB | 0755 |
|
| libreoffice | File | 6.5 KB | 0755 |
|
| link | File | 34.59 KB | 0755 |
|
| linkicc | File | 26.45 KB | 0755 |
|
| linux-boot-prober | File | 1.54 KB | 0755 |
|
| linux-check-removal | File | 4.56 KB | 0755 |
|
| linux-update-symlinks | File | 6.35 KB | 0755 |
|
| linux-version | File | 2.63 KB | 0755 |
|
| linux32 | File | 26.73 KB | 0755 |
|
| linux64 | File | 26.73 KB | 0755 |
|
| listres | File | 14.8 KB | 0755 |
|
| ln | File | 62.59 KB | 0755 |
|
| lnstat | File | 22.73 KB | 0755 |
|
| loadkeys | File | 206.98 KB | 0755 |
|
| loadunimap | File | 34.54 KB | 0755 |
|
| localc | File | 59 B | 0755 |
|
| locale | File | 49.71 KB | 0755 |
|
| locale-check | File | 14.23 KB | 0755 |
|
| localectl | File | 30.45 KB | 0755 |
|
| localedef | File | 323.2 KB | 0755 |
|
| localsearch | File | 133.8 KB | 0755 |
|
| lodraw | File | 59 B | 0755 |
|
| loffice | File | 53 B | 0755 |
|
| lofromtemplate | File | 64 B | 0755 |
|
| logger | File | 39.05 KB | 0755 |
|
| login | File | 42.45 KB | 0755 |
|
| loginctl | File | 66.59 KB | 0755 |
|
| logname | File | 34.59 KB | 0755 |
|
| logresolve | File | 14.39 KB | 0755 |
|
| loimpress | File | 62 B | 0755 |
|
| lomath | File | 59 B | 0755 |
|
| look | File | 18.46 KB | 0755 |
|
| loweb | File | 58 B | 0755 |
|
| lowntfs-3g | File | 131.05 KB | 0755 |
|
| lowriter | File | 61 B | 0755 |
|
| lp | File | 26.38 KB | 0755 |
|
| lpoptions | File | 22.45 KB | 0755 |
|
| lpq | File | 22.45 KB | 0755 |
|
| lpr | File | 22.38 KB | 0755 |
|
| lprm | File | 14.38 KB | 0755 |
|
| lpstat | File | 38.7 KB | 0755 |
|
| ls | File | 155.02 KB | 0755 |
|
| lsattr | File | 14.38 KB | 0755 |
|
| lsb_release | File | 2.77 KB | 0755 |
|
| lsblk | File | 178.46 KB | 0755 |
|
| lscpu | File | 118.46 KB | 0755 |
|
| lshw | File | 784.49 KB | 0755 |
|
| lsinitramfs | File | 735 B | 0755 |
|
| lsipc | File | 54.45 KB | 0755 |
|
| lslocks | File | 42.88 KB | 0755 |
|
| lslogins | File | 50.45 KB | 0755 |
|
| lsmem | File | 38.45 KB | 0755 |
|
| lsmod | File | 194.31 KB | 0755 |
|
| lsns | File | 42.46 KB | 0755 |
|
| lsof | File | 203.8 KB | 0755 |
|
| lspci | File | 144.19 KB | 0755 |
|
| lspgpot | File | 1.06 KB | 0755 |
|
| lspower | File | 1.2 KB | 0755 |
|
| lsusb | File | 234.48 KB | 0755 |
|
| lto-dump | File | 31.61 MB | 0755 |
|
| lto-dump-14 | File | 31.61 MB | 0755 |
|
| luit | File | 100.88 KB | 0755 |
|
| lwp-download | File | 10.05 KB | 0755 |
|
| lwp-dump | File | 2.65 KB | 0755 |
|
| lwp-mirror | File | 2.36 KB | 0755 |
|
| lwp-request | File | 15.87 KB | 0755 |
|
| lzcat | File | 103.02 KB | 0755 |
|
| lzcmp | File | 7.41 KB | 0755 |
|
| lzdiff | File | 7.41 KB | 0755 |
|
| lzegrep | File | 10.17 KB | 0755 |
|
| lzfgrep | File | 10.17 KB | 0755 |
|
| lzgrep | File | 10.17 KB | 0755 |
|
| lzless | File | 2.33 KB | 0755 |
|
| lzma | File | 103.02 KB | 0755 |
|
| lzmainfo | File | 14.45 KB | 0755 |
|
| lzmore | File | 2.18 KB | 0755 |
|
| m17n-db | File | 3.65 KB | 0755 |
|
| m2300w | File | 28.83 KB | 0755 |
|
| m2300w-wrapper | File | 14.24 KB | 0755 |
|
| m2400w | File | 32.83 KB | 0755 |
|
| make | File | 344.14 KB | 0755 |
|
| make-first-existing-target | File | 4.79 KB | 0755 |
|
| makedumpfile | File | 415.41 KB | 0755 |
|
| makedumpfile-R.pl | File | 4.83 KB | 0755 |
|
| mako-render | File | 972 B | 0755 |
|
| man | File | 129.48 KB | 0755 |
|
| man-recode | File | 35.48 KB | 0755 |
|
| mandb | File | 155.74 KB | 0755 |
|
| manpath | File | 26.86 KB | 0755 |
|
| mapscrn | File | 34.54 KB | 0755 |
|
| markdown-it | File | 220 B | 0755 |
|
| mawk | File | 190.84 KB | 0755 |
|
| mbim-network | File | 11.08 KB | 0755 |
|
| mbimcli | File | 216.82 KB | 0755 |
|
| mcookie | File | 26.52 KB | 0755 |
|
| md5sum | File | 42.49 KB | 0755 |
|
| md5sum.textutils | File | 42.49 KB | 0755 |
|
| mdig | File | 54.48 KB | 0755 |
|
| memhog | File | 14.42 KB | 0755 |
|
| mesa-overlay-control.py | File | 5.59 KB | 0755 |
|
| migrate-pubring-from-classic-gpg | File | 3.02 KB | 0755 |
|
| migratepages | File | 14.38 KB | 0755 |
|
| migspeed | File | 14.3 KB | 0755 |
|
| mimeopen | File | 9.41 KB | 0755 |
|
| mimetype | File | 12.76 KB | 0755 |
|
| min12xxw | File | 31.45 KB | 0755 |
|
| mk_modmap | File | 15.78 KB | 0755 |
|
| mkdir | File | 70.59 KB | 0755 |
|
| mkfifo | File | 42.59 KB | 0755 |
|
| mkfontdir | File | 65 B | 0755 |
|
| mkfontscale | File | 42.9 KB | 0755 |
|
| mknod | File | 46.59 KB | 0755 |
|
| mksquashfs | File | 286.95 KB | 0755 |
|
| mktemp | File | 38.59 KB | 0755 |
|
| mmcli | File | 278.02 KB | 0755 |
|
| modutil | File | 94.49 KB | 0755 |
|
| mokutil | File | 59.48 KB | 0755 |
|
| monitor-sensor | File | 18.38 KB | 0755 |
|
| more | File | 46.46 KB | 0755 |
|
| mount | File | 50.45 KB | 4755 |
|
| mountpoint | File | 18.45 KB | 0755 |
|
| mousetweaks | File | 74.3 KB | 0755 |
|
| mpris-proxy | File | 94.67 KB | 0755 |
|
| mpstat | File | 50.55 KB | 0755 |
|
| mscompress | File | 14.3 KB | 0755 |
|
| msexpand | File | 14.3 KB | 0755 |
|
| mt | File | 75.09 KB | 0755 |
|
| mt-gnu | File | 75.09 KB | 0755 |
|
| mtr | File | 80.33 KB | 0755 |
|
| mtr-packet | File | 34.38 KB | 0755 |
|
| mv | File | 134.6 KB | 0755 |
|
| my_print_defaults | File | 179.59 KB | 0755 |
|
| myisam_ftdump | File | 6.36 MB | 0755 |
|
| myisamchk | File | 6.57 MB | 0755 |
|
| myisamlog | File | 6.39 MB | 0755 |
|
| myisampack | File | 6.42 MB | 0755 |
|
| mysql | File | 6.63 MB | 0755 |
|
| mysql_config_editor | File | 165.27 KB | 0755 |
|
| mysql_migrate_keyring | File | 6.53 MB | 0755 |
|
| mysql_secure_installation | File | 6.45 MB | 0755 |
|
| mysql_tzinfo_to_sql | File | 79.15 KB | 0755 |
|
| mysqladmin | File | 6.47 MB | 0755 |
|
| mysqlanalyze | File | 6.48 MB | 0755 |
|
| mysqlbinlog | File | 6.86 MB | 0755 |
|
| mysqlcheck | File | 6.48 MB | 0755 |
|
| mysqld_multi | File | 26.73 KB | 0755 |
|
| mysqld_safe | File | 28.45 KB | 0755 |
|
| mysqldump | File | 6.57 MB | 0755 |
|
| mysqldumpslow | File | 7.54 KB | 0755 |
|
| mysqlimport | File | 6.46 MB | 0755 |
|
| mysqloptimize | File | 6.48 MB | 0755 |
|
| mysqlrepair | File | 6.48 MB | 0755 |
|
| mysqlshow | File | 6.46 MB | 0755 |
|
| mysqlslap | File | 6.47 MB | 0755 |
|
| namei | File | 22.45 KB | 0755 |
|
| nano | File | 328.65 KB | 0755 |
|
| nautilus | File | 1.6 MB | 0755 |
|
| nautilus-autorun-software | File | 18.38 KB | 0755 |
|
| nautilus-sendto | File | 22.23 KB | 0755 |
|
| nawk | File | 190.84 KB | 0755 |
|
| nc | File | 42.71 KB | 0755 |
|
| nc.openbsd | File | 42.71 KB | 0755 |
|
| neqn | File | 913 B | 0755 |
|
| netaddr | File | 211 B | 0755 |
|
| netcat | File | 42.71 KB | 0755 |
|
| netstat | File | 166.68 KB | 0755 |
|
| networkctl | File | 130.59 KB | 0755 |
|
| networkd-dispatcher | File | 19.88 KB | 0755 |
|
| newgrp | File | 18.45 KB | 4755 |
|
| ngettext | File | 38.46 KB | 0755 |
|
| nhlt-dmic-info | File | 18.55 KB | 0755 |
|
| nice | File | 38.59 KB | 0755 |
|
| nisdomainname | File | 22.3 KB | 0755 |
|
| nl | File | 42.68 KB | 0755 |
|
| nm | File | 47.57 KB | 0755 |
|
| nm-connection-editor | File | 963.06 KB | 0755 |
|
| nm-online | File | 22.45 KB | 0755 |
|
| nmcli | File | 1.03 MB | 0755 |
|
| nmtui | File | 891.73 KB | 0755 |
|
| nmtui-connect | File | 891.73 KB | 0755 |
|
| nmtui-edit | File | 891.73 KB | 0755 |
|
| nmtui-hostname | File | 891.73 KB | 0755 |
|
| nohup | File | 38.49 KB | 0755 |
|
| notify-send | File | 26.31 KB | 0755 |
|
| nproc | File | 38.59 KB | 0755 |
|
| nroff | File | 5.58 KB | 0755 |
|
| nsenter | File | 30.71 KB | 0755 |
|
| nslookup | File | 118.98 KB | 0755 |
|
| nss-addbuiltin | File | 30.68 KB | 0755 |
|
| nss-dbtest | File | 22.47 KB | 0755 |
|
| nss-pp | File | 86.46 KB | 0755 |
|
| nstat | File | 30.45 KB | 0755 |
|
| nsupdate | File | 82.62 KB | 0755 |
|
| ntfs-3g | File | 175.09 KB | 4755 |
|
| ntfs-3g.probe | File | 14.45 KB | 0755 |
|
| ntfscat | File | 26.45 KB | 0755 |
|
| ntfscluster | File | 38.46 KB | 0755 |
|
| ntfscmp | File | 30.45 KB | 0755 |
|
| ntfsdecrypt | File | 42.46 KB | 0755 |
|
| ntfsfallocate | File | 26.46 KB | 0755 |
|
| ntfsfix | File | 34.46 KB | 0755 |
|
| ntfsinfo | File | 58.46 KB | 0755 |
|
| ntfsls | File | 27.53 KB | 0755 |
|
| ntfsmove | File | 30.46 KB | 0755 |
|
| ntfsrecover | File | 114.45 KB | 0755 |
|
| ntfssecaudit | File | 90.94 KB | 0755 |
|
| ntfstruncate | File | 26.38 KB | 0755 |
|
| ntfsusermap | File | 18.38 KB | 0755 |
|
| ntfswipe | File | 46.98 KB | 0755 |
|
| numactl | File | 35.23 KB | 0755 |
|
| numastat | File | 35.56 KB | 0755 |
|
| numfmt | File | 62.6 KB | 0755 |
|
| nvidia-detector | File | 270 B | 0755 |
|
| oakdecode | File | 18.33 KB | 0755 |
|
| obexctl | File | 110.46 KB | 0755 |
|
| objcopy | File | 166.7 KB | 0755 |
|
| objdump | File | 397.89 KB | 0755 |
|
| oclock | File | 23.41 KB | 0755 |
|
| ocspclnt | File | 70.46 KB | 0755 |
|
| od | File | 62.59 KB | 0755 |
|
| oem-getlogs | File | 8.3 KB | 0755 |
|
| on_ac_power | File | 2.45 KB | 0755 |
|
| oomctl | File | 18.45 KB | 0755 |
|
| open | File | 31.53 KB | 0755 |
|
| openssl | File | 1.08 MB | 0755 |
|
| openvt | File | 22.8 KB | 0755 |
|
| opldecode | File | 18.31 KB | 0755 |
|
| orca | File | 9.52 KB | 0755 |
|
| orca-dm-wrapper | File | 70 B | 0755 |
|
| os-prober | File | 4.42 KB | 0755 |
|
| osirrox | File | 14.15 KB | 0755 |
|
| p11-kit | File | 214.78 KB | 0755 |
|
| p7content | File | 22.39 KB | 0755 |
|
| p7env | File | 18.38 KB | 0755 |
|
| p7sign | File | 26.39 KB | 0755 |
|
| p7verify | File | 22.38 KB | 0755 |
|
| pager | File | 216.21 KB | 0755 |
|
| paper | File | 22.59 KB | 0755 |
|
| paperconf | File | 14.38 KB | 0755 |
|
| papers | File | 6.82 MB | 0755 |
|
| papers-previewer | File | 46.59 KB | 0755 |
|
| papers-thumbnailer | File | 18.46 KB | 0755 |
|
| partx | File | 62.46 KB | 0755 |
|
| passwd | File | 91.45 KB | 4755 |
|
| paste | File | 38.49 KB | 0755 |
|
| patch | File | 182.52 KB | 0755 |
|
| pathchk | File | 38.59 KB | 0755 |
|
| pcilmr | File | 50.45 KB | 0755 |
|
| pdb3 | File | 88.79 KB | 0755 |
|
| pdb3.13 | File | 88.79 KB | 0755 |
|
| pdf2ps | File | 909 B | 0755 |
|
| pdfattach | File | 22.46 KB | 0755 |
|
| pdfdetach | File | 30.57 KB | 0755 |
|
| pdffonts | File | 22.6 KB | 0755 |
|
| pdfimages | File | 42.6 KB | 0755 |
|
| pdfinfo | File | 74.58 KB | 0755 |
|
| pdfseparate | File | 22.46 KB | 0755 |
|
| pdfsig | File | 47.01 KB | 0755 |
|
| pdftocairo | File | 174.66 KB | 0755 |
|
| pdftohtml | File | 114.49 KB | 0755 |
|
| pdftoppm | File | 38.66 KB | 0755 |
|
| pdftops | File | 34.76 KB | 0755 |
|
| pdftotext | File | 58.6 KB | 0755 |
|
| pdfunite | File | 34.46 KB | 0755 |
|
| peekfd | File | 14.38 KB | 0755 |
|
| perf | File | 10.59 MB | 0755 |
|
| perl | File | 3.86 MB | 0755 |
|
| perl5.40-x86_64-linux-gnu | File | 14.38 KB | 0755 |
|
| perl5.40.1 | File | 3.86 MB | 0755 |
|
| perlbug | File | 44.52 KB | 0755 |
|
| perldoc | File | 125 B | 0755 |
|
| perli11ndoc | File | 58.17 KB | 0755 |
|
| perlivp | File | 10.61 KB | 0755 |
|
| perlthanks | File | 44.52 KB | 0755 |
|
| perror | File | 1.53 MB | 0755 |
|
| pf2afm | File | 498 B | 0755 |
|
| pfbtopfa | File | 516 B | 0755 |
|
| pgrep | File | 34.55 KB | 0755 |
|
| phar | File | 14.88 KB | 0755 |
|
| phar.default | File | 14.88 KB | 0755 |
|
| phar.phar | File | 14.88 KB | 0755 |
|
| phar.phar.default | File | 14.88 KB | 0755 |
|
| phar.phar8.4 | File | 14.88 KB | 0755 |
|
| phar8.4 | File | 14.88 KB | 0755 |
|
| phar8.4.phar | File | 14.88 KB | 0755 |
|
| php | File | 5.79 MB | 0755 |
|
| php.default | File | 5.79 MB | 0755 |
|
| php8.4 | File | 5.79 MB | 0755 |
|
| pic | File | 228.12 KB | 0755 |
|
| pico | File | 328.65 KB | 0755 |
|
| piconv | File | 8.16 KB | 0755 |
|
| pidof | File | 26.3 KB | 0755 |
|
| pidstat | File | 50.55 KB | 0755 |
|
| pidwait | File | 34.55 KB | 0755 |
|
| pinentry | File | 86.73 KB | 0755 |
|
| pinentry-curses | File | 70.72 KB | 0755 |
|
| pinentry-gnome3 | File | 86.73 KB | 0755 |
|
| pinentry-x11 | File | 86.73 KB | 0755 |
|
| ping | File | 155.74 KB | 0755 |
|
| ping4 | File | 155.74 KB | 0755 |
|
| ping6 | File | 155.74 KB | 0755 |
|
| pinky | File | 42.49 KB | 0755 |
|
| pipewire | File | 14.45 KB | 0755 |
|
| pipewire-aes67 | File | 14.45 KB | 0755 |
|
| pipewire-avb | File | 14.45 KB | 0755 |
|
| pipewire-pulse | File | 14.45 KB | 0755 |
|
| pk12util | File | 75.08 KB | 0755 |
|
| pk1sign | File | 22.52 KB | 0755 |
|
| pkaction | File | 18.45 KB | 0755 |
|
| pkcheck | File | 26.38 KB | 0755 |
|
| pkcon | File | 58.38 KB | 0755 |
|
| pkexec | File | 30.3 KB | 4755 |
|
| pkill | File | 34.55 KB | 0755 |
|
| pkmon | File | 22.38 KB | 0755 |
|
| pkttyagent | File | 22.45 KB | 0755 |
|
| pl2pm | File | 4.43 KB | 0755 |
|
| pldd | File | 22.52 KB | 0755 |
|
| plog | File | 146 B | 0755 |
|
| plymouth | File | 54.45 KB | 0755 |
|
| pmap | File | 38.48 KB | 0755 |
|
| pnm2ppa | File | 1.57 MB | 0755 |
|
| pod2html | File | 3.95 KB | 0755 |
|
| pod2man | File | 18.46 KB | 0755 |
|
| pod2text | File | 12.8 KB | 0755 |
|
| pod2usage | File | 4.01 KB | 0755 |
|
| podchecker | File | 3.64 KB | 0755 |
|
| poff | File | 2.77 KB | 0755 |
|
| pon | File | 1.33 KB | 0755 |
|
| powerprofilesctl | File | 10.49 KB | 0755 |
|
| ppdc | File | 118.55 KB | 0755 |
|
| ppdhtml | File | 82.55 KB | 0755 |
|
| ppdi | File | 106.55 KB | 0755 |
|
| ppdmerge | File | 18.45 KB | 0755 |
|
| ppdpo | File | 90.55 KB | 0755 |
|
| pphs | File | 404 B | 0755 |
|
| pr | File | 78.64 KB | 0755 |
|
| precat | File | 5.52 KB | 0755 |
|
| preconv | File | 62.55 KB | 0755 |
|
| preunzip | File | 5.52 KB | 0755 |
|
| prezip | File | 5.52 KB | 0755 |
|
| prezip-bin | File | 14.38 KB | 0755 |
|
| printafm | File | 395 B | 0755 |
|
| printenv | File | 34.46 KB | 0755 |
|
| printer-profile | File | 5.51 KB | 0755 |
|
| printf | File | 42.59 KB | 0755 |
|
| prlimit | File | 26.97 KB | 0755 |
|
| pro | File | 1003 B | 0755 |
|
| prove | File | 13.36 KB | 0755 |
|
| prtstat | File | 22.45 KB | 0755 |
|
| ps | File | 163.07 KB | 0755 |
|
| ps2ascii | File | 494 B | 0755 |
|
| ps2epsi | File | 1.27 KB | 0755 |
|
| ps2pdf | File | 272 B | 0755 |
|
| ps2pdf12 | File | 257 B | 0755 |
|
| ps2pdf13 | File | 257 B | 0755 |
|
| ps2pdf14 | File | 257 B | 0755 |
|
| ps2pdfwr | File | 1.05 KB | 0755 |
|
| ps2ps | File | 647 B | 0755 |
|
| ps2ps2 | File | 669 B | 0755 |
|
| ps2txt | File | 494 B | 0755 |
|
| psfaddtable | File | 26.45 KB | 0755 |
|
| psfgettable | File | 26.45 KB | 0755 |
|
| psfstriptable | File | 26.45 KB | 0755 |
|
| psfxtable | File | 26.45 KB | 0755 |
|
| psicc | File | 14.39 KB | 0755 |
|
| pslog | File | 14.38 KB | 0755 |
|
| pstree | File | 63.4 KB | 0755 |
|
| pstree.x11 | File | 63.4 KB | 0755 |
|
| ptar | File | 3.48 KB | 0755 |
|
| ptardiff | File | 2.58 KB | 0755 |
|
| ptargrep | File | 4.29 KB | 0755 |
|
| ptx | File | 58.62 KB | 0755 |
|
| pw-cat | File | 102.45 KB | 0755 |
|
| pw-cli | File | 154.56 KB | 0755 |
|
| pw-config | File | 22.45 KB | 0755 |
|
| pw-container | File | 22.45 KB | 0755 |
|
| pw-dot | File | 62.45 KB | 0755 |
|
| pw-dsdplay | File | 102.45 KB | 0755 |
|
| pw-dump | File | 114.54 KB | 0755 |
|
| pw-encplay | File | 102.45 KB | 0755 |
|
| pw-link | File | 34.45 KB | 0755 |
|
| pw-loopback | File | 26.45 KB | 0755 |
|
| pw-metadata | File | 14.45 KB | 0755 |
|
| pw-mididump | File | 34.45 KB | 0755 |
|
| pw-midiplay | File | 102.45 KB | 0755 |
|
| pw-midirecord | File | 102.45 KB | 0755 |
|
| pw-mon | File | 106.5 KB | 0755 |
|
| pw-play | File | 102.45 KB | 0755 |
|
| pw-profiler | File | 26.45 KB | 0755 |
|
| pw-record | File | 102.45 KB | 0755 |
|
| pw-reserve | File | 26.45 KB | 0755 |
|
| pw-top | File | 50.45 KB | 0755 |
|
| pwd | File | 38.59 KB | 0755 |
|
| pwdecrypt | File | 22.39 KB | 0755 |
|
| pwdx | File | 14.45 KB | 0755 |
|
| py3clean | File | 7.59 KB | 0755 |
|
| py3compile | File | 12.99 KB | 0755 |
|
| py3versions | File | 12.52 KB | 0755 |
|
| pybabel | File | 956 B | 0755 |
|
| pybabel-python3 | File | 956 B | 0755 |
|
| pydoc3 | File | 80 B | 0755 |
|
| pydoc3.13 | File | 80 B | 0755 |
|
| pygettext3 | File | 23.87 KB | 0755 |
|
| pygettext3.13 | File | 23.87 KB | 0755 |
|
| pygmentize | File | 215 B | 0755 |
|
| pyserial-miniterm | File | 975 B | 0755 |
|
| pyserial-ports | File | 969 B | 0755 |
|
| python3 | File | 6.51 MB | 0755 |
|
| python3.13 | File | 6.51 MB | 0755 |
|
| pzstd | File | 866.54 KB | 0755 |
|
| qmi-firmware-update | File | 180.16 KB | 0755 |
|
| qmi-network | File | 16.04 KB | 0755 |
|
| qmicli | File | 647.17 KB | 0755 |
|
| qpdldecode | File | 22.6 KB | 0755 |
|
| quirks-handler | File | 2.4 KB | 0755 |
|
| ranlib | File | 54.56 KB | 0755 |
|
| rbash | File | 1.66 MB | 0755 |
|
| rctest | File | 42.4 KB | 0755 |
|
| rdma | File | 126.6 KB | 0755 |
|
| readelf | File | 790.98 KB | 0755 |
|
| readlink | File | 42.49 KB | 0755 |
|
| realpath | File | 42.49 KB | 0755 |
|
| red | File | 89 B | 0755 |
|
| remmina | File | 969.16 KB | 0755 |
|
| remmina-file-wrapper | File | 1.3 KB | 0755 |
|
| remmina-gnome | File | 530 B | 0755 |
|
| rename.ul | File | 22.45 KB | 0755 |
|
| rendercheck | File | 59.78 KB | 0755 |
|
| renice | File | 14.45 KB | 0755 |
|
| reset | File | 30.38 KB | 0755 |
|
| resizecons | File | 30.54 KB | 0755 |
|
| resizepart | File | 22.45 KB | 0755 |
|
| resolvectl | File | 178.69 KB | 0755 |
|
| rev | File | 14.45 KB | 0755 |
|
| rfcomm | File | 30.81 KB | 0755 |
|
| rgrep | File | 30 B | 0755 |
|
| rhythmbox | File | 14.38 KB | 0755 |
|
| rhythmbox-client | File | 56.29 KB | 0755 |
|
| rm | File | 62.59 KB | 0755 |
|
| rmdir | File | 38.49 KB | 0755 |
|
| rnano | File | 328.65 KB | 0755 |
|
| rotatelogs | File | 26.46 KB | 0755 |
|
| routel | File | 1.62 KB | 0755 |
|
| rpcgen | File | 94.59 KB | 0755 |
|
| rrsync | File | 12.7 KB | 0755 |
|
| rsaperf | File | 688.82 KB | 0755 |
|
| rstart | File | 2.55 KB | 0755 |
|
| rstartd | File | 1.43 KB | 0755 |
|
| rsync | File | 594.21 KB | 0755 |
|
| rsync-ssl | File | 5.01 KB | 0755 |
|
| rtla | File | 1.58 KB | 0755 |
|
| rtstat | File | 22.73 KB | 0755 |
|
| run-parts | File | 30.89 KB | 0755 |
|
| run-with-aspell | File | 57 B | 0755 |
|
| run0 | File | 82.9 KB | 0755 |
|
| runcon | File | 38.59 KB | 0755 |
|
| rview | File | 2.16 MB | 0755 |
|
| rygel | File | 50.45 KB | 0755 |
|
| sadf | File | 396.13 KB | 0755 |
|
| sane-find-scanner | File | 103.25 KB | 0755 |
|
| sar | File | 179.1 KB | 0755 |
|
| sar.sysstat | File | 179.1 KB | 0755 |
|
| savelog | File | 10.24 KB | 0755 |
|
| sbattach | File | 22.54 KB | 0755 |
|
| sbkeysync | File | 34.74 KB | 0755 |
|
| sbsiglist | File | 14.6 KB | 0755 |
|
| sbsign | File | 34.7 KB | 0755 |
|
| sbvarsign | File | 22.73 KB | 0755 |
|
| sbverify | File | 30.61 KB | 0755 |
|
| scanimage | File | 79.19 KB | 0755 |
|
| scp | File | 162.74 KB | 0755 |
|
| scp-dbus-service | File | 90 B | 0755 |
|
| screendump | File | 18.37 KB | 0755 |
|
| script | File | 54.45 KB | 0755 |
|
| scriptlive | File | 42.45 KB | 0755 |
|
| scriptreplay | File | 34.45 KB | 0755 |
|
| sdiff | File | 58.47 KB | 0755 |
|
| sdptool | File | 148.38 KB | 0755 |
|
| seahorse | File | 1.18 MB | 0755 |
|
| sed | File | 110.57 KB | 0755 |
|
| select-default-iwrap | File | 474 B | 0755 |
|
| select-editor | File | 2.62 KB | 0755 |
|
| selfserv | File | 74.42 KB | 0755 |
|
| sensible-browser | File | 1.06 KB | 0755 |
|
| sensible-editor | File | 1.51 KB | 0755 |
|
| sensible-pager | File | 824 B | 0755 |
|
| sensible-terminal | File | 1.08 KB | 0755 |
|
| seq | File | 42.59 KB | 0755 |
|
| session-migration | File | 22.15 KB | 0755 |
|
| sessreg | File | 14.38 KB | 0755 |
|
| setarch | File | 26.73 KB | 0755 |
|
| setfacl | File | 38.38 KB | 0755 |
|
| setfont | File | 54.91 KB | 0755 |
|
| setkeycodes | File | 14.45 KB | 0755 |
|
| setleds | File | 18.51 KB | 0755 |
|
| setlogcons | File | 14.45 KB | 0755 |
|
| setmetamode | File | 14.48 KB | 0755 |
|
| setpci | File | 34.46 KB | 0755 |
|
| setpriv | File | 46.46 KB | 0755 |
|
| setsid | File | 14.45 KB | 0755 |
|
| setterm | File | 38.45 KB | 0755 |
|
| setupcon | File | 40.01 KB | 0755 |
|
| setxkbmap | File | 30.78 KB | 0755 |
|
| sftp | File | 178.73 KB | 0755 |
|
| sg | File | 18.45 KB | 4755 |
|
| sh | File | 146.84 KB | 0755 |
|
| sha1sum | File | 42.49 KB | 0755 |
|
| sha224sum | File | 42.49 KB | 0755 |
|
| sha256sum | File | 42.49 KB | 0755 |
|
| sha384sum | File | 42.49 KB | 0755 |
|
| sha512sum | File | 42.49 KB | 0755 |
|
| shasum | File | 9.75 KB | 0755 |
|
| shlibsign | File | 38.76 KB | 0755 |
|
| shotwell | File | 5.92 MB | 0755 |
|
| showconsolefont | File | 18.45 KB | 0755 |
|
| showkey | File | 18.45 KB | 0755 |
|
| showrgb | File | 14.38 KB | 0755 |
|
| shred | File | 62.59 KB | 0755 |
|
| shuf | File | 50.59 KB | 0755 |
|
| signtool | File | 122.49 KB | 0755 |
|
| signver | File | 42.76 KB | 0755 |
|
| simple-scan | File | 522.44 KB | 0755 |
|
| size | File | 30.53 KB | 0755 |
|
| skill | File | 30.49 KB | 0755 |
|
| slabtop | File | 22.52 KB | 0755 |
|
| sleep | File | 34.59 KB | 0755 |
|
| slogin | File | 1.07 MB | 0755 |
|
| slxdecode | File | 18.31 KB | 0755 |
|
| smproxy | File | 26.39 KB | 0755 |
|
| snap | File | 18.41 MB | 0755 |
|
| snapctl | File | 7.1 MB | 0755 |
|
| snapfuse | File | 42.3 KB | 0755 |
|
| snapshot | File | 4.59 MB | 0755 |
|
| snice | File | 30.49 KB | 0755 |
|
| soelim | File | 38.55 KB | 0755 |
|
| soffice | File | 6.5 KB | 0755 |
|
| software-properties-gtk | File | 4.04 KB | 0755 |
|
| sort | File | 118.84 KB | 0755 |
|
| spa-acp-tool | File | 344.34 KB | 0755 |
|
| spa-inspect | File | 110.55 KB | 0755 |
|
| spa-json-dump | File | 34.45 KB | 0755 |
|
| spa-monitor | File | 14.55 KB | 0755 |
|
| spa-resample | File | 34.8 KB | 0755 |
|
| spd-conf | File | 1003 B | 0755 |
|
| spd-say | File | 31.21 KB | 0755 |
|
| spdsend | File | 14.38 KB | 0755 |
|
| speaker-test | File | 42.52 KB | 0755 |
|
| speech-dispatcher | File | 250.48 KB | 0755 |
|
| spice-vdagent | File | 82.85 KB | 0755 |
|
| splain | File | 19 KB | 0755 |
|
| split | File | 59.02 KB | 0755 |
|
| splitfont | File | 14.37 KB | 0755 |
|
| sqfscat | File | 147.9 KB | 0755 |
|
| sqfstar | File | 286.95 KB | 0755 |
|
| ss | File | 136.93 KB | 0755 |
|
| ssh | File | 1.07 MB | 0755 |
|
| ssh-add | File | 350.5 KB | 0755 |
|
| ssh-agent | File | 366.51 KB | 2755 |
|
| ssh-argv0 | File | 1.42 KB | 0755 |
|
| ssh-copy-id | File | 13.84 KB | 0755 |
|
| ssh-import-id | File | 985 B | 0755 |
|
| ssh-import-id-gh | File | 785 B | 0755 |
|
| ssh-import-id-lp | File | 785 B | 0755 |
|
| ssh-keygen | File | 526.52 KB | 0755 |
|
| ssh-keyscan | File | 538.52 KB | 0755 |
|
| ssltap | File | 78.46 KB | 0755 |
|
| sss_ssh_authorizedkeys | File | 34.38 KB | 0755 |
|
| sss_ssh_knownhosts | File | 34.38 KB | 0755 |
|
| sss_ssh_knownhostsproxy | File | 26.38 KB | 0755 |
|
| startx | File | 5.26 KB | 0755 |
|
| stat | File | 90.59 KB | 0755 |
|
| static-sh | File | 2.34 MB | 0755 |
|
| stdbuf | File | 38.59 KB | 0755 |
|
| strace | File | 2.13 MB | 0755 |
|
| strace-log-merge | File | 1.83 KB | 0755 |
|
| streamzip | File | 7.87 KB | 0755 |
|
| strings | File | 34.69 KB | 0755 |
|
| strip | File | 166.73 KB | 0755 |
|
| strsclnt | File | 46.41 KB | 0755 |
|
| stty | File | 66.6 KB | 0755 |
|
| su | File | 54.45 KB | 4755 |
|
| sudo | File | 287.48 KB | 4755 |
|
| sudoedit | File | 287.48 KB | 4755 |
|
| sudoreplay | File | 96.03 KB | 0755 |
|
| sum | File | 38.49 KB | 0755 |
|
| switcherooctl | File | 4.77 KB | 0755 |
|
| symkeyutil | File | 39.29 KB | 0755 |
|
| sync | File | 34.49 KB | 0755 |
|
| sysprof | File | 1.2 MB | 0755 |
|
| sysprof-agent | File | 474.84 KB | 0755 |
|
| sysprof-cat | File | 322.59 KB | 0755 |
|
| sysprof-cli | File | 474.84 KB | 0755 |
|
| systemctl | File | 299 KB | 0755 |
|
| systemd-ac-power | File | 14.45 KB | 0755 |
|
| systemd-analyze | File | 218.87 KB | 0755 |
|
| systemd-ask-password | File | 18.59 KB | 0755 |
|
| systemd-cat | File | 18.45 KB | 0755 |
|
| systemd-cgls | File | 22.57 KB | 0755 |
|
| systemd-cgtop | File | 38.47 KB | 0755 |
|
| systemd-confext | File | 74.65 KB | 0755 |
|
| systemd-creds | File | 50.74 KB | 0755 |
|
| systemd-cryptenroll | File | 83 KB | 0755 |
|
| systemd-cryptsetup | File | 79.05 KB | 0755 |
|
| systemd-delta | File | 26.45 KB | 0755 |
|
| systemd-detect-virt | File | 18.45 KB | 0755 |
|
| systemd-escape | File | 22.45 KB | 0755 |
|
| systemd-firstboot | File | 58.88 KB | 0755 |
|
| systemd-hwdb | File | 14.44 KB | 0755 |
|
| systemd-id128 | File | 26.45 KB | 0755 |
|
| systemd-inhibit | File | 22.47 KB | 0755 |
|
| systemd-machine-id-setup | File | 18.63 KB | 0755 |
|
| systemd-mount | File | 54.79 KB | 0755 |
|
| systemd-notify | File | 30.73 KB | 0755 |
|
| systemd-path | File | 18.45 KB | 0755 |
|
| systemd-run | File | 82.9 KB | 0755 |
|
| systemd-socket-activate | File | 30.45 KB | 0755 |
|
| systemd-stdio-bridge | File | 22.45 KB | 0755 |
|
| systemd-sysext | File | 74.65 KB | 0755 |
|
| systemd-sysusers | File | 66.63 KB | 0755 |
|
| systemd-tmpfiles | File | 126.7 KB | 0755 |
|
| systemd-tty-ask-password-agent | File | 34.45 KB | 0755 |
|
| systemd-umount | File | 54.79 KB | 0755 |
|
| systemd-vpick | File | 26.64 KB | 0755 |
|
| tabs | File | 18.38 KB | 0755 |
|
| tac | File | 42.49 KB | 0755 |
|
| tail | File | 74.61 KB | 0755 |
|
| tapestat | File | 30.55 KB | 0755 |
|
| tar | File | 510.04 KB | 0755 |
|
| taskset | File | 30.45 KB | 0755 |
|
| tbl | File | 154.55 KB | 0755 |
|
| tclsh | File | 14.23 KB | 0755 |
|
| tclsh8.6 | File | 14.23 KB | 0755 |
|
| tcpdump | File | 1.21 MB | 0755 |
|
| tecla | File | 66.52 KB | 0755 |
|
| tee | File | 42.59 KB | 0755 |
|
| telnet | File | 221.9 KB | 0755 |
|
| tempfile | File | 14.38 KB | 0755 |
|
| test | File | 34.51 KB | 0755 |
|
| thunderbird | File | 2.4 KB | 0755 |
|
| tic | File | 94.49 KB | 0755 |
|
| tificc | File | 34.46 KB | 0755 |
|
| time | File | 26.52 KB | 0755 |
|
| timedatectl | File | 46.45 KB | 0755 |
|
| timeout | File | 43.01 KB | 0755 |
|
| tinysparql | File | 60.69 KB | 0755 |
|
| tload | File | 22.47 KB | 0755 |
|
| tnftp | File | 182.9 KB | 0755 |
|
| toe | File | 22.38 KB | 0755 |
|
| top | File | 147.77 KB | 0755 |
|
| totem | File | 22.45 KB | 0755 |
|
| totem-video-thumbnailer | File | 38.48 KB | 0755 |
|
| touch | File | 82.59 KB | 0755 |
|
| tput | File | 26.41 KB | 0755 |
|
| tr | File | 50.55 KB | 0755 |
|
| trace-cmd | File | 435.41 KB | 0755 |
|
| tracepath | File | 18.23 KB | 0755 |
|
| transicc | File | 38.39 KB | 0755 |
|
| transmission-gtk | File | 2.78 MB | 0755 |
|
| transset | File | 22.78 KB | 0755 |
|
| troff | File | 818.7 KB | 0755 |
|
| true | File | 34.46 KB | 0755 |
|
| truncate | File | 38.59 KB | 0755 |
|
| trust | File | 246.78 KB | 0755 |
|
| tset | File | 30.38 KB | 0755 |
|
| tsort | File | 42.59 KB | 0755 |
|
| tstclnt | File | 106.5 KB | 0755 |
|
| tty | File | 34.59 KB | 0755 |
|
| turbostat | File | 1.58 KB | 0755 |
|
| tzselect | File | 21.39 KB | 0755 |
|
| ua | File | 1003 B | 0755 |
|
| ubuntu-advantage | File | 1003 B | 0755 |
|
| ubuntu-bug | File | 2.27 KB | 0755 |
|
| ubuntu-distro-info | File | 26.97 KB | 0755 |
|
| ubuntu-drivers | File | 18.25 KB | 0755 |
|
| ubuntu-report | File | 7.9 MB | 0755 |
|
| ubuntu-security-status | File | 22.25 KB | 0755 |
|
| ucf | File | 35.62 KB | 0755 |
|
| ucfq | File | 18.46 KB | 0755 |
|
| ucfr | File | 9.93 KB | 0755 |
|
| uclampset | File | 30.45 KB | 0755 |
|
| ucs2any | File | 26.38 KB | 0755 |
|
| udevadm | File | 618.84 KB | 0755 |
|
| udisksctl | File | 62.45 KB | 0755 |
|
| ul | File | 26.46 KB | 0755 |
|
| umax_pp | File | 191.53 KB | 0755 |
|
| umount | File | 38.45 KB | 4755 |
|
| uname | File | 34.59 KB | 0755 |
|
| unattended-upgrade | File | 116.54 KB | 0755 |
|
| unattended-upgrades | File | 116.54 KB | 0755 |
|
| uncompress | File | 2.28 KB | 0755 |
|
| unexpand | File | 38.61 KB | 0755 |
|
| unicode_start | File | 2.71 KB | 0755 |
|
| unicode_stop | File | 528 B | 0755 |
|
| uniq | File | 46.6 KB | 0755 |
|
| unity-scope-loader | File | 14.38 KB | 0755 |
|
| unlink | File | 34.59 KB | 0755 |
|
| unlzma | File | 103.02 KB | 0755 |
|
| unmkinitramfs | File | 6.23 KB | 0755 |
|
| unopkg | File | 52 B | 0755 |
|
| unshare | File | 46.68 KB | 0755 |
|
| unsquashfs | File | 147.9 KB | 0755 |
|
| unxz | File | 103.02 KB | 0755 |
|
| unzip | File | 190.61 KB | 0755 |
|
| unzipsfx | File | 94.63 KB | 0755 |
|
| unzstd | File | 1.22 MB | 0755 |
|
| update-alternatives | File | 66.46 KB | 0755 |
|
| update-desktop-database | File | 22.46 KB | 0755 |
|
| update-manager | File | 4.65 KB | 0755 |
|
| update-mime-database | File | 90.41 KB | 0755 |
|
| update-notifier | File | 91.23 KB | 0755 |
|
| upower | File | 18.38 KB | 0755 |
|
| uptime | File | 14.45 KB | 0755 |
|
| usb-creator-gtk | File | 2.87 KB | 0755 |
|
| usb-devices | File | 4.84 KB | 0755 |
|
| usb_printerid | File | 14.31 KB | 0755 |
|
| usbhid-dump | File | 30.46 KB | 0755 |
|
| usbip | File | 1.58 KB | 0755 |
|
| usbipd | File | 1.58 KB | 0755 |
|
| usbreset | File | 14.38 KB | 0755 |
|
| users | File | 38.59 KB | 0755 |
|
| uuidgen | File | 22.45 KB | 0755 |
|
| uuidparse | File | 22.45 KB | 0755 |
|
| varlinkctl | File | 38.57 KB | 0755 |
|
| vcs-run | File | 6.75 KB | 0755 |
|
| vdir | File | 155.02 KB | 0755 |
|
| vfychain | File | 74.47 KB | 0755 |
|
| vfyserv | File | 42.47 KB | 0755 |
|
| vi | File | 2.16 MB | 0755 |
|
| view | File | 2.16 MB | 0755 |
|
| viewres | File | 31.3 KB | 0755 |
|
| vim.tiny | File | 2.16 MB | 0755 |
|
| vmstat | File | 38.86 KB | 0755 |
|
| vmwarectrl | File | 14.26 KB | 0755 |
|
| vsftpdwho | File | 54 B | 0755 |
|
| vstp | File | 26.24 KB | 0755 |
|
| w | File | 26.45 KB | 0755 |
|
| wall | File | 26.45 KB | 0755 |
|
| watch | File | 34.92 KB | 0755 |
|
| watchgnupg | File | 22.38 KB | 0755 |
|
| wc | File | 62.59 KB | 0755 |
|
| wcurl | File | 10.3 KB | 0755 |
|
| wdctl | File | 34.48 KB | 0755 |
|
| wget | File | 579.05 KB | 0755 |
|
| whatis | File | 47.36 KB | 0755 |
|
| whereis | File | 30.91 KB | 0755 |
|
| which | File | 1.05 KB | 0755 |
|
| which.debianutils | File | 1.05 KB | 0755 |
|
| whiptail | File | 30.24 KB | 0755 |
|
| who | File | 46.6 KB | 0755 |
|
| whoami | File | 34.59 KB | 0755 |
|
| whoopsie | File | 50.98 KB | 0755 |
|
| whoopsie-preferences | File | 22.23 KB | 0755 |
|
| wireplumber | File | 18.64 KB | 0755 |
|
| word-list-compress | File | 14.38 KB | 0755 |
|
| wpa_passphrase | File | 14.46 KB | 0755 |
|
| wpctl | File | 62.51 KB | 0755 |
|
| wpexec | File | 18.63 KB | 0755 |
|
| wsdd | File | 72.92 KB | 0755 |
|
| x-session-manager | File | 958 B | 0755 |
|
| x-terminal-emulator | File | 6.06 KB | 0755 |
|
| x-www-browser | File | 2.32 KB | 0755 |
|
| x11perf | File | 197.46 KB | 0755 |
|
| x11perfcomp | File | 2.74 KB | 0755 |
|
| x86_64 | File | 26.73 KB | 0755 |
|
| x86_64-linux-gnu-addr2line | File | 30.78 KB | 0755 |
|
| x86_64-linux-gnu-ar | File | 54.56 KB | 0755 |
|
| x86_64-linux-gnu-as | File | 795.52 KB | 0755 |
|
| x86_64-linux-gnu-c++filt | File | 26.34 KB | 0755 |
|
| x86_64-linux-gnu-cpp | File | 1.13 MB | 0755 |
|
| x86_64-linux-gnu-cpp-14 | File | 1.13 MB | 0755 |
|
| x86_64-linux-gnu-elfedit | File | 34.79 KB | 0755 |
|
| x86_64-linux-gnu-gcc | File | 1.13 MB | 0755 |
|
| x86_64-linux-gnu-gcc-14 | File | 1.13 MB | 0755 |
|
| x86_64-linux-gnu-gcc-ar | File | 30.66 KB | 0755 |
|
| x86_64-linux-gnu-gcc-ar-14 | File | 30.66 KB | 0755 |
|
| x86_64-linux-gnu-gcc-nm | File | 30.66 KB | 0755 |
|
| x86_64-linux-gnu-gcc-nm-14 | File | 30.66 KB | 0755 |
|
| x86_64-linux-gnu-gcc-ranlib | File | 30.66 KB | 0755 |
|
| x86_64-linux-gnu-gcc-ranlib-14 | File | 30.66 KB | 0755 |
|
| x86_64-linux-gnu-gcov | File | 468.19 KB | 0755 |
|
| x86_64-linux-gnu-gcov-14 | File | 468.19 KB | 0755 |
|
| x86_64-linux-gnu-gcov-dump | File | 380.14 KB | 0755 |
|
| x86_64-linux-gnu-gcov-dump-14 | File | 380.14 KB | 0755 |
|
| x86_64-linux-gnu-gcov-tool | File | 408.23 KB | 0755 |
|
| x86_64-linux-gnu-gcov-tool-14 | File | 408.23 KB | 0755 |
|
| x86_64-linux-gnu-gprof | File | 99.86 KB | 0755 |
|
| x86_64-linux-gnu-ld | File | 1.78 MB | 0755 |
|
| x86_64-linux-gnu-ld.bfd | File | 1.78 MB | 0755 |
|
| x86_64-linux-gnu-lto-dump | File | 31.61 MB | 0755 |
|
| x86_64-linux-gnu-lto-dump-14 | File | 31.61 MB | 0755 |
|
| x86_64-linux-gnu-nm | File | 47.57 KB | 0755 |
|
| x86_64-linux-gnu-objcopy | File | 166.7 KB | 0755 |
|
| x86_64-linux-gnu-objdump | File | 397.89 KB | 0755 |
|
| x86_64-linux-gnu-ranlib | File | 54.56 KB | 0755 |
|
| x86_64-linux-gnu-readelf | File | 790.98 KB | 0755 |
|
| x86_64-linux-gnu-size | File | 30.53 KB | 0755 |
|
| x86_64-linux-gnu-strings | File | 34.69 KB | 0755 |
|
| x86_64-linux-gnu-strip | File | 166.73 KB | 0755 |
|
| x86_energy_perf_policy | File | 1.58 KB | 0755 |
|
| xargs | File | 66.49 KB | 0755 |
|
| xauth | File | 55.03 KB | 0755 |
|
| xbiff | File | 24.16 KB | 0755 |
|
| xbrlapi | File | 238.57 KB | 0755 |
|
| xcalc | File | 51.48 KB | 0755 |
|
| xclipboard | File | 22.58 KB | 0755 |
|
| xclock | File | 53.06 KB | 0755 |
|
| xcmsdb | File | 42.46 KB | 0755 |
|
| xconsole | File | 23.2 KB | 0755 |
|
| xcursorgen | File | 22.3 KB | 0755 |
|
| xcutsel | File | 18.56 KB | 0755 |
|
| xdg-dbus-proxy | File | 58.3 KB | 0755 |
|
| xdg-desktop-icon | File | 22.29 KB | 0755 |
|
| xdg-desktop-menu | File | 43.17 KB | 0755 |
|
| xdg-email | File | 28.24 KB | 0755 |
|
| xdg-icon-resource | File | 31.47 KB | 0755 |
|
| xdg-mime | File | 46.62 KB | 0755 |
|
| xdg-open | File | 31.53 KB | 0755 |
|
| xdg-screensaver | File | 38.55 KB | 0755 |
|
| xdg-settings | File | 43.31 KB | 0755 |
|
| xdg-terminal-exec | File | 33.69 KB | 0755 |
|
| xdg-user-dir | File | 234 B | 0755 |
|
| xdg-user-dirs-gtk-update | File | 22.3 KB | 0755 |
|
| xdg-user-dirs-update | File | 26.3 KB | 0755 |
|
| xditview | File | 108.13 KB | 0755 |
|
| xdpyinfo | File | 39.13 KB | 0755 |
|
| xdriinfo | File | 14.38 KB | 0755 |
|
| xedit | File | 705.34 KB | 0755 |
|
| xev | File | 34.7 KB | 0755 |
|
| xeyes | File | 32.13 KB | 0755 |
|
| xfd | File | 40.08 KB | 0755 |
|
| xfontsel | File | 47.92 KB | 0755 |
|
| xgamma | File | 14.38 KB | 0755 |
|
| xgc | File | 70.38 KB | 0755 |
|
| xhost | File | 22.38 KB | 0755 |
|
| xinit | File | 22.38 KB | 0755 |
|
| xinput | File | 58.83 KB | 0755 |
|
| xkbbell | File | 14.39 KB | 0755 |
|
| xkbcomp | File | 212.18 KB | 0755 |
|
| xkbevd | File | 38.46 KB | 0755 |
|
| xkbprint | File | 94.42 KB | 0755 |
|
| xkbvleds | File | 23.18 KB | 0755 |
|
| xkbwatch | File | 23.24 KB | 0755 |
|
| xkeystone | File | 16.58 KB | 0755 |
|
| xkill | File | 14.38 KB | 0755 |
|
| xload | File | 22.92 KB | 0755 |
|
| xlogo | File | 23.19 KB | 0755 |
|
| xlsatoms | File | 14.38 KB | 0755 |
|
| xlsclients | File | 18.38 KB | 0755 |
|
| xlsfonts | File | 26.48 KB | 0755 |
|
| xmag | File | 44.31 KB | 0755 |
|
| xman | File | 77.2 KB | 0755 |
|
| xmessage | File | 23.27 KB | 0755 |
|
| xmodmap | File | 46.75 KB | 0755 |
|
| xmore | File | 14.53 KB | 0755 |
|
| xorrecord | File | 14.15 KB | 0755 |
|
| xorriso | File | 14.15 KB | 0755 |
|
| xorrisofs | File | 14.15 KB | 0755 |
|
| xprop | File | 48.68 KB | 0755 |
|
| xqxdecode | File | 18.31 KB | 0755 |
|
| xrandr | File | 70.48 KB | 0755 |
|
| xrdb | File | 42.48 KB | 0755 |
|
| xrefresh | File | 14.46 KB | 0755 |
|
| xset | File | 34.38 KB | 0755 |
|
| xsetmode | File | 14.38 KB | 0755 |
|
| xsetpointer | File | 14.38 KB | 0755 |
|
| xsetroot | File | 18.38 KB | 0755 |
|
| xsetwacom | File | 59.84 KB | 0755 |
|
| xsm | File | 98.71 KB | 0755 |
|
| xstdcmap | File | 18.96 KB | 0755 |
|
| xsubpp | File | 5.05 KB | 0755 |
|
| xvidtune | File | 43.84 KB | 0755 |
|
| xvinfo | File | 18.38 KB | 0755 |
|
| xwd | File | 30.31 KB | 0755 |
|
| xwininfo | File | 50.46 KB | 0755 |
|
| xwud | File | 30.3 KB | 0755 |
|
| xxd | File | 22.36 KB | 0755 |
|
| xz | File | 103.02 KB | 0755 |
|
| xzcat | File | 103.02 KB | 0755 |
|
| xzcmp | File | 7.41 KB | 0755 |
|
| xzdiff | File | 7.41 KB | 0755 |
|
| xzegrep | File | 10.17 KB | 0755 |
|
| xzfgrep | File | 10.17 KB | 0755 |
|
| xzgrep | File | 10.17 KB | 0755 |
|
| xzless | File | 2.33 KB | 0755 |
|
| xzmore | File | 2.18 KB | 0755 |
|
| yelp | File | 58.3 KB | 0755 |
|
| yes | File | 34.46 KB | 0755 |
|
| ypdomainname | File | 22.3 KB | 0755 |
|
| zcat | File | 1.93 KB | 0755 |
|
| zcmp | File | 1.64 KB | 0755 |
|
| zdiff | File | 6.3 KB | 0755 |
|
| zdump | File | 30.36 KB | 0755 |
|
| zegrep | File | 29 B | 0755 |
|
| zenity | File | 148.94 KB | 0755 |
|
| zfgrep | File | 29 B | 0755 |
|
| zforce | File | 2.03 KB | 0755 |
|
| zgrep | File | 8.01 KB | 0755 |
|
| zip | File | 223.08 KB | 0755 |
|
| zipcloak | File | 74.48 KB | 0755 |
|
| zipdetails | File | 231.06 KB | 0755 |
|
| zipgrep | File | 2.89 KB | 0755 |
|
| zipinfo | File | 190.61 KB | 0755 |
|
| zipnote | File | 66.48 KB | 0755 |
|
| zipsplit | File | 62.48 KB | 0755 |
|
| zjsdecode | File | 26.32 KB | 0755 |
|
| zless | File | 2.38 KB | 0755 |
|
| zmore | File | 1.79 KB | 0755 |
|
| znew | File | 4.46 KB | 0755 |
|
| zstd | File | 1.22 MB | 0755 |
|
| zstdcat | File | 1.22 MB | 0755 |
|
| zstdgrep | File | 3.78 KB | 0755 |
|
| zstdless | File | 197 B | 0755 |
|
| zstdmt | File | 1.22 MB | 0755 |
|