Linux ns1.utparral.edu.mx 6.8.0-79-generic #79~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 15 16:54:53 UTC 2 x86_64
Apache/2.4.58 (Unix) OpenSSL/1.1.1w PHP/8.2.12 mod_perl/2.0.12 Perl/v5.34.1
: 10.10.1.9 | : 10.10.1.254
Cant Read [ /etc/named.conf ]
daemon
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
README
+ Create Folder
+ Create File
/
usr /
bin /
[ HOME SHELL ]
Name
Size
Permission
Action
X11
[ DIR ]
drwxr-xr-x
[
50.44
KB
-rwxr-xr-x
aa-enabled
34.52
KB
-rwxr-xr-x
aa-exec
34.52
KB
-rwxr-xr-x
aa-features-abi
30.52
KB
-rwxr-xr-x
aconnect
22.38
KB
-rwxr-xr-x
acpidbg
1.58
KB
-rwxr-xr-x
acpi_listen
18.57
KB
-rwxr-xr-x
add-apt-repository
14.14
KB
-rwxr-xr-x
addpart
14.38
KB
-rwxr-xr-x
airscan-discover
146.85
KB
-rwxr-xr-x
alsabat
42.44
KB
-rwxr-xr-x
alsaloop
83.33
KB
-rwxr-xr-x
alsamixer
84.29
KB
-rwxr-xr-x
alsatplg
74.38
KB
-rwxr-xr-x
alsaucm
30.84
KB
-rwxr-xr-x
amidi
30.38
KB
-rwxr-xr-x
amixer
62.45
KB
-rwxr-xr-x
anydesk
16.4
MB
-rwxr-xr-x
anydesk-global-settings
54
B
-rwxr-xr-x
apg
274
B
-rwxr-xr-x
apgbfm
26.16
KB
-rwxr-xr-x
aplay
82.42
KB
-rwxr-xr-x
aplaymidi
26.38
KB
-rwxr-xr-x
apport-bug
2.51
KB
-rwxr-xr-x
apport-cli
13.05
KB
-rwxr-xr-x
apport-collect
2.51
KB
-rwxr-xr-x
apport-unpack
2.02
KB
-rwxr-xr-x
appres
14.3
KB
-rwxr-xr-x
appstreamcli
118.23
KB
-rwxr-xr-x
apropos
47.28
KB
-rwxr-xr-x
apt
18.38
KB
-rwxr-xr-x
apt-add-repository
14.14
KB
-rwxr-xr-x
apt-cache
82.47
KB
-rwxr-xr-x
apt-cdrom
26.47
KB
-rwxr-xr-x
apt-config
26.39
KB
-rwxr-xr-x
aptdcon
1.01
KB
-rwxr-xr-x
apt-extracttemplates
22.47
KB
-rwxr-xr-x
apt-ftparchive
230.48
KB
-rwxr-xr-x
apt-get
50.47
KB
-rwxr-xr-x
apt-key
27.51
KB
-rwxr-xr-x
apt-mark
50.47
KB
-rwxr-xr-x
apt-sortpkgs
38.4
KB
-rwxr-xr-x
apturl
273
B
-rwxr-xr-x
apturl-gtk
1.51
KB
-rwxr-xr-x
arch
30.51
KB
-rwxr-xr-x
arecord
82.42
KB
-rwxr-xr-x
arecordmidi
30.39
KB
-rwxr-xr-x
arm2hpdl
14.31
KB
-rwxr-xr-x
arpaname
14.3
KB
-rwxr-xr-x
aseqdump
26.38
KB
-rwxr-xr-x
aseqnet
22.43
KB
-rwxr-xr-x
aspell
142.48
KB
-rwxr-xr-x
aspell-import
2
KB
-rwxr-xr-x
atobm
14.3
KB
-rwxr-xr-x
avahi-browse
30.39
KB
-rwxr-xr-x
avahi-browse-domains
30.39
KB
-rwxr-xr-x
avahi-publish
26.38
KB
-rwxr-xr-x
avahi-publish-address
26.38
KB
-rwxr-xr-x
avahi-publish-service
26.38
KB
-rwxr-xr-x
avahi-resolve
22.38
KB
-rwxr-xr-x
avahi-resolve-address
22.38
KB
-rwxr-xr-x
avahi-resolve-host-name
22.38
KB
-rwxr-xr-x
avahi-set-host-name
14.38
KB
-rwxr-xr-x
avinfo
22.26
KB
-rwxr-xr-x
awk
154.79
KB
-rwxr-xr-x
axfer
90.38
KB
-rwxr-xr-x
b2sum
50.52
KB
-rwxr-xr-x
baobab
238.58
KB
-rwxr-xr-x
base32
34.51
KB
-rwxr-xr-x
base64
34.51
KB
-rwxr-xr-x
basename
34.51
KB
-rwxr-xr-x
basenc
46.51
KB
-rwxr-xr-x
bash
1.33
MB
-rwxr-xr-x
bashbug
6.66
KB
-rwxr-xr-x
bc
90.82
KB
-rwxr-xr-x
bdftopcf
42.26
KB
-rwxr-xr-x
bdftruncate
14.15
KB
-rwxr-xr-x
bitmap
106.31
KB
-rwxr-xr-x
bluemoon
38.23
KB
-rwxr-xr-x
bluetoothctl
274.8
KB
-rwxr-xr-x
bluetooth-sendto
34.4
KB
-rwxr-xr-x
bmtoa
14.32
KB
-rwxr-xr-x
boltctl
122.98
KB
-rwxr-xr-x
bootctl
70.49
KB
-rwxr-xr-x
brltty
1012.04
KB
-rwxr-xr-x
brltty-ctb
286.73
KB
-rwxr-xr-x
brltty-trtxt
238.62
KB
-rwxr-xr-x
brltty-ttb
270.81
KB
-rwxr-xr-x
broadwayd
118.3
KB
-rwxr-xr-x
browse
25.46
KB
-rwxr-xr-x
btattach
30.23
KB
-rwxr-xr-x
btmgmt
165
KB
-rwxr-xr-x
btmon
850.3
KB
-rwxr-xr-x
bunzip2
38.38
KB
-rwxr-xr-x
busctl
90.49
KB
-rwxr-xr-x
busybox
2.09
MB
-rwxr-xr-x
bwrap
70.47
KB
-rwxr-xr-x
bzcat
38.38
KB
-rwxr-xr-x
bzcmp
2.17
KB
-rwxr-xr-x
bzdiff
2.17
KB
-rwxr-xr-x
bzegrep
3.69
KB
-rwxr-xr-x
bzexe
4.78
KB
-rwxr-xr-x
bzfgrep
3.69
KB
-rwxr-xr-x
bzgrep
3.69
KB
-rwxr-xr-x
bzip2
38.38
KB
-rwxr-xr-x
bzip2recover
14.3
KB
-rwxr-xr-x
bzless
1.27
KB
-rwxr-xr-x
bzmore
1.27
KB
-rwxr-xr-x
calibrate_ppa
26.38
KB
-rwxr-xr-x
canberra-gtk-play
18.22
KB
-rwxr-xr-x
cancel
14.3
KB
-rwxr-xr-x
captoinfo
86.41
KB
-rwxr-xr-x
cat
34.46
KB
-rwxr-xr-x
catman
34.76
KB
-rwxr-xr-x
cautious-launcher
853
B
-rwxr-xr-x
cd-create-profile
26.29
KB
-rwxr-xr-x
cd-fix-profile
26.29
KB
-rwxr-xr-x
cd-iccdump
14.29
KB
-rwxr-xr-x
cd-it8
22.29
KB
-rwxr-xr-x
chacl
22.3
KB
-rwxr-xr-x
chage
70.49
KB
-rwxr-sr-x
chardet
965
B
-rwxr-xr-x
chardetect
965
B
-rwxr-xr-x
chattr
14.31
KB
-rwxr-xr-x
chcon
58.51
KB
-rwxr-xr-x
check-language-support
2.71
KB
-rwxr-xr-x
cheese
266.39
KB
-rwxr-xr-x
chfn
71.01
KB
-rwsr-xr-x
chgrp
54.51
KB
-rwxr-xr-x
chmod
54.51
KB
-rwxr-xr-x
choom
22.38
KB
-rwxr-xr-x
chown
58.51
KB
-rwxr-xr-x
chrt
26.38
KB
-rwxr-xr-x
chsh
43.76
KB
-rwsr-xr-x
chvt
14.23
KB
-rwxr-xr-x
ciptool
34.34
KB
-rwxr-xr-x
ckbcomp
146.31
KB
-rwxr-xr-x
cksum
34.41
KB
-rwxr-xr-x
clear
14.31
KB
-rwxr-xr-x
clear_console
14.23
KB
-rwxr-xr-x
cmp
42.39
KB
-rwxr-xr-x
codepage
14.15
KB
-rwxr-xr-x
col
22.38
KB
-rwxr-xr-x
colcrt
14.38
KB
-rwxr-xr-x
colormgr
58.29
KB
-rwxr-xr-x
colrm
14.38
KB
-rwxr-xr-x
column
34.38
KB
-rwxr-xr-x
comm
34.52
KB
-rwxr-xr-x
compose
18.06
KB
-rwxr-xr-x
corelist
15.01
KB
-rwxr-xr-x
cp
138.51
KB
-rwxr-xr-x
cpan
8.16
KB
-rwxr-xr-x
cpan5.34-x86_64-linux-gnu
8.18
KB
-rwxr-xr-x
cpio
141.64
KB
-rwxr-xr-x
cpp
906.82
KB
-rwxr-xr-x
cpp-11
906.82
KB
-rwxr-xr-x
cpupower
1.58
KB
-rwxr-xr-x
c_rehash
6.8
KB
-rwxr-xr-x
crontab
38.64
KB
-rwxr-sr-x
csplit
106.51
KB
-rwxr-xr-x
ctstat
22.66
KB
-rwxr-xr-x
cupstestppd
62.38
KB
-rwxr-xr-x
cut
38.51
KB
-rwxr-xr-x
cvt
14.14
KB
-rwxr-xr-x
cvtsudoers
296.4
KB
-rwxr-xr-x
dash
122.74
KB
-rwxr-xr-x
date
102.51
KB
-rwxr-xr-x
dbus-cleanup-sockets
14.29
KB
-rwxr-xr-x
dbus-daemon
227.32
KB
-rwxr-xr-x
dbus-monitor
26.29
KB
-rwxr-xr-x
dbus-run-session
14.29
KB
-rwxr-xr-x
dbus-send
26.29
KB
-rwxr-xr-x
dbus-update-activation-environment
14.29
KB
-rwxr-xr-x
dbus-uuidgen
14.29
KB
-rwxr-xr-x
dbxtool
26.3
KB
-rwxr-xr-x
dc
46.24
KB
-rwxr-xr-x
dconf
58.21
KB
-rwxr-xr-x
dd
66.52
KB
-rwxr-xr-x
ddstdecode
18.31
KB
-rwxr-xr-x
deallocvt
14.23
KB
-rwxr-xr-x
debconf
2.79
KB
-rwxr-xr-x
debconf-apt-progress
11.27
KB
-rwxr-xr-x
debconf-communicate
608
B
-rwxr-xr-x
debconf-copydb
1.68
KB
-rwxr-xr-x
debconf-escape
647
B
-rwxr-xr-x
debconf-set-selections
2.92
KB
-rwxr-xr-x
debconf-show
1.78
KB
-rwxr-xr-x
debian-distro-info
22.95
KB
-rwxr-xr-x
deb-systemd-helper
20.89
KB
-rwxr-xr-x
deb-systemd-invoke
6.01
KB
-rwxr-xr-x
deja-dup
322.51
KB
-rwxr-xr-x
delpart
14.38
KB
-rwxr-xr-x
delv
45.32
KB
-rwxr-xr-x
desktop-file-edit
96.44
KB
-rwxr-xr-x
desktop-file-install
96.44
KB
-rwxr-xr-x
desktop-file-validate
76.69
KB
-rwxr-xr-x
devdump
183.27
KB
-rwxr-xr-x
df
83.08
KB
-rwxr-xr-x
dfu-tool
110.3
KB
-rwxr-xr-x
dh_bash-completion
4.31
KB
-rwxr-xr-x
dh_installxmlcatalogs
9.22
KB
-rwxr-xr-x
dh_perl_openssl
1.5
KB
-rwxr-xr-x
diff
130.55
KB
-rwxr-xr-x
diff3
54.52
KB
-rwxr-xr-x
dig
150.83
KB
-rwxr-xr-x
dir
134.98
KB
-rwxr-xr-x
dircolors
38.52
KB
-rwxr-xr-x
dirmngr
433.02
KB
-rwxr-xr-x
dirmngr-client
54.92
KB
-rwxr-xr-x
dirname
30.38
KB
-rwxr-xr-x
dirsplit
16.74
KB
-rwxr-xr-x
distro-info
22.89
KB
-rwxr-xr-x
dmesg
70.61
KB
-rwxr-xr-x
dnsdomainname
22.23
KB
-rwxr-xr-x
dnssec-cds
51.39
KB
-rwxr-xr-x
dnssec-dsfromkey
38.38
KB
-rwxr-xr-x
dnssec-importkey
38.38
KB
-rwxr-xr-x
dnssec-keyfromlabel
42.38
KB
-rwxr-xr-x
dnssec-keygen
46.38
KB
-rwxr-xr-x
dnssec-revoke
30.38
KB
-rwxr-xr-x
dnssec-settime
46.38
KB
-rwxr-xr-x
dnssec-signzone
94.41
KB
-rwxr-xr-x
dnssec-verify
30.39
KB
-rwxr-xr-x
domainname
22.23
KB
-rwxr-xr-x
do-release-upgrade
10.42
KB
-rwxr-xr-x
dpkg
310.69
KB
-rwxr-xr-x
dpkg-deb
134.49
KB
-rwxr-xr-x
dpkg-divert
118.49
KB
-rwxr-xr-x
dpkg-maintscript-helper
20.71
KB
-rwxr-xr-x
dpkg-query
138.52
KB
-rwxr-xr-x
dpkg-realpath
4.09
KB
-rwxr-xr-x
dpkg-split
98.51
KB
-rwxr-xr-x
dpkg-statoverride
46.26
KB
-rwxr-xr-x
dpkg-trigger
42.41
KB
-rwxr-xr-x
driverless
30.32
KB
-rwxr-xr-x
driverless-fax
537
B
-rwxr-xr-x
du
146.51
KB
-rwxr-xr-x
dumpkeys
158.71
KB
-rwxr-xr-x
duplicity
5.21
KB
-rwxr-xr-x
dvipdf
1007
B
-rwxr-xr-x
echo
34.3
KB
-rwxr-xr-x
ed
54.49
KB
-rwxr-xr-x
edit
18.06
KB
-rwxr-xr-x
editor
276.52
KB
-rwxr-xr-x
editres
72.69
KB
-rwxr-xr-x
efibootdump
22.15
KB
-rwxr-xr-x
efibootmgr
43.27
KB
-rwxr-xr-x
egrep
28
B
-rwxr-xr-x
eject
42.23
KB
-rwxr-xr-x
enc2xs
40.84
KB
-rwxr-xr-x
encguess
3.01
KB
-rwxr-xr-x
enchant-2
26.29
KB
-rwxr-xr-x
enchant-lsmod-2
18.29
KB
-rwxr-xr-x
env
42.95
KB
-rwxr-xr-x
envsubst
34.38
KB
-rwxr-xr-x
eog
18.37
KB
-rwxr-xr-x
eps2eps
639
B
-rwxr-xr-x
eqn
188.45
KB
-rwxr-xr-x
esc-m
14.16
KB
-rwxr-xr-x
eutp
26.16
KB
-rwxr-xr-x
evince
519.73
KB
-rwxr-xr-x
evince-previewer
70.52
KB
-rwxr-xr-x
evince-thumbnailer
18.38
KB
-rwxr-xr-x
ex
1.45
MB
-rwxr-xr-x
expand
34.53
KB
-rwxr-xr-x
expiry
22.59
KB
-rwxr-sr-x
expr
102.41
KB
-rwxr-xr-x
factor
70.51
KB
-rwxr-xr-x
faillog
22.59
KB
-rwxr-xr-x
fallocate
22.38
KB
-rwxr-xr-x
false
26.3
KB
-rwxr-xr-x
fc-cache
22.23
KB
-rwxr-xr-x
fc-cat
18.23
KB
-rwxr-xr-x
fc-conflist
14.23
KB
-rwxr-xr-x
fc-list
14.23
KB
-rwxr-xr-x
fc-match
14.23
KB
-rwxr-xr-x
fc-pattern
14.23
KB
-rwxr-xr-x
fc-query
14.23
KB
-rwxr-xr-x
fc-scan
14.23
KB
-rwxr-xr-x
fc-validate
14.23
KB
-rwxr-xr-x
fgconsole
14.23
KB
-rwxr-xr-x
fgrep
28
B
-rwxr-xr-x
file
26.56
KB
-rwxr-xr-x
file2brl
26.21
KB
-rwxr-xr-x
file-roller
528.85
KB
-rwxr-xr-x
filezilla
3.79
MB
-rwxr-xr-x
fincore
22.42
KB
-rwxr-xr-x
find
275.48
KB
-rwxr-xr-x
findmnt
63.61
KB
-rwxr-xr-x
firefox
2.32
KB
-rwxr-xr-x
flock
22.48
KB
-rwxr-xr-x
fmt
38.51
KB
-rwxr-xr-x
fold
34.51
KB
-rwxr-xr-x
fonttosfnt
38.16
KB
-rwxr-xr-x
foo2ddst
30.96
KB
-rwxr-xr-x
foo2ddst-wrapper
16.86
KB
-rwxr-xr-x
foo2hbpl2
30.99
KB
-rwxr-xr-x
foo2hbpl2-wrapper
17.91
KB
-rwxr-xr-x
foo2hiperc
42.99
KB
-rwxr-xr-x
foo2hiperc-wrapper
18.11
KB
-rwxr-xr-x
foo2hp
38.96
KB
-rwxr-xr-x
foo2hp2600-wrapper
18.75
KB
-rwxr-xr-x
foo2lava
42.95
KB
-rwxr-xr-x
foo2lava-wrapper
19.61
KB
-rwxr-xr-x
foo2oak
38.89
KB
-rwxr-xr-x
foo2oak-wrapper
17.45
KB
-rwxr-xr-x
foo2qpdl
43.03
KB
-rwxr-xr-x
foo2qpdl-wrapper
19.06
KB
-rwxr-xr-x
foo2slx
30.93
KB
-rwxr-xr-x
foo2slx-wrapper
17.19
KB
-rwxr-xr-x
foo2xqx
31
KB
-rwxr-xr-x
foo2xqx-wrapper
17.16
KB
-rwxr-xr-x
foo2zjs
43.03
KB
-rwxr-xr-x
foo2zjs-icc2ps
14.31
KB
-rwxr-xr-x
foo2zjs-pstops
2.93
KB
-rwxr-xr-x
foo2zjs-wrapper
25.34
KB
-rwxr-xr-x
foomatic-rip
107.41
KB
-rwxr-xr-x
fprintd-delete
86.38
KB
-rwxr-xr-x
fprintd-enroll
90.86
KB
-rwxr-xr-x
fprintd-list
78.38
KB
-rwxr-xr-x
fprintd-verify
86.38
KB
-rwxr-xr-x
free
26.23
KB
-rwxr-xr-x
ftp
178.9
KB
-rwxr-xr-x
funzip
22.3
KB
-rwxr-xr-x
fuser
39.31
KB
-rwxr-xr-x
fusermount
34.38
KB
-rwsr-xr-x
fusermount3
34.38
KB
-rwsr-xr-x
futurize
960
B
-rwxr-xr-x
fwupdagent
190.3
KB
-rwxr-xr-x
fwupdate
82.3
KB
-rwxr-xr-x
fwupdmgr
190.3
KB
-rwxr-xr-x
fwupdtool
394.92
KB
-rwxr-xr-x
fzputtygen
210.23
KB
-rwxr-xr-x
fzsftp
562.73
KB
-rwxr-xr-x
gamemoded
154.65
KB
-rwxr-xr-x
gamma4scanimage
14.3
KB
-rwxr-xr-x
gapplication
22.38
KB
-rwxr-xr-x
gatttool
103.45
KB
-rwxr-xr-x
gcalccmd
314.39
KB
-rwxr-xr-x
gcore
3.4
KB
-rwxr-xr-x
gcr-viewer
14.37
KB
-rwxr-xr-x
gdb
9.8
MB
-rwxr-xr-x
gdb-add-index
4.52
KB
-rwxr-xr-x
gdbtui
126
B
-rwxr-xr-x
gdbus
50.38
KB
-rwxr-xr-x
gdialog
9.01
KB
-rwxr-xr-x
gdk-pixbuf-csource
14.33
KB
-rwxr-xr-x
gdk-pixbuf-pixdata
14.31
KB
-rwxr-xr-x
gdk-pixbuf-thumbnailer
18.39
KB
-rwxr-xr-x
gdmflexiserver
22.78
KB
-rwxr-xr-x
gdm-screenshot
18.41
KB
-rwxr-xr-x
gedit
14.3
KB
-rwxr-xr-x
genisoimage
645.9
KB
-rwxr-xr-x
geqn
188.45
KB
-rwxr-xr-x
GET
15.82
KB
-rwxr-xr-x
getconf
34.29
KB
-rwxr-xr-x
geteltorito
6.06
KB
-rwxr-xr-x
getent
38.65
KB
-rwxr-xr-x
getfacl
30.81
KB
-rwxr-xr-x
getkeycodes
14.23
KB
-rwxr-xr-x
getopt
22.38
KB
-rwxr-xr-x
gettext
34.38
KB
-rwxr-xr-x
gettext.sh
5.07
KB
-rwxr-xr-x
ghostscript
14.15
KB
-rwxr-xr-x
ginstall-info
103.23
KB
-rwxr-xr-x
gio
90.4
KB
-rwxr-xr-x
gio-querymodules
14.3
KB
-rwxr-xr-x
gipddecode
18.31
KB
-rwxr-xr-x
gjs
22.72
KB
-rwxr-xr-x
gjs-console
22.72
KB
-rwxr-xr-x
gkbd-keyboard-display
14.3
KB
-rwxr-xr-x
glib-compile-schemas
50.3
KB
-rwxr-xr-x
gnome-calculator
914.84
KB
-rwxr-xr-x
gnome-calendar
644.57
KB
-rwxr-xr-x
gnome-characters
299
B
-rwxr-xr-x
gnome-control-center
4.47
MB
-rwxr-xr-x
gnome-disk-image-mounter
22.38
KB
-rwxr-xr-x
gnome-disks
727.49
KB
-rwxr-xr-x
gnome-extensions
62.45
KB
-rwxr-xr-x
gnome-font-viewer
94.85
KB
-rwxr-xr-x
gnome-help
66.23
KB
-rwxr-xr-x
gnome-keyring
22.54
KB
-rwxr-xr-x
gnome-keyring-3
22.54
KB
-rwxr-xr-x
gnome-keyring-daemon
993.29
KB
-rwxr-xr-x
gnome-language-selector
1.41
KB
-rwxr-xr-x
gnome-logs
190.88
KB
-rwxr-xr-x
gnome-power-statistics
66.28
KB
-rwxr-xr-x
gnome-session
803
B
-rwxr-xr-x
gnome-session-custom-session
54
B
-rwxr-xr-x
gnome-session-inhibit
22.31
KB
-rwxr-xr-x
gnome-session-properties
66.26
KB
-rwxr-xr-x
gnome-session-quit
14.61
KB
-rwxr-xr-x
gnome-shell
26.63
KB
-rwxr-xr-x
gnome-shell-extension-tool
1.67
KB
-rwxr-xr-x
gnome-shell-perf-tool
10.36
KB
-rwxr-xr-x
gnome-system-monitor
350.36
KB
-rwxr-xr-x
gnome-terminal
3.32
KB
-rwxr-xr-x
gnome-terminal.real
75.52
KB
-rwxr-xr-x
gnome-terminal.wrapper
2.65
KB
-rwxr-xr-x
gnome-text-editor
14.3
KB
-rwxr-xr-x
gnome-thumbnail-font
26.3
KB
-rwxr-xr-x
gnome-todo
406.87
KB
-rwxr-xr-x
gnome-www-browser
2.32
KB
-rwxr-xr-x
gpasswd
70.38
KB
-rwsr-xr-x
gpg
1
MB
-rwxr-xr-x
gpg-agent
312.96
KB
-rwxr-xr-x
gpgcompose
496.48
KB
-rwxr-xr-x
gpgconf
126.73
KB
-rwxr-xr-x
gpg-connect-agent
82.99
KB
-rwxr-xr-x
gpgparsemail
34.38
KB
-rwxr-xr-x
gpgsm
418.9
KB
-rwxr-xr-x
gpgsplit
26.55
KB
-rwxr-xr-x
gpgtar
63.39
KB
-rwxr-xr-x
gpgv
271.04
KB
-rwxr-xr-x
gpg-wks-server
115.05
KB
-rwxr-xr-x
gpg-zip
3.43
KB
-rwxr-xr-x
gpic
200.04
KB
-rwxr-xr-x
gpu-manager
78.82
KB
-rwxr-xr-x
grdctl
26.38
KB
-rwxr-xr-x
grep
178.45
KB
-rwxr-xr-x
gresource
22.3
KB
-rwxr-xr-x
groff
94.5
KB
-rwxr-xr-x
grog
2.71
KB
-rwxr-xr-x
grops
162.55
KB
-rwxr-xr-x
grotty
118.52
KB
-rwxr-xr-x
groups
34.51
KB
-rwxr-xr-x
grub-editenv
376.95
KB
-rwxr-xr-x
grub-file
816.45
KB
-rwxr-xr-x
grub-fstest
937.92
KB
-rwxr-xr-x
grub-glue-efi
247.86
KB
-rwxr-xr-x
grub-kbdcomp
1.64
KB
-rwxr-xr-x
grub-menulst2cfg
228.13
KB
-rwxr-xr-x
grub-mkfont
272.42
KB
-rwxr-xr-x
grub-mkimage
361.05
KB
-rwxr-xr-x
grub-mklayout
252.17
KB
-rwxr-xr-x
grub-mknetdir
417.66
KB
-rwxr-xr-x
grub-mkpasswd-pbkdf2
256.2
KB
-rwxr-xr-x
grub-mkrelpath
247.58
KB
-rwxr-xr-x
grub-mkrescue
998.47
KB
-rwxr-xr-x
grub-mkstandalone
493.95
KB
-rwxr-xr-x
grub-mount
760.84
KB
-rwxr-xr-x
grub-ntldr-img
38.24
KB
-rwxr-xr-x
grub-render-label
828.83
KB
-rwxr-xr-x
grub-script-check
275.7
KB
-rwxr-xr-x
grub-syslinux2cfg
781.34
KB
-rwxr-xr-x
gs
14.15
KB
-rwxr-xr-x
gsbj
350
B
-rwxr-xr-x
gsdj
352
B
-rwxr-xr-x
gsdj500
352
B
-rwxr-xr-x
gsettings
30.3
KB
-rwxr-xr-x
gslj
353
B
-rwxr-xr-x
gslp
350
B
-rwxr-xr-x
gsnd
277
B
-rwxr-xr-x
gst-device-monitor-1.0
22.4
KB
-rwxr-xr-x
gst-discoverer-1.0
34.32
KB
-rwxr-xr-x
gst-inspect-1.0
62.4
KB
-rwxr-xr-x
gst-launch-1.0
38.33
KB
-rwxr-xr-x
gst-play-1.0
50.4
KB
-rwxr-xr-x
gstreamer-codec-install
22.15
KB
-rwxr-xr-x
gst-stats-1.0
34.38
KB
-rwxr-xr-x
gst-tester-1.0
14.31
KB
-rwxr-xr-x
gst-typefind-1.0
18.31
KB
-rwxr-xr-x
gtbl
126.48
KB
-rwxr-xr-x
gtf
18.31
KB
-rwxr-xr-x
gtk4-builder-tool
54.43
KB
-rwxr-xr-x
gtk4-encode-symbolic-svg
7.99
MB
-rwxr-xr-x
gtk4-launch
18.46
KB
-rwxr-xr-x
gtk4-query-settings
14.3
KB
-rwxr-xr-x
gtk4-update-icon-cache
38.73
KB
-rwxr-xr-x
gtk-builder-tool
34.73
KB
-rwxr-xr-x
gtk-encode-symbolic-svg
18.41
KB
-rwxr-xr-x
gtk-launch
18.46
KB
-rwxr-xr-x
gtk-query-settings
14.3
KB
-rwxr-xr-x
gtk-update-icon-cache
38.57
KB
-rwxr-xr-x
gunzip
2.29
KB
-rwxr-xr-x
gzexe
6.3
KB
-rwxr-xr-x
gzip
91.23
KB
-rwxr-xr-x
h2ph
28.54
KB
-rwxr-xr-x
h2xs
59.51
KB
-rwxr-xr-x
hardlink
34.43
KB
-rwxr-xr-x
hbpldecode
26.31
KB
-rwxr-xr-x
hciattach
56.3
KB
-rwxr-xr-x
hciconfig
164.02
KB
-rwxr-xr-x
hcitool
159.76
KB
-rwxr-xr-x
hd
50.39
KB
-rwxr-xr-x
head
42.51
KB
-rwxr-xr-x
HEAD
15.82
KB
-rwxr-xr-x
helpztags
2.46
KB
-rwxr-xr-x
hex2hcd
18.23
KB
-rwxr-xr-x
hexdump
50.39
KB
-rwxr-xr-x
hipercdecode
18.31
KB
-rwxr-xr-x
host
118.82
KB
-rwxr-xr-x
hostid
30.51
KB
-rwxr-xr-x
hostname
22.23
KB
-rwxr-xr-x
hostnamectl
30.38
KB
-rwxr-xr-x
hp-align
9.14
KB
-rwxr-xr-x
hp-check
39.2
KB
-rwxr-xr-x
hp-clean
7.05
KB
-rwxr-xr-x
hp-colorcal
9.08
KB
-rwxr-xr-x
hp-config_usb_printer
6.98
KB
-rwxr-xr-x
hp-doctor
12.69
KB
-rwxr-xr-x
hp-firmware
6.47
KB
-rwxr-xr-x
hp-info
6.26
KB
-rwxr-xr-x
hp-levels
6.85
KB
-rwxr-xr-x
hp-logcapture
12.15
KB
-rwxr-xr-x
hp-makeuri
5.6
KB
-rwxr-xr-x
hp-pkservice
3.13
KB
-rwxr-xr-x
hp-plugin
13.62
KB
-rwxr-xr-x
hp-plugin-ubuntu
719
B
-rwxr-xr-x
hp-probe
7.98
KB
-rwxr-xr-x
hp-query
4.94
KB
-rwxr-xr-x
hp-scan
86.9
KB
-rwxr-xr-x
hp-setup
37.25
KB
-rwxr-xr-x
hp-testpage
5.98
KB
-rwxr-xr-x
hp-timedate
3.31
KB
-rwxr-xr-x
hwe-support-status
10.58
KB
-rwxr-xr-x
i386
26.65
KB
-rwxr-xr-x
ibus
38.37
KB
-rwxr-xr-x
ibus-daemon
194.42
KB
-rwxr-xr-x
ibus-setup
1.15
KB
-rwxr-xr-x
ibus-table-createdb
1.11
KB
-rwxr-xr-x
iceauth
42.42
KB
-rwxr-xr-x
ico
50.44
KB
-rwxr-xr-x
iconv
66.41
KB
-rwxr-xr-x
id
38.51
KB
-rwxr-xr-x
iecset
26.38
KB
-rwxr-xr-x
ijs_pxljr
34.53
KB
-rwxr-xr-x
im-config
11.03
KB
-rwxr-xr-x
im-launch
1.76
KB
-rwxr-xr-x
info
301.74
KB
-rwxr-xr-x
infobrowser
301.74
KB
-rwxr-xr-x
infocmp
62.38
KB
-rwxr-xr-x
infotocap
86.41
KB
-rwxr-xr-x
inputattach
33.75
KB
-rwxr-xr-x
install
142.52
KB
-rwxr-xr-x
install-info
103.23
KB
-rwxr-xr-x
install-printerdriver
95
B
-rwxr-xr-x
instmodsh
4.27
KB
-rwxr-xr-x
intel-virtual-output
70.31
KB
-rwxr-xr-x
ionice
18.38
KB
-rwxr-xr-x
ip
702.05
KB
-rwxr-xr-x
ipcmk
22.45
KB
-rwxr-xr-x
ipcrm
18.38
KB
-rwxr-xr-x
ipcs
38.38
KB
-rwxr-xr-x
ipod-read-sysinfo-extended
22.3
KB
-rwxr-xr-x
ipod-time-sync
14.3
KB
-rwxr-xr-x
ippfind
42.4
KB
-rwxr-xr-x
ipptool
94.3
KB
-rwxr-xr-x
iptables-xml
96.95
KB
-rwxr-xr-x
ischroot
14.2
KB
-rwxr-xr-x
isdv4-serial-debugger
18.31
KB
-rwxr-xr-x
isdv4-serial-inputattach
18.31
KB
-rwxr-xr-x
isodump
183.27
KB
-rwxr-xr-x
isoinfo
346.52
KB
-rwxr-xr-x
isovfy
187.27
KB
-rwxr-xr-x
ispell-wrapper
7.05
KB
-rwxr-xr-x
join
46.55
KB
-rwxr-xr-x
journalctl
78.39
KB
-rwxr-xr-x
jpgicc
34.33
KB
-rwxr-xr-x
json_pp
4.88
KB
-rwxr-xr-x
kbdinfo
18.23
KB
-rwxr-xr-x
kbd_mode
14.52
KB
-rwxr-xr-x
kbxutil
62.83
KB
-rwxr-xr-x
kernel-install
4.79
KB
-rwxr-xr-x
kerneloops-submit
14.15
KB
-rwxr-xr-x
keyring
961
B
-rwxr-xr-x
kill
30.23
KB
-rwxr-xr-x
killall
31.34
KB
-rwxr-xr-x
kmod
166.36
KB
-rwxr-xr-x
kmodsign
18.45
KB
-rwxr-xr-x
l2ping
14.16
KB
-rwxr-xr-x
l2test
34.49
KB
-rwxr-xr-x
laptop-detect
3.73
KB
-rwxr-xr-x
last
34.38
KB
-rwxr-xr-x
lastb
34.38
KB
-rwxr-xr-x
lastlog
27.63
KB
-rwxr-xr-x
lavadecode
22.31
KB
-rwxr-xr-x
lcf
7.6
KB
-rwxr-xr-x
ldd
5.32
KB
-rwxr-xr-x
less
194.38
KB
-rwxr-xr-x
lessecho
14.31
KB
-rwxr-xr-x
lessfile
8.83
KB
-rwxr-xr-x
lesskey
23.7
KB
-rwxr-xr-x
lesspipe
8.83
KB
-rwxr-xr-x
lexgrog
99.75
KB
-rwxr-xr-x
libnetcfg
15.41
KB
-rwxr-xr-x
libreoffice
6.57
KB
-rwxr-xr-x
libwacom-list-devices
14.41
KB
-rwxr-xr-x
libwacom-list-local-devices
18.46
KB
-rwxr-xr-x
libwacom-show-stylus
5.99
KB
-rwxr-xr-x
libwacom-update-db
8.9
KB
-rwxr-xr-x
link
30.51
KB
-rwxr-xr-x
linkicc
26.37
KB
-rwxr-xr-x
linux32
26.65
KB
-rwxr-xr-x
linux64
26.65
KB
-rwxr-xr-x
linux-boot-prober
1.54
KB
-rwxr-xr-x
linux-check-removal
3.99
KB
-rwxr-xr-x
linux-update-symlinks
6.17
KB
-rwxr-xr-x
linux-version
2.63
KB
-rwxr-xr-x
listres
14.73
KB
-rwxr-xr-x
ln
58.51
KB
-rwxr-xr-x
lnstat
22.66
KB
-rwxr-xr-x
loadkeys
198.76
KB
-rwxr-xr-x
loadunimap
30.32
KB
-rwxr-xr-x
localc
59
B
-rwxr-xr-x
locale
57.56
KB
-rwxr-xr-x
locale-check
14.15
KB
-rwxr-xr-x
localectl
26.37
KB
-rwxr-xr-x
localedef
326.96
KB
-rwxr-xr-x
lodraw
59
B
-rwxr-xr-x
loffice
53
B
-rwxr-xr-x
lofromtemplate
64
B
-rwxr-xr-x
logger
34.97
KB
-rwxr-xr-x
login
51.73
KB
-rwxr-xr-x
loginctl
58.48
KB
-rwxr-xr-x
logname
30.51
KB
-rwxr-xr-x
loimpress
62
B
-rwxr-xr-x
lomath
59
B
-rwxr-xr-x
look
18.38
KB
-rwxr-xr-x
loweb
58
B
-rwxr-xr-x
lowntfs-3g
114.98
KB
-rwxr-xr-x
lowriter
61
B
-rwxr-xr-x
lp
26.3
KB
-rwxr-xr-x
lpoptions
22.38
KB
-rwxr-xr-x
lpq
22.38
KB
-rwxr-xr-x
lpr
18.3
KB
-rwxr-xr-x
lprm
14.3
KB
-rwxr-xr-x
lp_solve
58.15
KB
-rwxr-xr-x
lpstat
38.63
KB
-rwxr-xr-x
ls
134.98
KB
-rwxr-xr-x
lsattr
14.31
KB
-rwxr-xr-x
lsblk
122.38
KB
-rwxr-xr-x
lsb_release
3.55
KB
-rwxr-xr-x
lscpu
98.38
KB
-rwxr-xr-x
lshw
901.2
KB
-rwxr-xr-x
lsinitramfs
706
B
-rwxr-xr-x
lsipc
50.38
KB
-rwxr-xr-x
lslocks
30.7
KB
-rwxr-xr-x
lslogins
50.38
KB
-rwxr-xr-x
lsmem
34.38
KB
-rwxr-xr-x
lsmod
166.36
KB
-rwxr-xr-x
lsns
38.38
KB
-rwxr-xr-x
lsof
163.62
KB
-rwxr-xr-x
lspci
92.08
KB
-rwxr-xr-x
lspgpot
1.06
KB
-rwxr-xr-x
lsusb
246.52
KB
-rwxr-xr-x
luit
48.44
KB
-rwxr-xr-x
lwp-download
10.05
KB
-rwxr-xr-x
lwp-dump
2.65
KB
-rwxr-xr-x
lwp-mirror
2.36
KB
-rwxr-xr-x
lwp-request
15.82
KB
-rwxr-xr-x
lzcat
82.52
KB
-rwxr-xr-x
lzcmp
6.86
KB
-rwxr-xr-x
lzdiff
6.86
KB
-rwxr-xr-x
lzegrep
5.87
KB
-rwxr-xr-x
lzfgrep
5.87
KB
-rwxr-xr-x
lzgrep
5.87
KB
-rwxr-xr-x
lzless
1.76
KB
-rwxr-xr-x
lzma
82.52
KB
-rwxr-xr-x
lzmainfo
14.23
KB
-rwxr-xr-x
lzmore
2.11
KB
-rwxr-xr-x
m2300w
28.83
KB
-rwxr-xr-x
m2300w-wrapper
14.24
KB
-rwxr-xr-x
m2400w
28.83
KB
-rwxr-xr-x
mako-render
958
B
-rwxr-xr-x
man
117.68
KB
-rwxr-xr-x
mandb
139.94
KB
-rwxr-xr-x
manpath
30.78
KB
-rwxr-xr-x
man-recode
35.68
KB
-rwxr-xr-x
mapscrn
30.32
KB
-rwxr-xr-x
mawk
154.79
KB
-rwxr-xr-x
mcookie
26.45
KB
-rwxr-xr-x
md5sum
42.41
KB
-rwxr-xr-x
md5sum.textutils
42.41
KB
-rwxr-xr-x
mdig
50.4
KB
-rwxr-xr-x
mesa-overlay-control.py
5.67
KB
-rwxr-xr-x
mesg
14.38
KB
-rwxr-xr-x
migrate-pubring-from-classic-gpg
2.99
KB
-rwxr-xr-x
mimeopen
9.34
KB
-rwxr-xr-x
mimetype
12.76
KB
-rwxr-xr-x
min12xxw
27.45
KB
-rwxr-xr-x
mkdir
66.51
KB
-rwxr-xr-x
mkfifo
38.51
KB
-rwxr-xr-x
mkfontdir
65
B
-rwxr-xr-x
mkfontscale
42.67
KB
-rwxr-xr-x
mkisofs
645.9
KB
-rwxr-xr-x
mk_modmap
15.78
KB
-rwxr-xr-x
mknod
42.51
KB
-rwxr-xr-x
mkpasswd
26.38
KB
-rwxr-xr-x
mksquashfs
254.68
KB
-rwxr-xr-x
mktemp
38.51
KB
-rwxr-xr-x
mkzftree
30.29
KB
-rwxr-xr-x
mmcli
273.84
KB
-rwxr-xr-x
mokutil
59.48
KB
-rwxr-xr-x
monitor-sensor
18.3
KB
-rwxr-xr-x
more
42.38
KB
-rwxr-xr-x
mount
46.38
KB
-rwsr-xr-x
mountpoint
18.38
KB
-rwxr-xr-x
mousetweaks
70.23
KB
-rwxr-xr-x
mscompress
14.3
KB
-rwxr-xr-x
msexpand
14.3
KB
-rwxr-xr-x
mt
66.73
KB
-rwxr-xr-x
mt-gnu
66.73
KB
-rwxr-xr-x
mtr
72.25
KB
-rwxr-xr-x
mtr-packet
38.3
KB
-rwxr-xr-x
mv
134.52
KB
-rwxr-xr-x
named-checkconf
38.4
KB
-rwxr-xr-x
named-checkzone
30.4
KB
-rwxr-xr-x
named-compilezone
30.4
KB
-rwxr-xr-x
named-journalprint
14.3
KB
-rwxr-xr-x
named-nzd2nzf
14.3
KB
-rwxr-xr-x
named-rrchecker
22.3
KB
-rwxr-xr-x
namei
22.38
KB
-rwxr-xr-x
nano
276.52
KB
-rwxr-xr-x
nautilus
1.63
MB
-rwxr-xr-x
nautilus-autorun-software
18.3
KB
-rwxr-xr-x
nautilus-sendto
22.23
KB
-rwxr-xr-x
nawk
154.79
KB
-rwxr-xr-x
nc
38.63
KB
-rwxr-xr-x
nc.openbsd
38.63
KB
-rwxr-xr-x
neqn
913
B
-rwxr-xr-x
netcat
38.63
KB
-rwxr-xr-x
netstat
154.59
KB
-rwxr-xr-x
networkctl
102.38
KB
-rwxr-xr-x
networkd-dispatcher
19.71
KB
-rwxr-xr-x
newgrp
39.55
KB
-rwsr-xr-x
ngettext
34.38
KB
-rwxr-xr-x
nice
34.51
KB
-rwxr-xr-x
nisdomainname
22.23
KB
-rwxr-xr-x
nl
98.57
KB
-rwxr-xr-x
nm-applet
268
KB
-rwxr-xr-x
nmcli
926.77
KB
-rwxr-xr-x
nm-connection-editor
963.02
KB
-rwxr-xr-x
nm-online
22.38
KB
-rwxr-xr-x
nmtui
734.35
KB
-rwxr-xr-x
nmtui-connect
734.35
KB
-rwxr-xr-x
nmtui-edit
734.35
KB
-rwxr-xr-x
nmtui-hostname
734.35
KB
-rwxr-xr-x
nohup
34.41
KB
-rwxr-xr-x
notify-send
18.23
KB
-rwxr-xr-x
nproc
34.51
KB
-rwxr-xr-x
nroff
3.22
KB
-rwxr-xr-x
nsec3hash
14.3
KB
-rwxr-xr-x
nsenter
26.6
KB
-rwxr-xr-x
nslookup
118.82
KB
-rwxr-xr-x
nstat
30.38
KB
-rwxr-xr-x
nsupdate
74.55
KB
-rwxr-xr-x
ntfs-3g
159.01
KB
-rwxr-xr-x
ntfs-3g.probe
14.38
KB
-rwxr-xr-x
ntfscat
26.38
KB
-rwxr-xr-x
ntfscluster
38.38
KB
-rwxr-xr-x
ntfscmp
30.38
KB
-rwxr-xr-x
ntfsdecrypt
42.38
KB
-rwxr-xr-x
ntfsfallocate
26.38
KB
-rwxr-xr-x
ntfsfix
34.38
KB
-rwxr-xr-x
ntfsinfo
54.38
KB
-rwxr-xr-x
ntfsls
27.45
KB
-rwxr-xr-x
ntfsmove
30.38
KB
-rwxr-xr-x
ntfsrecover
106.38
KB
-rwxr-xr-x
ntfssecaudit
78.86
KB
-rwxr-xr-x
ntfstruncate
26.3
KB
-rwxr-xr-x
ntfsusermap
18.3
KB
-rwxr-xr-x
ntfswipe
42.91
KB
-rwxr-xr-x
numfmt
54.54
KB
-rwxr-xr-x
nvidia-detector
270
B
-rwxr-xr-x
oakdecode
18.33
KB
-rwxr-xr-x
obexctl
102.24
KB
-rwxr-xr-x
oclock
23.66
KB
-rwxr-xr-x
od
66.51
KB
-rwxr-xr-x
oem-getlogs
8.59
KB
-rwxr-xr-x
on_ac_power
3.7
KB
-rwxr-xr-x
oomctl
18.37
KB
-rwxr-xr-x
open
25.46
KB
-rwxr-xr-x
openssl
977.8
KB
-rwxr-xr-x
openvt
22.59
KB
-rwxr-xr-x
opldecode
18.31
KB
-rwxr-xr-x
orca
9.05
KB
-rwxr-xr-x
orca-dm-wrapper
70
B
-rwxr-xr-x
os-prober
4.44
KB
-rwxr-xr-x
p11-kit
30.38
KB
-rwxr-xr-x
pacat
50.41
KB
-rwxr-xr-x
pacmd
18.38
KB
-rwxr-xr-x
pactl
94.4
KB
-rwxr-xr-x
padsp
2.18
KB
-rwxr-xr-x
pager
194.38
KB
-rwxr-xr-x
pa-info
2.04
KB
-rwxr-xr-x
pamon
50.41
KB
-rwxr-xr-x
paperconf
14.15
KB
-rwxr-xr-x
paplay
50.41
KB
-rwxr-xr-x
parec
50.41
KB
-rwxr-xr-x
parecord
50.41
KB
-rwxr-xr-x
partx
58.38
KB
-rwxr-xr-x
passwd
58.57
KB
-rwsr-xr-x
paste
34.41
KB
-rwxr-xr-x
pasteurize
964
B
-rwxr-xr-x
pasuspender
22.39
KB
-rwxr-xr-x
patch
186.52
KB
-rwxr-xr-x
pathchk
34.51
KB
-rwxr-xr-x
pax11publish
14.3
KB
-rwxr-xr-x
pdb3
61.74
KB
-rwxr-xr-x
pdb3.10
61.74
KB
-rwxr-xr-x
pdf2dsc
698
B
-rwxr-xr-x
pdf2ps
909
B
-rwxr-xr-x
pdfattach
18.38
KB
-rwxr-xr-x
pdfdetach
22.49
KB
-rwxr-xr-x
pdffonts
22.52
KB
-rwxr-xr-x
pdfimages
38.52
KB
-rwxr-xr-x
pdfinfo
58.52
KB
-rwxr-xr-x
pdfseparate
22.38
KB
-rwxr-xr-x
pdfsig
34.77
KB
-rwxr-xr-x
pdftocairo
134.48
KB
-rwxr-xr-x
pdftohtml
106.41
KB
-rwxr-xr-x
pdftoppm
34.41
KB
-rwxr-xr-x
pdftops
34.53
KB
-rwxr-xr-x
pdftotext
42.52
KB
-rwxr-xr-x
pdfunite
30.38
KB
-rwxr-xr-x
peekfd
14.3
KB
-rwxr-xr-x
perf
1.58
KB
-rwxr-xr-x
perl
3.63
MB
-rwxr-xr-x
perl5.34.0
3.63
MB
-rwxr-xr-x
perl5.34-x86_64-linux-gnu
14.3
KB
-rwxr-xr-x
perlbug
44.12
KB
-rwxr-xr-x
perldoc
125
B
-rwxr-xr-x
perli11ndoc
56.56
KB
-rwxr-xr-x
perlivp
10.61
KB
-rwxr-xr-x
perlthanks
44.12
KB
-rwxr-xr-x
pf2afm
498
B
-rwxr-xr-x
pfbtopfa
516
B
-rwxr-xr-x
pgrep
30.24
KB
-rwxr-xr-x
pic
200.04
KB
-rwxr-xr-x
pico
276.52
KB
-rwxr-xr-x
piconv
8.16
KB
-rwxr-xr-x
pidof
30.38
KB
-rwxr-xr-x
pidwait
30.24
KB
-rwxr-xr-x
pinentry
74.66
KB
-rwxr-xr-x
pinentry-curses
58.65
KB
-rwxr-xr-x
pinentry-gnome3
74.66
KB
-rwxr-xr-x
pinentry-x11
74.66
KB
-rwxr-xr-x
ping
74.88
KB
-rwxr-xr-x
ping4
74.88
KB
-rwxr-xr-x
ping6
74.88
KB
-rwxr-xr-x
pinky
34.41
KB
-rwxr-xr-x
pipewire
14.38
KB
-rwxr-xr-x
pipewire-media-session
398.75
KB
-rwxr-xr-x
pkaction
18.3
KB
-rwxr-xr-x
pkcheck
22.3
KB
-rwxr-xr-x
pkcon
58.3
KB
-rwxr-xr-x
pkexec
30.15
KB
-rwsr-xr-x
pkill
30.24
KB
-rwxr-xr-x
pkmon
22.3
KB
-rwxr-xr-x
pkttyagent
18.3
KB
-rwxr-xr-x
pl2pm
4.43
KB
-rwxr-xr-x
pldd
22.37
KB
-rwxr-xr-x
plog
146
B
-rwxr-xr-x
plymouth
46.3
KB
-rwxr-xr-x
pmap
34.24
KB
-rwxr-xr-x
pnm2ppa
1.57
MB
-rwxr-xr-x
pod2html
4.04
KB
-rwxr-xr-x
pod2man
14.68
KB
-rwxr-xr-x
pod2text
10.55
KB
-rwxr-xr-x
pod2usage
4.01
KB
-rwxr-xr-x
podchecker
3.57
KB
-rwxr-xr-x
poff
2.77
KB
-rwxr-xr-x
pon
1.33
KB
-rwxr-xr-x
POST
15.82
KB
-rwxr-xr-x
powerprofilesctl
7.9
KB
-rwxr-xr-x
ppdc
98.48
KB
-rwxr-xr-x
ppdhtml
74.48
KB
-rwxr-xr-x
ppdi
90.48
KB
-rwxr-xr-x
ppdmerge
18.38
KB
-rwxr-xr-x
ppdpo
78.48
KB
-rwxr-xr-x
pphs
404
B
-rwxr-xr-x
pr
66.58
KB
-rwxr-xr-x
precat
5.52
KB
-rwxr-xr-x
preconv
54.48
KB
-rwxr-xr-x
preunzip
5.52
KB
-rwxr-xr-x
prezip
5.52
KB
-rwxr-xr-x
prezip-bin
14.3
KB
-rwxr-xr-x
print
18.06
KB
-rwxr-xr-x
printafm
395
B
-rwxr-xr-x
printenv
30.38
KB
-rwxr-xr-x
printer-profile
5.51
KB
-rwxr-xr-x
printf
50.44
KB
-rwxr-xr-x
prlimit
26.89
KB
-rwxr-xr-x
pro
1003
B
-rwxr-xr-x
prove
13.34
KB
-rwxr-xr-x
prtstat
22.38
KB
-rwxr-xr-x
ps
138.45
KB
-rwxr-xr-x
ps2ascii
631
B
-rwxr-xr-x
ps2epsi
1.23
KB
-rwxr-xr-x
ps2pdf
272
B
-rwxr-xr-x
ps2pdf12
215
B
-rwxr-xr-x
ps2pdf13
215
B
-rwxr-xr-x
ps2pdf14
215
B
-rwxr-xr-x
ps2pdfwr
1.05
KB
-rwxr-xr-x
ps2ps
647
B
-rwxr-xr-x
ps2ps2
669
B
-rwxr-xr-x
ps2txt
631
B
-rwxr-xr-x
psfaddtable
26.23
KB
-rwxr-xr-x
psfgettable
26.23
KB
-rwxr-xr-x
psfstriptable
26.23
KB
-rwxr-xr-x
psfxtable
26.23
KB
-rwxr-xr-x
psicc
14.31
KB
-rwxr-xr-x
pslog
14.3
KB
-rwxr-xr-x
pstree
35.32
KB
-rwxr-xr-x
pstree.x11
35.32
KB
-rwxr-xr-x
ptar
3.48
KB
-rwxr-xr-x
ptardiff
2.58
KB
-rwxr-xr-x
ptargrep
4.29
KB
-rwxr-xr-x
ptx
126.55
KB
-rwxr-xr-x
pulseaudio
94.44
KB
-rwxr-xr-x
pw-cat
138.38
KB
-rwxr-xr-x
pw-cli
134.38
KB
-rwxr-xr-x
pwd
34.51
KB
-rwxr-xr-x
pw-dot
34.38
KB
-rwxr-xr-x
pw-dsdplay
138.38
KB
-rwxr-xr-x
pw-dump
94.38
KB
-rwxr-xr-x
pwdx
14.23
KB
-rwxr-xr-x
pw-link
30.38
KB
-rwxr-xr-x
pw-loopback
18.38
KB
-rwxr-xr-x
pw-metadata
14.38
KB
-rwxr-xr-x
pw-mididump
34.38
KB
-rwxr-xr-x
pw-midiplay
138.38
KB
-rwxr-xr-x
pw-midirecord
138.38
KB
-rwxr-xr-x
pw-mon
90.42
KB
-rwxr-xr-x
pw-play
138.38
KB
-rwxr-xr-x
pw-profiler
26.38
KB
-rwxr-xr-x
pw-record
138.38
KB
-rwxr-xr-x
pw-reserve
26.38
KB
-rwxr-xr-x
pw-top
30.38
KB
-rwxr-xr-x
pw-v4l2
1.95
KB
-rwxr-xr-x
py3clean
7.63
KB
-rwxr-xr-x
py3compile
12.88
KB
-rwxr-xr-x
py3versions
11.63
KB
-rwxr-xr-x
pydoc3
79
B
-rwxr-xr-x
pydoc3.10
79
B
-rwxr-xr-x
pygettext3
23.67
KB
-rwxr-xr-x
pygettext3.10
23.67
KB
-rwxr-xr-x
python3
5.66
MB
-rwxr-xr-x
python3.10
5.66
MB
-rwxr-xr-x
python3-futurize
960
B
-rwxr-xr-x
python3-pasteurize
964
B
-rwxr-xr-x
pzstd
702.47
KB
-rwxr-xr-x
qpdldecode
22.6
KB
-rwxr-xr-x
quirks-handler
2.4
KB
-rwxr-xr-x
rbash
1.33
MB
-rwxr-xr-x
rcp
130.59
KB
-rwxr-xr-x
rctest
38.19
KB
-rwxr-xr-x
rdiffdir
8.91
KB
-rwxr-xr-x
rdma
98.52
KB
-rwxr-xr-x
readlink
38.41
KB
-rwxr-xr-x
realpath
38.41
KB
-rwxr-xr-x
red
89
B
-rwxr-xr-x
remmina
875.6
KB
-rwxr-xr-x
remmina-file-wrapper
1.29
KB
-rwxr-xr-x
remmina-gnome
530
B
-rwxr-xr-x
rendercheck
59.78
KB
-rwxr-xr-x
renice
14.38
KB
-rwxr-xr-x
reset
26.31
KB
-rwxr-xr-x
resizecons
26.32
KB
-rwxr-xr-x
resizepart
22.38
KB
-rwxr-xr-x
resolvectl
130.52
KB
-rwxr-xr-x
rev
14.38
KB
-rwxr-xr-x
rfcomm
30.59
KB
-rwxr-xr-x
rgrep
30
B
-rwxr-xr-x
rhythmbox
14.29
KB
-rwxr-xr-x
rhythmbox-client
47.93
KB
-rwxr-xr-x
rlogin
827.04
KB
-rwxr-xr-x
rm
58.51
KB
-rwxr-xr-x
rmdir
42.41
KB
-rwxr-xr-x
rnano
276.52
KB
-rwxr-xr-x
routef
208
B
-rwxr-xr-x
routel
1.62
KB
-rwxr-xr-x
rrsync
12.34
KB
-rwxr-xr-x
rsh
827.04
KB
-rwxr-xr-x
rstart
2.55
KB
-rwxr-xr-x
rstartd
1.43
KB
-rwxr-xr-x
rsync
506.13
KB
-rwxr-xr-x
rsync-ssl
5.02
KB
-rwxr-xr-x
rtstat
22.66
KB
-rwxr-xr-x
runcon
34.51
KB
-rwxr-xr-x
run-mailcap
18.06
KB
-rwxr-xr-x
run-parts
26.54
KB
-rwxr-xr-x
run-with-aspell
57
B
-rwxr-xr-x
rview
1.45
MB
-rwxr-xr-x
rygel
50.37
KB
-rwxr-xr-x
sane-find-scanner
91
KB
-rwxr-xr-x
savelog
10.24
KB
-rwxr-xr-x
sbattach
26.54
KB
-rwxr-xr-x
sbkeysync
34.74
KB
-rwxr-xr-x
sbsiglist
14.6
KB
-rwxr-xr-x
sbsign
34.7
KB
-rwxr-xr-x
sbvarsign
22.73
KB
-rwxr-xr-x
sbverify
34.61
KB
-rwxr-xr-x
scanimage
63.11
KB
-rwxr-xr-x
scp
130.59
KB
-rwxr-xr-x
scp-dbus-service
90
B
-rwxr-xr-x
screendump
14.15
KB
-rwxr-xr-x
script
50.38
KB
-rwxr-xr-x
scriptlive
42.38
KB
-rwxr-xr-x
scriptreplay
34.38
KB
-rwxr-xr-x
sdiff
46.39
KB
-rwxr-xr-x
sdptool
129.71
KB
-rwxr-xr-x
seahorse
1.12
MB
-rwxr-xr-x
sed
110.57
KB
-rwxr-xr-x
see
18.06
KB
-rwxr-xr-x
select-default-iwrap
474
B
-rwxr-xr-x
select-editor
2.39
KB
-rwxr-xr-x
sensible-browser
1.26
KB
-rwxr-xr-x
sensible-editor
1.24
KB
-rwxr-xr-x
sensible-pager
565
B
-rwxr-xr-x
seq
46.51
KB
-rwxr-xr-x
session-migration
22.15
KB
-rwxr-xr-x
sessreg
14.31
KB
-rwxr-xr-x
setarch
26.65
KB
-rwxr-xr-x
setfacl
42.91
KB
-rwxr-xr-x
setfont
50.32
KB
-rwxr-xr-x
setkeycodes
14.23
KB
-rwxr-xr-x
setleds
18.21
KB
-rwxr-xr-x
setlogcons
14.23
KB
-rwxr-xr-x
setmetamode
14.26
KB
-rwxr-xr-x
setpci
30.38
KB
-rwxr-xr-x
setpriv
38.38
KB
-rwxr-xr-x
setsid
14.38
KB
-rwxr-xr-x
setterm
34.38
KB
-rwxr-xr-x
setupcon
38.31
KB
-rwxr-xr-x
setxkbmap
26.7
KB
-rwxr-xr-x
sftp
142.66
KB
-rwxr-xr-x
sg
39.55
KB
-rwsr-xr-x
sh
122.74
KB
-rwxr-xr-x
sha1sum
42.41
KB
-rwxr-xr-x
sha224sum
50.41
KB
-rwxr-xr-x
sha256sum
50.41
KB
-rwxr-xr-x
sha384sum
58.41
KB
-rwxr-xr-x
sha512sum
58.41
KB
-rwxr-xr-x
shasum
9.75
KB
-rwxr-xr-x
shotwell
4.84
MB
-rwxr-xr-x
showconsolefont
18.23
KB
-rwxr-xr-x
showkey
18.23
KB
-rwxr-xr-x
showrgb
14.31
KB
-rwxr-xr-x
shred
50.51
KB
-rwxr-xr-x
shuf
46.51
KB
-rwxr-xr-x
simple-scan
390.36
KB
-rwxr-xr-x
skill
30.23
KB
-rwxr-xr-x
slabtop
22.23
KB
-rwxr-xr-x
sleep
34.51
KB
-rwxr-xr-x
slogin
827.04
KB
-rwxr-xr-x
slxdecode
18.31
KB
-rwxr-xr-x
smproxy
26.31
KB
-rwxr-xr-x
snap
19.09
MB
-rwxr-xr-x
snapctl
6.26
MB
-rwxr-xr-x
snapfuse
38.23
KB
-rwxr-xr-x
snice
30.23
KB
-rwxr-xr-x
soelim
30.48
KB
-rwxr-xr-x
soffice
6.57
KB
-rwxr-xr-x
software-properties-gtk
4.08
KB
-rwxr-xr-x
sort
98.8
KB
-rwxr-xr-x
spa-acp-tool
268.12
KB
-rwxr-xr-x
spa-inspect
78.48
KB
-rwxr-xr-x
spa-json-dump
14.3
KB
-rwxr-xr-x
spa-monitor
14.48
KB
-rwxr-xr-x
spa-resample
30.6
KB
-rwxr-xr-x
spd-conf
1003
B
-rwxr-xr-x
spd-say
31.14
KB
-rwxr-xr-x
spdsend
14.31
KB
-rwxr-xr-x
speaker-test
30.44
KB
-rwxr-xr-x
speech-dispatcher
206.41
KB
-rwxr-xr-x
spice-vdagent
86.77
KB
-rwxr-xr-x
splain
18.96
KB
-rwxr-xr-x
split
50.97
KB
-rwxr-xr-x
splitfont
14.15
KB
-rwxr-xr-x
sqfscat
131.9
KB
-rwxr-xr-x
sqfstar
254.68
KB
-rwxr-xr-x
ss
125.07
KB
-rwxr-xr-x
ssh
827.04
KB
-rwxr-xr-x
ssh-add
166.42
KB
-rwxr-xr-x
ssh-agent
286.43
KB
-rwxr-sr-x
ssh-argv0
1.42
KB
-rwxr-xr-x
ssh-copy-id
12.38
KB
-rwxr-xr-x
ssh-import-id
985
B
-rwxr-xr-x
ssh-import-id-gh
785
B
-rwxr-xr-x
ssh-import-id-lp
785
B
-rwxr-xr-x
ssh-keygen
446.44
KB
-rwxr-xr-x
ssh-keyscan
190.44
KB
-rwxr-xr-x
start-pulseaudio-x11
2.11
KB
-rwxr-xr-x
startx
5.39
KB
-rwxr-xr-x
stat
78.52
KB
-rwxr-xr-x
static-sh
2.09
MB
-rwxr-xr-x
stdbuf
42.51
KB
-rwxr-xr-x
strace
1.88
MB
-rwxr-xr-x
strace-log-merge
1.78
KB
-rwxr-xr-x
streamzip
7.75
KB
-rwxr-xr-x
stty
74.51
KB
-rwxr-xr-x
su
54.38
KB
-rwsr-xr-x
sudo
226.97
KB
-rwsr-xr-x
sudoedit
226.97
KB
-rwsr-xr-x
sudoreplay
87.64
KB
-rwxr-xr-x
sum
34.41
KB
-rwxr-xr-x
switcherooctl
4.54
KB
-rwxr-xr-x
sync
34.41
KB
-rwxr-xr-x
system-config-printer
95
B
-rwxr-xr-x
system-config-printer-applet
80
B
-rwxr-xr-x
systemctl
1.06
MB
-rwxr-xr-x
systemd
1.76
MB
-rwxr-xr-x
systemd-analyze
1.73
MB
-rwxr-xr-x
systemd-ask-password
18.48
KB
-rwxr-xr-x
systemd-cat
18.38
KB
-rwxr-xr-x
systemd-cgls
22.48
KB
-rwxr-xr-x
systemd-cgtop
38.39
KB
-rwxr-xr-x
systemd-cryptenroll
50.53
KB
-rwxr-xr-x
systemd-delta
26.37
KB
-rwxr-xr-x
systemd-detect-virt
18.37
KB
-rwxr-xr-x
systemd-escape
22.37
KB
-rwxr-xr-x
systemd-hwdb
118.66
KB
-rwxr-xr-x
systemd-id128
26.37
KB
-rwxr-xr-x
systemd-inhibit
22.39
KB
-rwxr-xr-x
systemd-machine-id-setup
18.48
KB
-rwxr-xr-x
systemd-mount
50.59
KB
-rwxr-xr-x
systemd-notify
22.38
KB
-rwxr-xr-x
systemd-path
18.37
KB
-rwxr-xr-x
systemd-run
62.57
KB
-rwxr-xr-x
systemd-socket-activate
26.37
KB
-rwxr-xr-x
systemd-stdio-bridge
22.38
KB
-rwxr-xr-x
systemd-sysext
46.49
KB
-rwxr-xr-x
systemd-sysusers
62.68
KB
-rwxr-xr-x
systemd-tmpfiles
98.57
KB
-rwxr-xr-x
systemd-tty-ask-password-agent
34.37
KB
-rwxr-xr-x
systemd-umount
50.59
KB
-rwxr-xr-x
tabs
18.3
KB
-rwxr-xr-x
tac
98.41
KB
-rwxr-xr-x
tail
66.52
KB
-rwxr-xr-x
tar
505.81
KB
-rwxr-xr-x
taskset
22.38
KB
-rwxr-xr-x
tbl
126.48
KB
-rwxr-xr-x
tclsh
14.15
KB
-rwxr-xr-x
tclsh8.6
14.15
KB
-rwxr-xr-x
tcpdump
1.27
MB
-rwxr-xr-x
tee
34.51
KB
-rwxr-xr-x
telnet
107.56
KB
-rwxr-xr-x
telnet.netkit
107.56
KB
-rwxr-xr-x
tempfile
14.02
KB
-rwxr-xr-x
test
42.44
KB
-rwxr-xr-x
thunderbird
2.88
KB
-rwxr-xr-x
tic
86.41
KB
-rwxr-xr-x
tificc
34.38
KB
-rwxr-xr-x
time
26.52
KB
-rwxr-xr-x
timedatectl
46.37
KB
-rwxr-xr-x
timeout
38.95
KB
-rwxr-xr-x
tload
18.24
KB
-rwxr-xr-x
tnftp
178.9
KB
-rwxr-xr-x
toe
22.3
KB
-rwxr-xr-x
top
130.06
KB
-rwxr-xr-x
totem
22.38
KB
-rwxr-xr-x
totem-video-thumbnailer
38.4
KB
-rwxr-xr-x
touch
90.51
KB
-rwxr-xr-x
tput
26.34
KB
-rwxr-xr-x
tr
46.51
KB
-rwxr-xr-x
tracepath
18.15
KB
-rwxr-xr-x
tracker3
613.73
KB
-rwxr-xr-x
transicc
34.32
KB
-rwxr-xr-x
transmission-gtk
982.2
KB
-rwxr-xr-x
transset
22.78
KB
-rwxr-xr-x
troff
718.61
KB
-rwxr-xr-x
true
26.3
KB
-rwxr-xr-x
truncate
34.51
KB
-rwxr-xr-x
trust
206.38
KB
-rwxr-xr-x
tset
26.31
KB
-rwxr-xr-x
tsort
46.51
KB
-rwxr-xr-x
tty
30.51
KB
-rwxr-xr-x
turbostat
1.58
KB
-rwxr-xr-x
tzselect
15.02
KB
-rwxr-xr-x
ua
1003
B
-rwxr-xr-x
ubuntu-advantage
1003
B
-rwxr-xr-x
ubuntu-bug
2.51
KB
-rwxr-xr-x
ubuntu-distro-info
22.89
KB
-rwxr-xr-x
ubuntu-drivers
16.36
KB
-rwxr-xr-x
ubuntu-report
6.29
MB
-rwxr-xr-x
ubuntu-security-status
22.25
KB
-rwxr-xr-x
ucf
40.9
KB
-rwxr-xr-x
ucfq
18.91
KB
-rwxr-xr-x
ucfr
10.47
KB
-rwxr-xr-x
uclampset
26.38
KB
-rwxr-xr-x
ucs2any
26.15
KB
-rwxr-xr-x
udevadm
1.08
MB
-rwxr-xr-x
udisksctl
58.38
KB
-rwxr-xr-x
ul
22.38
KB
-rwxr-xr-x
umax_pp
179.38
KB
-rwxr-xr-x
umount
34.38
KB
-rwsr-xr-x
uname
34.51
KB
-rwxr-xr-x
unattended-upgrade
97.21
KB
-rwxr-xr-x
unattended-upgrades
97.21
KB
-rwxr-xr-x
uncompress
2.29
KB
-rwxr-xr-x
unexpand
34.53
KB
-rwxr-xr-x
unicode_start
2.7
KB
-rwxr-xr-x
unicode_stop
530
B
-rwxr-xr-x
uniq
42.51
KB
-rwxr-xr-x
unity-scope-loader
14.38
KB
-rwxr-xr-x
unlink
30.51
KB
-rwxr-xr-x
unlzma
82.52
KB
-rwxr-xr-x
unmkinitramfs
3.69
KB
-rwxr-xr-x
unopkg
52
B
-rwxr-xr-x
unshare
30.6
KB
-rwxr-xr-x
unsquashfs
131.9
KB
-rwxr-xr-x
unxz
82.52
KB
-rwxr-xr-x
unzip
170.42
KB
-rwxr-xr-x
unzipsfx
78.42
KB
-rwxr-xr-x
unzstd
854.59
KB
-rwxr-xr-x
update-alternatives
58.24
KB
-rwxr-xr-x
update-desktop-database
22.38
KB
-rwxr-xr-x
update-manager
4.66
KB
-rwxr-xr-x
update-mime-database
58.23
KB
-rwxr-xr-x
update-notifier
82.98
KB
-rwxr-xr-x
upower
22.3
KB
-rwxr-xr-x
uptime
14.23
KB
-rwxr-xr-x
usb-creator-gtk
2.87
KB
-rwxr-xr-x
usb-devices
4.33
KB
-rwxr-xr-x
usbhid-dump
30.38
KB
-rwxr-xr-x
usbip
1.58
KB
-rwxr-xr-x
usbipd
1.58
KB
-rwxr-xr-x
usb_printerid
14.31
KB
-rwxr-xr-x
usbreset
14.3
KB
-rwxr-xr-x
users
34.51
KB
-rwxr-xr-x
utmpdump
22.38
KB
-rwxr-xr-x
uuidgen
18.38
KB
-rwxr-xr-x
uuidparse
22.38
KB
-rwxr-xr-x
vdir
134.98
KB
-rwxr-xr-x
vi
1.45
MB
-rwxr-xr-x
view
1.45
MB
-rwxr-xr-x
viewres
31.23
KB
-rwxr-xr-x
vim.tiny
1.45
MB
-rwxr-xr-x
vmstat
38.24
KB
-rwxr-xr-x
vmwarectrl
14.26
KB
-rwxr-xr-x
vstp
26.16
KB
-rwxr-xr-x
w
22.23
KB
-rwxr-xr-x
wall
22.38
KB
-rwxr-xr-x
watch
26.6
KB
-rwxr-xr-x
watchgnupg
18.3
KB
-rwxr-xr-x
wc
42.42
KB
-rwxr-xr-x
wdctl
30.4
KB
-rwxr-xr-x
wget
459.02
KB
-rwxr-xr-x
whatis
47.28
KB
-rwxr-xr-x
whereis
30.84
KB
-rwxr-xr-x
which
946
B
-rwxr-xr-x
which.debianutils
946
B
-rwxr-xr-x
whiptail
30.16
KB
-rwxr-xr-x
who
50.52
KB
-rwxr-xr-x
whoami
30.51
KB
-rwxr-xr-x
whois
155.66
KB
-rwxr-xr-x
whoopsie
46.9
KB
-rwxr-xr-x
whoopsie-preferences
22.14
KB
-rwxr-xr-x
word-list-compress
14.3
KB
-rwxr-xr-x
wpa_passphrase
14.31
KB
-rwxr-xr-x
write
22.38
KB
-rwxr-xr-x
write.ul
22.38
KB
-rwxr-xr-x
X
274
B
-rwxr-xr-x
x11perf
197.46
KB
-rwxr-xr-x
x11perfcomp
2.74
KB
-rwxr-xr-x
x86_64
26.65
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp
906.82
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp-11
906.82
KB
-rwxr-xr-x
x86_energy_perf_policy
1.58
KB
-rwxr-xr-x
xargs
62.41
KB
-rwxr-xr-x
xauth
54.96
KB
-rwxr-xr-x
xbiff
24.16
KB
-rwxr-xr-x
xbrlapi
198.5
KB
-rwxr-xr-x
xcalc
47.48
KB
-rwxr-xr-x
xclipboard
22.58
KB
-rwxr-xr-x
xclock
61.06
KB
-rwxr-xr-x
xcmsdb
35.05
KB
-rwxr-xr-x
xconsole
23.2
KB
-rwxr-xr-x
xcursorgen
22.3
KB
-rwxr-xr-x
xcutsel
18.56
KB
-rwxr-xr-x
xdg-dbus-proxy
50.14
KB
-rwxr-xr-x
xdg-desktop-icon
20.16
KB
-rwxr-xr-x
xdg-desktop-menu
42.27
KB
-rwxr-xr-x
xdg-email
26.3
KB
-rwxr-xr-x
xdg-icon-resource
29.33
KB
-rwxr-xr-x
xdg-mime
41.14
KB
-rwxr-xr-x
xdg-open
25.46
KB
-rwxr-xr-x
xdg-screensaver
37.11
KB
-rwxr-xr-x
xdg-settings
37.52
KB
-rwxr-xr-x
xdg-user-dir
234
B
-rwxr-xr-x
xdg-user-dirs-gtk-update
22.15
KB
-rwxr-xr-x
xdg-user-dirs-update
26.23
KB
-rwxr-xr-x
xditview
108.13
KB
-rwxr-xr-x
xdpyinfo
39.05
KB
-rwxr-xr-x
xdriinfo
14.3
KB
-rwxr-xr-x
xedit
709.34
KB
-rwxr-xr-x
Xephyr
2.35
MB
-rwxr-xr-x
xev
34.63
KB
-rwxr-xr-x
xeyes
23.69
KB
-rwxr-xr-x
xfd
40.01
KB
-rwxr-xr-x
xfontsel
43.85
KB
-rwxr-xr-x
xgamma
14.31
KB
-rwxr-xr-x
xgc
70.38
KB
-rwxr-xr-x
xhost
18.31
KB
-rwxr-xr-x
xinit
22.3
KB
-rwxr-xr-x
xinput
62.83
KB
-rwxr-xr-x
xkbbell
14.32
KB
-rwxr-xr-x
xkbcomp
212.1
KB
-rwxr-xr-x
xkbevd
42.38
KB
-rwxr-xr-x
xkbprint
90.34
KB
-rwxr-xr-x
xkbvleds
23.1
KB
-rwxr-xr-x
xkbwatch
23.16
KB
-rwxr-xr-x
xkeystone
16.58
KB
-rwxr-xr-x
xkill
14.3
KB
-rwxr-xr-x
xload
22.92
KB
-rwxr-xr-x
xlogo
23.19
KB
-rwxr-xr-x
xlsatoms
14.3
KB
-rwxr-xr-x
xlsclients
18.31
KB
-rwxr-xr-x
xlsfonts
26.4
KB
-rwxr-xr-x
xmag
48.31
KB
-rwxr-xr-x
xman
77.2
KB
-rwxr-xr-x
xmessage
23.12
KB
-rwxr-xr-x
xmodmap
42.68
KB
-rwxr-xr-x
xmore
14.53
KB
-rwxr-xr-x
Xorg
274
B
-rwxr-xr-x
xprop
48.61
KB
-rwxr-xr-x
xqxdecode
18.31
KB
-rwxr-xr-x
xrandr
62.41
KB
-rwxr-xr-x
xrdb
34.4
KB
-rwxr-xr-x
xrefresh
14.38
KB
-rwxr-xr-x
x-session-manager
803
B
-rwxr-xr-x
xset
34.31
KB
-rwxr-xr-x
xsetmode
14.31
KB
-rwxr-xr-x
xsetpointer
14.31
KB
-rwxr-xr-x
xsetroot
18.31
KB
-rwxr-xr-x
xsetwacom
63.84
KB
-rwxr-xr-x
xsm
98.71
KB
-rwxr-xr-x
xstdcmap
14.89
KB
-rwxr-xr-x
xsubpp
5.05
KB
-rwxr-xr-x
x-terminal-emulator
2.65
KB
-rwxr-xr-x
xvidtune
43.76
KB
-rwxr-xr-x
xvinfo
18.3
KB
-rwxr-xr-x
Xwayland
2.12
MB
-rwxr-xr-x
xwd
30.31
KB
-rwxr-xr-x
xwininfo
50.38
KB
-rwxr-xr-x
xwud
34.3
KB
-rwxr-xr-x
x-www-browser
2.32
KB
-rwxr-xr-x
xxd
18.28
KB
-rwxr-xr-x
xz
82.52
KB
-rwxr-xr-x
xzcat
82.52
KB
-rwxr-xr-x
xzcmp
6.86
KB
-rwxr-xr-x
xzdiff
6.86
KB
-rwxr-xr-x
xzegrep
5.87
KB
-rwxr-xr-x
xzfgrep
5.87
KB
-rwxr-xr-x
xzgrep
5.87
KB
-rwxr-xr-x
xzless
1.76
KB
-rwxr-xr-x
xzmore
2.11
KB
-rwxr-xr-x
yelp
66.23
KB
-rwxr-xr-x
yes
30.38
KB
-rwxr-xr-x
ypdomainname
22.23
KB
-rwxr-xr-x
zcat
1.94
KB
-rwxr-xr-x
zcmp
1.64
KB
-rwxr-xr-x
zdiff
5.76
KB
-rwxr-xr-x
zdump
26.21
KB
-rwxr-xr-x
zegrep
29
B
-rwxr-xr-x
zenity
128.75
KB
-rwxr-xr-x
zfgrep
29
B
-rwxr-xr-x
zforce
2.03
KB
-rwxr-xr-x
zgrep
7.91
KB
-rwxr-xr-x
zip
198.99
KB
-rwxr-xr-x
zipcloak
70.4
KB
-rwxr-xr-x
zipdetails
58.66
KB
-rwxr-xr-x
zipgrep
2.89
KB
-rwxr-xr-x
zipinfo
170.42
KB
-rwxr-xr-x
zipnote
62.4
KB
-rwxr-xr-x
zipsplit
58.4
KB
-rwxr-xr-x
zjsdecode
26.32
KB
-rwxr-xr-x
zless
2.15
KB
-rwxr-xr-x
zmore
1.8
KB
-rwxr-xr-x
znew
4.47
KB
-rwxr-xr-x
zstd
854.59
KB
-rwxr-xr-x
zstdcat
854.59
KB
-rwxr-xr-x
zstdgrep
3.78
KB
-rwxr-xr-x
zstdless
30
B
-rwxr-xr-x
zstdmt
854.59
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : hp-scan
#!/usr/bin/python3 # -*- coding: utf-8 -*- # # (c) Copyright 2003-2015 HP Development Company, L.P. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Author: Don Welch # Contributors: Sarbeswar Meher # __version__ = '2.2' __mod__ = 'hp-scan' __title__ = 'Scan Utility' __doc__ = "SANE-based scan utility for HPLIP supported all-in-one/mfp devices." # Std Lib import sys import os import os.path import getopt import signal import time import socket import operator # Local from base.g import * from base.sixext import PY3 from base import tui, device, module, utils, os_utils from prnt import cups from scan import sane scanext = utils.import_ext('scanext') #if con_device == 5000 or con_device == 7500: import platform #from datetime import datetime try: from base import imageprocessing except ImportError: print (" ") #from PIL import ImageStat username = prop.username r = res = 300 scan_mode = 'gray' tlx = None tly = None brx = None bry = None units = "mm" output = '' dest = [] email_from = '' email_to = [] email_subject = 'hp-scan from %s' % socket.gethostname() email_note = '' resize = 100 brightness = 0 set_brightness = False color_dropout_red = 0 set_color_dropout = False color_dropout_green = 0 color_dropout_blue = 0 color_range_value = 0 contrast = 0 set_contrast = False page_size = '' size_desc = '' page_units = 'mm' default_res = 300 scanner_compression = 'JPEG' adf = False duplex = False dest_printer = None dest_devUri = None uiscan = False #if con_device == 5000 or con_device == 7500: sharpness = 0 set_sharpness = False color_value = 0 set_color_value = False barcode_found = 0 barcode_data = list() barcode_count =0 barcode_first_occurence = True barcode_first_page = False save_file = '' output_path = os.getcwd() ext = ".png" multipick = False blank_page = False isBlankPage = False auto_orient = False crushed = False bg_color_removal = False punchhole_removal = False auto_crop = False deskew_image = False lineart_mode = False document_merge = False mixed_feed = False back_side = False batchsepBC = False batchsepBP = False barcode = False merge_ADF_Flatbed = False temp_list = [] blankpage_found = 0 bp_no = 0 pyPlatform = 0 blankpage_data = list() blankpage_count =0 blankpage_first_occurence = True blankpage_first_page = False orient = 0 orient_list = [] multipick_error_message = "The scan operation has been cancelled or a multipick or paper is jammed in the ADF.\nIf you cancelled the scan,click OK.\nIf the scan was terminated due to a multi-feed or paper jam in the ADF,\ndo the following:\n\n1)Clear the ADF path. For instructions see your product documentation.\n2)Check the sheets are not stuck together. Remove any staples, sticky notes,tape or other objects.\n3)Restart the scan\n\nNote:If necessary, turn off automatic detection of multi-pick before starting a new scan\n" SANE_STATUS_MULTIPICK=12 SANE_STATUS_JAMMED=6 PAGE_SIZES = { # in mm '5x7' : (127, 178, "5x7 photo", 'in'), '4x6' : (102, 152, "4x6 photo", 'in'), '3x5' : (76, 127, "3x5 index card", 'in'), 'a2_env' : (111, 146, "A2 Envelope", 'in'), 'a3' : (297, 420, "A3", 'mm'), "a4" : (210, 297, "A4", 'mm'), "a5" : (148, 210, "A5", 'mm'), "a6" : (105, 148, "A6", 'mm'), "b4" : (257, 364, "B4", 'mm'), "b5" : (182, 257, "B5", 'mm'), "c6_env" : (114, 162, "C6 Envelope", 'in'), "dl_env" : (110, 220, "DL Envelope", 'in'), "exec" : (184, 267, "Executive", 'in'), "flsa" : (216, 330, "Flsa", 'mm'), "higaki" : (100, 148, "Hagaki", 'mm'), "japan_env_3" : (120, 235, "Japanese Envelope #3", 'mm'), "japan_env_4" : (90, 205, "Japanese Envelope #4", 'mm'), "legal" : (215, 356, "Legal", 'in'), "letter" : (215, 279, "Letter", 'in'), "no_10_env" : (105, 241, "Number 10 Envelope", 'in'), "oufufu-hagaki" : (148, 200, "Oufuku-Hagaki", 'mm'), "photo" : (102, 152, "Photo", 'in'), "super_b" : (330, 483, "Super B", 'in'), } def createPagesFile(adf_page_files,pages_file,file_type='.png'): #print ("called create page files") #print (adf_page_files) if not 'hpscan' in pages_file: pages_file=pages_file+'_' output = utils.createBBSequencedFilename(pages_file, file_type, output_path) if file_type == '.pdf': if len(adf_page_files): try: output = imageprocessing.generatePdfFile(adf_page_files,output) except ImportError: try: output = imageprocessing.generatePdfFile_canvas(adf_page_files,output,orient_list,brx,bry,tlx,tly,output_path) except ImportError as error: if error.message.split(' ')[-1] == 'PIL': log.error("PDF output requires PIL.") else: log.error("PDF output requires ReportLab.") sys.exit(1) temp_list.append(output) #print temp_list #imageprocessing.merge_PDF_viewer(output) #cmd = "%s %s &" % (pdf_viewer, output) #os_utils.execute(cmd) elif file_type == '.tiff': file_name = '' #print "entered tiff" #print adf_page_files for p in adf_page_files: file_name = file_name + " " + p cmd = "convert %s %s" %(file_name,output) status = utils.run(cmd) #print ("***********************") #print (status[0]) #print (status[1]) if status[0] == -1: #print ("entered status -1") log.error("Convert command not found.") sys.exit(6) #print adf_page_files for p in adf_page_files: os.remove(p) #temp_list.append(output) else: for p in adf_page_files: im = Image.open(p) output = utils.createBBSequencedFilename(pages_file, file_type, output_path) try: im.save(output,compress_level=1,quality=55) except: im = im.convert("RGB") im.save(output,compress_level=1,quality=55) os.unlink(p) try: viewer = '' viewer_list = ['kview', 'display', 'gwenview', 'eog', 'kuickshow',] for v in viewer_list: vv = utils.which(v) if vv: viewer = os.path.join(vv, v) break editor = '' editor_list = ['kolourpaint', 'gimp', 'krita', 'cinepaint', 'mirage',] for e in editor_list: ee = utils.which(e) if ee: editor = os.path.join(ee, e) break pdf_viewer = '' pdf_viewer_list = ['kpdf', 'acroread', 'xpdf', 'evince', 'xdg-open'] for v in pdf_viewer_list: vv = utils.which(v) if vv: pdf_viewer = os.path.join(vv, v) break mod = module.Module(__mod__, __title__, __version__, __doc__, None, (INTERACTIVE_MODE,)) extra_options=[utils.USAGE_SPACE, ("[OPTIONS] (General)", "", "header", False), ("Scan destinations:", "-s<dest_list> or --dest=<dest_list>", "option", False), ("", "where <dest_list> is a comma separated list containing one or more of: 'file'", "option", False), ("", ", 'viewer', 'editor', 'pdf', or 'print'. Use only commas between values, no spaces.", "option", False), ("Scan mode:", "-m<mode> or --mode=<mode>. Where <mode> is 'gray'\*, 'color' or 'lineart'.", "option", False), ("Scanning resolution:", "-r<resolution_in_dpi> or --res=<resolution_in_dpi> or --resolution=<resolution_in_dpi>", "option", False), ("", "where 300 is default.", "option", False), ("Image resize:", "--resize=<scale_in_%> (min=1%, max=400%, default=100%)", "option", False), ("Color Dropout Red :", "-color_dropout_red_value=<color_dropout_red_value> or --color_dropout_red_value=<color_dropout_red_value>", "option", False), ("Color Dropout Green :", "-color_dropout_green_value=<color_dropout_green_value> or --color_dropout_green_value=<color_dropout_green_value>", "option", False), ("Color Dropout Blue :", "-color_dropout_blue_value=<color_dropout_blue_value> or --color_dropout_blue_value=<color_dropout_blue_value>", "option", False), ("Color Dropout Range :", "-color_range=<color_range> or --color_range=<color_range>", "option", False), ("Image contrast:", "-c=<contrast> or --contrast=<contrast>", "option", False), ("", "The contrast range varies from device to device.", "option", False), ("Image brightness:", "-b=<brightness> or --brightness=<brightness>", "option", False), ("", "The brightness range varies from device to device.", "option", False), ("ADF mode:", "--adf (Note, only PDF output is supported when using the ADF)", "option", False), ("", "--duplex or --dup for duplex scanning using ADF.", "option", False), utils.USAGE_SPACE, ("[OPTIONS] (Scan area)", "", "header", False), ("Specify the units for area/box measurements:", "-t<units> or --units=<units>", "option", False), ("", "where <units> is 'mm'\*, 'cm', 'in', 'px', or 'pt' ('mm' is default).", "option", False), ("Scan area:", "-a<tlx>,<tly>,<brx>,<bry> or --area=<tlx>,<tly>,<brx>,<bry>", "option", False), ("", "Coordinates are relative to the upper left corner of the scan area.", "option", False), ("", "Units for tlx, tly, brx, and bry are specified by -t/--units (default is 'mm').", "option", False), ("", "Use only commas between values, no spaces.", "option", False), ("Scan box:", "--box=<tlx>,<tly>,<width>,<height>", "option", False), ("", "tlx and tly coordinates are relative to the upper left corner of the scan area.", "option", False), ("", "Units for tlx, tly, width, and height are specified by -t/--units (default is 'mm').", "option", False), ("", "Use only commas between values, no spaces.", "option", False), ("Top left x of the scan area:", "--tlx=<tlx>", "option", False), ("", "Coordinates are relative to the upper left corner of the scan area.", "option", False), ("", "Units are specified by -t/--units (default is 'mm').", "option", False), ("Top left y of the scan area:", "--tly=<tly>", "option", False), ("", "Coordinates are relative to the upper left corner of the scan area.", "option", False), ("", "Units are specified by -t/--units (default is 'mm').", "option", False), ("Bottom right x of the scan area:", "--brx=<brx>", "option", False), ("", "Coordinates are relative to the upper left corner of the scan area.", "option", False), ("", "Units are specified by -t/--units (default is 'mm').", "option", False), ("Bottom right y of the scan area:", "--bry=<bry>", "option", False), ("", "Coordinates are relative to the upper left corner of the scan area.", "option", False), ("", "Units are specified by -t/--units (default is 'mm').", "option", False), ("Specify the scan area based on a paper size:", "--size=<paper size name>", "option", False), ("", "where <paper size name> is one of: %s" % ', '.join(sorted(list(PAGE_SIZES.keys()))), "option", False), utils.USAGE_SPACE, ("[OPTIONS] ('file' dest)", "", "header", False), ("Filename for 'file' destination:", "-o<file> or -f<file> or --file=<file> or --output=<file>", "option", False), #("Destination:", "--path=<destination>", "option", False), utils.USAGE_SPACE, ("[OPTIONS] ('pdf' dest)", "", "header", False), ("PDF viewer application:", "--pdf=<pdf_viewer>", "option", False), utils.USAGE_SPACE, ("[OPTIONS] ('viewer' dest)", "", "header", False), ("Image viewer application:", "-v<viewer> or --viewer=<viewer>", "option", False), utils.USAGE_SPACE, ("[OPTIONS] ('editor' dest)", "", "header", False), ("Image editor application:", "-e<editor> or --editor=<editor>", "option", False), utils.USAGE_SPACE, ("[OPTIONS] ('email' dest)", "", "header", False), ("From: address for 'email' dest:", "--email-from=<email_from_address> (required for 'email' dest.)", "option", False), ("To: address for 'email' dest:", "--email-to=<email__to_address> (required for 'email' dest.)", "option", False), ("Email subject for 'email' dest:", '--email-subject="<subject>" or --subject="<subject>"', "option", False), ("", 'Use double quotes (") around the subject if it contains space characters.', "option", False), ("Note or message for the 'email' dest:", '--email-msg="<msg>" or --email-note="<note>"', "option", False), ("", 'Use double quotes (") around the note/message if it contains space characters.', "option", False), utils.USAGE_SPACE, ("[OPTIONS] ('printer' dest)", "", "header", False), ("Printer queue/printer dest:", "--dp=<printer_name> or --dest-printer=<printer_name>", "option", False), ("Printer device-URI dest:", "--dd=<device-uri> or --dest-device=<device-uri>", "option", False), utils.USAGE_SPACE, ("[OPTIONS] (advanced)", "", "header", False), ("Set the scanner compression mode:", "-x<mode> or --compression=<mode>, <mode>='raw', 'none' or 'jpeg' ('jpeg' is default) ('raw' and 'none' are equivalent)", "option", False),] scan_parseStdOpts = ['dest=', 'mode=', 'res=', 'resolution=', 'resize=', 'adf', 'duplex', 'dup', 'unit=', 'units=', 'area=', 'box=', 'tlx=', 'tly=', 'brx=', 'bry=', 'size=', 'file=', 'output=', 'pdf=', 'viewer=', 'email-from=', 'from=', 'email-to=', 'to=', 'email-msg=', 'msg=', 'printer=', 'compression=' , 'raw', 'jpeg', 'color', 'lineart', 'colour', 'bw', 'gray', 'grayscale', 'grey', 'greyscale', 'email-subject=', 'subject=', 'to=', 'from=', 'jpg', 'grey-scale', 'gray-scale', 'about=', 'editor=', 'dp=', 'dest-printer=', 'dd=', 'dest-device=', 'brightness=', 'contrast=','filetype=', 'path=', 'uiscan', 'sharpness=','color_dropout_red_value=','color_dropout_green_value=','color_dropout_blue_value=','color_range=', 'color_value=','multipick','autoorient','blankpage','batchsepBP','mixedfeed', 'crushed', 'bg_color_removal','punchhole_removal','docmerge','adf_fladbed_merge','batchsepBC','deskew','autocrop','backside'] mod.setUsage(module.USAGE_FLAG_DEVICE_ARGS, extra_options, see_also_list=[]) #print devicelist #print "parse scan opts" opts, device_uri, printer_name, mode, ui_toolkit, lang = \ mod.parseStdOpts('s:m:r:c:t:a:b:o:v:f:c:x:e:', scan_parseStdOpts) #print device_uri sane.init() sane_devices = sane.getDevices() devicelist = {} for d, mfg, mdl, t in sane_devices: try: devicelist[d] except KeyError: devicelist[d] = [mdl] else: devicelist[d].append(mdl) sane.deInit() #print devicelist #print "near getdevice uri" device_uri = mod.getDeviceUri(device_uri, printer_name, back_end_filter=['hpaio'], filter={'scan-type': (operator.gt, 0)}, devices=devicelist) #print device_uri if not device_uri: sys.exit(1) for o, a in opts: if o in ('-x', '--compression'): a = a.strip().lower() if a in ('jpeg', 'jpg'): scanner_compression = 'JPEG' elif a in ('raw', 'none'): scanner_compression = 'None' else: log.error("Invalid compression value. Valid values are 'jpeg', 'raw', and 'none'.") log.error("Using default value of 'jpeg'.") scanner_compression = 'JPEG' elif o == '--filetype': #a=a.strp().lower() #print (a) if a == 'png': save_file = 'png' ext = ".png" elif a == 'jpg': save_file = 'jpg' ext = ".jpg" elif a == 'pdf': save_file = 'pdf' ext = ".pdf" elif a == 'tiff': save_file = 'tiff' ext = '.tiff' elif a == 'bmp': save_file = 'bmp' ext = '.bmp' else: save_file = 'png' ext = ".png" elif o == '--path': output_path = a elif o == 'raw': scanner_compression = 'None' elif o == 'jpeg': scanner_compression = 'JPEG' elif o in ('--color', '--colour'): scan_mode = 'color' elif o in ('--lineart', '--line-art', '--bw'): scan_mode = 'lineart' elif o in ('--gray', '--grayscale', '--gray-scale', '--grey', '--greyscale', '--grey-scale'): scan_mode = 'gray' elif o in ('-m', '--mode'): a = a.strip().lower() if a in ('color', 'colour'): scan_mode = 'color' elif a in ('lineart', 'bw', 'b&w'): if (re.search(r'_7500', device_uri)): log.error("lineart mode is not supported for this device.") sys.exit(1) scan_mode = 'lineart' elif a in ('gray', 'grayscale', 'grey', 'greyscale'): scan_mode = 'gray' else: log.error("Invalid mode. Using default of 'gray'.") log.error("Valid modes are 'color', 'lineart', or 'gray'.") scan_mode = 'gray' elif o in ('--res', '--resolution', '-r'): try: r = int(a.strip()) except ValueError: log.error("Invalid value for resolution.") res = default_res else: res = r elif o in ('-t', '--units', '--unit'): a = a.strip().lower() if a in ('in', 'inch', 'inches'): units = 'in' elif a in ('mm', 'milimeter', 'milimeters', 'millimetre', 'millimetres'): units = 'mm' elif a in ('cm', 'centimeter', 'centimeters', 'centimetre', 'centimetres'): units = 'cm' elif a in ('px', 'pixel', 'pixels', 'pel', 'pels'): units = 'px' elif a in ('pt', 'point', 'points', 'pts'): units = 'pt' else: log.error("Invalid units. Using default of 'mm'.") units = 'mm' elif o == '--tlx': a = a.strip().lower() try: f = float(a) except ValueError: log.error("Invalid value for tlx.") else: tlx = f elif o == '--tly': a = a.strip().lower() try: f = float(a) except ValueError: log.error("Invalid value for tly.") else: tly = f elif o == '--brx': a = a.strip().lower() try: f = float(a) except ValueError: log.error("Invalid value for brx.") else: brx = f elif o == '--bry': a = a.strip().lower() try: f = float(a) except ValueError: log.error("Invalid value for bry.") else: bry = f elif o in ('-a', '--area'): # tlx, tly, brx, bry a = a.strip().lower() try: tlx, tly, brx, bry = a.split(',')[:4] except ValueError: log.error("Invalid scan area. Using defaults.") else: try: tlx = float(tlx) except ValueError: log.error("Invalid value for tlx. Using defaults.") tlx = None try: tly = float(tly) except ValueError: log.error("Invalid value for tly. Using defaults.") tly = None try: brx = float(brx) except ValueError: log.error("Invalid value for brx. Using defaults.") brx = None try: bry = float(bry) except ValueError: log.error("Invalid value for bry. Using defaults.") bry = None elif o == '--box': # tlx, tly, w, h a = a.strip().lower() try: tlx, tly, width, height = a.split(',')[:4] except ValueError: log.error("Invalid scan area. Using defaults.") else: try: tlx = float(tlx) except ValueError: log.error("Invalid value for tlx. Using defaults.") tlx = None try: tly = float(tly) except ValueError: log.error("Invalid value for tly. Using defaults.") tly = None if tlx is not None: try: brx = float(width) + tlx except ValueError: log.error("Invalid value for width. Using defaults.") brx = None else: log.error("Cannot calculate brx since tlx is invalid. Using defaults.") brx = None if tly is not None: try: bry = float(height) + tly except ValueError: log.error("Invalid value for height. Using defaults.") bry = None else: log.error("Cannot calculate bry since tly is invalid. Using defaults.") bry = None elif o == '--size': size = a.strip().lower() if size in PAGE_SIZES: brx, bry, size_desc, page_units = PAGE_SIZES[size] tlx, tly = 0, 0 page_size = size else: log.error("Invalid page size. Valid page sizes are: %s" % ', '.join(list(PAGE_SIZES.keys()))) log.error("Using defaults.") elif o in ('-o', '--output', '-f', '--file'): output = os.path.abspath(os.path.normpath(os.path.expanduser(a.strip()))) try: ext = os.path.splitext(output)[1] except IndexError: log.error("Invalid filename extension.") output = '' if 'file' in dest: dest.remove('file') else: if ext.lower() not in ('.jpg', '.png', '.pdf'): log.error("Only JPG (.jpg), PNG (.png) and PDF (.pdf) output files are supported.") output = '' if 'file' in dest: dest.remove('file') else: if os.path.exists(output): log.warn("Output file '%s' exists. File will be overwritten." % output) if 'file' not in dest: dest.append('file') elif o in ('-s', '--dest', '--destination'): a = a.strip().lower().split(',') for aa in a: aa = aa.strip() if aa in ('file', 'viewer', 'editor', 'print', 'email', 'pdf') \ and aa not in dest: dest.append(aa) elif o in ('--dd', '--dest-device'): dest_devUri = a.strip() if 'print' not in dest: dest.append('print') elif o in ('--dp', '--dest-printer'): dest_printer = a.strip() if 'print' not in dest: dest.append('print') elif o in ('-v', '--viewer'): a = a.strip() b = utils.which(a) if not b: log.error("Viewer application not found.") else: viewer = os.path.join(b, a) if 'viewer' not in dest: dest.append('viewer') elif o in ('-e', '--editor'): a = a.strip() b = utils.which(a) if not b: log.error("Editor application not found.") else: editor = os.path.join(b, a) if 'editor' not in dest: dest.append('editor') elif o == '--pdf': a = a.strip() b = utils.which(a) if not b: log.error("PDF viewer application not found.") else: pdf_viewer = os.path.join(b, a) if 'pdf' not in dest: dest.append('pdf') elif o in ('--email-to', '--to'): email_to = a.split(',') if 'email' not in dest: dest.append('email') elif o in ('--email-from', '--from'): email_from = a if 'email' not in dest: dest.append('email') elif o in ('--email-subject', '--subject', '--about'): email_subject = a if 'email' not in dest: dest.append('email') elif o in ('--email-note', '--email-msg', '--msg', '--message', '--note', '--notes'): email_note = a if 'email' not in dest: dest.append('email') elif o == '--resize': a = a.replace("%", "") try: resize = int(a) except ValueError: resize = 100 log.error("Invalid resize value. Using default of 100%.") elif o in ('-color_dropout_red_value', '--color_dropout_red_value'): try: set_color_dropout = True color_dropout_red = int(a) except ValueError: log.error("Invalid color dropout value. Using default 0 .") color_dropout_red = 0 elif o in ('-color_dropout_green_value', '--color_dropout_green_value'): try: set_color_dropout = True color_dropout_green = int(a) except ValueError: log.error("Invalid color dropout value. Using default 0 .") color_dropout_green = 0 elif o in ('-color_dropout_blue_value', '--color_dropout_blue_value'): try: set_color_dropout = True color_dropout_blue = int(a) except ValueError: log.error("Invalid color dropout value. Using default of [0:0:0] .") color_dropout_blue = 0 elif o in ('-color_range', '--color_range'): try: set_color_dropout = True color_range_value = int(a) except ValueError: log.error("Invalid color dropout value. Using default of [0:0:0] .") color_range_value = 49 elif o in ('-b', '--brightness'): try: set_brightness = True brightness = float(a.strip()) except ValueError: log.error("Invalid brightness value. Using default of 0.") brightness = 0 elif o in ('-c', '--contrast'): try: set_contrast = True contrast = float(a.strip()) except ValueError: log.error("Invalid contrast value. Using default of 0.") contrast = 0 elif o in ('--sharpness'): try: set_sharpness = True #contrast = int(a.strip()) sharpness = float(a.strip()) #print sharpness except ValueError: log.error("Invalid sharpness value. Using default of 0.") sharpness = 0 elif o in ('--color_value'): try: set_color_value = True #contrast = int(a.strip()) color_value = float(a.strip()) #print color_value except ValueError: log.error("Invalid color_value. Using default of 0.") color_value = 0 elif o == '--adf': adf = True if uiscan == False: output_type = 'pdf' elif o in ('--dup', '--duplex'): duplex = True adf = True if uiscan == False: output_type = 'pdf' elif o == '--blankpage': try: blank_page = True except ValueError: log.error("Invalid Option.Using default of False") blank_page = False elif o == '--multipick': try: multipick = True #scanext.setMultipick(multipick) except ValueError: log.error("Invalid Option.Using default of False") multipick = False elif o == '--autocrop': try: auto_crop = True except ValueError: log.error("Invalid Option.Using default of False") auto_crop = False elif o == '--deskew': try: deskew_image = True except ValueError: log.error("Invalid Option.Using default of False") deskew_image = False elif o == '--autoorient': #print o try: auto_orient = True except ValueError: log.error("Invalid Option.Using default of False") auto_orient = False elif o == '--crushed': #print o try: crushed = True except ValueError: log.error("Invalid Option.Using default of False") crushed = False elif o == '--bg_color_removal': #print o try: bg_color_removal = True except ValueError: log.error("Invalid Option.Using default of False") bg_color_removal = False elif o == '--punchhole_removal': #print o try: punchhole_removal = True except ValueError: log.error("Invalid Option.Using default of False") punchhole_removal = False elif o == '--mixedfeed': try: mixed_feed = True except ValueError: log.error("Invalid Option.Using default of False") mixed_feed = False elif o == '--backside': try: back_side = True duplex = True except ValueError: log.error("Invalid Option.Using default of False") back_side = False elif o == '--docmerge': try: document_merge = True except ValueError: log.error("Invalid Option.Using default of False") document_merge = False elif o == '--adf_fladbed_merge': try: merge_ADF_Flatbed = True except ValueError: log.error("Invalid Option.Using default of False") merge_ADF_Flatbed = False elif o == '--batchsepBC': try: batchsepBC = True except ValueError: log.error("Invalid Option.Using default of False") batchsepBC = False elif o == '--batchsepBP': try: batchsepBP = True except ValueError: log.error("Invalid Option.Using default of False") batchsepBP = False elif o == '--uiscan': try: uiscan = True except ValueError: log.error("Invalid Option.Using default of False") uiscan = False if not dest: if uiscan == False: log.warn("No destinations specified. Adding 'file' destination by default.") dest.append('file') if 'email' in dest and (not email_from or not email_to): log.error("Email specified, but email to and/or email from address(es) were not specified.") log.error("Disabling 'email' destination.") dest.remove("email") if page_size: units = 'mm' if units == 'in': if tlx is not None: tlx = tlx * 25.4 if tly is not None: tly = tly * 25.4 if brx is not None: brx = brx * 25.4 if bry is not None: bry = bry * 25.4 elif units == 'cm': if tlx is not None: tlx = tlx * 10.0 if tly is not None: tly = tly * 10.0 if brx is not None: brx = brx * 10.0 if bry is not None: bry = bry * 10.0 elif units == 'pt': if tlx is not None: tlx = tlx * 0.3528 if tly is not None: tly = tly * 0.3528 if brx is not None: brx = brx * 0.3528 if bry is not None: bry = bry * 0.3528 elif units == 'px': log.warn("Units set to pixels. Using resolution of %ddpi for area calculations." % res) if tlx is not None: tlx = tlx / res * 25.4 if tly is not None: tly = tly / res * 25.4 if brx is not None: brx = brx / res * 25.4 if bry is not None: bry = bry / res * 25.4 if tlx is not None and brx is not None and tlx >= brx: log.error("Invalid values for tlx (%d) and brx (%d) (tlx>=brx). Using defaults." % (tlx, brx)) tlx = brx = None if tly is not None and bry is not None and tly >= bry: log.error("Invalid values for tly (%d) and bry (%d) (tly>=bry). Using defaults." % (tly, bry)) tly = bry = None if not prop.scan_build: log.error("Scanning disabled in build. Exiting") sys.exit(1) if mode == GUI_MODE: log.error("GUI mode is not implemented yet. Refer to 'hp-scan -h' for help.") sys.exit(1) else: # INTERACTIVE_MODE from base.sixext.moves import queue try: import subprocess except ImportError: # Pre-2.4 Python from base import subproc as subprocess try: from PIL import Image except ImportError: log.error("%s requires the Python Imaging Library (PIL). Exiting." % __mod__) if PY3: # Workaround due to incomplete Python3 support in Linux distros. log.notice(log.bold("Manually install the PIL package. More information is available at http://hplipopensource.com/node/369")) sys.exit(1) sane.init() # Commenting redundant getDevices() call since device list are already fetched in the beginning #devices = sane.getDevices() # Make sure SANE backend sees the device... #for d, mfg, mdl, t in devices: # if d == device_uri: # break #else: # log.error("Unable to locate device %s using SANE backend hpaio:. Please check HPLIP installation." % device_uri) # sys.exit(1) if uiscan == False: log.info(log.bold("Using device %s" % device_uri)) log.info("Opening connection to device...") try: device = sane.openDevice(device_uri) except scanext.error as e: if multipick and e.args[0] == SANE_STATUS_MULTIPICK: log.error(multipick_error_message) sys.exit(2) if e.args[0] == SANE_STATUS_JAMMED: log.error(multipick_error_message) sys.exit(7) sane.reportError(e.args[0]) sys.exit(1) try: source_option = device.getOptionObj("source").constraint log.debug("Supported source Options: %s size=%d" % (source_option,len(source_option))) if source_option is None: log.error("Device doesn't have scanner.") sys.exit(1) except: log.error("Failed to get the source from device.") sys.exit(1) #check if device has only ADF if len(source_option) == 1 and 'ADF' in source_option: log.debug("Device has only ADF support") adf = True elif len(source_option) == 3 and ('ADF-SinglePage' in source_option) and ('ADF-MultiPage-Simplex' in source_option) and ('ADF-MultiPage-Duplex' in source_option): log.debug("Device has only ADF support") adf = True elif len(source_option) == 2 and ('ADF' in source_option) and ('Duplex' in source_option): log.debug("Device has only ADF support") adf = True if adf: try: if ('ADF' not in source_option) and ('ADF-SinglePage' not in source_option) and ('ADF-MultiPage-Simplex' not in source_option) and ('ADF-MultiPage-Duplex' not in source_option) and ('ADF Simplex' not in source_option) and ('ADF Duplex' not in source_option): log.error("Failed to set ADF mode. This device doesn't support ADF.") sys.exit(1) else: if duplex == True: if 'Duplex' in source_option: device.setOption("source", "Duplex") elif 'ADF-MultiPage-Duplex' in source_option: device.setOption("source", "ADF-MultiPage-Duplex") elif 'ADF Duplex' in source_option: device.setOption("source", "ADF Duplex") else: log.warn("Device doesn't support Duplex scanning. Continuing with Simplex ADF scan.") if 'ADF-SinglePage' in source_option: device.setOption("source", "ADF-SinglePage") elif 'ADF-MultiPage-Simplex' in source_option: device.setOption("source", "ADF-MultiPage-Simplex") else: device.setOption("source", "ADF") else: if 'ADF-SinglePage' in source_option: device.setOption("source", "ADF-SinglePage") elif 'ADF-MultiPage-Simplex' in source_option: device.setOption("source", "ADF-MultiPage-Simplex") elif 'ADF Simplex' in source_option: device.setOption("source", "ADF Simplex") else: device.setOption("source", "ADF") device.setOption("batch-scan", True) except scanext.error: log.error("Error in setting ADF mode Duplex=%d." % duplex) sys.exit(1) else: try: device.setOption("source", "Flatbed") device.setOption("batch-scan", False) except scanext.error: log.debug("Error setting source or batch-scan option (this is probably OK).") if multipick and (not re.search(r'_2000_s2', device_uri)) : MPICK = 1 device.setOption("multi-pick", int(MPICK)) else: MPICK = 0 device.setOption("multi-pick", int(MPICK)) tlx = device.getOptionObj('tl-x').limitAndSet(tlx) tly = device.getOptionObj('tl-y').limitAndSet(tly) brx = device.getOptionObj('br-x').limitAndSet(brx) bry = device.getOptionObj('br-y').limitAndSet(bry) scan_area = (brx - tlx) * (bry - tly) # mm^2 valid_res = device.getOptionObj('resolution').constraint log.debug("Device supported resolutions %s" % (valid_res,)) if 0 in valid_res: #min-max range in tuple if res < valid_res[0] or res > valid_res[1]: log.warn("Invalid resolution. Using closest valid resolution of %d dpi" % res) if res < valid_res[0]: res = valid_res[0] elif res > valid_res[1]: res = valid_res[1] else: if res not in valid_res: log.warn("Invalid resolution. Using closest valid resolution of %d dpi" % res) log.warn("Valid resolutions are %s dpi." % ', '.join([str(x) for x in valid_res])) res = valid_res[0] min_dist = sys.maxsize for x in valid_res: if abs(r-x) < min_dist: min_dist = abs(r-x) res = x res = device.getOptionObj('resolution').limitAndSet(res) scan_px = scan_area * res * res / 645.16 # res is in DPI if scan_mode == 'color': scan_size = scan_px * 3 # 3 bytes/px elif scan_mode == 'gray': scan_size = scan_px # 1 byte/px else: # lineart scan_size = scan_px // 8 if scan_size > 52428800: # 50MB if res > 600: log.warn("Using resolutions greater than 600 dpi will cause very large files to be created.") else: log.warn("The scan current parameters will cause very large files to be created.") log.warn("This can cause the scan to take a long time to complete and may cause your system to slow down.") log.warn("Approx. number of bytes to read from scanner: %s" % utils.format_bytes(scan_size, True)) device.setOption('compression', scanner_compression) if uiscan == False and set_contrast: contrast = int(contrast) try: valid_contrast = device.getOptionObj('contrast').constraint if contrast >= int(valid_contrast[0]) and contrast <= int(valid_contrast[1]): contrast = device.getOptionObj('contrast').limitAndSet(contrast) else: log.warn("Invalid contrast. Contrast range is (%d, %d). Using closest valid contrast of %d " % (int(valid_contrast[0]), int(valid_contrast[1]), contrast)) if contrast < int(valid_contrast[0]): contrast = int(valid_contrast[0]) elif contrast > int(valid_contrast[1]): contrast = int(valid_contrast[1]) device.setOption('contrast', contrast) except: log.warn("Unable to set contrast for this device. Using default of 0.") contrast = 0 if uiscan == False and set_brightness: brightness = int(brightness) #print device try: valid_brightness = device.getOptionObj('brightness').constraint if brightness >= int(valid_brightness[0]) and brightness <= int(valid_brightness[1]): brightness = device.getOptionObj('brightness').limitAndSet(brightness) else: log.warn("Invalid brightness. Brightness range is (%d, %d). Using closest valid brightness of %d " % (int(valid_brightness[0]), int(valid_brightness[1]), brightness)) if brightness < int(valid_brightness[0]): brightness = int(valid_brightness[0]) elif brightness > int(valid_brightness[1]): brightness = int(valid_brightness[1]) device.setOption('brightness', brightness) except: log.warn("Unable to set brightness for this device. Using default of 0.") brightness = 0 if brx - tlx <= 0.0 or bry - tly <= 0.0: log.error("Invalid scan area (width or height is negative).") sys.exit(1) if uiscan == False: log.info("") log.info("Resolution: %ddpi" % res) log.info("Mode: %s" % scan_mode) log.info("Compression: %s" % scanner_compression) if(set_contrast): if uiscan == False: log.info("Contrast: %d" % contrast) if(set_brightness): if uiscan == False: log.info("Brightness: %d" % brightness) if units == 'mm': if uiscan == False: log.info("Scan area (mm):") log.info(" Top left (x,y): (%fmm, %fmm)" % (tlx, tly)) log.info(" Bottom right (x,y): (%fmm, %fmm)" % (brx, bry)) log.info(" Width: %fmm" % (brx - tlx)) log.info(" Height: %fmm" % (bry - tly)) if page_size: units = page_units # for display purposes only if uiscan == False: log.info("Page size: %s" % size_desc) if units != 'mm': if uiscan == False: log.note("This scan area below in '%s' units may not be exact due to rounding errors." % units) if units == 'in': if uiscan == False: log.info("Scan area (in):") log.info(" Top left (x,y): (%fin, %fin)" % (tlx/25.4, tly/25.4)) log.info(" Bottom right (x,y): (%fin, %fin)" % (brx/25.4, bry/25.4)) log.info(" Width: %fin" % ((brx - tlx)/25.4)) log.info(" Height: %fin" % ((bry - tly)/25.4)) elif units == 'cm': if uiscan == False: log.info("Scan area (cm):") log.info(" Top left (x,y): (%fcm, %fcm)" % (tlx/10.0, tly/10.0)) log.info(" Bottom right (x,y): (%fcm, %fcm)" % (brx/10.0, bry/10.0)) log.info(" Width: %fcm" % ((brx - tlx)/10.0)) log.info(" Height: %fcm" % ((bry - tly)/10.0)) elif units == 'px': if uiscan == False: log.info("Scan area (px @ %ddpi):" % res) log.info(" Top left (x,y): (%fpx, %fpx)" % (tlx*res/25.4, tly*res/25.4)) log.info(" Bottom right (x,y): (%fpx, %fpx)" % (brx*res/25.4, bry*res/25.4)) log.info(" Width: %fpx" % ((brx - tlx)*res/25.4)) log.info(" Height: %fpx" % ((bry - tly)*res/25.4)) elif units == 'pt': if uiscan == False: log.info("Scan area (pt):") log.info(" Top left (x,y): (%fpt, %fpt)" % (tlx/0.3528, tly/0.3528)) log.info(" Bottom right (x,y): (%fpt, %fpt)" % (brx/0.3528, bry/0.3528)) log.info(" Width: %fpt" % ((brx - tlx)/0.3528)) log.info(" Height: %fpt" % ((bry - tly)/0.3528)) if uiscan == False: log.info("Destination(s): %s" % ', '.join(dest)) if 'file' in dest: if uiscan == False: log.info("Output file: %s" % output) update_queue = queue.Queue() event_queue = queue.Queue() available_scan_mode = device.getOptionObj("mode").constraint available_scan_mode = [x.lower() for x in available_scan_mode] log.debug("Supported modes: %s size=%d" % (available_scan_mode,len(available_scan_mode))) if scan_mode.lower() not in available_scan_mode: log.warn("Device doesn't support %s mode. Continuing with %s mode."%(scan_mode,available_scan_mode[0])) scan_mode = available_scan_mode[0] if re.search(r'hp2000S1', device_uri) or re.search(r'hpgt2500', device_uri): if scan_mode == 'gray': device.setOption("mode", 'Gray') elif scan_mode == 'color': device.setOption("mode", 'Color') elif scan_mode == 'lineart': device.setOption("mode", 'Lineart') else: device.setOption("mode", scan_mode) #For some devices, resolution is changed when we set 'source'. #Hence we need to set resolution here, after setting the 'source' device.setOption("resolution", res) if uiscan == False: if 'file' in dest and not output: if uiscan == False: log.warn("File destination enabled with no output file specified.") if adf: if uiscan == False: log.info("Setting output format to PDF for ADF mode.") '''if merge_ADF_Flatbed == True: output = utils.createSequencedFilename("hpscanMerge", ext,output_path) else:''' output = utils.createSequencedFilename("hpscan", ".pdf") output_type = 'pdf' else: if scan_mode == 'gray': if uiscan == False: log.info("Setting output format to PNG for greyscale mode.") output = utils.createSequencedFilename("hpscan", ".png") output_type = 'png' else: if uiscan == False: log.info("Setting output format to JPEG for color/lineart mode.") output = utils.createSequencedFilename("hpscan", ".jpg") output_type = 'jpeg' if uiscan == False: log.warn("Defaulting to '%s'." % output) #print (output_type) else: try: output_type = os.path.splitext(output)[1].lower()[1:] if output_type == 'jpg': output_type = 'jpeg' except IndexError: output_type = '' if output_type and output_type not in ('jpeg', 'png', 'pdf'): log.error("Invalid output file format. File formats must be 'jpeg', 'png' or 'pdf'.") sys.exit(1) if adf and output_type and output_type != 'pdf': log.error("ADF scans must be saved in PDF file format.") sys.exit(1) log.info("\nWarming up...") no_docs = False page = 1 backpage_count = 1 barcode_index=0 blankpage_index=0 adf_page_files = [] blank_cnt=0 page_list=[] cleanup_spinner() log.info("") try: #start=datetime.now() while True: if adf: if uiscan == False: log.info("\nPage %d: Scanning..." % page) else: if uiscan == False: log.info("\nScanning...") bytes_read = 0 try: try: ok, expected_bytes, status = device.startScan("RGBA", update_queue, event_queue) # Note: On some scanners (Marvell) expected_bytes will be < 0 (if lines == -1) log.debug("expected_bytes = %d" % expected_bytes) except scanext.error as e: if adf and e.args[0] == SANE_STATUS_MULTIPICK and multipick: log.error(multipick_error_message) sys.exit(2) if adf and (e.args[0] == SANE_STATUS_JAMMED) : log.error(multipick_error_message) sys.exit(7) sane.reportError(e.args[0]) sys.exit(1) except KeyboardInterrupt: log.error("Aborted.") device.cancelScan() sys.exit(1) if adf and status == scanext.SANE_STATUS_NO_DOCS: if page-1 == 0: if uiscan == False: log.error("No document(s). Please load documents and try again.") sys.exit(3) else: if uiscan == False: log.info("Out of documents. Scanned %d pages total." % (page-1)) no_docs = True break if adf and status == SANE_STATUS_MULTIPICK: if multipick: log.error(multipick_error_message) sys.exit(2) if adf and status == SANE_STATUS_JAMMED: log.error(multipick_error_message) sys.exit(7) if expected_bytes > 0: if adf: if uiscan == False: log.debug("Expecting to read %s from scanner (per page)." % utils.format_bytes(expected_bytes)) else: if uiscan == False: log.debug("Expecting to read %s from scanner." % utils.format_bytes(expected_bytes)) device.waitForScanActive() if uiscan == False: pm = tui.ProgressMeter("Reading data:") while device.isScanActive(): while update_queue.qsize(): try: status, bytes_read = update_queue.get(0) if not log.is_debug(): if expected_bytes > 0: if uiscan == False: pm.update(int(100*bytes_read/expected_bytes), utils.format_bytes(bytes_read)) else: if uiscan == False: pm.update(0, utils.format_bytes(bytes_read)) if status != scanext.SANE_STATUS_GOOD: if (status == SANE_STATUS_MULTIPICK and multipick) or (status == SANE_STATUS_JAMMED): log.error("ADF_MPD multipick or Jam error %d" % (status)) log.error("Error in reading data. Status=%d " % (status)) #sys.exit(2) #device.cancelScan() #Added by wipro #sys.exit(1) except queue.Empty: break time.sleep(0.5) except KeyboardInterrupt: log.error("Aborted.") device.cancelScan() sys.exit(1) # Make sure queue is cleared out... while update_queue.qsize(): status, bytes_read = update_queue.get(0) if not log.is_debug(): if expected_bytes > 0: if uiscan == False: pm.update(int(100*bytes_read/expected_bytes), utils.format_bytes(bytes_read)) else: if uiscan == False: pm.update(0, utils.format_bytes(bytes_read)) # For Marvell devices, making scan progress bar to 100% if bytes_read and bytes_read != expected_bytes: if uiscan == False: pm.update(int(100),utils.format_bytes(bytes_read)) log.info("") if bytes_read: if uiscan == False: log.info("Read %s from scanner." % utils.format_bytes(bytes_read)) buffer, format, format_name, pixels_per_line, \ lines, depth, bytes_per_line, pad_bytes, total_read, total_write = device.getScan() if uiscan == False: log.debug("PPL=%d lines=%d depth=%d BPL=%d pad=%d total_read=%d total_write=%d" % (pixels_per_line, lines, depth, bytes_per_line, pad_bytes, total_read, total_write)) #For Marvell devices, expected bytes is not same as total_read if lines == -1 or total_read != expected_bytes: lines = int(total_read / bytes_per_line) if scan_mode in ('color', 'gray'): try: im = Image.frombuffer('RGBA', (pixels_per_line, lines), buffer.read(), 'raw', 'RGBA', 0, 1) except ValueError: log.error("Did not read enough data from scanner (I/O Error?)") sys.exit(1) elif scan_mode == 'lineart': try: pixels_per_line = bytes_per_line * 8 # Calculation of pixels_per_line for Lineart must be 8 time of bytes_per_line lineart_mode = True # Otherwise, scanned image will be corrupted (slanted) im = Image.frombuffer('RGBA', (pixels_per_line, lines), buffer.read(), 'raw', 'RGBA', 0, 1).convert('L') except ValueError: log.error("Did not read enough data from scanner (I/O Error?)") sys.exit(1) if uiscan == True and back_side and backpage_count%2 != 0: pass else: #if blank_page: isBlankPage = imageprocessing.blankpage(im,lineart_mode) if document_merge and duplex and blank_page: if isBlankPage: if blank_cnt == 0: if page%2 != 0: blank_cnt += 1 page_list.append(page) else: if page-1 in page_list: blank_cnt += 1 else: if page%2 != 0: blank_cnt = 1 page_list[:] page_list.append(page) if blank_page and isBlankPage: if adf: if batchsepBP: blankpage_found=1 blankpage_count=blankpage_count+1 blankpage_index=blankpage_index+1 if page == 1: blankpage_first_page = True if not (document_merge and duplex): page += 1 continue else: sys.exit(0) elif isBlankPage: if adf and batchsepBP: blankpage_found=1 blankpage_count=blankpage_count+1 blankpage_index=blankpage_index+1 if page == 1: blankpage_first_page = True #if crushed: #im = imageprocessing.crushed(im) if deskew_image and (isBlankPage == False): if adf: im = imageprocessing.deskew(im) else: #im = imageprocessing.autocrop(im) im = imageprocessing.deskew(im) #if mixed_feed: #im = imageprocessing.mixedfeed(im) if auto_crop and (isBlankPage == False): im = imageprocessing.autocrop(im) if auto_orient: if not isBlankPage: orient = imageprocessing.orientangle(im) orient_list.append(orient) im = imageprocessing.autoorient(im, orient) else: orient_list.append(0) if uiscan == True and set_brightness: factor = brightness/100 #print factor im = imageprocessing.adjust_brightness(im, factor) if uiscan == True and set_contrast: factor = contrast/100 #print factor im = imageprocessing.adjust_contrast(im, factor) if set_sharpness: factor = sharpness/100 #print factor im = imageprocessing.adjust_sharpness(im, factor) if set_color_value: factor = color_value/100 #print factor im = imageprocessing.adjust_color(im, factor) pyPlatform = platform.python_version() num = pyPlatform.split('.') if batchsepBC and num[0] < '3': import zbar scanner = zbar.ImageScanner() scanner.parse_config('enable') log.debug("Here in barcode detection") bar_image = im.convert('L') width, height = bar_image.size raw_bar = bar_image.tobytes() my_stream = zbar.Image(width, height, 'Y800', raw_bar) scanner.scan(my_stream) #if barcode and batchsep: for symbol in my_stream: #print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data if symbol.data!='': barcode_found=1 barcode_data.append(symbol.data) barcode_count=barcode_count+1 barcode_index=barcode_index+1 if page == 1: barcode_first_page = True break; else: barcode_found=0 if punchhole_removal: im = imageprocessing.punchhole_removal(im) if set_color_dropout: im = imageprocessing.color_dropout(im,[color_dropout_red,color_dropout_green,color_dropout_blue],color_range_value) if bg_color_removal: im = imageprocessing.bg_color_removal(im) if crushed: im = imageprocessing.crushed(im) if uiscan == True: if adf: if (save_file == 'pdf'): if (not (document_merge and duplex and save_file == 'pdf')) or (imageprocessing.check_pypdf2() == None): #ext = ".png" im = im.convert("RGB") if barcode_count>0: if barcode_first_occurence == True: if barcode_first_page == False: createPagesFile(adf_page_files,'hpscan', ext) barcode_first_occurence = False else: createPagesFile(adf_page_files,barcode_data[len(barcode_data)-2], ext) barcode_count=barcode_count-1 del adf_page_files[:] if blankpage_count>0: if blankpage_first_occurence == True: if blankpage_first_page == False: createPagesFile(adf_page_files,'hpscan', ext) blankpage_first_occurence = False else: createPagesFile(adf_page_files,"batchSep_00%d"%bp_no, ext) blankpage_count=blankpage_count-1 bp_no += 1 del adf_page_files[:] '''if (save_file == 'pdf'): #ext = ".png" im = im.convert("RGB")''' if merge_ADF_Flatbed == True and save_file == 'pdf': temp_output = utils.createSequencedFilename("hpscanMerge", ext,output_path) else: if (document_merge and duplex and save_file == 'pdf') or (imageprocessing.check_pypdf2() != None): temp_output = utils.createSequencedFilename("hpscan", '.png', output_path) else: temp_output = utils.createSequencedFilename("hpscan",ext, output_path) adf_page_files.append(temp_output) #print "entered flatbed save" '''pyPlatform = platform.python_version() num = pyPlatform.split('.') if num[0] >= '3': im = im.convert("RGB")''' try: im.save(temp_output,compress_level=1,quality=55) except: im = im.convert("RGB") im.save(temp_output,compress_level=1,quality=55) '''if (save_file == 'pdf'): ext = ".pdf"''' if document_merge and duplex and blank_page: if blank_cnt == 2: os.unlink(adf_page_files.pop()) os.unlink(adf_page_files.pop()) blank_cnt = 0 page_list[:] elif uiscan == False: if adf or output_type == 'pdf': temp_output = utils.createSequencedFilename("hpscan_pg%d_" % page, ".png") adf_page_files.append(temp_output) im.save(temp_output,compress_level=1,quality=55) elif uiscan == True and status == scanext.SANE_STATUS_MULTIPICK and multipick: log.error("ADF_MPD multipick error %d" % (status)) log.error("Error in reading data. Status=%d bytes_read=%d." % (status, bytes_read)) sys.exit(2) elif uiscan == True and (status == SANE_STATUS_JAMMED): log.error("ADF_MPD multipick or Jam error %d" % (status)) log.error("Error in reading data. Status=%d bytes_read=%d." % (status, bytes_read)) sys.exit(7) else: log.error("No data read.") sys.exit(1) if not adf or (adf and no_docs): break page += 1 backpage_count += 1 #print "*** Total Time Taken \n" #print datetime.now()-start finally: if uiscan == False: log.info("Closing device.") device.cancelScan() #print "outside while" #if adf or output_type == 'pdf': #print (output_type) if adf and (save_file =='jpg' or save_file == 'png' or save_file == 'tiff' or save_file == 'pdf' or save_file == 'bmp'): #print save_file #start = datetime.now() #print "**** Starting Save File Process\n" if barcode_found == 1: createPagesFile(adf_page_files,barcode_data[len(barcode_data)-1], ext) #print "Saving File process Over\n" #print datetime.now()-start #print "\n#######################\n" #print temp_list if save_file == 'pdf': if len(temp_list): if uiscan == True: log.error("%s" % (temp_list)) sys.exit(5) sys.exit(0) if blankpage_found == 1: createPagesFile(adf_page_files,"batchSep_00%d"%bp_no, ext) #print "Saving File process Over\n" #print datetime.now()-start if save_file == 'pdf': if len(temp_list): if uiscan == True: log.error("%s" % (temp_list)) sys.exit(5) sys.exit(0) if document_merge and duplex : #print "entered docmerge" #print adf_page_files if len(adf_page_files): '''if document_merge and duplex and save_file == 'pdf': output = imageprocessing.documentmerge(adf_page_files,'.png',output_path) else:''' output = imageprocessing.documentmerge(adf_page_files,ext,output_path) if (save_file == 'pdf'): #cmd = "%s %s &" % (pdf_viewer, output) #os_utils.execute(cmd) if uiscan == True: log.error("%s" % (output)) #print "Saving File process Over\n" #print datetime.now()-start sys.exit(4) sys.exit(0) elif (save_file == 'tiff'): if len(adf_page_files) > 1: outputtiff = utils.createSequencedFilename("hpscandoc", ext,output_path) #print outputtiff file_name = '' for p in adf_page_files: file_name = file_name + " " + p cmd = "convert %s %s" %(file_name,outputtiff) status = utils.run(cmd) #print ("***********************") #print (status[0]) #print (status[1]) if status[0] == -1: #print ("entered status -1") log.error("Convert command not found.") sys.exit(6) for p in adf_page_files: #print p os.unlink(p) sys.exit(0) elif (save_file == 'pdf'): '''if not output: if merge_ADF_Flatbed == True: output = utils.createSequencedFilename("hpscanMerge", ext,output_path) else: output = utils.createSequencedFilename("hpscan", ext,output_path)''' if len(adf_page_files) > 0: #print "adf page files greater than 1" if merge_ADF_Flatbed == True: output = utils.createSequencedFilename("hpscanMerge", ext,output_path) else: output = utils.createSequencedFilename("hpscandoc", ext,output_path) try: if mixed_feed: output = imageprocessing.generatePdfFile(adf_page_files,output) else: output = imageprocessing.generatePdfFile_canvas(adf_page_files,output,orient_list,brx,bry,tlx,tly,output_path) except: try: if mixed_feed: output = imageprocessing.generatePdfFile_canvas(adf_page_files,output,orient_list,brx,bry,tlx,tly,output_path) else: output = imageprocessing.generatePdfFile(adf_page_files,output) except ImportError as error: if error.message.split(' ')[-1] == 'PIL': log.error("PDF output requires PIL.") else: log.error("PDF output requires ReportLab.") sys.exit(1) if merge_ADF_Flatbed == False: #cmd = "%s %s &" % (pdf_viewer, output) #os_utils.execute(cmd) #imageprocessing.merge_PDF_viewer(output) if len(adf_page_files): if uiscan == True: if output: log.error("%s" % (output)) elif temp_output: log.error("%s" % (temp_output)) sys.exit(4) #print "Saving File process Over\n" #print datetime.now()-start sys.exit(0) else: sys.exit(0) elif (uiscan == False) and (adf or output_type == 'pdf'): try: from reportlab.pdfgen import canvas except ImportError: log.error("PDF output requires ReportLab.") sys.exit(1) if not output: output = utils.createSequencedFilename("hpscan", ".pdf") c = canvas.Canvas(output, (brx/0.3528, bry/0.3528)) for p in adf_page_files: #log.info("Processing page %s..." % p) image = Image.open(p) try: c.drawInlineImage(image, (tlx/0.3528), (tly/0.3528), ((brx-tlx)/0.3528),((bry-tly)/0.3528)) except NameError: log.error("A problem has occurred with PDF generation. This is a known bug in ReportLab. Please update your install of ReportLab to version 2.0 or greater.") sys.exit(1) except AssertionError as e: log.error(e) if PY3: log.note("You might be running an older version of reportlab. Please update to the latest version") log.note("More information is available at http://hplipopensource.com/node/369") sys.exit(1) except Exception as e: log.error(e) log.note("Try Updating to reportlab version >= 3.2") sys.exit(1) c.showPage() os.unlink(p) log.info("Saving to file %s" % output) c.save() if uiscan == True: log.info("Viewing PDF file in %s" % pdf_viewer) cmd = "%s %s &" % (pdf_viewer, output) os_utils.execute(cmd) sys.exit(0) if resize != 100: if resize < 1 or resize > 400: log.error("Resize parameter is incorrect. Resize must be 0% < resize < 400%.") log.error("Using resize value of 100%.") else: new_w = int(pixels_per_line * resize / 100) new_h = int(lines * resize / 100) if uiscan == False: log.info("Resizing image from %dx%d to %dx%d..." % (pixels_per_line, lines, new_w, new_h)) im = im.resize((new_w, new_h), Image.ANTIALIAS) file_saved = False if 'file' in dest: if (save_file == 'png' or save_file == 'jpg' or save_file == 'tiff' or save_file == 'pdf' or save_file == 'bmp'): if barcode_found == 1: output = utils.createBBSequencedFilename(barcode_data[0]+'_', ext, output_path) else: if (save_file == 'pdf') and (merge_ADF_Flatbed == True): output = utils.createSequencedFilename("hpscanMerge", ext,output_path) else: output = utils.createSequencedFilename("hpscan",ext,output_path) if uiscan == False: log.info("\nOutputting to destination 'file':") try: if uiscan == True: log.info("Saving to file %s" % output) if save_file != 'pdf': '''pyPlatform = platform.python_version() num = pyPlatform.split('.') if num[0] >= '3': im = im.convert("RGB")''' try: im.save(output,compress_level=1,quality=55) except: im = im.convert("RGB") im.save(output,compress_level=1,quality=55) else: try: im.save(output,compress_level=1,quality=55) except: im = im.convert("RGB") im.save(output,compress_level=1,quality=55) '''from reportlab.pdfgen import canvas print "entered canvas" c = canvas.Canvas(output) if auto_orient and (orient == 1 or orient == 3): c.setPageSize(((bry-tly)/0.3528, (brx-tlx)/0.3528)) c.drawInlineImage(im, (tlx/0.3528), (tly/0.3528), ((bry-tly)/0.3528), ((brx-tlx)/0.3528)) else: c.setPageSize(((brx-tlx)/0.3528, (bry-tly)/0.3528)) c.drawInlineImage(im, (tlx/0.3528), (tly/0.3528), ((brx-tlx)/0.3528),((bry-tly)/0.3528)) c.showPage() c.save()''' #For Doc Merge feature, updating Flatbed to use pdfmerger instead of canvas for PDF creation. '''temp = 'temp.png' im.save(temp,compress_level=1) adf_page_files.append(temp) output = imageprocessing.generatePdfFile(adf_page_files,output)''' if uiscan == False: log.info("Viewing PDF file in %s" % pdf_viewer) log.info("Saving to file %s" % output) if merge_ADF_Flatbed == False: #cmd = "%s %s &" % (pdf_viewer, output) #os_utils.execute(cmd) log.error("%s" % (output)) sys.exit(4) #imageprocessing.merge_PDF_viewer(output) elif uiscan == False: im.save(output,compress_level=1,quality=55) except IOError as e: im = im.convert("RGB") try: im.save(output,compress_level=1,quality=55) except IOError as e: log.error("Error saving file: %s (I/O)" % e) try: os.remove(output) except OSError: pass sys.exit(1) except ValueError as e: log.error("Error saving file: %s (PIL)" % e) try: os.remove(output) except OSError: pass sys.exit(1) file_saved = True dest.remove("file") temp_saved = False if ('editor' in dest or 'viewer' in dest or 'email' in dest or 'print' in dest) \ and not file_saved: output_fd, output = utils.make_temp_file(suffix='.png') try: '''pyPlatform = platform.python_version() num = pyPlatform.split('.') if num[0] >= '3': im = im.convert("RGB")''' try: im.save(output,compress_level=1,quality=55) except: im = im.convert("RGB") im.save(output,compress_level=1,quality=55) except IOError as e: log.error("Error saving temporary file: %s" % e) try: os.remove(output) except OSError: pass sys.exit(1) os.close(output_fd) temp_saved = True for d in dest: log.info("\nSending to destination '%s':" % d) if d == 'pdf': try: from reportlab.pdfgen import canvas except ImportError: log.error("PDF output requires ReportLab.") continue if merge_ADF_Flatbed == True: pdf_output = utils.createSequencedFilename("hpscanMerge", ".pdf",output_path) else: pdf_output = utils.createSequencedFilename("hpscan", ".pdf", output_path) c = canvas.Canvas(pdf_output, (brx/0.3528, bry/0.3528)) try: c.drawInlineImage(im, (tlx/0.3528), (tly/0.3528), ((brx-tlx)/0.3528),((bry-tly)/0.3528)) except NameError: log.error("A problem has occurred with PDF generation. This is a known bug in ReportLab. Please update your install of ReportLab to version 2.0 or greater.") continue c.showPage() if uiscan == False: log.info("Saving to file %s" % pdf_output) c.save() if uiscan == False: log.info("Viewing PDF file in %s" % pdf_viewer) #cmd = "%s %s &" % (pdf_viewer, pdf_output) #os_utils.execute(cmd) #sys.exit(0) if uiscan == True: log.error("%s" % (pdf_output)) sys.exit(4) else: sys.exit(0) elif d == 'print': hp_print = utils.which("hp-print", True) if not hp_print: hp_print = 'python ./print.py' if dest_printer is not None: cmd = '%s -p %s %s &' % (hp_print, dest_printer, output) elif dest_devUri is not None: tmp = dest_devUri.partition(":")[2] dest_devUri = "hp:" + tmp cmd = '%s -d %s %s &' % (hp_print, dest_devUri, output) else: cmd = '%s %s &' % (hp_print, output) os_utils.execute(cmd) elif d == 'email': try: from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText except ImportError: try: from email.MIMEImage import MIMEImage from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText except ImportError: log.error("hp-scan email destination requires Python 2.2+.") continue msg = MIMEMultipart() msg['Subject'] = email_subject msg['From'] = email_from msg['To'] = ','.join(email_to) msg.preamble = 'Scanned using hp-scan' if email_note: txt = MIMEText(email_note) msg.attach(txt) if file_saved: txt = MIMEText("attached: %s: %dx%d %s PNG image." % (os.path.basename(output), pixels_per_line, lines, scan_mode)) else: txt = MIMEText("attached: %dx%d %s PNG image." % (pixels_per_line, lines, scan_mode)) msg.attach(txt) fp = open(output, 'r') img = MIMEImage(fp.read()) fp.close() if file_saved: img.add_header('Content-Disposition', 'attachment', filename=os.path.basename(output)) msg.attach(img) sendmail = utils.which("sendmail") if sendmail: sendmail = os.path.join(sendmail, 'sendmail') cmd = [sendmail,'-t','-r',email_from] log.debug(repr(cmd)) err = None try: sp = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) std_out, std_err = sp.communicate(msg.as_string()) if std_err != '': err = std_err except OSError as e: err = str(e) cleanup_spinner() if err: log.error(repr(err)) else: log.error("Mail send failed. 'sendmail' not found.") elif d == 'viewer': if viewer: log.info("Viewing file in %s" % viewer) cmd = "%s %s &" % (viewer, output) os_utils.execute(cmd) else: log.error("Viewer not found.") elif d == 'editor': if editor: log.info("Editing file in %s" % editor) cmd = "%s %s &" % (editor, output) os_utils.execute(cmd) else: log.error("Editor not found.") device.freeScan() device.closeScan() sane.deInit() except KeyboardInterrupt: log.error("User exit") log.info("") log.info("Done.")
Close