mirror of https://github.com/captn3m0/Scripts.git
Two more scripts.
I should move this folder to ~/.bin, probably
This commit is contained in:
parent
1c6bea1d59
commit
87c31364f1
|
@ -0,0 +1,105 @@
|
|||
#!/usr/bin/env python
|
||||
'''
|
||||
http://ubuntuforums.org/showthread.php?t=1154940&highlight=get_dependencies
|
||||
'''
|
||||
|
||||
import sys
|
||||
from subprocess import Popen,PIPE,STDOUT
|
||||
|
||||
|
||||
__usage__='''
|
||||
compute_total_pkg_size.py emacs
|
||||
'''
|
||||
|
||||
pkg=sys.argv[1]
|
||||
|
||||
|
||||
def report_lines(alist,max_len,vdiv,hline):
|
||||
'''
|
||||
alist is a list of tuples
|
||||
report_lines returns a list of strings
|
||||
'''
|
||||
result=[]
|
||||
svs=' '+vdiv+' '
|
||||
for row in alist:
|
||||
if row[0]=='-':
|
||||
line_string=hline
|
||||
else:
|
||||
data_justified=[str(elt).rjust(num) for elt,num in zip(row,max_len)]
|
||||
data_svs=svs.join(data_justified)
|
||||
line_list=[vdiv,data_svs,vdiv]
|
||||
line_string=' '.join(line_list)
|
||||
result.append(line_string)
|
||||
return result
|
||||
|
||||
def report_table(alist,corner='+',hdiv='-',vdiv='|',header=True):
|
||||
max_len=max_col_len(alist)
|
||||
hline_l=[corner,
|
||||
corner.join([hdiv.ljust(max_num+2,hdiv)
|
||||
for max_num in max_len]),
|
||||
corner]
|
||||
hline=''.join(hline_l)
|
||||
result=report_lines(alist,max_len,vdiv,hline)
|
||||
if header:
|
||||
new_result=[hline,result[0],hline,]
|
||||
new_result.extend(result[1:])
|
||||
else:
|
||||
new_result=[hline,]
|
||||
new_result.extend(result)
|
||||
new_result.append(hline)
|
||||
result='\n'.join(new_result)+'\n'
|
||||
return result
|
||||
|
||||
def max_col_len(alist):
|
||||
return [max([len(str(elt)) for elt in column]) for column in zip(*alist)]
|
||||
|
||||
def find_installed():
|
||||
'''
|
||||
Returns a list of all the packages installed on the computer
|
||||
'''
|
||||
proc=Popen("dpkg --get-selections | awk '/install/{print $1}'",
|
||||
shell=True, stdout=PIPE, stderr=open('/dev/null'),)
|
||||
return proc.communicate()[0].split()
|
||||
|
||||
def get_size(pkg):
|
||||
'''
|
||||
Returns (download size, installed size) in KiB
|
||||
'''
|
||||
cmd='apt-cache show %s'%pkg
|
||||
proc=Popen(cmd, shell=True, stdout=PIPE, )
|
||||
size=0
|
||||
install_size=0
|
||||
for line in proc.communicate()[0].split('\n'):
|
||||
if line.startswith('Size: '):
|
||||
size=line.split()[-1]
|
||||
elif line.startswith('Installed-Size: '):
|
||||
install_size=line.split()[-1]
|
||||
return (int(size)/1024,int(install_size))
|
||||
|
||||
def get_dependencies(pkg):
|
||||
'''
|
||||
Returns all the (recursive) dependencies of a package
|
||||
'''
|
||||
cmd='apt-rdepends -s=DEPENDS %s'%pkg
|
||||
proc=Popen(cmd, shell=True, stdout=PIPE, )
|
||||
return proc.communicate()[0].strip().split('\n')
|
||||
|
||||
deps=get_dependencies(pkg)
|
||||
installed_packages=find_installed()
|
||||
needed_packages=list(set(deps)-set(installed_packages))
|
||||
(sizes_dep,sizes_dep_installed)=zip(*[get_size(pkg) for pkg in deps])
|
||||
(sizes_needed,sizes_needed_installed)=zip(*[get_size(pkg) for pkg in needed_packages])
|
||||
data=[('Package (*=needed)','Download size (KiB)','Installed size (KiB)')]
|
||||
for apkg,size,install_size in zip(deps,sizes_dep,sizes_dep_installed):
|
||||
if apkg in needed_packages:
|
||||
data.append(('%s *'%apkg,size,install_size))
|
||||
else:
|
||||
data.append((apkg,size,install_size))
|
||||
print(report_table(data))
|
||||
|
||||
data=[('','Sizes (KiB)')]
|
||||
data.append(('Total download size',sum(sizes_dep)))
|
||||
data.append(('Total installed size',sum(sizes_dep_installed)))
|
||||
data.append(('Total download size needed',sum(sizes_needed)))
|
||||
data.append(('Total installed size needed',sum(sizes_needed_installed)))
|
||||
print(report_table(data))
|
|
@ -0,0 +1,40 @@
|
|||
#! /bin/sh
|
||||
|
||||
# minimize/restore windows on current desktop
|
||||
# -----------------------------------
|
||||
# vermaden [AT] interia [DOT] pl
|
||||
# http://toya.net.pl/~vermaden/links.htm
|
||||
|
||||
CURRENT_DESKTOP=$( wmctrl -d | egrep "^[0-9][ ]{2}\*" | awk '{print $1}' )
|
||||
WINDOW_LIST=$( wmctrl -l | egrep "^[0-9]x.{8}\ {2}${CURRENT_DESKTOP}" | awk '{print $1}' )
|
||||
|
||||
WINDOW_COUNT=0
|
||||
for WINDOW in ${WINDOW_LIST} ;do
|
||||
WINDOW_COUNT=$(( ${WINDOW_COUNT} + 1 ))
|
||||
done
|
||||
|
||||
minimize () {
|
||||
for WINDOW in ${WINDOW_LIST}; do
|
||||
wmctrl -t ${CURRENT_DESKTOP} -i -r ${WINDOW} -b add,hidden
|
||||
done
|
||||
}
|
||||
|
||||
restore () {
|
||||
for WINDOW in ${WINDOW_LIST}; do
|
||||
wmctrl -t ${CURRENT_DESKTOP} -i -r ${WINDOW} -b remove,hidden
|
||||
done
|
||||
}
|
||||
|
||||
MINIMIZED=0
|
||||
for WINDOW in ${WINDOW_LIST}; do
|
||||
if xprop -id ${WINDOW} _NET_WM_STATE | grep -q NET_WM_STATE_HIDDEN; then
|
||||
MINIMIZED=$(( ${MINIMIZED} + 1 ))
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${MINIMIZED} -eq ${WINDOW_COUNT} ]; then
|
||||
restore
|
||||
else
|
||||
minimize
|
||||
fi
|
||||
|
Loading…
Reference in New Issue