<?xml version="1.0" encoding="utf-8"?>
        <?xml-stylesheet type="text/css" href="https://schrottrecorder.com/blog/styles/feed.css"?>
<rss version="2.0"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:admin="http://webns.net/mvcb/"
 xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title>schrottrecorder</title>
<atom:link href="https://schrottrecorder.com/blog/rss.xml" rel="self" type="application/rss+xml" />
<link>https://schrottrecorder.com/blog</link>
<description>scripting, linux, whatever</description>
<dc:language>en-us</dc:language>
<dc:creator>.</dc:creator>
<dc:date>2026-10-17T02:01:18+02:00</dc:date>
<admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" />

<item>
<link>https://schrottrecorder.com/blog/archives/2026/10/#e2026-10-17T01_30_12.txt</link>
<guid isPermaLink="true">https://schrottrecorder.com/blog/archives/2026/10/#e2026-10-17T01_30_12.txt</guid>
<title>nice commandline tools</title>
<dc:date>2026-10-17T01:30:12+02:00</dc:date>
<dc:creator>.</dc:creator>

<description><![CDATA[i really like the following tools: <br>
<a href="https://github.com/lsd-rs/lsd">lsd</a> aka ls deluxe - a nicer ls <br>
<a href="https://github.com/aristocratos/btop">btop</a> - an incredible system monitor able to show gpu usage <br>
<a href="https://hpjansson.org/chafa/">chafa</a> - shows pictures in your terminal <br>
<a href="https://github.com/karlstav/cava">cava</a> - an audio visualizer <br>
<a href="https://midnight-commander.org/">mc</a> aka midnight commander - the swiss army knife of shells <br>
<a href="https://jqlang.org/">jq</a> - lets you edit and query json data<br>]]></description>

</item>
<item>
<link>https://schrottrecorder.com/blog/archives/2021/07/#e2021-07-27T22_13_10.txt</link>
<guid isPermaLink="true">https://schrottrecorder.com/blog/archives/2021/07/#e2021-07-27T22_13_10.txt</guid>
<title>how to magically make an o365-calendars working in nextcloud</title>
<dc:date>2021-07-27T22:13:10+02:00</dc:date>
<dc:creator>Gerrit-Jahn Damen</dc:creator>

<description><![CDATA[provided that you already having an ics or html calendar source added to nextcloud calendar:
<pre>
<code>sudo -u www-data php -f /var/www/nextcloud/occ config:app:set dav calendarSubscriptionRefreshRate --value "PT600S"</code>
</pre>
this makes it refresh the calendar every 10 minutes. or you don't do that and wait for a week.]]></description>

</item>
<item>
<link>https://schrottrecorder.com/blog/archives/2020/05/#e2020-05-31T12_44_47.txt</link>
<guid isPermaLink="true">https://schrottrecorder.com/blog/archives/2020/05/#e2020-05-31T12_44_47.txt</guid>
<title>gnome - create menue-entries</title>
<dc:date>2020-05-31T12:44:47+02:00</dc:date>
<dc:creator>Gerrit-Jahn Damen</dc:creator>

<description><![CDATA[go to
<pre>
<code>cd ~/.local/share/applications/</code>
<code>touch myprog.desktop</code>
</pre>
fill the file with s.th. like
<pre>
<code>[Desktop Entry]</code>
<code>Name=Unison (sc)</code>
<code>Comment=synchronize files</code>
<code>Exec=/usr/local/bin/unison-gtk</code>
<code>Icon=unison-gtk</code>
<code>Terminal=false</code>
<code>Type=Application</code>
<code>Categories=System;</code>
</pre>
save, now run
<pre><code>update-menues</code></pre>]]></description>

</item>
<item>
<link>https://schrottrecorder.com/blog/archives/2020/05/#e2020-05-27T22_47_20.txt</link>
<guid isPermaLink="true">https://schrottrecorder.com/blog/archives/2020/05/#e2020-05-27T22_47_20.txt</guid>
<title>icaclient</title>
<dc:date>2020-05-27T22:47:20+02:00</dc:date>
<dc:creator>Gerrit-Jahn Damen</dc:creator>

<description><![CDATA[after installing the citrix workspace app run
<pre><code>sudo ln -s /usr/share/ca-certificates/mozilla/* /opt/Citrix/ICAClient/keystore/cacerts/</code></pre>]]></description>

</item>
<item>
<link>https://schrottrecorder.com/blog/archives/2020/02/#e2020-02-23T11_58_03.txt</link>
<guid isPermaLink="true">https://schrottrecorder.com/blog/archives/2020/02/#e2020-02-23T11_58_03.txt</guid>
<title>compile unison from scratch</title>
<dc:date>2020-02-23T11:58:03+02:00</dc:date>
<dc:creator>Gerrit-Jahn Damen</dc:creator>

<description><![CDATA[since unison doesn't work with different versions, just accept that you have to build this from scratch, since the next os upgrade of one of the involved clients will break protocol.
<pre><code>sudo apt install opam ocaml liblablgtk2-ocaml-dev liblablgtk2-ocaml</code></pre>
labelgtk* isn't needed for cli version only and can be skipped in the opam steps, too.
<pre>
<code>opam init</code>
<code>eval $(opam env)</code>
<code>opam switch create ocaml-base-compiler.4.05.0</code>
<code>eval $(opam env)</code>
<code>opam install lablgtk</code>
</pre>
we download the <a href="https://github.com/bcpierce00/unison/releases/tag/v2.51.2" target=_blank>unison 2.51.2 source</a>. unzip it somewhere and cd into it.
for the gtk version you need to hack src/uigtk2.ml before and replace in line 97 from region_of_string to region_of_bytes.
<pre><code>make</code></pre>
this compiles now the gtk2 version. if cli is needed:
<pre><code>make text</code></pre>
beware that the binary has the same name. make will automatically generate cli version if lablgtk is not installed.<br />
now copy the files to your systemfolder
<pre>
<code>sudo cp src/unison src/unison-fswatch /usr/bin/</code>
<code>cd /usr/bin</code>
<code>sudo ln -s unison unison-2.51</code>
</pre>

on older opam versions (1.x), like on raspbian stretch, things look a little bit different:
<pre>
<code>opam init</code>
<code>eval $(opam config env)</code>
<code>opam switch set 4.05.0</code>
<code>eval $(opam config env)</code>
<code>cd yourunisonsourcedirectory</code>
<code>make</code>
</pre>
precompiled versions can be found here:<br />
<a href="/unison/x64/unison-gtk">unison-gtk 2.51.2-ocaml4.05.0 binary[x64]</a><br />
<a href="/unison/x64/unison">unison 2.51.2-ocaml4.05.0 binary[x64]</a><br />
<a href="/unison/x64/unison-fsmonitor">unison-fsmonitor 2.51.2-ocaml4.05.0 binary[x64]</a><br />
<a href="/unison/armhf/unison">unison 2.51.2-ocaml4.05.0 binary[armhf]</a><br />
<a href="/unison/armhf/unison-fsmonitor">unison-fsmonitor 2.51.2-ocaml4.05.0 binary[armhf]</a><br />]]></description>

</item>
<item>
<link>https://schrottrecorder.com/blog/archives/2019/10/#e2019-10-01T08_13_55.txt</link>
<guid isPermaLink="true">https://schrottrecorder.com/blog/archives/2019/10/#e2019-10-01T08_13_55.txt</guid>
<title>check certificate files</title>
<dc:date>2019-10-01T08:13:55+02:00</dc:date>
<dc:creator>Gerrit-Jahn Damen</dc:creator>

<description><![CDATA[check .pem / check .crt
<pre><code>openssl x509 -noout -text -in certificate.pem</code>
</pre>
check .csr
<pre><code>openssl req -noout -text -verify -in cert_sign_req.csr</code>
</pre>
convert p12 to pem
<pre>
<code>openssl pkcs12 -in certificate.p12 -nocerts -out certificate.key</code>
<code>openssl pkcs12 -in certificate.p12 -clcerts -nokeys -out certificate.crt</code>
<code>cat certificate.crt certificate.key > certificate.pem</code>
</pre>
in case the key is still encrypted after extracting it run
<pre><code>openssl rsa -in certificate.key -out certificate_decrypted.key</code>
</pre>
check if key belongs to certificate
<pre>
<code>openssl x509 -modulus -noout -in server.com.crt | openssl md5</code>
<code>openssl rsa  -modulus -noout -in server.com.key | openssl md5</code>
</pre>]]></description>

</item>
<item>
<link>https://schrottrecorder.com/blog/archives/2019/07/#e2019-07-07T23_01_58.txt</link>
<guid isPermaLink="true">https://schrottrecorder.com/blog/archives/2019/07/#e2019-07-07T23_01_58.txt</guid>
<title>exit terminal with all processes running</title>
<dc:date>2019-07-07T23:01:58+02:00</dc:date>
<dc:creator>Gerrit-Jahn Damen</dc:creator>

<description><![CDATA[you want to log off but some job is still running in the background
<pre><code>disown -a && exit</code></pre>]]></description>

</item>
<item>
<link>https://schrottrecorder.com/blog/archives/2019/06/#e2019-06-16T20_09_24.txt</link>
<guid isPermaLink="true">https://schrottrecorder.com/blog/archives/2019/06/#e2019-06-16T20_09_24.txt</guid>
<title>how to get opera-stable working properly</title>
<dc:date>2019-06-16T20:09:24+02:00</dc:date>
<dc:creator>Gerrit-Jahn Damen</dc:creator>

<description><![CDATA[youtube isn't working.<br/>
go to /usr/lib/x86_64-linux-gnu/opera and replace the libffmpeg.so with the chromium one.<br/>
since ubuntu now only ships snaps, we need to get the download location of that package.
<pre>
<code>curl -H 'Snap-Device-Series: 16' http://api.snapcraft.io/v2/snaps/info/chromium-ffmpeg | jq</code>
</pre>
get the download url for your architecture by hand. next one is an example. then mount the package and get the libffmpeg.so from the latest chromium-folder (there are plenty)
<pre>
<code>wget https://api.snapcraft.io/api/v1/snaps/download/XXzVIXswXKHqlUATPqGCj2w2l7BxosS8_24.snap</code>
<code>sudo mount -t squashfs -o ro XXzVIXswXKHqlUATPqGCj2w2l7BxosS8_24.snap /mnt/</code>
<code>sudo cp /mnt/chromium-ffmpeg-104707/chromium-ffmpeg/libffmpeg.so /usr/lib/x86_64-linux-gnu/opera/</code>
</pre>]]></description>

</item>
<item>
<link>https://schrottrecorder.com/blog/archives/2019/01/#e2019-01-08T15_44_51.txt</link>
<guid isPermaLink="true">https://schrottrecorder.com/blog/archives/2019/01/#e2019-01-08T15_44_51.txt</guid>
<title>aliases</title>
<dc:date>2019-01-08T15:44:51+02:00</dc:date>
<dc:creator>Gerrit-Jahn Damen</dc:creator>

<description><![CDATA[as Bash user, simply fill your $HOME/.bash_aliases with stuff like:
<pre>
<code>
# some more ls aliases
alias l='/usr/bin/ls -CFlh'
alias ls='lsd'
alias ll='ls -lAh'
alias la='ls -Ah'

alias ..='cd ..'
alias cd..='cd ..'
alias m:='cd /media/gerrit'
alias r:='cd /resources'
alias u:='cd /resources/_user'
alias acmd='amulecmd -P h0ll4nd'
alias createdeb='checkinstall -D'
#krass gut dupletten komprimieren
alias compressdubs='7za a -t7z -m0=lzma2 -mx=9 -mfb=273 -md=32 -ms=8g -mmt=16 -mmtf=off -mqs=on -bt -bb3'
alias delete_thumbs='rm -r ~/.thumbnails/*; python ~/bin/g3bookmarks.py'
alias dfh='df -hlTx tmpfs | ( read header ; echo "$header" ; sort -k 7 -i)'
alias dirtree='tree -fi'
alias md='mkdir'
alias agi='sudo apt-get install'
alias acs='sudo apt-cache search'
alias agu='sudo apt-get update && sudo apt-get upgrade'
alias agd='sudo apt-get update && sudo apt-get dist-upgrade'
alias publicip='curl https://schrottrecorder.com/ip/raw 2>/dev/null'
alias uuids='lsblk -o UUID,MOUNTPOINT,PATH,SIZE'
youtube-url () { yt-dlp -j ytsearch1:"$1"|jq '.webpage_url' | tr -d '"' ; }
alias y='yt-dlp --merge-output-format mp4 --format "bestvideo[ext=mp4][vcodec!*=av01]+bestaudio[ext=m4a]" --add-metadata'

sox_duration_total () {
  if [[ "$#" -lt 1 ]]; then
    echo "find files!"
    echo "  sox_duration_total *.mp3"
    echo ""
    return
  fi
  for i in "$@"; do
    val=$(soxi -d "$i")
    echo "$val | $i"
  done
  soxi -D "$@" | python -c "import sys;print(\"\ntotal sec:    \" +str( sum(float(l) for l in sys.stdin)))"
  soxi -D "$@" | python -c "import sys;print(\"total min:    \" +str( sum(float(l) for l in sys.stdin)/60 ))"
  soxi -D "$@" | python -c "import sys;import datetime;print(\"running time: \" +str( datetime.timedelta(seconds=sum(float(l) for l in sys.stdin)) ))"
}

alias please='sudo'
alias gitreset="git fetch origin master;git reset --hard origin/master"

#Do compression with all cores !!
function gzip(){ pigz $@; }
function gunzip(){ unpigz $@; }
function bzip2(){ pbzip2 $@; }
#function bunzip2(){ pbunzip2 $@ }
#function xz(){ pxz $@ }

alias mpl='mpv'
alias mplf='mpl -fs'
alias mpls='mpl -shuffle'
alias mplfs='mpls -fs'

#alias ffmerge='ffmpeg -acodec copy -vcodec copy'
ffmerge () { ffmpeg -i "$14a" -i "$1p4" -c:v copy -c:a aac -strict experimental "$1.mp4"; }
efs () { encfs `pwd`/$1 `pwd`/$2; }
ufs () { fusermount -u $1; }
torrent () { case $1 in
    "add")      transmission-remote -a $2;;
    "del")      transmission-remote -t $2 -r;;
    "wl")       watch transmission-remote -l;;
    "watch")    watch transmission-remote -t $2 -i;;
    "list")     transmission-remote -l;;
    "start")    transmission-remote -t $2 -s;;
    "stop")     transmission-remote -t $2 -S;;
    *)          echo "Usage: torrent add/del/watch/list \$params";;
    esac; }

if [ $TERM == "dumb" ]; then export TERM=xterm; fi

alias wine_oblivion='export WINEPREFIX=/ssd2/.steam/steam/steamapps/compatdata/22370/pfx'
alias wine_f4='export WINEPREFIX=/ssd2/.steam/steam/steamapps/compatdata/377160/pfx'

alias visualizer=cava
alias showpic=chafa

PS1='\[\e]0;\h \w\a\]\n\[\e[48;5;33m\] \[\e[0m\] \[\e[38;5;33m\]\u\[\e[38;5;33m\]@\[\e[38;5;33m\]\h\[\e[32m\] \[\e[38;5;33m\]\w\n\[\e[0;48;5;45m\] \[\e[0m\] \[\e[38;5;38m\]\t\[\e[0m\] \$ '
</code>
</pre>]]></description>

</item>
<item>
<link>https://schrottrecorder.com/blog/archives/2018/04/#e2018-04-05T23_31_40.txt</link>
<guid isPermaLink="true">https://schrottrecorder.com/blog/archives/2018/04/#e2018-04-05T23_31_40.txt</guid>
<title>osmc/kodi/xbmc handling </title>
<dc:date>2018-04-05T23:31:40+02:00</dc:date>
<dc:creator>Gerrit-Jahn Damen</dc:creator>

<description><![CDATA[start/stop the mediacenter
<pre>
<code>sudo systemctl {start/stop} mediacenter</code>
</pre>
videolibrarycontrol. command={Clean,Scan}
<pre>
<code>curl --data-binary '{ "jsonrpc": "2.0", "method": "VideoLibrary.{command}", "id": "mybash"}' -H 'content-type: application/json;' http://localhost:8080/jsonrpcr</code>
</pre>
same for audiofiles... 
<pre>
<code>curl --data-binary '{ "jsonrpc": "2.0", "method": "AudioLibrary.{command}", "id": "mybash"}' -H 'content-type: application/json;' http://localhost:8080/jsonrpcr</code>
</pre>
finally exporting the library via xbmc-senc
<pre>
<code>xbmc-send -a "exportlibrary(video,false,your_backup_path)"</code>
</pre>]]></description>

</item>
</channel>
</rss>
