Linux am Dienstag baut Recall nach

Aus einer Laune heraus, haben wir heute Abend einfach mal eine RECALL Funktion für den Linux Desktop gebaut 😀

Linux am Dienstag baut Recall nach

Jemand sagte: „Das sind nur drei Zeilen Bashcode…“ und das stimmt auch, es sind sogar nur zwei, aber die alleine reichen leider nicht um eine vernünftige Recall Funktion zu bauen. Es waren dann doch 20 Zeilen Bash 😉

Wir brauchen 3 Teile, damit das funktioniert:

1. einen Systemd.Timer
2. das Recall Script selbst
3. die Recallsuche
4. einige Tools: flameshot, systemd, tesseract und zenity .

Die Tools einfach aus dem Repo installieren.

Dazu legen wir erst einmal .local/systemd/user/recall.service an:

[Unit]
DefaultDependencies=no
Description=Linux am Dienstag RECALL Experiment

[Service]
Type=oneshot
ExecStart=/home/<username>/.local/bin/recall

dann legen wir .local/systemd/user/recall.timer

[Unit]
Description=Timer für RECALL

[Timer]
OnCalendar=*-*-* *:*:0/10

[Install]
WantedBy=timers.target

Dann die beiden Scripte .local/bin/recall und .local/bin/recall-ui an:

#!/bin/bash

BILDER=$(cat $HOME/.config/recall/path)

if [ "$BILDER" == "" ]; then 
exit 1;
fi

mkdir -p $BILDER

SIZE=$(du -s $BILDER/|awk '{print $1;}')

if [ $SIZE -gt 1000000 ]; then 
DNAME=$(ls -d $BILDER/*png 2>&1 | head -n 1 )
if [[ "$DNAME" =~ ^/ ]]; then 
rm -f $DNAME
fi
fi

find $BILDER -iname "*txt" -ctime +180 -delete

WLISTE=$(wmctrl -l | grep -c -E -f $HOME/.config/recall/exclude )

if [ $WLISTE -eq 0 ]; then

FILENAME=$(flameshot full -p $BILDER/ 2>&1 | sed -e "s/flameshot: info: Capture saved as //g")
tesseract $FILENAME $FILENAME

fi

und die Such-UI:

#!/bin/bash

BILDER=$(cat $HOME/.config/recall/path)

if [ "$BILDER" == "" ]; then 
exit 1;
fi

SUCHE=$(zenity --entry --text="RECALL Suchbegriff" --entry-text="" --title="Suchbegriff")

TREFFER=$(grep -l -i "$SUCHE" $BILDER/*txt| sed -e "s/\.txt$//g")

eog -n -w -s $TREFFER

Führen „chmod 700 .local/bin/recall*“  aus und legen kurz die config an:

mkdir -p .config/recall
echo „/home/<username>/Bilder/recall“ > .config/recall/path
touch .config/recall/exclude

Jetzt starten wir den Timer:

systemctl –user enable –now recall.timer

Wenn man nicht möchte, daß bestimmt Inhalte erfasst werden, z.b. die Bankseite, dann tragt Ihr den Fenstertitle aus folgender Ausgabe:

[~]$ wmctrl -l
0x02e00007 0 linux-am-dienstag.de Desktop
0x02e0000f 0 linux-am-dienstag.de nemo-desktop
0x0460003a 0 linux-am-dienstag.de Bugzilla – Mozilla Thunderbird
0x0200002c 0 linux-am-dienstag.de Google News – Mozilla Firefox
0x0aa00004 0 linux-am-dienstag.de Easy Effects
0x020012e3 0 linux-am-dienstag.de Firefox – Share-Notice

Die beiden grün markierten Fenstertitle dienen jetzt mal als Beispiel. die tragt Ihr ohne irgendwas anderes in die Exclude-Datei ein z.b. mit echo „Easy Effects“ >> .config/recall/exclude oder einfach einem Texteditor 😉  Wichtig ist, das da nur zeilenweise ein Titel nach dem anderen drin steht.

Jetzt braucht es für due Suchmaske nur noch einen Shortcut und wir sind fertig:

Und das wars schon 😀 100% Lokal.

Jetzt noch ein Wort zum Platzverbrauch:

1. wenn das Recall Verzeichnis größer als 1 GB ist, werden die ersten Bilder gelöscht.
2. die erzeugten OCR Texte werden nach 180 Tagen automatisch gelöscht.

Beide Werte könnt Ihr in den Scripten einfach ändern, wie Ihr wollt.

Viel Spaß 😉

GitHub:

https://github.com/Cyborgscode/Linux-Recall-in-bash/