Update 2024-02-14 07:51 OpenBSD/amd64-x13

This commit is contained in:
c0dev0id 2024-02-14 07:54:31 +01:00
parent b55e6a3616
commit 9624895938
373 changed files with 19074 additions and 3045 deletions

10
.bin/OLD/256color.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/sh
for fgbg in 38 48; do
while [ "${color:=0}" -le 255 ]; do
printf "\\e[${fgbg};5;%sm %3s \\e[0m" $color $color
[ $(((color + 1) % 6)) = 4 ] && printf '\n'
color=$((color+1))
done
printf '\n' && unset color
done
exit 0

View File

@ -0,0 +1,10 @@
#!/bin/sh
#
DATE="$(date +%F_%H-%M-%S)"
SRC="/"
DST="sdk@192.168.1.20:/tank/BACKUP/"
ROPTS="--archive --human-readable --progress --size-only"
rsync --archive --human-readable --progress --size-only --link-dest $PWD/current source "$PWD/destination"

76
.bin/OLD/KAPUTT/ccc-streams.sh Executable file
View File

@ -0,0 +1,76 @@
#!/bin/sh
sformat="webm"
squality="sd"
translated="native"
mediaplayer="mpv"
usage() {
printf "Available rooms:\n" >&2
printf " a|ada|1\n" >&2
printf " b|borg|2\n" >&2
printf " c|clarke|3\n" >&2
printf " d|dijkstra|4\n" >&2
printf " e|elize|5\n" >&2
printf " chaoswest|150\n" >&2
printf " openinfrastructure|oio\n" >&2
printf " wiki|151\n\n" >&2
exit 1
}
[ -z $1 ] && usage;
hall="$1"
case "$hall" in
1|2|3|4|5|150|151|oio)
;;
a|ada)
hall="1"
;;
b|borg)
hall="2"
;;
c|clarke)
hall="3"
;;
d|dijkstra)
hall="4"
;;
e|eliza)
hall="5"
;;
chaoswest)
hall="150"
;;
open*)
hall="oio"
;;
wiki*)
hall="151"
;;
*)
usage;
;;
esac
webmbase="http://cdn.c3voc.de/s%s_%s_%s.webm"
hlsbase="http://cdn.c3voc.de/hls/s%s_%s_%s.m3u8"
audiobase="http://cdn.c3voc.de/s%s_%s.%s"
slink=""
case "$sformat" in
webm)
slink="$(printf "$webmbase" "${hall}" "${translated}" "${squality}")"
;;
m3u8|hls)
slink="$(printf "$hlsbase" "${hall}" "${translated}" "${squality}")"
;;
*)
printf "Only the stream formats »webm« and »hls« are available.\n" >&2
exit 1
;;
esac
$mediaplayer "$slink"

2
.bin/OLD/KAPUTT/chrome Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh
/usr/local/bin/chrome --enable-unveil --enable-features=WebUIDarkMode --force-dark-mode $@

View File

@ -0,0 +1,35 @@
#!/bin/sh
# essential
pkg_add rsync wget curl lftp mc ranger vim speedtest-cli autocutsel git ectags
# dwm
pkg_add dmenu jq scrot slop
# pass
pkg_add password-store gnupg pinentry
doas ln -s /usr/local/bin/pinentry /usr/bin/pinentry
# mutt
pkg_add mutt w3m urlview msmtp offlineimap mu par
# irssi
pkg_add irssi
# luakit
pkg_add luafs luajit gmake webkitgtk4
# multimedia
pkg_add ffmpeg ffmpegthumbnailer youtube-dl ImageMagick
# tor
pkg_add tor torsocks
# X11
pkg_add mupdf zathura zathura-pdf-mupdf sxiv seafile-client pidgin telegram-purple
# other
pkg_add nload htop nmap ncdu tig xosd sshfs-fuse
# BIG ones
pkg_add firefox libreoffice gimp smtube fnaify vimb

383
.bin/OLD/KAPUTT/openup Executable file
View File

@ -0,0 +1,383 @@
#!/bin/sh
#
# Copyright (c) 2013 - 2017 M:tier Ltd.
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
# Author: Antoine Jacoutot <antoine@mtier.org>
# Maintainer: M:Tier Ltd. <info@mtier.org>
# ChangeLog
# https://gitlab.com/mtier/openup/commits/master
########################################################################
### DO NOT EDIT THIS FILE!!! ###
### User defined variables: overrides are read from /etc/openup.conf ###
########################################################################
# URL to the latest openup version
OPENUP_URL="https://stable.mtier.org/openup"
# signify(1) public key
PKG_PUBKEY_URL="https://stable.mtier.org/mtier-$(uname -r | tr -d '.')-pkg.pub"
# PKG_PATH for currently running OpenBSD release
PKG_PATH_MAIN="https://ftp.fr.openbsd.org/pub/OpenBSD/$(uname -r)/packages/$(arch -s)"
# ERRATA_PATH
ERRATA_PATH="https://ftp.fr.openbsd.org/pub/OpenBSD/patches/$(uname -r)/common"
# PKG_PATH for the corresponding release stable service
PKG_PATH_UPDATE="https://stable.mtier.org/updates/$(uname -r)/$(arch -s)"
# PKG_PATH addition for the corresponding LTS release stable service
#PKG_PATH_UPDATE_LTS="https://user%domain.tld:password@stable.mtier.org/updates-lts/$(uname -r)/$(arch -s)"
# URL to the latest vuxml (vulnerabilities database)
VUXML_URL="https://stable.mtier.org/vuxml/$(uname -r | tr -d '.').xml"
# fetch command (must behave like "ftp -o"); e.g. "wget -qO"
FETCH="ftp -MVo"
# exclusion list: pkg names without version/flavor, separated by space
EXCLUDE_PKG=""
########################################################################
### End of user defined variables ###
########################################################################
usage() {
echo
echo "Usage: ${0##*/} [-K][-Se|c]" >&2
echo
echo "Options:"
echo " -K do not check for kernel binpatches (when running non GENERIC)"
echo " -N do not check for syspatches"
echo " -S ignore binpatch/package signatures"
echo " -c check/cron mode, report only (cannot be used with -S)"
echo " -e echo the PKG_PATH that ${0##*/} would use"
echo
exit 1
}
pr_err() {
echo "!!! ${@}"
}
bye_bye() {
rm -rf ${_TMPDIR} ${_PID}
exit 1
}
pr() {
if [ -z "${checkrun}" ]; then
echo "===> ${@}"
fi
}
get_key() {
[ -r /etc/signify/mtier-${_REL_INT}-pkg.pub ] && return
pr "Downloading and installing public key"
${FETCH} ${_TMPKEY} ${PKG_PUBKEY_URL} || bye_bye
install -m0644 ${_TMPKEY} /etc/signify/mtier-${_REL_INT}-pkg.pub || bye_bye
}
show_env() {
echo PKG_PATH=${PKG_PATH_UPDATE_LTS}:${PKG_PATH_UPDATE}:${PKG_PATH_MAIN}
exit 0
}
check_openupd() {
local _U
pr "Checking for openup update"
_U="${FETCH} - ${OPENUP_URL} | awk -F '=' '/^_OPENUP_VERSION/ { print \$2 }'"
_U=$(eval $_U)
if [ -z "${_U}" ]; then
pr_err "Cannot retrieve ${OPENUP_URL}"
pr_err "Please verify your Internet connection, proxy settings and firewall."
bye_bye
fi
if [ "${_OPENUP_VERSION}" -lt "${_U}" ]; then
pr_err "New openup release (version ${_U}) available; please update with:"
pr_err "${FETCH} $(readlink -f $0) ${OPENUP_URL}"
bye_bye
fi
}
# check that we have no installed binpatches from a previous release and
# if so remove the entries manually (we don't want pkg_delete to
# modify nor error out on installed files from newer release/binpatch)
rm_old_bp() {
local _bp
local _BPDB=$(ls -d /var/db/binpatch/{binpatch-,}[0-9]* 2>/dev/null |grep -v ${_REL})
local _BPPKG=$(ls -d /var/db/pkg/binpatch* 2>/dev/null |grep -v binpatch${_REL_INT})
if [ -n "${_BPPKG}" -o -n "${_BPDB}" ]; then
pr "Removing old release binpatch entries"
fi
for _bp in ${_BPPKG} ${_BPDB}; do
rm -rf ${_bp}
done
}
update_syspatches() {
pr "Installing/updating syspatches"
syspatch
if [ $? -gt 0 ]; then
pr_err "syspatch failed; please run syspatch manually"
bye_bye
fi
}
update_binpatches() {
local _BP _b _e
# binpatches can only be found in PKG_PATH_UPDATE{,_LTS) and we
# want to make sure we search in all paths and don't stop at the
# first match we find
for i in ${PKG_PATH_UPDATE_LTS} ${PKG_PATH_UPDATE}; do
_BP="$(pkg_info -Q binpatch${_REL_INT}-${_ARCH} | sed 's/.[^-]*$//' | sort -u)${_BP:+ ${_BP}}"
done
if [ -n "${_BP}" ]; then
for _e in ${EXCLUDE_PKG}; do
set -A _BP -- ${_BP}
_BP="$(for _b in ${_BP[@]}; do echo ${_b} | grep -v "^${_e}$"; done)"
done
_BP=$(echo "${_BP}" | tr '\n' ' ')
pr "Installing/updating binpatch(es)"
pkg_add ${pkgopt} ${_BP} || bye_bye
fi
}
update_pkg() {
local _PKG _e _p
_PKG=$(pkg_info -q | grep -v binpatch${_REL_INT}-${_ARCH})
if [ -n "${_PKG}" ]; then
for _e in ${EXCLUDE_PKG}; do
set -A _PKG -- ${_PKG}
_PKG="$(for _p in ${_PKG[@]}; do echo ${_p} | grep -v "^${_e}-.*"; done)"
done
_PKG=$(echo "${_PKG}" | tr '\n' ' ')
pr "Updating package(s)"
pkg_add -quz ${pkgopt} ${_PKG} || bye_bye
fi
}
# this only outputs the missing syspatches on the system
check_syspatches() {
_SYSPATCHES=$(syspatch -c)
for _p in ${_SYSPATCHES}; do
${FETCH} ${_TMPERRATA} ${ERRATA_PATH}/${_p}.patch.sig
[ -e ${_TMPERRATA} ] || continue
echo "--- ${_p} ---"
echo -n "Available errata: "
awk '/OpenBSD/{f=1;next} /Apply/{f=0;next} f' ${_TMPERRATA} | grep -ve '^$'
done
}
# this only outputs the most recent vulnerability for each matching pkg
check_vuxml() {
local _BP_MATCH _OUTDATED _PKG_MATCH _b _e _p
${FETCH} ${_TMPVUXML} ${VUXML_URL} || bye_bye
perl -pi -e 's,\$ARCH,'"${_ARCH}"',g' ${_TMPVUXML}
if [ "${_REL_INT}" -lt 61 ]; then
_BP_MATCH="$(grep binpatch ${_TMPVUXML} | sed -e 's,<name>,,g;s,</name>,,g;s,\$ARCH,'"${_ARCH}"',g' | sort -u)"
for _e in ${EXCLUDE_PKG}; do
set -A _BP_MATCH -- ${_BP_MATCH}
_BP_MATCH="$(for _b in ${_BP_MATCH[@]}; do echo ${_b} | grep -v "^${_e}$"; done)"
done
fi
_PKG_MATCH=$(pkg_info -q | grep -v binpatch${_REL_INT}-${_ARCH})
for _e in ${EXCLUDE_PKG}; do
set -A _PKG_MATCH -- ${_PKG_MATCH}
_PKG_MATCH="$(for _p in ${_PKG_MATCH[@]}; do echo ${_p} | grep -v "^${_e}-.*"; done)"
done
if [ "${_REL_INT}" -lt 61 ]; then
# set to "quirks" if empty to prevent running pkg_add against an empty pkg list
_OUTDATED=$((pkg_add -Iqn -Dnosig -Dunsigned ${_BP_MATCH:=quirks}; pkg_add -Iqnuz -Dnosig -Dunsigned ${_PKG_MATCH:=quirks}) 2>&1 | \
grep '^NOT CHECKING DIGITAL SIGNATURE FOR ' | \
sed -e 's,^NOT CHECKING DIGITAL SIGNATURE FOR ,,g' | \
grep -v '^quirks-' | \
perl -ne '/^(.*)-(\d[^-]*)[-]?(\w*)(.*)$/ && print "$1\n"' | \
sort -u)
else
# set to "quirks" if empty to prevent running pkg_add against an empty pkg list
_OUTDATED=$((pkg_add -Inuvz -Dnosig -Dunsigned ${_PKG_MATCH:=quirks}) 2>&1 | \
grep '^Adding.*(pretending)' | sort -u | sed -e 's,Adding ,,;s,(pretending),,;s,->.*,,' | \
grep -v '^quirks-' | \
perl -ne '/^(.*)-(\d[^-]*)[-]?(\w*)(.*)$/ && print "$1\n"' | \
sort -u)
fi
for p in ${_OUTDATED}
do
echo "--- ${p} ---\n"
echo "Available update(s): "
# XXX how do we print only the 1st matching range in awk?
awk "/<name>${p}<\/name>/,/<\/vuln>/" ${_TMPVUXML} | \
sed '/<\/vuln>/,$d' | \
sed -n -e 's/.*<range><lt>\(.*\)<\/lt><\/range>.*/\1/p' \
-e 's/.*<p>\(.*\)<\/p>.*/\1/p' | uniq | \
while read l; do echo -n "${l} "; done
echo "\n"
done | fmt | sed '/^$/d'
}
do_i_need_to_reboot() {
# XXX hardcoded PKG_DBDIR
local osversion=$(sysctl -n kern.osversion)
local kern_version=$(sysctl -n kern.version | head -1)
local booted_version=$(what -s /bsd | tail -1 | tr -d '\t')
local booted_time=$(sysctl -n kern.boottime)
local kern_time=$(stat -qf "%Um" /bsd)
local warn=0
# Check /bsd.booted first if available due to kernel relinking
if [ -e /bsd.booted ]; then
[ X"${kern_version}" != X"${booted_version}" ] && warn=1
else
[ "${booted_time}" -lt "${kern_time}" ] && warn=1
fi
if [ ${warn} -gt 0 ]; then
pr_err
pr_err "System must be rebooted after the last kernel update"
pr_err
fi
}
patch_syspatch() {
pr_err
pr_err "Patching syspatch(8) to use syspatches signed by MTier."
pr_err
cp /usr/sbin/syspatch /usr/sbin/syspatch.pre-mtier
sed -i \
"s,openbsd-\${_OSrev}-syspatch.pub,mtier-\${_OSrev}-pkg.pub,g; \
s,/etc/installurl,/etc/installurl-mtier,g" \
/usr/sbin/syspatch
[ -e /etc/installurl-mtier ] || echo https://stable.mtier.org > /etc/installurl-mtier
}
trap "bye_bye" 1 2 3 13 15
if [ -f /etc/openup.conf ]; then
if [ $(stat -f "%SMp%SLp" /etc/openup.conf) != "------" ]; then
pr_err "Unsecure permissions on /etc/openup.conf; please run:"
pr_err "chmod 0600 /etc/openup.conf"
exit 1
fi
. /etc/openup.conf
fi
# regex taken from fw_update(1)
set -A _REL -- $(sysctl -n kern.version | sed 's/^OpenBSD \([0-9]\.[0-9]\)\([^ ]*\).*/\1 \2/;q')
_REL_INT="$(echo ${_REL[0]} | tr -d '.')"
_OPENUP_MINREL=60
_OPENUP_VERSION=33
if [ -n "${_REL[1]}" -a "${_REL[1]}" != "-stable" ]; then _badrel=1; fi
if [ "${_REL_INT}" -lt "${_OPENUP_MINREL}" ]; then _badrel=1; fi
if [ -n "${_badrel}" ]; then
pr_err "${_REL[0]}${_REL[1]} is not a supported release"
exit 1
fi
while getopts 'KNSce' arg; do
case ${arg} in
K) if [ "${_REL_INT}" -lt 61 ]; then nokrn=1; fi ;;
N) nosyspatch=1 ;;
S) nosig=1; pkgopt="${pkgopt} -Dnosig -Dunsigned" ;;
c) checkrun=1 ;;
e) showenv=1 ;;
*) usage ;;
esac
done
[ $# = $(($OPTIND-1)) ] || usage
[ -n "${showenv}" ] && show_env
if [ "$(id -u)" -ne 0 ]; then
pr_err "Need root privileges to run this script"
usage
fi
[ -n "${checkrun}" -a -n "${nosig}" -a -n "${showenv}" ] && usage
_ARCH=$(arch -s)
_PID="/var/run/${0##*/}.pid"
_TMP="${TMPDIR:=/tmp}"
_TMPDIR=$(mktemp -dp ${_TMP} .openup-XXXXXXXXXX) || exit 1
_TMPKEY="${_TMPDIR}/key"
_TMPVUXML="${_TMPDIR}/vuxml"
_TMPERRATA="${_TMPDIR}/errata"
export PKG_PATH=${PKG_PATH_UPDATE_LTS}:${PKG_PATH_UPDATE}:${PKG_PATH_MAIN}
if [ -f ${_PID} ]; then
pr_err "openup is already running ($(cat ${_PID})):"
pr_err "${_PID}"
exit 1
fi
echo $$ >${_PID}
if [ -n "${nokrn}" ]; then
EXCLUDE_PKG="binpatch${_REL_INT}-${_ARCH}-kernel ${EXCLUDE_PKG}"
fi
if [ -n "${EXCLUDE_PKG}" ]; then
pr "Excluded package(s)/binpatch(es): ${EXCLUDE_PKG}"
fi
check_openupd
if [ -z "${nosyspatch}" -a -e /usr/sbin/syspatch ]; then
_sum=$(sha256 -q /usr/sbin/syspatch)
case "${_sum}"
in
# 6.1 syspatch
b8b9c4bec128884498b5c3e77a350f42079f7987ef862a1ec452f489403dfbe6)
patch_syspatch
;;
esac
fi
if [ "${checkrun}" ]; then
if [ "${_REL_INT}" -ge 61 -a -z "${nosyspatch}" ]; then
check_syspatches
fi
check_vuxml
else
[ -z "${nosig}" ] && get_key
rm_old_bp
if [ "${_REL_INT}" -lt 61 -a -z "${nosyspatch}" ]; then
update_binpatches
else
[ -z "${nosyspatch}" ] && update_syspatches
fi
update_pkg
fi
do_i_need_to_reboot
rm -rf ${_TMPDIR}
rm ${_PID}

2
.bin/OLD/KAPUTT/osd_pipe.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh
osd_cat -l1 -p top -o 1 -A right -O 1 -s 1 -o 40 -w -d4 -i 20 -c "#eeeeee" -f "-xos4-terminus-medium-r-normal--16-160-72-72-c-80-iso8859-15" -

15
.bin/OLD/KAPUTT/rec_encode Executable file
View File

@ -0,0 +1,15 @@
#!/bin/sh
_vidfile="/home/sdk/work/rec-screen.mkv"
_micfile="/home/sdk/work/rec-mic-clean.wav"
_outfile="${_vidfile%%.*}-$(date "+%Y%m%d_%H%M%S").mp4"
ffmpeg -y -i $_vidfile \
-i $_micfile \
-c:v libx265 \
-c:a aac -shortest \
-crf 21 -s 1920x1080 \
-preset medium -movflags faststart \
-threads $(sysctl -n hw.ncpuonline) \
$_outfile \
&& echo "Done encoding $(readlink -f $_outfile)"

View File

@ -0,0 +1,13 @@
#!/bin/sh
_vidfile="/home/sdk/work/rec-screen.mkv"
_outfile="${_vidfile%%.*}-$(date "+%Y%m%d_%H%M%S").mp4"
ffmpeg -y -i $_vidfile \
-c:v libx265 \
-c:a aac -shortest \
-crf 21 -s 1920x1080 \
-preset medium -movflags faststart \
-threads $(sysctl -n hw.ncpuonline) \
$_outfile \
&& echo "Done encoding $(readlink -f $_outfile)"

79
.bin/OLD/KAPUTT/rec_scr Executable file
View File

@ -0,0 +1,79 @@
#!/bin/sh
screen=0
microphone=0
system_audio=0
select _sel in \
"Record screen" \
"Record microphone" \
"Record system audio" \
"Start recording" \
"Quit"
do
case "$_sel" in
"Record screen") screen=1; ;;
"Record microphone") microphone=1; ;;
"Record system audio") system_audio=1; ;;
"Start recording") break; ;;
"Quit") exit 0; ;;
esac
[ screen -eq 1 ] && echo "Screen recording: enabled" \
|| echo "Screen recodding: disabled"
[ microphone -eq 1 ] && echo "Microphone recording: enabled" \
|| echo "Microphone recodding: disabled"
done
clear
set -x
AUDIOMONDEVICE=snd/0.mon
AUDIOPLAYDEVICE=snd/0.default
AUDIORECDEVICE=snd/0.rec
AUDIOMONPID=X
AUDIORECPID=X
trap rec_stop 0 1 2 3 6
rec_stop() {
kill $AUDIORECPID $AUDIOMONPID
}
rec_mon() {
aucat -f $AUDIOMONDEVICE -o $HOME/work/rec-mon.wav &
AUDIOMONPID=$!
}
rec_mic() {
aucat -o $HOME/work/rec-mic.wav &
AUDIORECPID=$!
}
rec_screen() {
echo 'Press q to stop.'
ffmpeg -y -loglevel warning -hide_banner \
-fflags genpts \
-flags low_delay \
-thread_queue_size 256 \
-framerate 30 \
-f x11grab \
-probesize 16M \
-i :0.0 \
-c:v libx264rgb \
-crf 0 \
-qp 0 -framerate 30 \
-sws_flags neighbor \
-preset ultrafast \
-tune zerolatency \
$HOME/work/rec-screen.mkv
}
rec_mon
rec_mic
rec_screen
rec_stop
shotcut --noupgrade --fullscreen --clear-recent $HOME/work/rec-screen.mkv $HOME/work/rec-*.wav

83
.bin/OLD/KAPUTT/rec_screen Executable file
View File

@ -0,0 +1,83 @@
#!/bin/sh
audio() {
# set mixer controls
print configuring microphone
mixerctl -q record.adc-0:1_source=mic2
mixerctl -q record.adc-2:3_source=mic2
mixerctl -q inputs.mix_source=mic2
}
webcam() {
printf 'start webcam\n'
doas mpv --quiet \
--panscan=1 \
--framedrop=vo \
--ontop av://v4l2:/dev/video0 \
--profile=low-latency \
--untimed \
--vf=hflip \
--geometry=220x180 2>&1 > /dev/null &
print move the picture to the right place and press any key
read
}
capture() {
printf 'starting recording... press q to stop\n'
RES=$(xwininfo -root | grep 'geometry' | awk '{print $2;}' |cut -d"+" -f1)
ffmpeg -y -loglevel warning \
-thread_queue_size 256 \
-probesize 10000000 \
-hide_banner \
-f sndio \
-i default \
-c:a flac \
-f x11grab \
-s $RES \
-i :0.0 \
-r 25 \
-c:v libx265 \
-crf 0 \
-qp 0 \
-preset ultrafast \
-g 50 \
-keyint_min 25 \
$HOME/work/rec_screen.mkv
}
encode() {
printf 'encoding video\n'
ffmpeg -y \
-i $HOME/work/rec_screen.mkv \
-c:v libx265 \
-crf 21 \
-s 1920x1080 \
-preset medium \
$HOME/work/rec_screen.mp4
}
printf '
(1) desktop only (works on linux)
(2) desktop + audio
(3) desktop + webcam + audio
'
printf ": "
read sel
case $sel in
1) capture;
encode;
;;
2) audio;
capture;
encode;
;;
3) audio;
webcam;
capture;
encode;
;;
esac

71
.bin/OLD/KAPUTT/recscr Executable file
View File

@ -0,0 +1,71 @@
#!/bin/sh -xe
clear
AUDIOPLAYDEVICE=snd/0.default
AUDIORECDEVICE=snd/0.rec
AUDIOMONDEVICE=snd/0.mon
AUDIOMONPID=X
AUDIORECPID=X
trap rec_stop 1 2 3 6
rec_stop() {
kill $AUDIORECPID $AUDIOMONPID
}
rec_mon() {
aucat -f $AUDIOMONDEVICE -o $HOME/work/rec-mon.wav &
AUDIOMONPID=$!
}
rec_mic() {
aucat -j on -c 0:0 -o $HOME/work/rec-mic.wav &
AUDIORECPID=$!
}
rec_screen() {
echo 'Press q to stop.'
#ffmpeg -y \
# -loglevel warning \
# -hide_banner \
# -fflags genpts \
# -flags low_delay \
# -thread_queue_size 256 \
# -framerate 30 \
# -f x11grab \
# -probesize 16M \
# -i :0.0 \
# -c:v libx264rgb \
# -crf 0 \
# -qp 0 -framerate 30 \
# -sws_flags neighbor \
# -preset ultrafast \
# -tune zerolatency \
# $HOME/work/rec-screen.mkv
ffmpeg -y -loglevel warning -hide_banner \
-f x11grab -i :0.0 -c:v libx264rgb -crf 0 -qp 0 -framerate 30 -sws_flags neighbor -preset ultrafast -tune zerolatency $HOME/work/rec-screen.mkv \
-f sndio -i $AUDIORECDEVICE -c:a copy $HOME/work/rec-mic.wav \
-f sndio -i $AUDIOMONDEVICE -c:a copy $HOME/work/rec-mon.wav
}
#rec_mon
#rec_mic
rec_screen
#rec_stop
sleep 0.5
sox $HOME/work/rec-mic.wav -n trim 0 5 noiseprof \
| sox $HOME/work/rec-mic.wav $HOME/work/rec-mic-clean.wav \
noisered - 0.2 bass 5 contrast
#sox $HOME/work/rec-mic.wav $HOME/work/rec-mic-clean.wav bass 5 contrast
printf "[A]utoencode or [S]hotcut: "
read S
case $S in
[aA]) rec_encode; ;;
[sS]) shotcut --noupgrade --fullscreen --clear-recent $HOME/work/rec-screen.mkv $HOME/work/rec-*.wav; ;;
*) ;;
esac

2
.bin/OLD/KAPUTT/screen-make Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh
ssh ld7078 "screen -S make -p 0 -X stuff \"./mymake.sh -p krn/ms prg;`echo '\015'`\""

4
.bin/OLD/KAPUTT/sdedit Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=gasp -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.useSystemAAFontSettings=on'
export _JAVA_AWT_WM_NONREPARENTING=1
java -jar $HOME/.bin/sdedit-*.jar

BIN
.bin/OLD/KAPUTT/sdedit-4.2.1.jar Executable file

Binary file not shown.

2
.bin/OLD/KAPUTT/select_audio Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh

View File

@ -0,0 +1,15 @@
#!/bin/sh
while true;
do
FILES=$(ls -1 | grep -v shotwell | grep -vi xmp | grep -vi jpg | wc -l | awk '{ print $1 }')
THUMBS=$(ls -1 | grep shotwell | grep -vi "xmp\|jpg\|jpeg" | wc -l | awk '{ print $1 }')
OUT="T: $THUMBS | F: $FILES"
printf "$OUT\n"
if [ "$FILES" == "$THUMBS" ];
then notify-send "Shotwell Import Finished: ${PWD##*/} $OUT"
printf "${PWD##*/}" | xclip -r
exit 0
fi
sleep 5
done

28
.bin/OLD/KAPUTT/subfzf Executable file
View File

@ -0,0 +1,28 @@
#!/bin/sh
subsonic() {
subsonic-cli -c /home/sdk/.subsonic-cli.conf $@
}
next=1
offset=0
until [ $next -eq 0 ]
do
_someAlbums=$(subsonic \
-p type alphabeticalByArtist \
-p size 500 -p offset $offset getAlbumList2 \
| jq .albumList2.album[])
offset=$(( offset + 500 ))
_fullAlbums="\
$_fullAlbums
$_someAlbums
"
if [ -z "$_someAlbums" ]
then
next=0
fi
done
echo $_fullAlbums | jq

View File

@ -0,0 +1,3 @@
#!/bin/sh
doas curl "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling/hosts" -o /etc/hosts
#doas curl "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-social/hosts" -o /etc/hosts

6
.bin/OLD/KAPUTT/vidoas Executable file
View File

@ -0,0 +1,6 @@
#!/bin/ksh
TMP=$(mktemp)
cp /etc/doas.conf $TMP
$EDITOR $TMP
doas -C $TMP && mv $TMP /etc/doas.conf;
rm -f $TMP

View File

@ -0,0 +1,28 @@
LOCATION FIXME: Dezernat 16, Heidelberg
LOCATION STAMMTISCH: Metropolis, Walldorf
FIXME 07.10.2022 19:00
FIXME 11.11.2022 19:00 statt 04.11, Grund: Raumsituation
FIXME 02.12.2022 19:00
FIXME 13.01.2023 19:00 statt 06.01.2023, Grund: Raumsituation
FIXME 03.02.2023 19:00
FIXME 03.03.2023 19:00
FIXME 14.04.2023 19:00 statt 07.04.2023, Grund: Raumsituation
FIXME 05.05.2023 19:00
FIXME 02.06.2023 19:00
FIXME 07.07.2023 19:00
FIXME 04.08.2023 19:00
FIXME 01.09.2023 19:00
FIXME 06.10.2023 19:00
FIXME 03.11.2023 19:00
FIXME 01.12.2023 19:00
STAMMTISCH 19.12.2022 18:00
STAMMTISCH 17.01.2023 18:00
STAMMTISCH 20.02.2023 18:00
STAMMTISCH 20.03.2023 18:00
STAMMTISCH 17.04.2023 18:00
STAMMTISCH 15.05.2023 18:00
STAMMTISCH 19.06.2023 18:00

70
.bin/OLD/_config Normal file
View File

@ -0,0 +1,70 @@
#!/bin/sh
#
# PIM / DOCUMENT DIRECTORY
#
PIMDIR="${HOME}/Documents"
#
# COLORS
#
BACKGROUND="#002020"
COLOR_NB="#002020"
COLOR_NF="#008080"
COLOR_SB="#004040"
COLOR_SF="#EEEEEE"
#
# TERMINALS
#
STERM="st -f Terminus:pixelsize=18"
BTERM="st -f Terminus:pixelsize=26"
HTERM="st -f spleen:pixelsize=32"
#
# DMENU
#
DMENUOPTS="-fn Terminus:pixelsize=20 \
-nb $COLOR_NB \
-nf $COLOR_NF \
-sf $COLOR_SF \
-sb $COLOR_SB \
-i \
-f"
DMENU_CMD="dmenu $DMENUOPTS"
#DMENU_CMD="rofi -dmenu"
DMENURUN_CMD="dmenu_run $DMENUOPTS"
#DMENURUN_CMD="rofi -show run"
#
# NOTIFY
#
NOTIFY_CMD() {
twmnc -i "${VAR##*/}" \
-d 5000 \
-t "$(date +%H:%M)" \
-c "$@"
}
#
# FUNCTIONS
#
needs() {
pkg_info -az | grep -q ^$1$ \
|| doas pkg_add $1
}
#
# CONNECT TO GPG-AGENT
#
[ -f ~/.ksh/gnupg.ksh ] \
&& . ~/.ksh/gnupg.ksh

BIN
.bin/OLD/a.out Executable file

Binary file not shown.

440
.bin/OLD/amused-monitor Executable file
View File

@ -0,0 +1,440 @@
#!/usr/bin/env perl
#
# Copyright (c) 2022 Omar Polo <op@omarpolo.com>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
use strict;
use warnings;
use v5.12;
use open ":std", ":encoding(UTF-8)";
use utf8;
use Curses;
use POSIX qw(:sys_wait_h setlocale LC_ALL);
use Text::CharWidth qw(mbswidth);
use IO::Poll qw(POLLIN);
use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC);
use Getopt::Long qw(:config bundling);
use Pod::Usage;
my $run = 1;
my $pfile;
my $trim = "";
my $pair_n = 1;
my @songs;
my $current_song;
my $playlist_cur;
my $playlist_max;
my $time_cur;
my $time_dur;
my $status;
my $mode;
my $last_lines;
sub round {
return int(0.5 + shift);
}
sub max {
my ($a, $b) = @_;
return $a > $b ? $a : $b;
}
sub excerpt {
my $lines = shift;
my @tmp;
my ($n, $idx, $cur) = (0, 0, -1);
open (my $fh, "-|", "amused", "show", "-p");
while (<$fh>) {
chomp;
s,$trim,,;
$tmp[$idx] = $_;
if (m/^>/) {
$cur = $n;
$current_song = s/^> //r;
}
$n++;
$idx = ++$idx % $lines;
last if $cur != -1 && $n - $cur > int($lines/2) &&
$#tmp == $lines-1;
}
close($fh);
return ("Empty playlist.") unless @tmp;
# reorder the entries
my @r;
my $len = $#tmp + 1;
$idx = $idx % $len;
for (1..$len) {
push @r, $tmp[$idx];
$idx = ++$idx % $len;
}
return @r;
}
sub playlist_numbers {
my ($cur, $tot, $found) = (0, 0, 0);
open (my $fh, "-|", "amused", "show", "-p");
while (<$fh>) {
$tot++;
$cur++ unless $found;
$found = 1 if m/^>/;
}
close($fh);
return ($cur, $tot);
}
sub status {
my ($pos, $dur, $mode);
open (my $fh, "-|", "amused", "status", "-f",
"status,time:raw,mode:oneline");
<$fh> =~ m/([a-z]+) (.*)/;
my ($status, $current_song) = ($1, $2);
while (<$fh>) {
chomp;
$pos = s/position //r if m/^position /;
$dur = s/duration //r if m/^duration /;
$mode = $_ if m/^repeat/;
}
close($fh);
return ($status, $current_song, $pos, $dur, $mode);
}
sub showtime {
my $seconds = shift;
my $str = "";
if ($seconds > 3600) {
my $hours = int($seconds / 3600);
$seconds -= $hours * 3600;
$str = sprintf("%02d:", $hours);
}
my $minutes = int($seconds / 60);
$seconds -= $minutes * 60;
$str .= sprintf "%02d:%02d", $minutes, $seconds;
return $str;
}
sub center {
my ($str, $pstr) = @_;
my $width = mbswidth($str);
return $str if $width > $COLS;
my $pre = round(($COLS - $width) / 2);
my $lpad = $pstr x $pre;
my $rpad = $pstr x ($COLS - $width - $pre);
return ($lpad, $str, $rpad);
}
sub offsets {
my ($y, $x, $cur, $max) = @_;
my ($pre, $c, $post) = center(" $cur / $max ", '-');
addstring $y, $x, "";
my $p = COLOR_PAIR($pair_n);
attron $p;
addstring $pre;
attroff $p;
addstring $c;
attron $p;
addstring $post;
attroff $p;
}
sub progress {
my ($y, $x, $pos, $dur) = @_;
my $pstr = showtime $pos;
my $dstr = showtime $dur;
my $len = $COLS - length($pstr) - length($dstr) - 4;
return if $len <= 0 or $dur <= 0;
my $filled = round($pos * $len / $dur);
addstring $y, $x, "$pstr [";
addstring "#" x $filled;
addstring " " x max($len - $filled, 0);
addstring "] $dstr";
}
sub show_status {
my ($y, $x, $status) = @_;
my ($pre, $c, $post) = center($status, ' ');
addstring $y, $x, $pre;
addstring $c;
addstring $post;
}
sub show_mode {
my ($y, $x, $mode) = @_;
my ($pre, $c, $post) = center($mode, ' ');
addstring $y, $x, $pre;
addstring $c;
addstring $post;
}
sub render {
erase;
if ($LINES < 4 || $COLS < 20) {
addstring "window too small";
refresh;
return;
}
my $song_pad = "";
my $longest = 0;
$longest = max $longest, length($_) foreach @songs;
if ($longest < $COLS) {
$song_pad = " " x (($COLS - $longest)/2);
}
my $line = 0;
map {
attron(A_BOLD) if m/^>/;
addstring $line++, 0, $song_pad . $_;
standend;
} @songs;
offsets $LINES - 4, 0, $playlist_cur, $playlist_max;
progress $LINES - 3, 0, $time_cur, $time_dur;
show_status $LINES - 2, 0, "$status $current_song";
show_mode $LINES - 1, 0, $mode;
refresh;
}
sub getsongs {
$last_lines = $LINES;
@songs = excerpt $LINES - 4;
}
sub getnums {
($playlist_cur, $playlist_max) = playlist_numbers;
}
sub save {
return unless defined $pfile;
open(my $fh, ">", $pfile);
open(my $ph, "-|", "amused", "show", "-p");
print $fh $_ while (<$ph>);
}
sub hevent {
my $fh = shift;
my $l = <$fh>;
die "monitor quit" unless defined($l);
$status = "playing" if $l =~ m/^play/;
$status = "paused" if $l =~ m/^pause/;
$status = "stopped" if $l =~ m/^stop/;
($time_cur, $time_dur) = ($1, $2) if $l =~ m/^seek (\d+) (\d+)/;
$mode = $1 if $l =~ m/^mode (.*)/;
getnums if $l =~ m/load|jump|next|prev/;
getsongs if $l =~ m/load|jump|next|prev/;
}
sub hinput {
my ($ch, $key) = getchar;
if (defined $key) {
if ($key == KEY_BACKSPACE) {
system "amused", "seek", "0";
}
} elsif (defined $ch) {
if ($ch eq " ") {
system "amused", "toggle";
} elsif ($ch eq "<" or $ch eq "p") {
system "amused", "prev";
} elsif ($ch eq ">" or $ch eq "n") {
system "amused", "next";
} elsif ($ch eq ",") {
system "amused", "seek", "-5";
} elsif ($ch eq ".") {
system "amused", "seek", "+5";
} elsif ($ch eq "S") {
system "amused show | sort -u | amused load";
} elsif ($ch eq "R") {
system "amused show | sort -R | amused load";
} elsif ($ch eq "s") {
save;
} elsif ($ch eq "q") {
$run = 0;
} elsif ($ch eq "\cH") {
system "amused", "seek", "0"
}
}
}
GetOptions(
"p:s" => \$pfile,
"t:s" => \$trim,
) or pod2usage(1);
my $mpid = open(my $monitor, "-|", "amused", "monitor")
or die "can't spawn amused monitor";
setlocale(LC_ALL, "");
initscr;
start_color;
use_default_colors;
init_pair $pair_n, 250, -1;
timeout 1000;
scrollok 0;
curs_set 0;
keypad 1;
my $poll = IO::Poll->new();
$poll->mask(\*STDIN => POLLIN);
$poll->mask($monitor => POLLIN);
if (`uname` =~ "OpenBSD") {
use OpenBSD::Pledge;
use OpenBSD::Unveil;
my $prog = `which amused`;
chomp $prog;
unveil($prog, 'rx') or die "unveil $prog: $!";
if (defined($pfile)) {
unveil($pfile, 'wc') or die "unveil $pfile: $!";
pledge qw(stdio wpath cpath tty proc exec) or die "pledge: $!";
} else {
pledge qw(stdio tty proc exec) or die "pledge: $!";
}
}
getsongs;
getnums;
($status, $current_song, $time_cur, $time_dur, $mode) = status;
render;
while ($run) {
$poll->poll();
hinput if $poll->events(\*STDIN) & POLLIN;
hevent $monitor if $poll->events($monitor) & POLLIN;
getsongs if $LINES != $last_lines;
render;
}
endwin;
save;
kill 'INT', $mpid;
wait;
__END__
=pod
=head1 NAME
amused-monitor - curses interface for amused(1)
=head1 SYNOPSIS
B<amused-monitor> [B<-p> I<playlist>] [B<-t> I<string>]
=head1 DESCRIPTION
amused-monitor is a simple curses interface for amused(1).
The following options are available:
=over 12
=item B<-p> I<playlist>
Save the current playling queue to the file I<playlist> upon exit or
I<s> key.
=item B<-t> I<string>
Trim out the given I<string> from every song in the playlist view.
=back
The following key-bindings are available:
=over 8
=item backspace or C-h
Seek back to the beginning of the track.
=item space
Toggle play/pause.
=item < or p
Play previous song.
=item > or n
Play next song.
=item ,
Seek backward by five seconds.
=item .
Seek forward by five seconds.
=item R
Randomize the playlist.
=item S
Sort the playlist.
=item s
Save the status to the file given with the B<-p> flag.
=item q
Quit.
=back
=head1 SEE ALSO
amused(1)
=cut

27
.bin/OLD/aplay Executable file
View File

@ -0,0 +1,27 @@
#!/bin/sh
. ~/.bin/_config
needs amused--
if [ -z "$1" ]
then
DIR="$PWD"
echo "No parameter supplied, scraping current dir: $PWD"
else
DIR="$1"
fi
amused stop
find "$DIR" -type f -iname "*.flac" \
-o -iname "*.mp3" \
-o -iname "*.ogg" \
-o -iname "*.m4a" \
-o -iname "*.aac" \
-o -iname "*.wav" \
-o -iname "*.aiff" \
| amused load
amused play

17
.bin/OLD/audiotest Executable file
View File

@ -0,0 +1,17 @@
#!/bin/sh -x
_dir="$PWD/audiotest"
mkdir "$_dir"
for i in *.flac;
do
_tmp="$_dir/${i%%.flac}"
# create reference wav
flac -df "$i" -o "${_tmp}.wav"
# encode to 128kbit mp3
lame --cbr -b 128 "${_tmp}.wav" "${_tmp}-128.mp3"
# encode to 320kbit mp3
lame --cbr -b 320 "${_tmp}.wav" "${_tmp}-320.mp3"
# encode to VBR(new) Quaity 5 mp3
lame --vbr-new -b 96 -B 320 "${_tmp}.wav" "${_tmp}-VBR96.mp3"
done

45
.bin/OLD/autoencode.sh Executable file
View File

@ -0,0 +1,45 @@
#!/bin/sh
# This script takes not arguments
### CONF ###
INDIR="/encode/IN"
OUTDIR="/encode/OUT"
LOG="/encode/autoencode.log"
# FileNameConvention:
# [<audio channel>,<language>,resolution] - <title>.ext
# [1,DE,1080] - 23 - Nichts ist wie es scheint.mp4
log() {
printf '%s: %s\n' "$(date +%Y%m%y.%H%M%S)" "$1" # >> $LOG
}
find "$INDIR" -type f | while read file;
do
_base="$(basename "$file")"
_track="$(printf '%s' "$_base" | sed 's/^\[\(.[^,]*\),.*\] - .*/\1/g')"
_lang="$(printf '%s' "$_base" | sed 's/^\[.*,\(.*\),.*\] - .*/\1/g')"
_size="$(printf '%s' "$_base" | sed 's/^\[.*,.*,\(.*\)] - .*/\1/g')"
_title="$(printf '%s' "$_base" | sed 's/^\[.*,.*,.*\] - \(.*\)\..*/\1/g')"
_out="$_title [${_lang}][${_size}p].mkv"
log "File $_base"
log "Track: $_track"
log "Language: $_lang"
log "Resolution: $_size"
log "Title: $_title"
log "Outfile: $_out"
ffmpeg -loglevel error \
-i "$file" \
-c:a copy \
-map 0:$_track \
-c:v libx264 \
-vf "scale=-2:$_size" \
-crf 21 \
-preset veryslow \
-tune zerolatency \
"$OUTDIR/$_out"
done

7
.bin/OLD/autorandr-c Executable file
View File

@ -0,0 +1,7 @@
#!/bin/sh
export DISPLAY=:0
export HOME=/home/sdk
/usr/local/bin/autorandr -c
/usr/bin/pgrep -q herbstluftwm \
&& doas -u sdk /usr/local/bin/herbstclient detect_monitors

81
.bin/OLD/autosort Executable file
View File

@ -0,0 +1,81 @@
#!/bin/sh
# This script takes an input directory and processes all files.
# It creates a directory structure in the output directory based
# on metadata of the file. The filename will also be created out
# of metadata, or replaced with the sha1 hash of itself in order
# to avoid duplicates.
usage() {
print "Usage: autosort <input directory> <output directory>";
exit 2
}
# check input
test -d "$1" || usage
test -d "$2" || usage
# normalize relative paths
_indir="$(readlink -f "$1")"
_outdir="$(readlink -f "$2")"
####################
# MAIN PROGRAM #
####################
start(){
# trigger main loop
find "$_indir" -type f | while read _file;
do
# extract mime type
local _mime="$(file -bi "$_file")"
local _category=${_mime%%/*}
local _type=${_mime##*/}
case "$_category" in
image) process_image "$_file" "$_type"; ;;
*) printf 'Unhandled Category: %s in %s\n' "$_category" "$_file"; ;;
esac
done
}
#################
# FUNCTIONS #
#################
process_image() {
# $1 = file
# $2 = mime type
case $2 in
jpeg) handle_jpeg "$1"; ;;
png) handle_jpeg "$1"; ;;
gif) handle_copy "$1" "image" "$2"; ;;
*) printf 'Unhandled Type: %s in %s\n' "$2" "$1"; ;;
esac
}
handle_jpeg() {
# $1 = file
local _exif="$(exifprint "$1")"
local _make="$(printf '%s' "$_exif" | grep '0x010f' | awk '{for(i=5;i<=NF;++i)print $i}')"
local _model="$(printf '%s' "$_exif" | grep '0x0110' | awk '{for(i=5;i<=NF;++i)print $i}')"
local _datetime="$(printf '%s' "$_exif" | grep '0x9003' | awk '{for(i=5;i<=NF;++i)print $i}')"
test -z "$_make" && local _make=unknown
test -z "$_model" && local _model=unknown
test -z "$_datetime" && local _datetime="$(sha1 -q "$1")"
local _out="$(printf '%s %s/%s' "$_make" "$_model" "$_datetime" | tr '\n' ' ' | tr ':' '-')"
install -bDm 0666 "$1" "$_outdir/${_out}.jpg" && rm -f "$1"
}
handle_copy() {
# $1 = file
# $2 = category
# $3 = type
install -bDm 0666 "$1" "$_outdir/$2/$3/${1##*/}" && rm -f "$1"
}
start

3
.bin/OLD/avalon Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
config="$(basename $0).tin"
tt++ ~/.bin/mud/$config

BIN
.bin/OLD/avg Executable file

Binary file not shown.

18
.bin/OLD/avg.c Normal file
View File

@ -0,0 +1,18 @@
#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
unsigned long long no = 0;
for (int i=1; i<argc; i++) {
no += strtoull(argv[i], NULL, 10);
}
if (argc < 2)
printf("%lld\n", no);
if (argc > 1)
printf("%.0lld\n", no / (argc - 1) / 1000000);
return 0;
}

12
.bin/OLD/bsdver Executable file
View File

@ -0,0 +1,12 @@
#!/bin/sh
if [ -z $1 ]
then
doas what /bsd | tail -1
else
for h in $@
do
echo -n "$h: "
ssh $h "doas what /bsd | tail -1"
done
fi

72
.bin/OLD/bspswallow Executable file
View File

@ -0,0 +1,72 @@
#!/bin/sh -x
# Get class of a wid
get_class() {
set -x
[ ! -z "$1" ] \
&& xprop -id "$1" -notype WM_CLASS | cut -d'"' -f2
}
get_pid() {
set -x
[ ! -z "$1" ] \
&& xprop -id "$1" -notype _NET_WM_PID | cut -d'=' -f2
}
get_parentpid() {