<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<?xml-stylesheet type="text/css" href="https://schrottrecorder.com/blog/styles/feed.css"?>


<title type="html">schrottrecorder</title>
<subtitle type="html">scripting, linux, whatever</subtitle>
<link rel="alternate" type="text/html" href="https://schrottrecorder.com/blog"/>
<link rel="self" type="application/atom+xml" href="https://schrottrecorder.com/blog/atom.xml"/>
<updated>2026-10-17T02:01:17+02:00</updated>
<author>
<name>.</name>
<uri>https://schrottrecorder.com/blog</uri>
</author>
<id>https://schrottrecorder.com/blog/</id>
<generator uri="http://nanoblogger.sourceforge.net" version="3.5-RC1">
NanoBlogger
</generator>

<entry>
<title type="html">nice commandline tools</title>
<author>
<name>.</name>
</author>
<link rel="alternate" type="text/html" href="https://schrottrecorder.com/blog/archives/2026/10/#e2026-10-17T01_30_12.txt"/>

<id>https://schrottrecorder.com/blog/archives/2026/10/#e2026-10-17T01_30_12.txt</id>
<published>2026-10-17T01:30:12+02:00</published>
<updated>2026-10-17T01:30:12+02:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
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>
</div>
</content>

</entry>
<entry>
<title type="html">how to magically make an o365-calendars working in nextcloud</title>
<author>
<name>Gerrit-Jahn Damen</name>
</author>
<link rel="alternate" type="text/html" href="https://schrottrecorder.com/blog/archives/2021/07/#e2021-07-27T22_13_10.txt"/>

<id>https://schrottrecorder.com/blog/archives/2021/07/#e2021-07-27T22_13_10.txt</id>
<published>2021-07-27T22:13:10+02:00</published>
<updated>2021-07-27T22:13:10+02:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
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.
</div>
</content>

</entry>
<entry>
<title type="html">gnome - create menue-entries</title>
<author>
<name>Gerrit-Jahn Damen</name>
</author>
<link rel="alternate" type="text/html" href="https://schrottrecorder.com/blog/archives/2020/05/#e2020-05-31T12_44_47.txt"/>

<id>https://schrottrecorder.com/blog/archives/2020/05/#e2020-05-31T12_44_47.txt</id>
<published>2020-05-31T12:44:47+02:00</published>
<updated>2020-05-31T12:44:47+02:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
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>
</div>
</content>

</entry>
<entry>
<title type="html">icaclient</title>
<author>
<name>Gerrit-Jahn Damen</name>
</author>
<link rel="alternate" type="text/html" href="https://schrottrecorder.com/blog/archives/2020/05/#e2020-05-27T22_47_20.txt"/>

<id>https://schrottrecorder.com/blog/archives/2020/05/#e2020-05-27T22_47_20.txt</id>
<published>2020-05-27T22:47:20+02:00</published>
<updated>2020-05-27T22:47:20+02:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
after installing the citrix workspace app run
<pre><code>sudo ln -s /usr/share/ca-certificates/mozilla/* /opt/Citrix/ICAClient/keystore/cacerts/</code></pre>
</div>
</content>

</entry>
<entry>
<title type="html">compile unison from scratch</title>
<author>
<name>Gerrit-Jahn Damen</name>
</author>
<link rel="alternate" type="text/html" href="https://schrottrecorder.com/blog/archives/2020/02/#e2020-02-23T11_58_03.txt"/>

<id>https://schrottrecorder.com/blog/archives/2020/02/#e2020-02-23T11_58_03.txt</id>
<published>2020-02-23T11:58:03+02:00</published>
<updated>2020-02-23T11:58:03+02:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
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 />
</div>
</content>

</entry>
<entry>
<title type="html">check certificate files</title>
<author>
<name>Gerrit-Jahn Damen</name>
</author>
<link rel="alternate" type="text/html" href="https://schrottrecorder.com/blog/archives/2019/10/#e2019-10-01T08_13_55.txt"/>

<id>https://schrottrecorder.com/blog/archives/2019/10/#e2019-10-01T08_13_55.txt</id>
<published>2019-10-01T08:13:55+02:00</published>
<updated>2019-10-01T08:13:55+02:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
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>
</div>
</content>

</entry>
<entry>
<title type="html">exit terminal with all processes running</title>
<author>
<name>Gerrit-Jahn Damen</name>
</author>
<link rel="alternate" type="text/html" href="https://schrottrecorder.com/blog/archives/2019/07/#e2019-07-07T23_01_58.txt"/>

<id>https://schrottrecorder.com/blog/archives/2019/07/#e2019-07-07T23_01_58.txt</id>
<published>2019-07-07T23:01:58+02:00</published>
<updated>2019-07-07T23:01:58+02:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
you want to log off but some job is still running in the background
<pre><code>disown -a && exit</code></pre>
</div>
</content>

</entry>
<entry>
<title type="html">how to get opera-stable working properly</title>
<author>
<name>Gerrit-Jahn Damen</name>
</author>
<link rel="alternate" type="text/html" href="https://schrottrecorder.com/blog/archives/2019/06/#e2019-06-16T20_09_24.txt"/>

<id>https://schrottrecorder.com/blog/archives/2019/06/#e2019-06-16T20_09_24.txt</id>
<published>2019-06-16T20:09:24+02:00</published>
<updated>2019-06-16T20:09:24+02:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
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>
</div>
</content>

</entry>
<entry>
<title type="html">aliases</title>
<author>
<name>Gerrit-Jahn Damen</name>
</author>
<link rel="alternate" type="text/html" href="https://schrottrecorder.com/blog/archives/2019/01/#e2019-01-08T15_44_51.txt"/>

<id>https://schrottrecorder.com/blog/archives/2019/01/#e2019-01-08T15_44_51.txt</id>
<published>2019-01-08T15:44:51+02:00</published>
<updated>2019-01-08T15:44:51+02:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
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>
</div>
</content>

</entry>
<entry>
<title type="html">osmc/kodi/xbmc handling </title>
<author>
<name>Gerrit-Jahn Damen</name>
</author>
<link rel="alternate" type="text/html" href="https://schrottrecorder.com/blog/archives/2018/04/#e2018-04-05T23_31_40.txt"/>

<id>https://schrottrecorder.com/blog/archives/2018/04/#e2018-04-05T23_31_40.txt</id>
<published>2018-04-05T23:31:40+02:00</published>
<updated>2018-04-05T23:31:40+02:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
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>
</div>
</content>

</entry>

</feed>
